Changeset - bc383c25c970
[Not reviewed]
default
0 9 62
Michael Guravage - 15 years ago 2010-06-18 14:02:50
michael.guravage@cwi.nl
Moved the Windows LIBXML2, LIBICONV and LIBZ libraries into the
destribtion, and changed the various project files accordingly.

--
user: Michael Guravage <michael.guravage@cwi.nl>
branch 'default'
added lib/libiconv/include/iconv.h
added lib/libiconv/include/libcharset.h
added lib/libiconv/include/localcharset.h
added lib/libiconv/lib/charset.alias
added lib/libiconv/lib/libcharset.la
added lib/libiconv/lib/libiconv.la
added lib/libiconv/share/doc/libiconv/COPYING
added lib/libiconv/share/doc/libiconv/COPYING.LIB
added lib/libiconv/share/doc/libiconv/NEWS
added lib/libiconv/share/doc/libiconv/NOTES
added lib/libxml2/include/libxml/DOCBparser.h
added lib/libxml2/include/libxml/HTMLparser.h
added lib/libxml2/include/libxml/HTMLtree.h
added lib/libxml2/include/libxml/SAX.h
added lib/libxml2/include/libxml/SAX2.h
added lib/libxml2/include/libxml/c14n.h
added lib/libxml2/include/libxml/catalog.h
added lib/libxml2/include/libxml/chvalid.h
added lib/libxml2/include/libxml/debugXML.h
added lib/libxml2/include/libxml/dict.h
added lib/libxml2/include/libxml/encoding.h
added lib/libxml2/include/libxml/entities.h
added lib/libxml2/include/libxml/globals.h
added lib/libxml2/include/libxml/hash.h
added lib/libxml2/include/libxml/list.h
added lib/libxml2/include/libxml/nanoftp.h
added lib/libxml2/include/libxml/nanohttp.h
added lib/libxml2/include/libxml/parser.h
added lib/libxml2/include/libxml/parserInternals.h
added lib/libxml2/include/libxml/pattern.h
added lib/libxml2/include/libxml/relaxng.h
added lib/libxml2/include/libxml/schemasInternals.h
added lib/libxml2/include/libxml/schematron.h
added lib/libxml2/include/libxml/threads.h
added lib/libxml2/include/libxml/tree.h
added lib/libxml2/include/libxml/uri.h
added lib/libxml2/include/libxml/valid.h
added lib/libxml2/include/libxml/xinclude.h
added lib/libxml2/include/libxml/xlink.h
added lib/libxml2/include/libxml/xmlIO.h
added lib/libxml2/include/libxml/xmlautomata.h
added lib/libxml2/include/libxml/xmlerror.h
added lib/libxml2/include/libxml/xmlexports.h
added lib/libxml2/include/libxml/xmlmemory.h
added lib/libxml2/include/libxml/xmlmodule.h
added lib/libxml2/include/libxml/xmlreader.h
added lib/libxml2/include/libxml/xmlregexp.h
added lib/libxml2/include/libxml/xmlsave.h
added lib/libxml2/include/libxml/xmlschemas.h
added lib/libxml2/include/libxml/xmlschemastypes.h
added lib/libxml2/include/libxml/xmlstring.h
added lib/libxml2/include/libxml/xmlunicode.h
added lib/libxml2/include/libxml/xmlversion.h
added lib/libxml2/include/libxml/xmlwin32version.h
added lib/libxml2/include/libxml/xmlwriter.h
added lib/libxml2/include/libxml/xpath.h
added lib/libxml2/include/libxml/xpathInternals.h
added lib/libxml2/include/libxml/xpointer.h
added lib/libxml2/lib/libxml2.dll
added lib/libxml2/lib/libxml2.lib
added lib/libz/include/zconf.h
added lib/libz/include/zlib.h
changed src/ChangeLog
changed src/Makefile
changed src/VirtualLeaf.pro
changed src/build_models/ChangeLog
changed src/build_models/Makefile
changed src/build_models/plugin_auxingrowth.pro
changed src/build_models/plugin_meinhardt.pro
changed src/build_models/plugin_test.pro
changed src/libplugin.pro
71 files changed with 18353 insertions and 41 deletions:
0 comments (0 inline, 0 general)
lib/libiconv/include/iconv.h
Show inline comments
 
new file 100755
 
/* Copyright (C) 1999-2003, 2005-2006, 2008-2009 Free Software Foundation, Inc.
 
   This file is part of the GNU LIBICONV Library.
 

	
 
   The GNU LIBICONV Library is free software; you can redistribute it
 
   and/or modify it under the terms of the GNU Library General Public
 
   License as published by the Free Software Foundation; either version 2
 
   of the License, or (at your option) any later version.
 

	
 
   The GNU LIBICONV Library 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
 
   Library General Public License for more details.
 

	
 
   You should have received a copy of the GNU Library General Public
 
   License along with the GNU LIBICONV Library; see the file COPYING.LIB.
 
   If not, write to the Free Software Foundation, Inc., 51 Franklin Street,
 
   Fifth Floor, Boston, MA 02110-1301, USA.  */
 

	
 
/* When installed, this file is called "iconv.h". */
 

	
 
#ifndef _LIBICONV_H
 
#define _LIBICONV_H
 

	
 
#define _LIBICONV_VERSION 0x010D    /* version number: (major<<8) + minor */
 
extern __declspec (dllimport) int _libiconv_version; /* Likewise */
 

	
 
/* We would like to #include any system header file which could define
 
   iconv_t, 1. in order to eliminate the risk that the user gets compilation
 
   errors because some other system header file includes /usr/include/iconv.h
 
   which defines iconv_t or declares iconv after this file, 2. when compiling
 
   for LIBICONV_PLUG, we need the proper iconv_t type in order to produce
 
   binary compatible code.
 
   But gcc's #include_next is not portable. Thus, once libiconv's iconv.h
 
   has been installed in /usr/local/include, there is no way any more to
 
   include the original /usr/include/iconv.h. We simply have to get away
 
   without it.
 
   Ad 1. The risk that a system header file does
 
   #include "iconv.h"  or  #include_next "iconv.h"
 
   is small. They all do #include <iconv.h>.
 
   Ad 2. The iconv_t type is a pointer type in all cases I have seen. (It
 
   has to be a scalar type because (iconv_t)(-1) is a possible return value
 
   from iconv_open().) */
 

	
 
/* Define iconv_t ourselves. */
 
#undef iconv_t
 
#define iconv_t libiconv_t
 
typedef void* iconv_t;
 

	
 
/* Get size_t declaration.
 
   Get wchar_t declaration if it exists. */
 
#include <stddef.h>
 

	
 
/* Get errno declaration and values. */
 
#include <errno.h>
 
/* Some systems, like SunOS 4, don't have EILSEQ. Some systems, like BSD/OS,
 
   have EILSEQ in a different header.  On these systems, define EILSEQ
 
   ourselves. */
 
#ifndef EILSEQ
 
#define EILSEQ 
 
#endif
 

	
 

	
 
#ifdef __cplusplus
 
extern "C" {
 
#endif
 

	
 

	
 
/* Allocates descriptor for code conversion from encoding ‘fromcode’ to
 
   encoding ‘tocode’. */
 
#ifndef LIBICONV_PLUG
 
#define iconv_open libiconv_open
 
#endif
 
extern iconv_t iconv_open (const char* tocode, const char* fromcode);
 

	
 
/* Converts, using conversion descriptor ‘cd’, at most ‘*inbytesleft’ bytes
 
   starting at ‘*inbuf’, writing at most ‘*outbytesleft’ bytes starting at
 
   ‘*outbuf’.
 
   Decrements ‘*inbytesleft’ and increments ‘*inbuf’ by the same amount.
 
   Decrements ‘*outbytesleft’ and increments ‘*outbuf’ by the same amount. */
 
#ifndef LIBICONV_PLUG
 
#define iconv libiconv
 
#endif
 
extern size_t iconv (iconv_t cd, const char* * inbuf, size_t *inbytesleft, char* * outbuf, size_t *outbytesleft);
 

	
 
/* Frees resources allocated for conversion descriptor ‘cd’. */
 
#ifndef LIBICONV_PLUG
 
#define iconv_close libiconv_close
 
#endif
 
extern int iconv_close (iconv_t cd);
 

	
 

	
 
#ifndef LIBICONV_PLUG
 

	
 
/* Nonstandard extensions. */
 

	
 
#if 1
 
#if 0
 
/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
 
   <wchar.h>.
 
   BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
 
   included before <wchar.h>.  */
 
#include <stddef.h>
 
#include <stdio.h>
 
#include <time.h>
 
#endif
 
#include <wchar.h>
 
#endif
 

	
 
/* A type that holds all memory needed by a conversion descriptor.
 
   A pointer to such an object can be used as an iconv_t. */
 
typedef struct {
 
  void* dummy1[28];
 
#if 1
 
  mbstate_t dummy2;
 
#endif
 
} iconv_allocation_t;
 

	
 
/* Allocates descriptor for code conversion from encoding ‘fromcode’ to
 
   encoding ‘tocode’ into preallocated memory. Returns an error indicator
 
   (0 or -1 with errno set). */
 
#define iconv_open_into libiconv_open_into
 
extern int iconv_open_into (const char* tocode, const char* fromcode,
 
                            iconv_allocation_t* resultp);
 

	
 
/* Control of attributes. */
 
#define iconvctl libiconvctl
 
extern int iconvctl (iconv_t cd, int request, void* argument);
 

	
 
/* Hook performed after every successful conversion of a Unicode character. */
 
typedef void (*iconv_unicode_char_hook) (unsigned int uc, void* data);
 
/* Hook performed after every successful conversion of a wide character. */
 
typedef void (*iconv_wide_char_hook) (wchar_t wc, void* data);
 
/* Set of hooks. */
 
struct iconv_hooks {
 
  iconv_unicode_char_hook uc_hook;
 
  iconv_wide_char_hook wc_hook;
 
  void* data;
 
};
 

	
 
/* Fallback function.  Invoked when a small number of bytes could not be
 
   converted to a Unicode character.  This function should process all
 
   bytes from inbuf and may produce replacement Unicode characters by calling
 
   the write_replacement callback repeatedly.  */
 
typedef void (*iconv_unicode_mb_to_uc_fallback)
 
             (const char* inbuf, size_t inbufsize,
 
              void (*write_replacement) (const unsigned int *buf, size_t buflen,
 
                                         void* callback_arg),
 
              void* callback_arg,
 
              void* data);
 
/* Fallback function.  Invoked when a Unicode character could not be converted
 
   to the target encoding.  This function should process the character and
 
   may produce replacement bytes (in the target encoding) by calling the
 
   write_replacement callback repeatedly.  */
 
typedef void (*iconv_unicode_uc_to_mb_fallback)
 
             (unsigned int code,
 
              void (*write_replacement) (const char *buf, size_t buflen,
 
                                         void* callback_arg),
 
              void* callback_arg,
 
              void* data);
 
#if 1
 
/* Fallback function.  Invoked when a number of bytes could not be converted to
 
   a wide character.  This function should process all bytes from inbuf and may
 
   produce replacement wide characters by calling the write_replacement
 
   callback repeatedly.  */
 
typedef void (*iconv_wchar_mb_to_wc_fallback)
 
             (const char* inbuf, size_t inbufsize,
 
              void (*write_replacement) (const wchar_t *buf, size_t buflen,
 
                                         void* callback_arg),
 
              void* callback_arg,
 
              void* data);
 
/* Fallback function.  Invoked when a wide character could not be converted to
 
   the target encoding.  This function should process the character and may
 
   produce replacement bytes (in the target encoding) by calling the
 
   write_replacement callback repeatedly.  */
 
typedef void (*iconv_wchar_wc_to_mb_fallback)
 
             (wchar_t code,
 
              void (*write_replacement) (const char *buf, size_t buflen,
 
                                         void* callback_arg),
 
              void* callback_arg,
 
              void* data);
 
#else
 
/* If the wchar_t type does not exist, these two fallback functions are never
 
   invoked.  Their argument list therefore does not matter.  */
 
typedef void (*iconv_wchar_mb_to_wc_fallback) ();
 
typedef void (*iconv_wchar_wc_to_mb_fallback) ();
 
#endif
 
/* Set of fallbacks. */
 
struct iconv_fallbacks {
 
  iconv_unicode_mb_to_uc_fallback mb_to_uc_fallback;
 
  iconv_unicode_uc_to_mb_fallback uc_to_mb_fallback;
 
  iconv_wchar_mb_to_wc_fallback mb_to_wc_fallback;
 
  iconv_wchar_wc_to_mb_fallback wc_to_mb_fallback;
 
  void* data;
 
};
 

	
 
/* Requests for iconvctl. */
 
#define ICONV_TRIVIALP            0  /* int *argument */
 
#define ICONV_GET_TRANSLITERATE   1  /* int *argument */
 
#define ICONV_SET_TRANSLITERATE   2  /* const int *argument */
 
#define ICONV_GET_DISCARD_ILSEQ   3  /* int *argument */
 
#define ICONV_SET_DISCARD_ILSEQ   4  /* const int *argument */
 
#define ICONV_SET_HOOKS           5  /* const struct iconv_hooks *argument */
 
#define ICONV_SET_FALLBACKS       6  /* const struct iconv_fallbacks *argument */
 

	
 
/* Listing of locale independent encodings. */
 
#define iconvlist libiconvlist
 
extern void iconvlist (int (*do_one) (unsigned int namescount,
 
                                      const char * const * names,
 
                                      void* data),
 
                       void* data);
 

	
 
/* Canonicalize an encoding name.
 
   The result is either a canonical encoding name, or name itself. */
 
extern const char * iconv_canonicalize (const char * name);
 

	
 
/* Support for relocatable packages.  */
 

	
 
/* Sets the original and the current installation prefix of the package.
 
   Relocation simply replaces a pathname starting with the original prefix
 
   by the corresponding pathname with the current prefix instead.  Both
 
   prefixes should be directory names without trailing slash (i.e. use ""
 
   instead of "/").  */
 
extern void libiconv_set_relocation_prefix (const char *orig_prefix,
 
					    const char *curr_prefix);
 

	
 
#endif
 

	
 

	
 
#ifdef __cplusplus
 
}
 
#endif
 

	
 

	
 
#endif /* _LIBICONV_H */
lib/libiconv/include/libcharset.h
Show inline comments
 
new file 100755
 
/* Copyright (C) 2003 Free Software Foundation, Inc.
 
   This file is part of the GNU CHARSET Library.
 

	
 
   The GNU CHARSET Library is free software; you can redistribute it and/or
 
   modify it under the terms of the GNU Library General Public License as
 
   published by the Free Software Foundation; either version 2 of the
 
   License, or (at your option) any later version.
 

	
 
   The GNU CHARSET Library 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
 
   Library General Public License for more details.
 

	
 
   You should have received a copy of the GNU Library General Public License
 
   along with the GNU CHARSET Library; see the file COPYING.LIB.  If not,
 
   write to the Free Software Foundation, Inc., 51 Franklin Street,
 
   Fifth Floor, Boston, MA 02110-1301, USA.  */
 

	
 
#ifndef _LIBCHARSET_H
 
#define _LIBCHARSET_H
 

	
 
#include <localcharset.h>
 

	
 

	
 
#ifdef __cplusplus
 
extern "C" {
 
#endif
 

	
 

	
 
/* Support for relocatable packages.  */
 

	
 
/* Sets the original and the current installation prefix of the package.
 
   Relocation simply replaces a pathname starting with the original prefix
 
   by the corresponding pathname with the current prefix instead.  Both
 
   prefixes should be directory names without trailing slash (i.e. use ""
 
   instead of "/").  */
 
extern void libcharset_set_relocation_prefix (const char *orig_prefix,
 
					      const char *curr_prefix);
 

	
 

	
 
#ifdef __cplusplus
 
}
 
#endif
 

	
 

	
 
#endif /* _LIBCHARSET_H */
lib/libiconv/include/localcharset.h
Show inline comments
 
new file 100755
 
/* Determine a canonical name for the current locale's character encoding.
 
   Copyright (C) 2000-2003 Free Software Foundation, Inc.
 
   This file is part of the GNU CHARSET Library.
 

	
 
   This program is free software; you can redistribute it and/or modify it
 
   under the terms of the GNU Library 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
 
   Library General Public License for more details.
 

	
 
   You should have received a copy of the GNU Library 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.  */
 

	
 
#ifndef _LOCALCHARSET_H
 
#define _LOCALCHARSET_H
 

	
 

	
 
#ifdef __cplusplus
 
extern "C" {
 
#endif
 

	
 

	
 
/* Determine the current locale's character encoding, and canonicalize it
 
   into one of the canonical names listed in config.charset.
 
   The result must not be freed; it is statically allocated.
 
   If the canonical name cannot be determined, the result is a non-canonical
 
   name.  */
 
extern const char * locale_charset (void);
 

	
 

	
 
#ifdef __cplusplus
 
}
 
#endif
 

	
 

	
 
#endif /* _LOCALCHARSET_H */
lib/libiconv/lib/charset.alias
Show inline comments
 
new file 100755
 
# This file contains a table of character encoding aliases,
 
# suitable for operating system 'mingw32'.
 
# It was automatically generated from config.charset.
 
# Packages using this file:  
lib/libiconv/lib/libcharset.la
Show inline comments
 
new file 100755
 
# libcharset.la - a libtool library file
 
# Generated by ltmain.sh (GNU libtool) 2.2.6
 
#
 
# Please DO NOT delete this file!
 
# It is necessary for linking the library.
 

	
 
# The name that we can dlopen(3).
 
dlname='../bin/libcharset-1.dll'
 

	
 
# Names of this library.
 
library_names='libcharset.dll.a'
 

	
 
# The name of the static archive.
 
old_library='libcharset.a'
 

	
 
# Linker flags that can not go in dependency_libs.
 
inherited_linker_flags=''
 

	
 
# Libraries that this one depends upon.
 
dependency_libs=''
 

	
 
# Names of additional weak libraries provided by this library
 
weak_library_names=''
 

	
 
# Version information for libcharset.
 
current=1
 
age=0
 
revision=0
 

	
 
# Is this an already installed library?
 
installed=yes
 

	
 
# Should we warn about portability when linking against -modules?
 
shouldnotlink=no
 

	
 
# Files to dlopen/dlpreopen
 
dlopen=''
 
dlpreopen=''
 

	
 
# Directory that this library needs to be installed in:
 
libdir='c:/mingw/lib'
lib/libiconv/lib/libiconv.la
Show inline comments
 
new file 100755
 
# libiconv.la - a libtool library file
 
# Generated by ltmain.sh (GNU libtool) 2.2.6
 
#
 
# Please DO NOT delete this file!
 
# It is necessary for linking the library.
 

	
 
# The name that we can dlopen(3).
 
dlname='../bin/libiconv-2.dll'
 

	
 
# Names of this library.
 
library_names='libiconv.dll.a'
 

	
 
# The name of the static archive.
 
old_library=''
 

	
 
# Linker flags that can not go in dependency_libs.
 
inherited_linker_flags=''
 

	
 
# Libraries that this one depends upon.
 
dependency_libs=''
 

	
 
# Names of additional weak libraries provided by this library
 
weak_library_names=''
 

	
 
# Version information for libiconv.
 
current=7
 
age=5
 
revision=0
 

	
 
# Is this an already installed library?
 
installed=yes
 

	
 
# Should we warn about portability when linking against -modules?
 
shouldnotlink=no
 

	
 
# Files to dlopen/dlpreopen
 
dlopen=''
 
dlpreopen=''
 

	
 
# Directory that this library needs to be installed in:
 
libdir='c:/mingw/lib'
lib/libiconv/share/doc/libiconv/COPYING
Show inline comments
 
new file 100755
 
                    GNU GENERAL PUBLIC LICENSE
 
                       Version 3, 29 June 2007
 

	
 
 Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
 
 Everyone is permitted to copy and distribute verbatim copies
 
 of this license document, but changing it is not allowed.
 

	
 
                            Preamble
 

	
 
  The GNU General Public License is a free, copyleft license for
 
software and other kinds of works.
 

	
 
  The licenses for most software and other practical works are designed
 
to take away your freedom to share and change the works.  By contrast,
 
the GNU General Public License is intended to guarantee your freedom to
 
share and change all versions of a program--to make sure it remains free
 
software for all its users.  We, the Free Software Foundation, use the
 
GNU General Public License for most of our software; it applies also to
 
any other work released this way by its authors.  You can apply it to
 
your programs, too.
 

	
 
  When we speak of free software, we are referring to freedom, not
 
price.  Our General Public Licenses are designed to make sure that you
 
have the freedom to distribute copies of free software (and charge for
 
them if you wish), that you receive source code or can get it if you
 
want it, that you can change the software or use pieces of it in new
 
free programs, and that you know you can do these things.
 

	
 
  To protect your rights, we need to prevent others from denying you
 
these rights or asking you to surrender the rights.  Therefore, you have
 
certain responsibilities if you distribute copies of the software, or if
 
you modify it: responsibilities to respect the freedom of others.
 

	
 
  For example, if you distribute copies of such a program, whether
 
gratis or for a fee, you must pass on to the recipients the same
 
freedoms that you received.  You must make sure that they, too, receive
 
or can get the source code.  And you must show them these terms so they
 
know their rights.
 

	
 
  Developers that use the GNU GPL protect your rights with two steps:
 
(1) assert copyright on the software, and (2) offer you this License
 
giving you legal permission to copy, distribute and/or modify it.
 

	
 
  For the developers' and authors' protection, the GPL clearly explains
 
that there is no warranty for this free software.  For both users' and
 
authors' sake, the GPL requires that modified versions be marked as
 
changed, so that their problems will not be attributed erroneously to
 
authors of previous versions.
 

	
 
  Some devices are designed to deny users access to install or run
 
modified versions of the software inside them, although the manufacturer
 
can do so.  This is fundamentally incompatible with the aim of
 
protecting users' freedom to change the software.  The systematic
 
pattern of such abuse occurs in the area of products for individuals to
 
use, which is precisely where it is most unacceptable.  Therefore, we
 
have designed this version of the GPL to prohibit the practice for those
 
products.  If such problems arise substantially in other domains, we
 
stand ready to extend this provision to those domains in future versions
 
of the GPL, as needed to protect the freedom of users.
 

	
 
  Finally, every program is threatened constantly by software patents.
 
States should not allow patents to restrict development and use of
 
software on general-purpose computers, but in those that do, we wish to
 
avoid the special danger that patents applied to a free program could
 
make it effectively proprietary.  To prevent this, the GPL assures that
 
patents cannot be used to render the program non-free.
 

	
 
  The precise terms and conditions for copying, distribution and
 
modification follow.
 

	
 
                       TERMS AND CONDITIONS
 

	
 
  0. Definitions.
 

	
 
  "This License" refers to version 3 of the GNU General Public License.
 

	
 
  "Copyright" also means copyright-like laws that apply to other kinds of
 
works, such as semiconductor masks.
 

	
 
  "The Program" refers to any copyrightable work licensed under this
 
License.  Each licensee is addressed as "you".  "Licensees" and
 
"recipients" may be individuals or organizations.
 

	
 
  To "modify" a work means to copy from or adapt all or part of the work
 
in a fashion requiring copyright permission, other than the making of an
 
exact copy.  The resulting work is called a "modified version" of the
 
earlier work or a work "based on" the earlier work.
 

	
 
  A "covered work" means either the unmodified Program or a work based
 
on the Program.
 

	
 
  To "propagate" a work means to do anything with it that, without
 
permission, would make you directly or secondarily liable for
 
infringement under applicable copyright law, except executing it on a
 
computer or modifying a private copy.  Propagation includes copying,
 
distribution (with or without modification), making available to the
 
public, and in some countries other activities as well.
 

	
 
  To "convey" a work means any kind of propagation that enables other
 
parties to make or receive copies.  Mere interaction with a user through
 
a computer network, with no transfer of a copy, is not conveying.
 

	
 
  An interactive user interface displays "Appropriate Legal Notices"
 
to the extent that it includes a convenient and prominently visible
 
feature that (1) displays an appropriate copyright notice, and (2)
 
tells the user that there is no warranty for the work (except to the
 
extent that warranties are provided), that licensees may convey the
 
work under this License, and how to view a copy of this License.  If
 
the interface presents a list of user commands or options, such as a
 
menu, a prominent item in the list meets this criterion.
 

	
 
  1. Source Code.
 

	
 
  The "source code" for a work means the preferred form of the work
 
for making modifications to it.  "Object code" means any non-source
 
form of a work.
 

	
 
  A "Standard Interface" means an interface that either is an official
 
standard defined by a recognized standards body, or, in the case of
 
interfaces specified for a particular programming language, one that
 
is widely used among developers working in that language.
 

	
 
  The "System Libraries" of an executable work include anything, other
 
than the work as a whole, that (a) is included in the normal form of
 
packaging a Major Component, but which is not part of that Major
 
Component, and (b) serves only to enable use of the work with that
 
Major Component, or to implement a Standard Interface for which an
 
implementation is available to the public in source code form.  A
 
"Major Component", in this context, means a major essential component
 
(kernel, window system, and so on) of the specific operating system
 
(if any) on which the executable work runs, or a compiler used to
 
produce the work, or an object code interpreter used to run it.
 

	
 
  The "Corresponding Source" for a work in object code form means all
 
the source code needed to generate, install, and (for an executable
 
work) run the object code and to modify the work, including scripts to
 
control those activities.  However, it does not include the work's
 
System Libraries, or general-purpose tools or generally available free
 
programs which are used unmodified in performing those activities but
 
which are not part of the work.  For example, Corresponding Source
 
includes interface definition files associated with source files for
 
the work, and the source code for shared libraries and dynamically
 
linked subprograms that the work is specifically designed to require,
 
such as by intimate data communication or control flow between those
 
subprograms and other parts of the work.
 

	
 
  The Corresponding Source need not include anything that users
 
can regenerate automatically from other parts of the Corresponding
 
Source.
 

	
 
  The Corresponding Source for a work in source code form is that
 
same work.
 

	
 
  2. Basic Permissions.
 

	
 
  All rights granted under this License are granted for the term of
 
copyright on the Program, and are irrevocable provided the stated
 
conditions are met.  This License explicitly affirms your unlimited
 
permission to run the unmodified Program.  The output from running a
 
covered work is covered by this License only if the output, given its
 
content, constitutes a covered work.  This License acknowledges your
 
rights of fair use or other equivalent, as provided by copyright law.
 

	
 
  You may make, run and propagate covered works that you do not
 
convey, without conditions so long as your license otherwise remains
 
in force.  You may convey covered works to others for the sole purpose
 
of having them make modifications exclusively for you, or provide you
 
with facilities for running those works, provided that you comply with
 
the terms of this License in conveying all material for which you do
 
not control copyright.  Those thus making or running the covered works
 
for you must do so exclusively on your behalf, under your direction
 
and control, on terms that prohibit them from making any copies of
 
your copyrighted material outside their relationship with you.
 

	
 
  Conveying under any other circumstances is permitted solely under
 
the conditions stated below.  Sublicensing is not allowed; section 10
 
makes it unnecessary.
 

	
 
  3. Protecting Users' Legal Rights From Anti-Circumvention Law.
 

	
 
  No covered work shall be deemed part of an effective technological
 
measure under any applicable law fulfilling obligations under article
 
11 of the WIPO copyright treaty adopted on 20 December 1996, or
 
similar laws prohibiting or restricting circumvention of such
 
measures.
 

	
 
  When you convey a covered work, you waive any legal power to forbid
 
circumvention of technological measures to the extent such circumvention
 
is effected by exercising rights under this License with respect to
 
the covered work, and you disclaim any intention to limit operation or
 
modification of the work as a means of enforcing, against the work's
 
users, your or third parties' legal rights to forbid circumvention of
 
technological measures.
 

	
 
  4. Conveying Verbatim Copies.
 

	
 
  You may convey verbatim copies of the Program's source code as you
 
receive it, in any medium, provided that you conspicuously and
 
appropriately publish on each copy an appropriate copyright notice;
 
keep intact all notices stating that this License and any
 
non-permissive terms added in accord with section 7 apply to the code;
 
keep intact all notices of the absence of any warranty; and give all
 
recipients a copy of this License along with the Program.
 

	
 
  You may charge any price or no price for each copy that you convey,
 
and you may offer support or warranty protection for a fee.
 

	
 
  5. Conveying Modified Source Versions.
 

	
 
  You may convey a work based on the Program, or the modifications to
 
produce it from the Program, in the form of source code under the
 
terms of section 4, provided that you also meet all of these conditions:
 

	
 
    a) The work must carry prominent notices stating that you modified
 
    it, and giving a relevant date.
 

	
 
    b) The work must carry prominent notices stating that it is
 
    released under this License and any conditions added under section
 
    7.  This requirement modifies the requirement in section 4 to
 
    "keep intact all notices".
 

	
 
    c) You must license the entire work, as a whole, under this
 
    License to anyone who comes into possession of a copy.  This
 
    License will therefore apply, along with any applicable section 7
 
    additional terms, to the whole of the work, and all its parts,
 
    regardless of how they are packaged.  This License gives no
 
    permission to license the work in any other way, but it does not
 
    invalidate such permission if you have separately received it.
 

	
 
    d) If the work has interactive user interfaces, each must display
 
    Appropriate Legal Notices; however, if the Program has interactive
 
    interfaces that do not display Appropriate Legal Notices, your
 
    work need not make them do so.
 

	
 
  A compilation of a covered work with other separate and independent
 
works, which are not by their nature extensions of the covered work,
 
and which are not combined with it such as to form a larger program,
 
in or on a volume of a storage or distribution medium, is called an
 
"aggregate" if the compilation and its resulting copyright are not
 
used to limit the access or legal rights of the compilation's users
 
beyond what the individual works permit.  Inclusion of a covered work
 
in an aggregate does not cause this License to apply to the other
 
parts of the aggregate.
 

	
 
  6. Conveying Non-Source Forms.
 

	
 
  You may convey a covered work in object code form under the terms
 
of sections 4 and 5, provided that you also convey the
 
machine-readable Corresponding Source under the terms of this License,
 
in one of these ways:
 

	
 
    a) Convey the object code in, or embodied in, a physical product
 
    (including a physical distribution medium), accompanied by the
 
    Corresponding Source fixed on a durable physical medium
 
    customarily used for software interchange.
 

	
 
    b) Convey the object code in, or embodied in, a physical product
 
    (including a physical distribution medium), accompanied by a
 
    written offer, valid for at least three years and valid for as
 
    long as you offer spare parts or customer support for that product
 
    model, to give anyone who possesses the object code either (1) a
 
    copy of the Corresponding Source for all the software in the
 
    product that is covered by this License, on a durable physical
 
    medium customarily used for software interchange, for a price no
 
    more than your reasonable cost of physically performing this
 
    conveying of source, or (2) access to copy the
 
    Corresponding Source from a network server at no charge.
 

	
 
    c) Convey individual copies of the object code with a copy of the
 
    written offer to provide the Corresponding Source.  This
 
    alternative is allowed only occasionally and noncommercially, and
 
    only if you received the object code with such an offer, in accord
 
    with subsection 6b.
 

	
 
    d) Convey the object code by offering access from a designated
 
    place (gratis or for a charge), and offer equivalent access to the
 
    Corresponding Source in the same way through the same place at no
 
    further charge.  You need not require recipients to copy the
 
    Corresponding Source along with the object code.  If the place to
 
    copy the object code is a network server, the Corresponding Source
 
    may be on a different server (operated by you or a third party)
 
    that supports equivalent copying facilities, provided you maintain
 
    clear directions next to the object code saying where to find the
 
    Corresponding Source.  Regardless of what server hosts the
 
    Corresponding Source, you remain obligated to ensure that it is
 
    available for as long as needed to satisfy these requirements.
 

	
 
    e) Convey the object code using peer-to-peer transmission, provided
 
    you inform other peers where the object code and Corresponding
 
    Source of the work are being offered to the general public at no
 
    charge under subsection 6d.
 

	
 
  A separable portion of the object code, whose source code is excluded
 
from the Corresponding Source as a System Library, need not be
 
included in conveying the object code work.
 

	
 
  A "User Product" is either (1) a "consumer product", which means any
 
tangible personal property which is normally used for personal, family,
 
or household purposes, or (2) anything designed or sold for incorporation
 
into a dwelling.  In determining whether a product is a consumer product,
 
doubtful cases shall be resolved in favor of coverage.  For a particular
 
product received by a particular user, "normally used" refers to a
 
typical or common use of that class of product, regardless of the status
 
of the particular user or of the way in which the particular user
 
actually uses, or expects or is expected to use, the product.  A product
 
is a consumer product regardless of whether the product has substantial
 
commercial, industrial or non-consumer uses, unless such uses represent
 
the only significant mode of use of the product.
 

	
 
  "Installation Information" for a User Product means any methods,
 
procedures, authorization keys, or other information required to install
 
and execute modified versions of a covered work in that User Product from
 
a modified version of its Corresponding Source.  The information must
 
suffice to ensure that the continued functioning of the modified object
 
code is in no case prevented or interfered with solely because
 
modification has been made.
 

	
 
  If you convey an object code work under this section in, or with, or
 
specifically for use in, a User Product, and the conveying occurs as
 
part of a transaction in which the right of possession and use of the
 
User Product is transferred to the recipient in perpetuity or for a
 
fixed term (regardless of how the transaction is characterized), the
 
Corresponding Source conveyed under this section must be accompanied
 
by the Installation Information.  But this requirement does not apply
 
if neither you nor any third party retains the ability to install
 
modified object code on the User Product (for example, the work has
 
been installed in ROM).
 

	
 
  The requirement to provide Installation Information does not include a
 
requirement to continue to provide support service, warranty, or updates
 
for a work that has been modified or installed by the recipient, or for
 
the User Product in which it has been modified or installed.  Access to a
 
network may be denied when the modification itself materially and
 
adversely affects the operation of the network or violates the rules and
 
protocols for communication across the network.
 

	
 
  Corresponding Source conveyed, and Installation Information provided,
 
in accord with this section must be in a format that is publicly
 
documented (and with an implementation available to the public in
 
source code form), and must require no special password or key for
 
unpacking, reading or copying.
 

	
 
  7. Additional Terms.
 

	
 
  "Additional permissions" are terms that supplement the terms of this
 
License by making exceptions from one or more of its conditions.
 
Additional permissions that are applicable to the entire Program shall
 
be treated as though they were included in this License, to the extent
 
that they are valid under applicable law.  If additional permissions
 
apply only to part of the Program, that part may be used separately
 
under those permissions, but the entire Program remains governed by
 
this License without regard to the additional permissions.
 

	
 
  When you convey a copy of a covered work, you may at your option
 
remove any additional permissions from that copy, or from any part of
 
it.  (Additional permissions may be written to require their own
 
removal in certain cases when you modify the work.)  You may place
 
additional permissions on material, added by you to a covered work,
 
for which you have or can give appropriate copyright permission.
 

	
 
  Notwithstanding any other provision of this License, for material you
 
add to a covered work, you may (if authorized by the copyright holders of
 
that material) supplement the terms of this License with terms:
 

	
 
    a) Disclaiming warranty or limiting liability differently from the
 
    terms of sections 15 and 16 of this License; or
 

	
 
    b) Requiring preservation of specified reasonable legal notices or
 
    author attributions in that material or in the Appropriate Legal
 
    Notices displayed by works containing it; or
 

	
 
    c) Prohibiting misrepresentation of the origin of that material, or
 
    requiring that modified versions of such material be marked in
 
    reasonable ways as different from the original version; or
 

	
 
    d) Limiting the use for publicity purposes of names of licensors or
 
    authors of the material; or
 

	
 
    e) Declining to grant rights under trademark law for use of some
 
    trade names, trademarks, or service marks; or
 

	
 
    f) Requiring indemnification of licensors and authors of that
 
    material by anyone who conveys the material (or modified versions of
 
    it) with contractual assumptions of liability to the recipient, for
 
    any liability that these contractual assumptions directly impose on
 
    those licensors and authors.
 

	
 
  All other non-permissive additional terms are considered "further
 
restrictions" within the meaning of section 10.  If the Program as you
 
received it, or any part of it, contains a notice stating that it is
 
governed by this License along with a term that is a further
 
restriction, you may remove that term.  If a license document contains
 
a further restriction but permits relicensing or conveying under this
 
License, you may add to a covered work material governed by the terms
 
of that license document, provided that the further restriction does
 
not survive such relicensing or conveying.
 

	
 
  If you add terms to a covered work in accord with this section, you
 
must place, in the relevant source files, a statement of the
 
additional terms that apply to those files, or a notice indicating
 
where to find the applicable terms.
 

	
 
  Additional terms, permissive or non-permissive, may be stated in the
 
form of a separately written license, or stated as exceptions;
 
the above requirements apply either way.
 

	
 
  8. Termination.
 

	
 
  You may not propagate or modify a covered work except as expressly
 
provided under this License.  Any attempt otherwise to propagate or
 
modify it is void, and will automatically terminate your rights under
 
this License (including any patent licenses granted under the third
 
paragraph of section 11).
 

	
 
  However, if you cease all violation of this License, then your
 
license from a particular copyright holder is reinstated (a)
 
provisionally, unless and until the copyright holder explicitly and
 
finally terminates your license, and (b) permanently, if the copyright
 
holder fails to notify you of the violation by some reasonable means
 
prior to 60 days after the cessation.
 

	
 
  Moreover, your license from a particular copyright holder is
 
reinstated permanently if the copyright holder notifies you of the
 
violation by some reasonable means, this is the first time you have
 
received notice of violation of this License (for any work) from that
 
copyright holder, and you cure the violation prior to 30 days after
 
your receipt of the notice.
 

	
 
  Termination of your rights under this section does not terminate the
 
licenses of parties who have received copies or rights from you under
 
this License.  If your rights have been terminated and not permanently
 
reinstated, you do not qualify to receive new licenses for the same
 
material under section 10.
 

	
 
  9. Acceptance Not Required for Having Copies.
 

	
 
  You are not required to accept this License in order to receive or
 
run a copy of the Program.  Ancillary propagation of a covered work
 
occurring solely as a consequence of using peer-to-peer transmission
 
to receive a copy likewise does not require acceptance.  However,
 
nothing other than this License grants you permission to propagate or
 
modify any covered work.  These actions infringe copyright if you do
 
not accept this License.  Therefore, by modifying or propagating a
 
covered work, you indicate your acceptance of this License to do so.
 

	
 
  10. Automatic Licensing of Downstream Recipients.
 

	
 
  Each time you convey a covered work, the recipient automatically
 
receives a license from the original licensors, to run, modify and
 
propagate that work, subject to this License.  You are not responsible
 
for enforcing compliance by third parties with this License.
 

	
 
  An "entity transaction" is a transaction transferring control of an
 
organization, or substantially all assets of one, or subdividing an
 
organization, or merging organizations.  If propagation of a covered
 
work results from an entity transaction, each party to that
 
transaction who receives a copy of the work also receives whatever
 
licenses to the work the party's predecessor in interest had or could
 
give under the previous paragraph, plus a right to possession of the
 
Corresponding Source of the work from the predecessor in interest, if
 
the predecessor has it or can get it with reasonable efforts.
 

	
 
  You may not impose any further restrictions on the exercise of the
 
rights granted or affirmed under this License.  For example, you may
 
not impose a license fee, royalty, or other charge for exercise of
 
rights granted under this License, and you may not initiate litigation
 
(including a cross-claim or counterclaim in a lawsuit) alleging that
 
any patent claim is infringed by making, using, selling, offering for
 
sale, or importing the Program or any portion of it.
 

	
 
  11. Patents.
 

	
 
  A "contributor" is a copyright holder who authorizes use under this
 
License of the Program or a work on which the Program is based.  The
 
work thus licensed is called the contributor's "contributor version".
 

	
 
  A contributor's "essential patent claims" are all patent claims
 
owned or controlled by the contributor, whether already acquired or
 
hereafter acquired, that would be infringed by some manner, permitted
 
by this License, of making, using, or selling its contributor version,
 
but do not include claims that would be infringed only as a
 
consequence of further modification of the contributor version.  For
 
purposes of this definition, "control" includes the right to grant
 
patent sublicenses in a manner consistent with the requirements of
 
this License.
 

	
 
  Each contributor grants you a non-exclusive, worldwide, royalty-free
 
patent license under the contributor's essential patent claims, to
 
make, use, sell, offer for sale, import and otherwise run, modify and
 
propagate the contents of its contributor version.
 

	
 
  In the following three paragraphs, a "patent license" is any express
 
agreement or commitment, however denominated, not to enforce a patent
 
(such as an express permission to practice a patent or covenant not to
 
sue for patent infringement).  To "grant" such a patent license to a
 
party means to make such an agreement or commitment not to enforce a
 
patent against the party.
 

	
 
  If you convey a covered work, knowingly relying on a patent license,
 
and the Corresponding Source of the work is not available for anyone
 
to copy, free of charge and under the terms of this License, through a
 
publicly available network server or other readily accessible means,
 
then you must either (1) cause the Corresponding Source to be so
 
available, or (2) arrange to deprive yourself of the benefit of the
 
patent license for this particular work, or (3) arrange, in a manner
 
consistent with the requirements of this License, to extend the patent
 
license to downstream recipients.  "Knowingly relying" means you have
 
actual knowledge that, but for the patent license, your conveying the
 
covered work in a country, or your recipient's use of the covered work
 
in a country, would infringe one or more identifiable patents in that
 
country that you have reason to believe are valid.
 

	
 
  If, pursuant to or in connection with a single transaction or
 
arrangement, you convey, or propagate by procuring conveyance of, a
 
covered work, and grant a patent license to some of the parties
 
receiving the covered work authorizing them to use, propagate, modify
 
or convey a specific copy of the covered work, then the patent license
 
you grant is automatically extended to all recipients of the covered
 
work and works based on it.
 

	
 
  A patent license is "discriminatory" if it does not include within
 
the scope of its coverage, prohibits the exercise of, or is
 
conditioned on the non-exercise of one or more of the rights that are
 
specifically granted under this License.  You may not convey a covered
 
work if you are a party to an arrangement with a third party that is
 
in the business of distributing software, under which you make payment
 
to the third party based on the extent of your activity of conveying
 
the work, and under which the third party grants, to any of the
 
parties who would receive the covered work from you, a discriminatory
 
patent license (a) in connection with copies of the covered work
 
conveyed by you (or copies made from those copies), or (b) primarily
 
for and in connection with specific products or compilations that
 
contain the covered work, unless you entered into that arrangement,
 
or that patent license was granted, prior to 28 March 2007.
 

	
 
  Nothing in this License shall be construed as excluding or limiting
 
any implied license or other defenses to infringement that may
 
otherwise be available to you under applicable patent law.
 

	
 
  12. No Surrender of Others' Freedom.
 

	
 
  If conditions are imposed on you (whether by court order, agreement or
 
otherwise) that contradict the conditions of this License, they do not
 
excuse you from the conditions of this License.  If you cannot convey a
 
covered work so as to satisfy simultaneously your obligations under this
 
License and any other pertinent obligations, then as a consequence you may
 
not convey it at all.  For example, if you agree to terms that obligate you
 
to collect a royalty for further conveying from those to whom you convey
 
the Program, the only way you could satisfy both those terms and this
 
License would be to refrain entirely from conveying the Program.
 

	
 
  13. Use with the GNU Affero General Public License.
 

	
 
  Notwithstanding any other provision of this License, you have
 
permission to link or combine any covered work with a work licensed
 
under version 3 of the GNU Affero General Public License into a single
 
combined work, and to convey the resulting work.  The terms of this
 
License will continue to apply to the part which is the covered work,
 
but the special requirements of the GNU Affero General Public License,
 
section 13, concerning interaction through a network will apply to the
 
combination as such.
 

	
 
  14. Revised Versions of this License.
 

	
 
  The Free Software Foundation may publish revised and/or new versions of
 
the GNU General Public License from time to time.  Such new versions will
 
be similar in spirit to the present version, but may differ in detail to
 
address new problems or concerns.
 

	
 
  Each version is given a distinguishing version number.  If the
 
Program specifies that a certain numbered version of the GNU General
 
Public License "or any later version" applies to it, you have the
 
option of following the terms and conditions either of that numbered
 
version or of any later version published by the Free Software
 
Foundation.  If the Program does not specify a version number of the
 
GNU General Public License, you may choose any version ever published
 
by the Free Software Foundation.
 

	
 
  If the Program specifies that a proxy can decide which future
 
versions of the GNU General Public License can be used, that proxy's
 
public statement of acceptance of a version permanently authorizes you
 
to choose that version for the Program.
 

	
 
  Later license versions may give you additional or different
 
permissions.  However, no additional obligations are imposed on any
 
author or copyright holder as a result of your choosing to follow a
 
later version.
 

	
 
  15. Disclaimer of Warranty.
 

	
 
  THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
 
APPLICABLE LAW.  EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
 
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
 
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
 
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
 
PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
 
IS WITH YOU.  SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
 
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
 

	
 
  16. Limitation of Liability.
 

	
 
  IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
 
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
 
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
 
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
 
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
 
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
 
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
 
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
 
SUCH DAMAGES.
 

	
 
  17. Interpretation of Sections 15 and 16.
 

	
 
  If the disclaimer of warranty and limitation of liability provided
 
above cannot be given local legal effect according to their terms,
 
reviewing courts shall apply local law that most closely approximates
 
an absolute waiver of all civil liability in connection with the
 
Program, unless a warranty or assumption of liability accompanies a
 
copy of the Program in return for a fee.
 

	
 
                     END OF TERMS AND CONDITIONS
 

	
 
            How to Apply These Terms to Your New Programs
 

	
 
  If you develop a new program, and you want it to be of the greatest
 
possible use to the public, the best way to achieve this is to make it
 
free software which everyone can redistribute and change under these terms.
 

	
 
  To do so, attach the following notices to the program.  It is safest
 
to attach them to the start of each source file to most effectively
 
state the exclusion of warranty; and each file should have at least
 
the "copyright" line and a pointer to where the full notice is found.
 

	
 
    <one line to give the program's name and a brief idea of what it does.>
 
    Copyright (C) <year>  <name of author>
 

	
 
    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 3 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, see <http://www.gnu.org/licenses/>.
 

	
 
Also add information on how to contact you by electronic and paper mail.
 

	
 
  If the program does terminal interaction, make it output a short
 
notice like this when it starts in an interactive mode:
 

	
 
    <program>  Copyright (C) <year>  <name of author>
 
    This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
 
    This is free software, and you are welcome to redistribute it
 
    under certain conditions; type `show c' for details.
 

	
 
The hypothetical commands `show w' and `show c' should show the appropriate
 
parts of the General Public License.  Of course, your program's commands
 
might be different; for a GUI interface, you would use an "about box".
 

	
 
  You should also get your employer (if you work as a programmer) or school,
 
if any, to sign a "copyright disclaimer" for the program, if necessary.
 
For more information on this, and how to apply and follow the GNU GPL, see
 
<http://www.gnu.org/licenses/>.
 

	
 
  The GNU General Public License does not permit incorporating your program
 
into proprietary programs.  If your program is a subroutine library, you
 
may consider it more useful to permit linking proprietary applications with
 
the library.  If this is what you want to do, use the GNU Lesser General
 
Public License instead of this License.  But first, please read
 
<http://www.gnu.org/philosophy/why-not-lgpl.html>.
lib/libiconv/share/doc/libiconv/COPYING.LIB
Show inline comments
 
new file 100755
 
		  GNU LIBRARY GENERAL PUBLIC LICENSE
 
		       Version 2, June 1991
 

	
 
 Copyright (C) 1991 Free Software Foundation, Inc.
 
 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
 
 Everyone is permitted to copy and distribute verbatim copies
 
 of this license document, but changing it is not allowed.
 

	
 
[This is the first released version of the library GPL.  It is
 
 numbered 2 because it goes with version 2 of the ordinary GPL.]
 

	
 
			    Preamble
 

	
 
  The licenses for most software are designed to take away your
 
freedom to share and change it.  By contrast, the GNU General Public
 
Licenses are intended to guarantee your freedom to share and change
 
free software--to make sure the software is free for all its users.
 

	
 
  This license, the Library General Public License, applies to some
 
specially designated Free Software Foundation software, and to any
 
other libraries whose authors decide to use it.  You can use it for
 
your libraries, too.
 

	
 
  When we speak of free software, we are referring to freedom, not
 
price.  Our General Public Licenses are designed to make sure that you
 
have the freedom to distribute copies of free software (and charge for
 
this service if you wish), that you receive source code or can get it
 
if you want it, that you can change the software or use pieces of it
 
in new free programs; and that you know you can do these things.
 

	
 
  To protect your rights, we need to make restrictions that forbid
 
anyone to deny you these rights or to ask you to surrender the rights.
 
These restrictions translate to certain responsibilities for you if
 
you distribute copies of the library, or if you modify it.
 

	
 
  For example, if you distribute copies of the library, whether gratis
 
or for a fee, you must give the recipients all the rights that we gave
 
you.  You must make sure that they, too, receive or can get the source
 
code.  If you link a program with the library, you must provide
 
complete object files to the recipients so that they can relink them
 
with the library, after making changes to the library and recompiling
 
it.  And you must show them these terms so they know their rights.
 

	
 
  Our method of protecting your rights has two steps: (1) copyright
 
the library, and (2) offer you this license which gives you legal
 
permission to copy, distribute and/or modify the library.
 

	
 
  Also, for each distributor's protection, we want to make certain
 
that everyone understands that there is no warranty for this free
 
library.  If the library is modified by someone else and passed on, we
 
want its recipients to know that what they have is not the original
 
version, so that any problems introduced by others will not reflect on
 
the original authors' reputations.
 

 
  Finally, any free program is threatened constantly by software
 
patents.  We wish to avoid the danger that companies distributing free
 
software will individually obtain patent licenses, thus in effect
 
transforming the program into proprietary software.  To prevent this,
 
we have made it clear that any patent must be licensed for everyone's
 
free use or not licensed at all.
 

	
 
  Most GNU software, including some libraries, is covered by the ordinary
 
GNU General Public License, which was designed for utility programs.  This
 
license, the GNU Library General Public License, applies to certain
 
designated libraries.  This license is quite different from the ordinary
 
one; be sure to read it in full, and don't assume that anything in it is
 
the same as in the ordinary license.
 

	
 
  The reason we have a separate public license for some libraries is that
 
they blur the distinction we usually make between modifying or adding to a
 
program and simply using it.  Linking a program with a library, without
 
changing the library, is in some sense simply using the library, and is
 
analogous to running a utility program or application program.  However, in
 
a textual and legal sense, the linked executable is a combined work, a
 
derivative of the original library, and the ordinary General Public License
 
treats it as such.
 

	
 
  Because of this blurred distinction, using the ordinary General
 
Public License for libraries did not effectively promote software
 
sharing, because most developers did not use the libraries.  We
 
concluded that weaker conditions might promote sharing better.
 

	
 
  However, unrestricted linking of non-free programs would deprive the
 
users of those programs of all benefit from the free status of the
 
libraries themselves.  This Library General Public License is intended to
 
permit developers of non-free programs to use free libraries, while
 
preserving your freedom as a user of such programs to change the free
 
libraries that are incorporated in them.  (We have not seen how to achieve
 
this as regards changes in header files, but we have achieved it as regards
 
changes in the actual functions of the Library.)  The hope is that this
 
will lead to faster development of free libraries.
 

	
 
  The precise terms and conditions for copying, distribution and
 
modification follow.  Pay close attention to the difference between a
 
"work based on the library" and a "work that uses the library".  The
 
former contains code derived from the library, while the latter only
 
works together with the library.
 

	
 
  Note that it is possible for a library to be covered by the ordinary
 
General Public License rather than by this special one.
 

 
		  GNU LIBRARY GENERAL PUBLIC LICENSE
 
   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
 

	
 
  0. This License Agreement applies to any software library which
 
contains a notice placed by the copyright holder or other authorized
 
party saying it may be distributed under the terms of this Library
 
General Public License (also called "this License").  Each licensee is
 
addressed as "you".
 

	
 
  A "library" means a collection of software functions and/or data
 
prepared so as to be conveniently linked with application programs
 
(which use some of those functions and data) to form executables.
 

	
 
  The "Library", below, refers to any such software library or work
 
which has been distributed under these terms.  A "work based on the
 
Library" means either the Library or any derivative work under
 
copyright law: that is to say, a work containing the Library or a
 
portion of it, either verbatim or with modifications and/or translated
 
straightforwardly into another language.  (Hereinafter, translation is
 
included without limitation in the term "modification".)
 

	
 
  "Source code" for a work means the preferred form of the work for
 
making modifications to it.  For a library, complete source code means
 
all the source code for all modules it contains, plus any associated
 
interface definition files, plus the scripts used to control compilation
 
and installation of the library.
 

	
 
  Activities other than copying, distribution and modification are not
 
covered by this License; they are outside its scope.  The act of
 
running a program using the Library is not restricted, and output from
 
such a program is covered only if its contents constitute a work based
 
on the Library (independent of the use of the Library in a tool for
 
writing it).  Whether that is true depends on what the Library does
 
and what the program that uses the Library does.
 
  
 
  1. You may copy and distribute verbatim copies of the Library's
 
complete source code as you receive it, in any medium, provided that
 
you conspicuously and appropriately publish on each copy an
 
appropriate copyright notice and disclaimer of warranty; keep intact
 
all the notices that refer to this License and to the absence of any
 
warranty; and distribute a copy of this License along with the
 
Library.
 

	
 
  You may charge a fee for the physical act of transferring a copy,
 
and you may at your option offer warranty protection in exchange for a
 
fee.
 

 
  2. You may modify your copy or copies of the Library or any portion
 
of it, thus forming a work based on the Library, and copy and
 
distribute such modifications or work under the terms of Section 1
 
above, provided that you also meet all of these conditions:
 

	
 
    a) The modified work must itself be a software library.
 

	
 
    b) You must cause the files modified to carry prominent notices
 
    stating that you changed the files and the date of any change.
 

	
 
    c) You must cause the whole of the work to be licensed at no
 
    charge to all third parties under the terms of this License.
 

	
 
    d) If a facility in the modified Library refers to a function or a
 
    table of data to be supplied by an application program that uses
 
    the facility, other than as an argument passed when the facility
 
    is invoked, then you must make a good faith effort to ensure that,
 
    in the event an application does not supply such function or
 
    table, the facility still operates, and performs whatever part of
 
    its purpose remains meaningful.
 

	
 
    (For example, a function in a library to compute square roots has
 
    a purpose that is entirely well-defined independent of the
 
    application.  Therefore, Subsection 2d requires that any
 
    application-supplied function or table used by this function must
 
    be optional: if the application does not supply it, the square
 
    root function must still compute square roots.)
 

	
 
These requirements apply to the modified work as a whole.  If
 
identifiable sections of that work are not derived from the Library,
 
and can be reasonably considered independent and separate works in
 
themselves, then this License, and its terms, do not apply to those
 
sections when you distribute them as separate works.  But when you
 
distribute the same sections as part of a whole which is a work based
 
on the Library, the distribution of the whole must be on the terms of
 
this License, whose permissions for other licensees extend to the
 
entire whole, and thus to each and every part regardless of who wrote
 
it.
 

	
 
Thus, it is not the intent of this section to claim rights or contest
 
your rights to work written entirely by you; rather, the intent is to
 
exercise the right to control the distribution of derivative or
 
collective works based on the Library.
 

	
 
In addition, mere aggregation of another work not based on the Library
 
with the Library (or with a work based on the Library) on a volume of
 
a storage or distribution medium does not bring the other work under
 
the scope of this License.
 

	
 
  3. You may opt to apply the terms of the ordinary GNU General Public
 
License instead of this License to a given copy of the Library.  To do
 
this, you must alter all the notices that refer to this License, so
 
that they refer to the ordinary GNU General Public License, version 2,
 
instead of to this License.  (If a newer version than version 2 of the
 
ordinary GNU General Public License has appeared, then you can specify
 
that version instead if you wish.)  Do not make any other change in
 
these notices.
 

 
  Once this change is made in a given copy, it is irreversible for
 
that copy, so the ordinary GNU General Public License applies to all
 
subsequent copies and derivative works made from that copy.
 

	
 
  This option is useful when you wish to copy part of the code of
 
the Library into a program that is not a library.
 

	
 
  4. You may copy and distribute the Library (or a portion or
 
derivative of it, under Section 2) in object code or executable form
 
under the terms of Sections 1 and 2 above provided that you accompany
 
it with the complete corresponding machine-readable source code, which
 
must be distributed under the terms of Sections 1 and 2 above on a
 
medium customarily used for software interchange.
 

	
 
  If distribution of object code is made by offering access to copy
 
from a designated place, then offering equivalent access to copy the
 
source code from the same place satisfies the requirement to
 
distribute the source code, even though third parties are not
 
compelled to copy the source along with the object code.
 

	
 
  5. A program that contains no derivative of any portion of the
 
Library, but is designed to work with the Library by being compiled or
 
linked with it, is called a "work that uses the Library".  Such a
 
work, in isolation, is not a derivative work of the Library, and
 
therefore falls outside the scope of this License.
 

	
 
  However, linking a "work that uses the Library" with the Library
 
creates an executable that is a derivative of the Library (because it
 
contains portions of the Library), rather than a "work that uses the
 
library".  The executable is therefore covered by this License.
 
Section 6 states terms for distribution of such executables.
 

	
 
  When a "work that uses the Library" uses material from a header file
 
that is part of the Library, the object code for the work may be a
 
derivative work of the Library even though the source code is not.
 
Whether this is true is especially significant if the work can be
 
linked without the Library, or if the work is itself a library.  The
 
threshold for this to be true is not precisely defined by law.
 

	
 
  If such an object file uses only numerical parameters, data
 
structure layouts and accessors, and small macros and small inline
 
functions (ten lines or less in length), then the use of the object
 
file is unrestricted, regardless of whether it is legally a derivative
 
work.  (Executables containing this object code plus portions of the
 
Library will still fall under Section 6.)
 

	
 
  Otherwise, if the work is a derivative of the Library, you may
 
distribute the object code for the work under the terms of Section 6.
 
Any executables containing that work also fall under Section 6,
 
whether or not they are linked directly with the Library itself.
 

 
  6. As an exception to the Sections above, you may also compile or
 
link a "work that uses the Library" with the Library to produce a
 
work containing portions of the Library, and distribute that work
 
under terms of your choice, provided that the terms permit
 
modification of the work for the customer's own use and reverse
 
engineering for debugging such modifications.
 

	
 
  You must give prominent notice with each copy of the work that the
 
Library is used in it and that the Library and its use are covered by
 
this License.  You must supply a copy of this License.  If the work
 
during execution displays copyright notices, you must include the
 
copyright notice for the Library among them, as well as a reference
 
directing the user to the copy of this License.  Also, you must do one
 
of these things:
 

	
 
    a) Accompany the work with the complete corresponding
 
    machine-readable source code for the Library including whatever
 
    changes were used in the work (which must be distributed under
 
    Sections 1 and 2 above); and, if the work is an executable linked
 
    with the Library, with the complete machine-readable "work that
 
    uses the Library", as object code and/or source code, so that the
 
    user can modify the Library and then relink to produce a modified
 
    executable containing the modified Library.  (It is understood
 
    that the user who changes the contents of definitions files in the
 
    Library will not necessarily be able to recompile the application
 
    to use the modified definitions.)
 

	
 
    b) Accompany the work with a written offer, valid for at
 
    least three years, to give the same user the materials
 
    specified in Subsection 6a, above, for a charge no more
 
    than the cost of performing this distribution.
 

	
 
    c) If distribution of the work is made by offering access to copy
 
    from a designated place, offer equivalent access to copy the above
 
    specified materials from the same place.
 

	
 
    d) Verify that the user has already received a copy of these
 
    materials or that you have already sent this user a copy.
 

	
 
  For an executable, the required form of the "work that uses the
 
Library" must include any data and utility programs needed for
 
reproducing the executable from it.  However, as a special exception,
 
the source code distributed need not include anything that is normally
 
distributed (in either source or binary form) with the major
 
components (compiler, kernel, and so on) of the operating system on
 
which the executable runs, unless that component itself accompanies
 
the executable.
 

	
 
  It may happen that this requirement contradicts the license
 
restrictions of other proprietary libraries that do not normally
 
accompany the operating system.  Such a contradiction means you cannot
 
use both them and the Library together in an executable that you
 
distribute.
 

 
  7. You may place library facilities that are a work based on the
 
Library side-by-side in a single library together with other library
 
facilities not covered by this License, and distribute such a combined
 
library, provided that the separate distribution of the work based on
 
the Library and of the other library facilities is otherwise
 
permitted, and provided that you do these two things:
 

	
 
    a) Accompany the combined library with a copy of the same work
 
    based on the Library, uncombined with any other library
 
    facilities.  This must be distributed under the terms of the
 
    Sections above.
 

	
 
    b) Give prominent notice with the combined library of the fact
 
    that part of it is a work based on the Library, and explaining
 
    where to find the accompanying uncombined form of the same work.
 

	
 
  8. You may not copy, modify, sublicense, link with, or distribute
 
the Library except as expressly provided under this License.  Any
 
attempt otherwise to copy, modify, sublicense, link with, or
 
distribute the Library is void, and will automatically terminate your
 
rights under this License.  However, parties who have received copies,
 
or rights, from you under this License will not have their licenses
 
terminated so long as such parties remain in full compliance.
 

	
 
  9. You are not required to accept this License, since you have not
 
signed it.  However, nothing else grants you permission to modify or
 
distribute the Library or its derivative works.  These actions are
 
prohibited by law if you do not accept this License.  Therefore, by
 
modifying or distributing the Library (or any work based on the
 
Library), you indicate your acceptance of this License to do so, and
 
all its terms and conditions for copying, distributing or modifying
 
the Library or works based on it.
 

	
 
  10. Each time you redistribute the Library (or any work based on the
 
Library), the recipient automatically receives a license from the
 
original licensor to copy, distribute, link with or modify the Library
 
subject to these terms and conditions.  You may not impose any further
 
restrictions on the recipients' exercise of the rights granted herein.
 
You are not responsible for enforcing compliance by third parties to
 
this License.
 

 
  11. If, as a consequence of a court judgment or allegation of patent
 
infringement or for any other reason (not limited to patent issues),
 
conditions are imposed on you (whether by court order, agreement or
 
otherwise) that contradict the conditions of this License, they do not
 
excuse you from the conditions of this License.  If you cannot
 
distribute so as to satisfy simultaneously your obligations under this
 
License and any other pertinent obligations, then as a consequence you
 
may not distribute the Library at all.  For example, if a patent
 
license would not permit royalty-free redistribution of the Library by
 
all those who receive copies directly or indirectly through you, then
 
the only way you could satisfy both it and this License would be to
 
refrain entirely from distribution of the Library.
 

	
 
If any portion of this section is held invalid or unenforceable under any
 
particular circumstance, the balance of the section is intended to apply,
 
and the section as a whole is intended to apply in other circumstances.
 

	
 
It is not the purpose of this section to induce you to infringe any
 
patents or other property right claims or to contest validity of any
 
such claims; this section has the sole purpose of protecting the
 
integrity of the free software distribution system which is
 
implemented by public license practices.  Many people have made
 
generous contributions to the wide range of software distributed
 
through that system in reliance on consistent application of that
 
system; it is up to the author/donor to decide if he or she is willing
 
to distribute software through any other system and a licensee cannot
 
impose that choice.
 

	
 
This section is intended to make thoroughly clear what is believed to
 
be a consequence of the rest of this License.
 

	
 
  12. If the distribution and/or use of the Library is restricted in
 
certain countries either by patents or by copyrighted interfaces, the
 
original copyright holder who places the Library under this License may add
 
an explicit geographical distribution limitation excluding those countries,
 
so that distribution is permitted only in or among countries not thus
 
excluded.  In such case, this License incorporates the limitation as if
 
written in the body of this License.
 

	
 
  13. The Free Software Foundation may publish revised and/or new
 
versions of the Library General Public License from time to time.
 
Such new versions will be similar in spirit to the present version,
 
but may differ in detail to address new problems or concerns.
 

	
 
Each version is given a distinguishing version number.  If the Library
 
specifies a version number of this License which applies to it and
 
"any later version", you have the option of following the terms and
 
conditions either of that version or of any later version published by
 
the Free Software Foundation.  If the Library does not specify a
 
license version number, you may choose any version ever published by
 
the Free Software Foundation.
 

 
  14. If you wish to incorporate parts of the Library into other free
 
programs whose distribution conditions are incompatible with these,
 
write to the author to ask for permission.  For software which is
 
copyrighted by the Free Software Foundation, write to the Free
 
Software Foundation; we sometimes make exceptions for this.  Our
 
decision will be guided by the two goals of preserving the free status
 
of all derivatives of our free software and of promoting the sharing
 
and reuse of software generally.
 

	
 
			    NO WARRANTY
 

	
 
  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
 
WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
 
EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
 
OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
 
KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
 
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
 
PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
 
LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
 
THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
 

	
 
  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
 
WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
 
AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
 
FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
 
CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
 
LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
 
RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
 
FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
 
SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
 
DAMAGES.
 

	
 
		     END OF TERMS AND CONDITIONS
 

 
     Appendix: How to Apply These Terms to Your New Libraries
 

	
 
  If you develop a new library, and you want it to be of the greatest
 
possible use to the public, we recommend making it free software that
 
everyone can redistribute and change.  You can do so by permitting
 
redistribution under these terms (or, alternatively, under the terms of the
 
ordinary General Public License).
 

	
 
  To apply these terms, attach the following notices to the library.  It is
 
safest to attach them to the start of each source file to most effectively
 
convey the exclusion of warranty; and each file should have at least the
 
"copyright" line and a pointer to where the full notice is found.
 

	
 
    <one line to give the library's name and a brief idea of what it does.>
 
    Copyright (C) <year>  <name of author>
 

	
 
    This library is free software; you can redistribute it and/or
 
    modify it under the terms of the GNU Library General Public
 
    License as published by the Free Software Foundation; either
 
    version 2 of the License, or (at your option) any later version.
 

	
 
    This library 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
 
    Library General Public License for more details.
 

	
 
    You should have received a copy of the GNU Library General Public
 
    License along with this library; if not, write to the Free
 
    Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
 
    MA 02110-1301, USA
 

	
 
Also add information on how to contact you by electronic and paper mail.
 

	
 
You should also get your employer (if you work as a programmer) or your
 
school, if any, to sign a "copyright disclaimer" for the library, if
 
necessary.  Here is a sample; alter the names:
 

	
 
  Yoyodyne, Inc., hereby disclaims all copyright interest in the
 
  library `Frob' (a library for tweaking knobs) written by James Random Hacker.
 

	
 
  <signature of Ty Coon>, 1 April 1990
 
  Ty Coon, President of Vice
 

	
 
That's all there is to it!
lib/libiconv/share/doc/libiconv/NEWS
Show inline comments
 
new file 100755
 
New in 1.13:
 
* The library and the iconv program now understand platform dependent aliases,
 
  for better compatibility with the platform's own iconv_open function.
 
  Examples: "646" on Solaris, "iso88591" on HP-UX, "IBM-1252" on AIX.
 
* For stateful encodings, when the input ends with a shift sequence followed
 
  by invalid input, the iconv function now increments the input pointer past
 
  the shift sequence before returning (size_t)(-1) with errno = EILSEQ. This
 
  is also like GNU libc's iconv() behaves.
 
* The library exports a new function iconv_open_into() that stores the
 
  conversion descriptor in pre-allocated memory, rather than allocating fresh
 
  memory for it.
 
* Added CP1131 converter.
 

	
 
New in 1.12:
 
* The iconv program is now licensed under the GPL version 3, instead of the
 
  GPL version 2. The libiconv library continues to be licensed under LGPL.
 
* Added RK1048 converter.
 
* On AIX, an existing system libiconv no longer causes setlocale() to fail.
 
* Upgraded EUC-KR, JOHAB to include the Korean postal code sign.
 

	
 
New in 1.11:
 
* The iconv program has new options --unicode-subst, --byte-subst,
 
  --widechar-subst that allow to specify substitutions for characters that
 
  cannot be converted.
 
* The iconv program now understands long options:
 
    long option    equivalent to
 
    --from-code    -f
 
    --to-code      -t
 
    --list         -l
 
    --silent       -s
 
* The CP936 converter is now different from the GBK converter: it has changed
 
  to include the Euro sign and private area characters. CP936 is no longer an
 
  alias of GBK.
 
* Updated GB18030 converter to include all private area characters.
 
* Updated CP950 converter to include the Euro sign and private area characters.
 
* Updated CP949 converter to include private area characters.
 
* Updated the BIG5-HKSCS converter. The old BIG5-HKSCS converter is renamed to
 
  BIG5-HKSCS:1999 and updated to Unicode 4. New converters BIG5-HKSCS:2001 and
 
  BIG5-HKSCS:2004 are added. BIG5-HKSCS is now an alias for BIG5-HKSCS:2004.
 
* Added a few irreversible mappings to the CP932 converter.
 
* Tidy up the list of symbols exported from libiconv (assumes gcc >= 4.0).
 

	
 
New in 1.10:
 
* Added ISO-8859-11 converter.
 
* Updated the ISO-8859-7 converter.
 
* Added ATARIST converter, available through --enable-extra-encodings.
 
* Added BIG5-2003 converter (experimental), available through
 
  --enable-extra-encodings.
 
* Updated EUC-TW converter to include the Euro sign.
 
* The preloadable library has been renamed from libiconv_plug.so to
 
  preloadable_libiconv.so.
 
* Portability to mingw.
 

	
 
New in 1.9:
 
* Many more transliterations.
 
* New configuration option --enable-relocatable.  See the INSTALL.generic file
 
  for details.
 

	
 
New in 1.8:
 
* The iconv program has new options -l, -c, -s.
 
* The iconv program is internationalized.
 
* Added C99 converter.
 
* Added KOI8-T converter.
 
* New configuration option --enable-extra-encodings that enables a bunch of
 
  additional encodings; see the README for details.
 
* Updated the ISO-8859-16 converter.
 
* Upgraded BIG5-HKSCS, EUC-TW, ISO-2022-CN, ISO-2022-CN-EXT converters to
 
  Unicode 3.2.
 
* Upgraded EUC-KR, CP949, JOHAB converters to include the Euro sign.
 
* Changed the ARMSCII-8 converter.
 
* Extended the EUC-JP encoder so that YEN SIGN characters don't cause failures
 
  in Shift_JIS to EUC-JP conversion.
 
* The JAVA converter now handles characters outside the Unicode BMP correctly.
 
* Fixed a bug in the CP1255, CP1258, TCVN decoders: The base characters of
 
  combining characters could be dropped at the end of the conversion buffer.
 
* Fixed a bug in the transliteration that could lead to excessive memory
 
  allocations in libintl when transliteration was needed.
 
* Portability to BSD/OS and SCO 3.2.5.
 

	
 
New in 1.7:
 
* Added UTF-32, UTF-32BE, UTF-32LE converters.
 
* Changed CP1255, CP1258 and TCVN converters to handle combining characters.
 
* Changed EUC-JP, SHIFT_JIS, CP932, ISO-2022-JP, ISO-2022-JP-2, ISO-2022-JP-1
 
  converters to use fullwidth Yen sign instead of halfwidth Yen sign, and
 
  fullwidth tilde instead of halfwidth tilde.
 
* Upgraded EUC-TW, ISO-2022-CN, ISO-2022-CN-EXT converters to Unicode 3.1.
 
* Changed the GB18030 converter to not reject unassigned and private-use
 
  Unicode characters.
 
* Fixed a bug in the byte order mark treatment of the UCS-4 decoder.
 
* The manual pages are now distributed also in HTML format.
 

	
 
New in 1.6:
 
* The iconv program's -f and -t options are now optional.
 
* Many more transliterations.
 
* Added CP862 converter.
 
* Changed the GB18030 converter.
 
* Portability to DOS with DJGPP.
 

	
 
New in 1.5:
 
* Added an iconv(1) program.
 
* New locale dependent encodings "char", "wchar_t".
 
* Transliteration is now off by default. Use a //TRANSLIT suffix to enable it.
 
* The JOHAB encoding is documented again.
 
* Changed a few mappings in the CP950 converter.
 

	
 
New in 1.4:
 
* Added GB18030, BIG5HKSCS converters.
 
* Portability to OS/2 with emx+gcc.
 

	
 
New in 1.3:
 
* Added UCS-2BE, UCS-2LE, UCS-4BE, UCS-4LE converters.
 
* Fixed the definition of EILSEQ on SunOS4.
 
* Fixed a build problem on OSF/1.
 
* Support for building as a shared library on Woe32.
 

	
 
New in 1.2:
 
* Added UTF-16BE and UTF-16LE converters.
 
* Changed the UTF-16 encoder.
 
* Fixed the treatment of tab characters in the UTF-7 converter.
 
* Fixed an internal error when output buffer was not large enough.
 

	
 
New in 1.1:
 
* Added ISO-8859-16 converter.
 
* Added CP932 converter, a variant of SHIFT_JIS.
 
* Added CP949 converter, a variant of EUC-KR.
 
* Improved the ISO-2022-CN-EXT converter: It now covers the ISO-IR-165 range.
 
* Updated the ISO-8859-8 conversion table.
 
* The JOHAB encoding is deprecated and not documented any more.
 
* Fixed two build problems: 1. "make -n check" failed. 2. When libiconv was
 
  already installed, "make" failed.
 

	
 
New in 1.0:
 
* Added transliteration facilities.
 
* Added a test suite.
 
* Fixed the iconv(3) manual page and function: the return value was not
 
  described correctly.
 
* Fixed a bug in the CP1258 decoder: invalid bytes now yield EILSEQ instead of
 
  U+FFFD.
 
* Fixed a bug in the Georgian-PS encoder: accept U+00E6.
 
* Fixed a bug in the EUC-JP encoder: reject 0x8E5C and 0x8E7E.
 
* Fixed a bug in the KSC5601 and JOHAB converters: they recognized some Hangul
 
  characters at some invalid code positions.
 
* Fixed a bug in the EUC-TW decoder; it was severely broken.
 
* Fixed a bug in the CP950 converter: it recognized a dubious BIG5 range.
 

	
 
New in 0.3:
 
* Reduced the size of the tables needed for the JOHAB converter.
 
* Portability to Woe32.
 

	
 
New in 0.2:
 
* Added KOI8-RU, CP850, CP866, CP874, CP950, ISO-2022-CN-EXT, GBK and
 
  ISO-2022-JP-1 converters.
 
* Added MACINTOSH as an alias for MAC-ROMAN.
 
* Added ASMO-708 as an alias for ISO-8859-6.
 
* Added ELOT_928 as an alias for ISO-8859-7.
 
* Improved the EUC-TW converter: Treat CNS 11643 plane 3.
 
* Improved the ISO-2022-KR and EUC-KR converters: Hangul characters are
 
  decomposed into Jamo when needed.
 
* Improved the CP932 converter.
 
* Updated the CP1133, MULELAO-1 and ARMSCII-8 mappings.
 
* The EUC-JP and SHIFT_JIS converters now cover the user-defined range.
 
* Fixed a possible buffer overrun in the JOHAB converter.
 
* Fixed a bug in the UTF-7, ISO-2022-*, HZ decoders: a shift sequence a the
 
  end of the input no longer gives an error.
 
* The HZ encoder now always terminates its output in the ASCII state.
 
* Use a perfect hash table for looking up the aliases.
 

	
 
New in 0.1:
 
* Portability to Linux/glibc-2.0.x, Linux/libc5, OSF/1, FreeBSD.
 
* Fixed a bug in the EUC-JP decoder. Extended the ISO-2022-JP-2 converter.
 
* Made TIS-620 mapping consistent with glibc-2.1.
 

	
lib/libiconv/share/doc/libiconv/NOTES
Show inline comments
 
new file 100755
 
Q: Why does libiconv support encoding XXX? Why does libiconv not support
 
   encoding ZZZ?
 

	
 
A: libiconv, as an internationalization library, supports those character
 
   sets and encodings which are in wide-spread use in at least one territory
 
   of the world.
 

	
 
   Hint1: On http://www.w3c.org/International/O-charset-lang.html you find a
 
   page "Languages, countries, and the charsets typically used for them".
 
   From this table, we can conclude that the following are in active use:
 

	
 
     ISO-8859-1, CP1252   Afrikaans, Albanian, Basque, Catalan, Danish, Dutch,
 
                          English, Faroese, Finnish, French, Galician, German,
 
                          Icelandic, Irish, Italian, Norwegian, Portuguese,
 
                          Scottish, Spanish, Swedish
 
     ISO-8859-2           Croatian, Czech, Hungarian, Polish, Romanian, Slovak,
 
                          Slovenian
 
     ISO-8859-3           Esperanto, Maltese
 
     ISO-8859-5           Bulgarian, Byelorussian, Macedonian, Russian,
 
                          Serbian, Ukrainian
 
     ISO-8859-6           Arabic
 
     ISO-8859-7           Greek
 
     ISO-8859-8           Hebrew
 
     ISO-8859-9, CP1254   Turkish
 
     ISO-8859-10          Inuit, Lapp
 
     ISO-8859-13          Latvian, Lithuanian
 
     ISO-8859-15          Estonian
 
     KOI8-R               Russian
 
     SHIFT_JIS            Japanese
 
     ISO-2022-JP          Japanese
 
     EUC-JP               Japanese
 

	
 
   Ordered by frequency on the web (1997):
 
     ISO-8859-1, CP1252   96%
 
     SHIFT_JIS             1.6%
 
     ISO-2022-JP           1.2%
 
     EUC-JP                0.4%
 
     CP1250                0.3%
 
     CP1251                0.2%
 
     CP850                 0.1%
 
     MACINTOSH             0.1%
 
     ISO-8859-5            0.1%
 
     ISO-8859-2            0.0%
 

	
 
   Hint2: The character sets mentioned in the XFree86 4.0 locale.alias file.
 

	
 
     ISO-8859-1           Afrikaans, Basque, Breton, Catalan, Danish, Dutch,
 
                          English, Estonian, Faroese, Finnish, French,
 
                          Galician, German, Greenlandic, Icelandic,
 
                          Indonesian, Irish, Italian, Lithuanian, Norwegian,
 
                          Occitan, Portuguese, Scottish, Spanish, Swedish,
 
                          Walloon, Welsh
 
     ISO-8859-2           Albanian, Croatian, Czech, Hungarian, Polish,
 
                          Romanian, Serbian, Slovak, Slovenian
 
     ISO-8859-3           Esperanto
 
     ISO-8859-4           Estonian, Latvian, Lithuanian
 
     ISO-8859-5           Bulgarian, Byelorussian, Macedonian, Russian,
 
                          Serbian, Ukrainian
 
     ISO-8859-6           Arabic
 
     ISO-8859-7           Greek
 
     ISO-8859-8           Hebrew
 
     ISO-8859-9           Turkish
 
     ISO-8859-14          Breton, Irish, Scottish, Welsh
 
     ISO-8859-15          Basque, Breton, Catalan, Danish, Dutch, Estonian,
 
                          Faroese, Finnish, French, Galician, German,
 
                          Greenlandic, Icelandic, Irish, Italian, Lithuanian,
 
                          Norwegian, Occitan, Portuguese, Scottish, Spanish,
 
                          Swedish, Walloon, Welsh
 
     KOI8-R               Russian
 
     KOI8-U               Russian, Ukrainian
 
     EUC-JP (alias eucJP)      Japanese
 
     ISO-2022-JP (alias JIS7)  Japanese
 
     SHIFT_JIS (alias SJIS)    Japanese
 
     U90                       Japanese
 
     S90                       Japanese
 
     EUC-CN (alias eucCN)      Chinese
 
     EUC-TW (alias eucTW)      Chinese
 
     BIG5                      Chinese
 
     EUC-KR (alias eucKR)      Korean
 
     ARMSCII-8                 Armenian
 
     GEORGIAN-ACADEMY          Georgian
 
     GEORGIAN-PS               Georgian
 
     TIS-620 (alias TACTIS)    Thai
 
     MULELAO-1                 Laothian
 
     IBM-CP1133                Laothian
 
     VISCII                    Vietnamese
 
     TCVN                      Vietnamese
 
     NUNACOM-8                 Inuktitut
 

	
 
   Hint3: The character sets supported by Netscape Communicator 4.
 

	
 
     Where is this documented? For the complete picture, I had to use
 
     "strings netscape" and then a lot of guesswork. For a quick take,
 
     look at the "View - Character set" menu of Netscape Communicator 4.6:
 

	
 
     ISO-8859-{1,2,5,7,9,15}
 
     WINDOWS-{1250,1251,1253}
 
     KOI8-R               Cyrillic
 
     CP866                Cyrillic
 
     Autodetect           Japanese  (EUC-JP, ISO-2022-JP, ISO-2022-JP-2, SJIS)
 
     EUC-JP               Japanese
 
     SHIFT_JIS            Japanese
 
     GB2312               Chinese
 
     BIG5                 Chinese
 
     EUC-TW               Chinese
 
     Autodetect           Korean    (EUC-KR, ISO-2022-KR, but not JOHAB)
 

	
 
     UTF-8
 
     UTF-7
 

	
 
   Hint4: The character sets supported by Microsoft Internet Explorer 4.
 

	
 
     ISO-8859-{1,2,3,4,5,6,7,8,9}
 
     WINDOWS-{1250,1251,1252,1253,1254,1255,1256,1257}
 
     KOI8-R               Cyrillic
 
     KOI8-RU              Ukrainian
 
     ASMO-708             Arabic
 
     EUC-JP               Japanese
 
     ISO-2022-JP          Japanese
 
     SHIFT_JIS            Japanese
 
     GB2312               Chinese
 
     HZ-GB-2312           Chinese
 
     BIG5                 Chinese
 
     EUC-KR               Korean
 
     ISO-2022-KR          Korean
 
     WINDOWS-874          Thai
 
     WINDOWS-1258         Vietnamese
 

	
 
     UTF-8
 
     UTF-7
 
     UNICODE             actually UNICODE-LITTLE
 
     UNICODEFEFF         actually UNICODE-BIG
 

	
 
     and various DOS character sets: DOS-720, DOS-862, IBM852, CP866.
 

	
 
   We take the union of all these four sets. The result is:
 

	
 
   European and Semitic languages
 
     * ASCII.
 
       We implement this because it is occasionally useful to know or to
 
       check whether some text is entirely ASCII (i.e. if the conversion
 
       ISO-8859-x -> UTF-8 is trivial).
 
     * ISO-8859-{1,2,3,4,5,6,7,8,9,10}
 
       We implement this because they are widely used. Except ISO-8859-4
 
       which appears to have been superseded by ISO-8859-13 in the baltic
 
       countries. But it's an ISO standard anyway.
 
     * ISO-8859-13
 
       We implement this because it's a standard in Lithuania and Latvia.
 
     * ISO-8859-14
 
       We implement this because it's an ISO standard.
 
     * ISO-8859-15
 
       We implement this because it's increasingly used in Europe, because
 
       of the Euro symbol.
 
     * ISO-8859-16
 
       We implement this because it's an ISO standard.
 
     * KOI8-R, KOI8-U
 
       We implement this because it appears to be the predominant encoding
 
       on Unix in Russia and Ukraine, respectively.
 
     * KOI8-RU
 
       We implement this because MSIE4 supports it.
 
     * KOI8-T
 
       We implement this because it is the locale encoding in glibc's Tajik
 
       locale.
 
     * PT154
 
       We implement this because it is the locale encoding in glibc's Kazakh
 
       locale.
 
     * RK1048
 
       We implement this because it's a standard in Kazakhstan.
 
     * CP{1250,1251,1252,1253,1254,1255,1256,1257}
 
       We implement these because they are the predominant Windows encodings
 
       in Europe.
 
     * CP850
 
       We implement this because it is mentioned as occurring in the web
 
       in the aforementioned statistics.
 
     * CP862
 
       We implement this because Ron Aaron says it is sometimes used in web
 
       pages and emails.
 
     * CP866
 
       We implement this because Netscape Communicator does.
 
     * CP1131
 
       We implement this because it is the locale encoding of a Belorusian
 
       locale in FreeBSD and MacOS X.
 
     * Mac{Roman,CentralEurope,Croatian,Romania,Cyrillic,Greek,Turkish} and
 
       Mac{Hebrew,Arabic}
 
       We implement these because the Sun JDK does, and because Mac users
 
       don't deserve to be punished.
 
     * Macintosh
 
       We implement this because it is mentioned as occurring in the web
 
       in the aforementioned statistics.
 
   Japanese
 
     * EUC-JP, SHIFT_JIS, ISO-2022-JP
 
       We implement these because they are widely used. EUC-JP and SHIFT_JIS
 
       are more used for files, whereas ISO-2022-JP is recommended for email.
 
     * CP932
 
       We implement this because it is the Microsoft variant of SHIFT_JIS,
 
       used on Windows.
 
     * ISO-2022-JP-2
 
       We implement this because it's the common way to represent mails which
 
       make use of JIS X 0212 characters.
 
     * ISO-2022-JP-1
 
       We implement this because it's in the RFCs, but I don't think it is
 
       really used.
 
     * U90, S90
 
       We DON'T implement this because I have no informations about what it
 
       is or who uses it.
 
   Simplified Chinese
 
     * EUC-CN = GB2312
 
       We implement this because it is the widely used representation
 
       of simplified Chinese.
 
     * GBK
 
       We implement this because it appears to be used on Solaris and Windows.
 
     * GB18030
 
       We implement this because it is an official requirement in the
 
       People's Republic of China.
 
     * ISO-2022-CN
 
       We implement this because it is in the RFCs, but I have no idea
 
       whether it is really used.
 
     * ISO-2022-CN-EXT
 
       We implement this because it's in the RFCs, but I don't think it is
 
       really used.
 
     * HZ = HZ-GB-2312
 
       We implement this because the RFCs recommend it for Usenet postings,
 
       and because MSIE4 supports it.
 
   Traditional Chinese
 
     * EUC-TW
 
       We implement it because it appears to be used on Unix.
 
     * BIG5
 
       We implement it because it is the de-facto standard for traditional
 
       Chinese.
 
     * CP950
 
       We implement this because it is the Microsoft variant of BIG5, used
 
       on Windows.
 
     * BIG5+
 
       We DON'T implement this because it doesn't appear to be in wide use.
 
       Only the CWEX fonts use this encoding. Furthermore, the conversion
 
       tables in the big5p package are not coherent: If you convert directly,
 
       you get different results than when you convert via GBK.
 
     * BIG5-HKSCS
 
       We implement it because it is the de-facto standard for traditional
 
       Chinese in Hongkong.
 
   Korean
 
     * EUC-KR
 
       We implement these because they appear to be the widely used
 
       representations for Korean.
 
     * CP949
 
       We implement this because it is the Microsoft variant of EUC-KR, used
 
       on Windows.
 
     * ISO-2022-KR
 
       We implement it because it is in the RFCs and because MSIE4 supports
 
       it, but I have no idea whether it's really used.
 
     * JOHAB
 
       We implement this because it is apparently used on Windows as a locale
 
       encoding (codepage 1361).
 
     * ISO-646-KR
 
       We DON'T implement this because although an old ASCII variant, its
 
       glyph for 0x7E is not clear: RFC 1345 and unicode.org's JOHAB.TXT
 
       say it's a tilde, but Ken Lunde's "CJKV information processing" says
 
       it's an overline. And it is not ISO-IR registered.
 
   Armenian
 
     * ARMSCII-8
 
       We implement it because XFree86 supports it.
 
   Georgian
 
     * Georgian-Academy, Georgian-PS
 
       We implement these because they appear to be both used for Georgian;
 
       Xfree86 supports them.
 
   Thai
 
     * ISO-8859-11, TIS-620
 
       We implement these because it seems to be standard for Thai.
 
     * CP874
 
       We implement this because MSIE4 supports it.
 
     * MacThai
 
       We implement this because the Sun JDK does, and because Mac users
 
       don't deserve to be punished.
 
   Laotian
 
     * MuleLao-1, CP1133
 
       We implement these because XFree86 supports them. I have no idea which
 
       one is used more widely.
 
   Vietnamese
 
     * VISCII, TCVN
 
       We implement these because XFree86 supports them.
 
     * CP1258
 
       We implement this because MSIE4 supports it.
 
   Other languages
 
     * NUNACOM-8 (Inuktitut)
 
       We DON'T implement this because it isn't part of Unicode yet, and
 
       therefore doesn't convert to anything except itself.
 
   Platform specifics
 
     * HP-ROMAN8, NEXTSTEP
 
       We implement these because they were the native character set on HPs
 
       and NeXTs for a long time, and libiconv is intended to be usable on
 
       these old machines.
 
   Full Unicode
 
     * UTF-8, UCS-2, UCS-4
 
       We implement these. Obviously.
 
     * UCS-2BE, UCS-2LE, UCS-4BE, UCS-4LE
 
       We implement these because they are the preferred internal
 
       representation of strings in Unicode aware applications. These are
 
       non-ambiguous names, known to glibc. (glibc doesn't have
 
       UCS-2-INTERNAL and UCS-4-INTERNAL.)
 
     * UTF-16, UTF-16BE, UTF-16LE
 
       We implement these, because UTF-16 is still the favourite encoding of
 
       the president of the Unicode Consortium (for political reasons), and
 
       because they appear in RFC 2781.
 
     * UTF-32, UTF-32BE, UTF-32LE
 
       We implement these because they are part of Unicode 3.1.
 
     * UTF-7
 
       We implement this because it is essential functionality for mail
 
       applications.
 
     * C99
 
       We implement it because it's used for C and C++ programs and because
 
       it's a nice encoding for debugging.
 
     * JAVA
 
       We implement it because it's used for Java programs and because it's
 
       a nice encoding for debugging.
 
     * UNICODE (big endian), UNICODEFEFF (little endian)
 
       We DON'T implement these because they are stupid and not standardized.
 
   Full Unicode, in terms of `uint16_t' or `uint32_t'
 
   (with machine dependent endianness and alignment)
 
     * UCS-2-INTERNAL, UCS-4-INTERNAL
 
       We implement these because they are the preferred internal
 
       representation of strings in Unicode aware applications.
 

	
 
Q: Support encodings mentioned in RFC 1345 ?
 
A: No, they are not in use any more. Supporting ISO-646 variants is pointless
 
   since ISO-8859-* have been adopted.
 

	
 
Q: Support EBCDIC ?
 
A: No!
 

	
 
Q: How do I add a new character set?
 
A: 1. Explain the "why" in this file, above.
 
   2. You need to have a conversion table from/to Unicode. Transform it into
 
   the format used by the mapping tables found on ftp.unicode.org: each line
 
   contains the character code, in hex, with 0x prefix, then whitespace,
 
   then the Unicode code point, in hex, 4 hex digits, with 0x prefix. '#'
 
   counts as a comment delimiter until end of line.
 
   Please also send your table to Mark Leisher <mleisher@crl.nmsu.edu> so he
 
   can include it in his collection.
 
   3. If it's an 8-bit character set, use the '8bit_tab_to_h' program in the
 
   tools directory to generate the C code for the conversion. You may tweak
 
   the resulting C code if you are not satisfied with its quality, but this
 
   is rarely needed.
 
   If it's a two-dimensional character set (with rows and columns), use the
 
   'cjk_tab_to_h' program in the tools directory to generate the C code for
 
   the conversion. You will need to modify the main() function to recognize
 
   the new character set name, with the proper dimensions, but that shouldn't
 
   be too hard. This yields the CCS. The CES you have to write by hand.
 
   4. Store the resulting C code file in the lib directory. Add a #include
 
   directive to converters.h, and add an entry to the encodings.def file.
 
   5. Compile the package, and test your new encoding using a program like
 
   iconv(1) or clisp(1).
 
   6. Augment the testsuite: Add a line to tests/Makefile.in. For a stateless
 
   encoding, create the complete table as a TXT file. For a stateful encoding,
 
   provide a text snippet encoded using your new encoding and its UTF-8
 
   equivalent.
 
   7. Update the README and man/iconv_open.3, to mention the new encoding.
 
   Add a note in the NEWS file.
 

	
 
Q: What about bidirectional text? Should it be tagged or reversed when
 
   converting from ISO-8859-8 or ISO-8859-6 to Unicode? Qt appears to do
 
   this, see qt-2.0.1/src/tools/qrtlcodec.cpp.
 
A: After reading RFC 1556: I don't think so. Support for ISO-8859-8-I and
 
   ISO-8859-E remains to be implemented.
 
   On the other hand, a page on www.w3c.org says that ISO-8859-8 in *email*
 
   is visually encoded, ISO-8859-8 in *HTML* is logically encoded, i.e.
 
   the same as ISO-8859-8-I. I'm confused.
 

	
 
Other character sets not implemented:
 
"MNEMONIC" = "csMnemonic"
 
"MNEM" = "csMnem"
 
"ISO-10646-UCS-Basic" = "csUnicodeASCII"
 
"ISO-10646-Unicode-Latin1" = "csUnicodeLatin1" = "ISO-10646"
 
"ISO-10646-J-1"
 
"UNICODE-1-1" = "csUnicode11"
 
"csWindows31Latin5"
 

	
 
Other aliases not implemented (and not implemented in glibc-2.1 either):
 
  From MSIE4:
 
    ISO-8859-1: alias ISO8859-1
 
    ISO-8859-2: alias ISO8859-2
 
    KSC_5601: alias KS_C_5601
 
    UTF-8: aliases UNICODE-1-1-UTF-8 UNICODE-2-0-UTF-8
 

	
 

	
 
Q: How can I integrate libiconv into my package?
 
A: Just copy the entire libiconv package into a subdirectory of your package.
 
   At configuration time, call libiconv's configure script with the
 
   appropriate --srcdir option and maybe --enable-static or --disable-shared.
 
   Then "cd libiconv && make && make install-lib libdir=... includedir=...".
 
   'install-lib' is a special (not GNU standardized) target which installs
 
   only the include file - in $(includedir) - and the library - in $(libdir) -
 
   and does not use other directory variables. After "installing" libiconv
 
   in your package's build directory, building of your package can proceed.
 

	
 
Q: Why is the testsuite so big?
 
A: Because some of the tests are very comprehensive.
 
   If you don't feel like using the testsuite, you can simply remove the
 
   tests/ directory.
 

	
lib/libxml2/include/libxml/DOCBparser.h
Show inline comments
 
new file 100755
 
/*
 
 * Summary: old DocBook SGML parser
 
 * Description: interface for a DocBook SGML non-verifying parser
 
 * This code is DEPRECATED, and should not be used anymore.
 
 *
 
 * Copy: See Copyright for the status of this software.
 
 *
 
 * Author: Daniel Veillard
 
 */
 

	
 
#ifndef __DOCB_PARSER_H__
 
#define __DOCB_PARSER_H__
 
#include <libxml/xmlversion.h>
 

	
 
#ifdef LIBXML_DOCB_ENABLED
 

	
 
#include <libxml/parser.h>
 
#include <libxml/parserInternals.h>
 

	
 
#ifndef IN_LIBXML
 
#ifdef __GNUC__
 
#warning "The DOCBparser module has been deprecated in libxml2-2.6.0"
 
#endif
 
#endif
 

	
 
#ifdef __cplusplus
 
extern "C" {
 
#endif
 

	
 
/*
 
 * Most of the back-end structures from XML and SGML are shared.
 
 */
 
typedef xmlParserCtxt docbParserCtxt;
 
typedef xmlParserCtxtPtr docbParserCtxtPtr;
 
typedef xmlSAXHandler docbSAXHandler;
 
typedef xmlSAXHandlerPtr docbSAXHandlerPtr;
 
typedef xmlParserInput docbParserInput;
 
typedef xmlParserInputPtr docbParserInputPtr;
 
typedef xmlDocPtr docbDocPtr;
 

	
 
/*
 
 * There is only few public functions.
 
 */
 
XMLPUBFUN int XMLCALL
 
		     docbEncodeEntities(unsigned char *out,
 
                                        int *outlen,
 
                                        const unsigned char *in,
 
                                        int *inlen, int quoteChar);
 

	
 
XMLPUBFUN docbDocPtr XMLCALL             
 
		     docbSAXParseDoc   (xmlChar *cur,
 
                                        const char *encoding,
 
                                        docbSAXHandlerPtr sax,
 
                                        void *userData);
 
XMLPUBFUN docbDocPtr XMLCALL             
 
		     docbParseDoc      (xmlChar *cur,
 
                                        const char *encoding);
 
XMLPUBFUN docbDocPtr XMLCALL             
 
		     docbSAXParseFile  (const char *filename,
 
                                        const char *encoding,
 
                                        docbSAXHandlerPtr sax,
 
                                        void *userData);
 
XMLPUBFUN docbDocPtr XMLCALL             
 
		     docbParseFile     (const char *filename,
 
                                        const char *encoding);
 

	
 
/**
 
 * Interfaces for the Push mode.
 
 */
 
XMLPUBFUN void XMLCALL                  
 
		     docbFreeParserCtxt      (docbParserCtxtPtr ctxt);
 
XMLPUBFUN docbParserCtxtPtr XMLCALL     
 
		     docbCreatePushParserCtxt(docbSAXHandlerPtr sax,
 
                                              void *user_data,
 
                                              const char *chunk,
 
                                              int size,
 
                                              const char *filename,
 
                                              xmlCharEncoding enc);
 
XMLPUBFUN int XMLCALL                   
 
		     docbParseChunk          (docbParserCtxtPtr ctxt,
 
                                              const char *chunk,
 
                                              int size,
 
                                              int terminate);
 
XMLPUBFUN docbParserCtxtPtr XMLCALL       
 
		     docbCreateFileParserCtxt(const char *filename,
 
                                              const char *encoding);
 
XMLPUBFUN int XMLCALL                   
 
		     docbParseDocument       (docbParserCtxtPtr ctxt);
 

	
 
#ifdef __cplusplus
 
}
 
#endif
 

	
 
#endif /* LIBXML_DOCB_ENABLED */
 

	
 
#endif /* __DOCB_PARSER_H__ */
lib/libxml2/include/libxml/HTMLparser.h
Show inline comments
 
new file 100755
 
/*
 
 * Summary: interface for an HTML 4.0 non-verifying parser
 
 * Description: this module implements an HTML 4.0 non-verifying parser
 
 *              with API compatible with the XML parser ones. It should
 
 *              be able to parse "real world" HTML, even if severely
 
 *              broken from a specification point of view.
 
 *
 
 * Copy: See Copyright for the status of this software.
 
 *
 
 * Author: Daniel Veillard
 
 */
 

	
 
#ifndef __HTML_PARSER_H__
 
#define __HTML_PARSER_H__
 
#include <libxml/xmlversion.h>
 
#include <libxml/parser.h>
 

	
 
#ifdef LIBXML_HTML_ENABLED
 

	
 
#ifdef __cplusplus
 
extern "C" {
 
#endif
 

	
 
/*
 
 * Most of the back-end structures from XML and HTML are shared.
 
 */
 
typedef xmlParserCtxt htmlParserCtxt;
 
typedef xmlParserCtxtPtr htmlParserCtxtPtr;
 
typedef xmlParserNodeInfo htmlParserNodeInfo;
 
typedef xmlSAXHandler htmlSAXHandler;
 
typedef xmlSAXHandlerPtr htmlSAXHandlerPtr;
 
typedef xmlParserInput htmlParserInput;
 
typedef xmlParserInputPtr htmlParserInputPtr;
 
typedef xmlDocPtr htmlDocPtr;
 
typedef xmlNodePtr htmlNodePtr;
 

	
 
/*
 
 * Internal description of an HTML element, representing HTML 4.01
 
 * and XHTML 1.0 (which share the same structure).
 
 */
 
typedef struct _htmlElemDesc htmlElemDesc;
 
typedef htmlElemDesc *htmlElemDescPtr;
 
struct _htmlElemDesc {
 
    const char *name;	/* The tag name */
 
    char startTag;      /* Whether the start tag can be implied */
 
    char endTag;        /* Whether the end tag can be implied */
 
    char saveEndTag;    /* Whether the end tag should be saved */
 
    char empty;         /* Is this an empty element ? */
 
    char depr;          /* Is this a deprecated element ? */
 
    char dtd;           /* 1: only in Loose DTD, 2: only Frameset one */
 
    char isinline;      /* is this a block 0 or inline 1 element */
 
    const char *desc;   /* the description */
 

	
 
/* NRK Jan.2003
 
 * New fields encapsulating HTML structure
 
 *
 
 * Bugs:
 
 *	This is a very limited representation.  It fails to tell us when
 
 *	an element *requires* subelements (we only have whether they're
 
 *	allowed or not), and it doesn't tell us where CDATA and PCDATA
 
 *	are allowed.  Some element relationships are not fully represented:
 
 *	these are flagged with the word MODIFIER
 
 */
 
    const char** subelts;		/* allowed sub-elements of this element */
 
    const char* defaultsubelt;	/* subelement for suggested auto-repair
 
					   if necessary or NULL */
 
    const char** attrs_opt;		/* Optional Attributes */
 
    const char** attrs_depr;		/* Additional deprecated attributes */
 
    const char** attrs_req;		/* Required attributes */
 
};
 

	
 
/*
 
 * Internal description of an HTML entity.
 
 */
 
typedef struct _htmlEntityDesc htmlEntityDesc;
 
typedef htmlEntityDesc *htmlEntityDescPtr;
 
struct _htmlEntityDesc {
 
    unsigned int value;	/* the UNICODE value for the character */
 
    const char *name;	/* The entity name */
 
    const char *desc;   /* the description */
 
};
 

	
 
/*
 
 * There is only few public functions.
 
 */
 
XMLPUBFUN const htmlElemDesc * XMLCALL 	
 
			htmlTagLookup	(const xmlChar *tag);
 
XMLPUBFUN const htmlEntityDesc * XMLCALL 	
 
			htmlEntityLookup(const xmlChar *name);
 
XMLPUBFUN const htmlEntityDesc * XMLCALL 	
 
			htmlEntityValueLookup(unsigned int value);
 

	
 
XMLPUBFUN int XMLCALL			
 
			htmlIsAutoClosed(htmlDocPtr doc,
 
					 htmlNodePtr elem);
 
XMLPUBFUN int XMLCALL			
 
			htmlAutoCloseTag(htmlDocPtr doc,
 
					 const xmlChar *name,
 
					 htmlNodePtr elem);
 
XMLPUBFUN const htmlEntityDesc * XMLCALL	
 
			htmlParseEntityRef(htmlParserCtxtPtr ctxt,
 
					 const xmlChar **str);
 
XMLPUBFUN int XMLCALL			
 
			htmlParseCharRef(htmlParserCtxtPtr ctxt);
 
XMLPUBFUN void XMLCALL			
 
			htmlParseElement(htmlParserCtxtPtr ctxt);
 

	
 
XMLPUBFUN htmlParserCtxtPtr XMLCALL	
 
			htmlNewParserCtxt(void);
 

	
 
XMLPUBFUN htmlParserCtxtPtr XMLCALL	
 
			htmlCreateMemoryParserCtxt(const char *buffer,
 
						   int size);
 

	
 
XMLPUBFUN int XMLCALL			
 
			htmlParseDocument(htmlParserCtxtPtr ctxt);
 
XMLPUBFUN htmlDocPtr XMLCALL		
 
			htmlSAXParseDoc	(xmlChar *cur,
 
					 const char *encoding,
 
					 htmlSAXHandlerPtr sax,
 
					 void *userData);
 
XMLPUBFUN htmlDocPtr XMLCALL		
 
			htmlParseDoc	(xmlChar *cur,
 
					 const char *encoding);
 
XMLPUBFUN htmlDocPtr XMLCALL		
 
			htmlSAXParseFile(const char *filename,
 
					 const char *encoding,
 
					 htmlSAXHandlerPtr sax,
 
					 void *userData);
 
XMLPUBFUN htmlDocPtr XMLCALL		
 
			htmlParseFile	(const char *filename,
 
					 const char *encoding);
 
XMLPUBFUN int XMLCALL			
 
			UTF8ToHtml	(unsigned char *out,
 
					 int *outlen,
 
					 const unsigned char *in,
 
					 int *inlen);
 
XMLPUBFUN int XMLCALL			
 
			htmlEncodeEntities(unsigned char *out,
 
					 int *outlen,
 
					 const unsigned char *in,
 
					 int *inlen, int quoteChar);
 
XMLPUBFUN int XMLCALL			
 
			htmlIsScriptAttribute(const xmlChar *name);
 
XMLPUBFUN int XMLCALL			
 
			htmlHandleOmittedElem(int val);
 

	
 
#ifdef LIBXML_PUSH_ENABLED
 
/**
 
 * Interfaces for the Push mode.
 
 */
 
XMLPUBFUN htmlParserCtxtPtr XMLCALL	
 
			htmlCreatePushParserCtxt(htmlSAXHandlerPtr sax,
 
						 void *user_data,
 
						 const char *chunk,
 
						 int size,
 
						 const char *filename,
 
						 xmlCharEncoding enc);
 
XMLPUBFUN int XMLCALL			
 
			htmlParseChunk		(htmlParserCtxtPtr ctxt,
 
						 const char *chunk,
 
						 int size,
 
						 int terminate);
 
#endif /* LIBXML_PUSH_ENABLED */
 

	
 
XMLPUBFUN void XMLCALL			
 
			htmlFreeParserCtxt	(htmlParserCtxtPtr ctxt);
 

	
 
/*
 
 * New set of simpler/more flexible APIs
 
 */
 
/**
 
 * xmlParserOption:
 
 *
 
 * This is the set of XML parser options that can be passed down
 
 * to the xmlReadDoc() and similar calls.
 
 */
 
typedef enum {
 
    HTML_PARSE_RECOVER  = 1<<0, /* Relaxed parsing */
 
    HTML_PARSE_NOERROR	= 1<<5,	/* suppress error reports */
 
    HTML_PARSE_NOWARNING= 1<<6,	/* suppress warning reports */
 
    HTML_PARSE_PEDANTIC	= 1<<7,	/* pedantic error reporting */
 
    HTML_PARSE_NOBLANKS	= 1<<8,	/* remove blank nodes */
 
    HTML_PARSE_NONET	= 1<<11,/* Forbid network access */
 
    HTML_PARSE_NOIMPLIED= 1<<13,/* Do not add implied html/body... elements */
 
    HTML_PARSE_COMPACT  = 1<<16 /* compact small text nodes */
 
} htmlParserOption;
 

	
 
XMLPUBFUN void XMLCALL
 
		htmlCtxtReset		(htmlParserCtxtPtr ctxt);
 
XMLPUBFUN int XMLCALL
 
		htmlCtxtUseOptions	(htmlParserCtxtPtr ctxt,
 
					 int options);
 
XMLPUBFUN htmlDocPtr XMLCALL
 
		htmlReadDoc		(const xmlChar *cur,
 
					 const char *URL,
 
					 const char *encoding,
 
					 int options);
 
XMLPUBFUN htmlDocPtr XMLCALL
 
		htmlReadFile		(const char *URL,
 
					 const char *encoding,
 
					 int options);
 
XMLPUBFUN htmlDocPtr XMLCALL
 
		htmlReadMemory		(const char *buffer,
 
					 int size,
 
					 const char *URL,
 
					 const char *encoding,
 
					 int options);
 
XMLPUBFUN htmlDocPtr XMLCALL
 
		htmlReadFd		(int fd,
 
					 const char *URL,
 
					 const char *encoding,
 
					 int options);
 
XMLPUBFUN htmlDocPtr XMLCALL
 
		htmlReadIO		(xmlInputReadCallback ioread,
 
					 xmlInputCloseCallback ioclose,
 
					 void *ioctx,
 
					 const char *URL,
 
					 const char *encoding,
 
					 int options);
 
XMLPUBFUN htmlDocPtr XMLCALL
 
		htmlCtxtReadDoc		(xmlParserCtxtPtr ctxt,
 
					 const xmlChar *cur,
 
					 const char *URL,
 
					 const char *encoding,
 
					 int options);
 
XMLPUBFUN htmlDocPtr XMLCALL
 
		htmlCtxtReadFile		(xmlParserCtxtPtr ctxt,
 
					 const char *filename,
 
					 const char *encoding,
 
					 int options);
 
XMLPUBFUN htmlDocPtr XMLCALL
 
		htmlCtxtReadMemory		(xmlParserCtxtPtr ctxt,
 
					 const char *buffer,
 
					 int size,
 
					 const char *URL,
 
					 const char *encoding,
 
					 int options);
 
XMLPUBFUN htmlDocPtr XMLCALL
 
		htmlCtxtReadFd		(xmlParserCtxtPtr ctxt,
 
					 int fd,
 
					 const char *URL,
 
					 const char *encoding,
 
					 int options);
 
XMLPUBFUN htmlDocPtr XMLCALL
 
		htmlCtxtReadIO		(xmlParserCtxtPtr ctxt,
 
					 xmlInputReadCallback ioread,
 
					 xmlInputCloseCallback ioclose,
 
					 void *ioctx,
 
					 const char *URL,
 
					 const char *encoding,
 
					 int options);
 

	
 
/* NRK/Jan2003: further knowledge of HTML structure
 
 */
 
typedef enum {
 
  HTML_NA = 0 ,		/* something we don't check at all */
 
  HTML_INVALID = 0x1 ,
 
  HTML_DEPRECATED = 0x2 ,
 
  HTML_VALID = 0x4 ,
 
  HTML_REQUIRED = 0xc /* VALID bit set so ( & HTML_VALID ) is TRUE */
 
} htmlStatus ;
 

	
 
/* Using htmlElemDesc rather than name here, to emphasise the fact
 
   that otherwise there's a lookup overhead
 
*/
 
XMLPUBFUN htmlStatus XMLCALL htmlAttrAllowed(const htmlElemDesc*, const xmlChar*, int) ;
 
XMLPUBFUN int XMLCALL htmlElementAllowedHere(const htmlElemDesc*, const xmlChar*) ;
 
XMLPUBFUN htmlStatus XMLCALL htmlElementStatusHere(const htmlElemDesc*, const htmlElemDesc*) ;
 
XMLPUBFUN htmlStatus XMLCALL htmlNodeStatus(const htmlNodePtr, int) ;
 
/**
 
 * htmlDefaultSubelement:
 
 * @elt: HTML element
 
 *
 
 * Returns the default subelement for this element
 
 */
 
#define htmlDefaultSubelement(elt) elt->defaultsubelt
 
/**
 
 * htmlElementAllowedHereDesc:
 
 * @parent: HTML parent element
 
 * @elt: HTML element
 
 *
 
 * Checks whether an HTML element description may be a
 
 * direct child of the specified element.
 
 *
 
 * Returns 1 if allowed; 0 otherwise.
 
 */
 
#define htmlElementAllowedHereDesc(parent,elt) \
 
	htmlElementAllowedHere((parent), (elt)->name)
 
/**
 
 * htmlRequiredAttrs:
 
 * @elt: HTML element
 
 *
 
 * Returns the attributes required for the specified element.
 
 */
 
#define htmlRequiredAttrs(elt) (elt)->attrs_req
 

	
 

	
 
#ifdef __cplusplus
 
}
 
#endif
 

	
 
#endif /* LIBXML_HTML_ENABLED */
 
#endif /* __HTML_PARSER_H__ */
lib/libxml2/include/libxml/HTMLtree.h
Show inline comments
 
new file 100755
 
/*
 
 * Summary: specific APIs to process HTML tree, especially serialization
 
 * Description: this module implements a few function needed to process
 
 *              tree in an HTML specific way.
 
 *
 
 * Copy: See Copyright for the status of this software.
 
 *
 
 * Author: Daniel Veillard
 
 */
 

	
 
#ifndef __HTML_TREE_H__
 
#define __HTML_TREE_H__
 

	
 
#include <stdio.h>
 
#include <libxml/xmlversion.h>
 
#include <libxml/tree.h>
 
#include <libxml/HTMLparser.h>
 

	
 
#ifdef LIBXML_HTML_ENABLED
 

	
 
#ifdef __cplusplus
 
extern "C" {
 
#endif
 

	
 

	
 
/**
 
 * HTML_TEXT_NODE:
 
 *
 
 * Macro. A text node in a HTML document is really implemented
 
 * the same way as a text node in an XML document.
 
 */
 
#define HTML_TEXT_NODE		XML_TEXT_NODE
 
/**
 
 * HTML_ENTITY_REF_NODE:
 
 *
 
 * Macro. An entity reference in a HTML document is really implemented
 
 * the same way as an entity reference in an XML document.
 
 */
 
#define HTML_ENTITY_REF_NODE	XML_ENTITY_REF_NODE
 
/**
 
 * HTML_COMMENT_NODE:
 
 *
 
 * Macro. A comment in a HTML document is really implemented
 
 * the same way as a comment in an XML document.
 
 */
 
#define HTML_COMMENT_NODE	XML_COMMENT_NODE
 
/**
 
 * HTML_PRESERVE_NODE:
 
 *
 
 * Macro. A preserved node in a HTML document is really implemented
 
 * the same way as a CDATA section in an XML document.
 
 */
 
#define HTML_PRESERVE_NODE	XML_CDATA_SECTION_NODE
 
/**
 
 * HTML_PI_NODE:
 
 *
 
 * Macro. A processing instruction in a HTML document is really implemented
 
 * the same way as a processing instruction in an XML document.
 
 */
 
#define HTML_PI_NODE		XML_PI_NODE
 

	
 
XMLPUBFUN htmlDocPtr XMLCALL
 
		htmlNewDoc		(const xmlChar *URI,
 
					 const xmlChar *ExternalID);
 
XMLPUBFUN htmlDocPtr XMLCALL	
 
		htmlNewDocNoDtD		(const xmlChar *URI,
 
					 const xmlChar *ExternalID);
 
XMLPUBFUN const xmlChar * XMLCALL	
 
		htmlGetMetaEncoding	(htmlDocPtr doc);
 
XMLPUBFUN int XMLCALL		
 
		htmlSetMetaEncoding	(htmlDocPtr doc,
 
					 const xmlChar *encoding);
 
#ifdef LIBXML_OUTPUT_ENABLED
 
XMLPUBFUN void XMLCALL	    
 
		htmlDocDumpMemory	(xmlDocPtr cur,
 
					 xmlChar **mem,
 
					 int *size);
 
XMLPUBFUN void XMLCALL	    
 
		htmlDocDumpMemoryFormat	(xmlDocPtr cur,
 
					 xmlChar **mem,
 
					 int *size,
 
					 int format);
 
XMLPUBFUN int XMLCALL		
 
		htmlDocDump		(FILE *f,
 
					 xmlDocPtr cur);
 
XMLPUBFUN int XMLCALL		
 
		htmlSaveFile		(const char *filename,
 
					 xmlDocPtr cur);
 
XMLPUBFUN int XMLCALL		
 
		htmlNodeDump		(xmlBufferPtr buf,
 
					 xmlDocPtr doc,
 
					 xmlNodePtr cur);
 
XMLPUBFUN void XMLCALL		
 
		htmlNodeDumpFile	(FILE *out,
 
					 xmlDocPtr doc,
 
					 xmlNodePtr cur);
 
XMLPUBFUN int XMLCALL		
 
		htmlNodeDumpFileFormat	(FILE *out,
 
					 xmlDocPtr doc,
 
					 xmlNodePtr cur,
 
					 const char *encoding,
 
					 int format);
 
XMLPUBFUN int XMLCALL		
 
		htmlSaveFileEnc		(const char *filename,
 
					 xmlDocPtr cur,
 
					 const char *encoding);
 
XMLPUBFUN int XMLCALL		
 
		htmlSaveFileFormat	(const char *filename,
 
					 xmlDocPtr cur,
 
					 const char *encoding,
 
					 int format);
 

	
 
XMLPUBFUN void XMLCALL		
 
		htmlNodeDumpFormatOutput(xmlOutputBufferPtr buf,
 
					 xmlDocPtr doc,
 
					 xmlNodePtr cur,
 
					 const char *encoding,
 
					 int format);
 
XMLPUBFUN void XMLCALL		
 
		htmlDocContentDumpOutput(xmlOutputBufferPtr buf,
 
					 xmlDocPtr cur,
 
					 const char *encoding);
 
XMLPUBFUN void XMLCALL		
 
		htmlDocContentDumpFormatOutput(xmlOutputBufferPtr buf,
 
					 xmlDocPtr cur,
 
					 const char *encoding,
 
					 int format);
 
XMLPUBFUN void XMLCALL 
 
		htmlNodeDumpOutput	(xmlOutputBufferPtr buf, 
 
					 xmlDocPtr doc,
 
					 xmlNodePtr cur, 
 
					 const char *encoding);
 

	
 
#endif /* LIBXML_OUTPUT_ENABLED */
 

	
 
XMLPUBFUN int XMLCALL		
 
		htmlIsBooleanAttr	(const xmlChar *name);
 

	
 

	
 
#ifdef __cplusplus
 
}
 
#endif
 

	
 
#endif /* LIBXML_HTML_ENABLED */
 

	
 
#endif /* __HTML_TREE_H__ */
 

	
lib/libxml2/include/libxml/SAX.h
Show inline comments
 
new file 100755
 
/*
 
 * Summary: Old SAX version 1 handler, deprecated
 
 * Description: DEPRECATED set of SAX version 1 interfaces used to
 
 *              build the DOM tree.
 
 *
 
 * Copy: See Copyright for the status of this software.
 
 *
 
 * Author: Daniel Veillard
 
 */
 

	
 

	
 
#ifndef __XML_SAX_H__
 
#define __XML_SAX_H__
 

	
 
#include <stdio.h>
 
#include <stdlib.h>
 
#include <libxml/xmlversion.h>
 
#include <libxml/parser.h>
 
#include <libxml/xlink.h>
 

	
 
#ifdef LIBXML_LEGACY_ENABLED
 

	
 
#ifdef __cplusplus
 
extern "C" {
 
#endif
 
XMLPUBFUN const xmlChar * XMLCALL
 
		getPublicId			(void *ctx);
 
XMLPUBFUN const xmlChar * XMLCALL	
 
		getSystemId			(void *ctx);
 
XMLPUBFUN void XMLCALL		
 
		setDocumentLocator		(void *ctx,
 
						 xmlSAXLocatorPtr loc);
 
    
 
XMLPUBFUN int XMLCALL		
 
		getLineNumber			(void *ctx);
 
XMLPUBFUN int XMLCALL		
 
		getColumnNumber			(void *ctx);
 

	
 
XMLPUBFUN int XMLCALL		
 
		isStandalone			(void *ctx);
 
XMLPUBFUN int XMLCALL		
 
		hasInternalSubset		(void *ctx);
 
XMLPUBFUN int XMLCALL		
 
		hasExternalSubset		(void *ctx);
 

	
 
XMLPUBFUN void XMLCALL		
 
		internalSubset			(void *ctx,
 
						 const xmlChar *name,
 
						 const xmlChar *ExternalID,
 
						 const xmlChar *SystemID);
 
XMLPUBFUN void XMLCALL		
 
		externalSubset			(void *ctx,
 
						 const xmlChar *name,
 
						 const xmlChar *ExternalID,
 
						 const xmlChar *SystemID);
 
XMLPUBFUN xmlEntityPtr XMLCALL	
 
		getEntity			(void *ctx,
 
						 const xmlChar *name);
 
XMLPUBFUN xmlEntityPtr XMLCALL	
 
		getParameterEntity		(void *ctx,
 
						 const xmlChar *name);
 
XMLPUBFUN xmlParserInputPtr XMLCALL 
 
		resolveEntity			(void *ctx,
 
						 const xmlChar *publicId,
 
						 const xmlChar *systemId);
 

	
 
XMLPUBFUN void XMLCALL		
 
		entityDecl			(void *ctx,
 
						 const xmlChar *name,
 
						 int type,
 
						 const xmlChar *publicId,
 
						 const xmlChar *systemId,
 
						 xmlChar *content);
 
XMLPUBFUN void XMLCALL		
 
		attributeDecl			(void *ctx,
 
						 const xmlChar *elem,
 
						 const xmlChar *fullname,
 
						 int type,
 
						 int def,
 
						 const xmlChar *defaultValue,
 
						 xmlEnumerationPtr tree);
 
XMLPUBFUN void XMLCALL		
 
		elementDecl			(void *ctx,
 
						 const xmlChar *name,
 
						 int type,
 
						 xmlElementContentPtr content);
 
XMLPUBFUN void XMLCALL		
 
		notationDecl			(void *ctx,
 
						 const xmlChar *name,
 
						 const xmlChar *publicId,
 
						 const xmlChar *systemId);
 
XMLPUBFUN void XMLCALL		
 
		unparsedEntityDecl		(void *ctx,
 
						 const xmlChar *name,
 
						 const xmlChar *publicId,
 
						 const xmlChar *systemId,
 
						 const xmlChar *notationName);
 

	
 
XMLPUBFUN void XMLCALL		
 
		startDocument			(void *ctx);
 
XMLPUBFUN void XMLCALL		
 
		endDocument			(void *ctx);
 
XMLPUBFUN void XMLCALL		
 
		attribute			(void *ctx,
 
						 const xmlChar *fullname,
 
						 const xmlChar *value);
 
XMLPUBFUN void XMLCALL		
 
		startElement			(void *ctx,
 
						 const xmlChar *fullname,
 
						 const xmlChar **atts);
 
XMLPUBFUN void XMLCALL		
 
		endElement			(void *ctx,
 
						 const xmlChar *name);
 
XMLPUBFUN void XMLCALL		
 
		reference			(void *ctx,
 
						 const xmlChar *name);
 
XMLPUBFUN void XMLCALL		
 
		characters			(void *ctx,
 
						 const xmlChar *ch,
 
						 int len);
 
XMLPUBFUN void XMLCALL		
 
		ignorableWhitespace		(void *ctx,
 
						 const xmlChar *ch,
 
						 int len);
 
XMLPUBFUN void XMLCALL		
 
		processingInstruction		(void *ctx,
 
						 const xmlChar *target,
 
						 const xmlChar *data);
 
XMLPUBFUN void XMLCALL		
 
		globalNamespace			(void *ctx,
 
						 const xmlChar *href,
 
						 const xmlChar *prefix);
 
XMLPUBFUN void XMLCALL		
 
		setNamespace			(void *ctx,
 
						 const xmlChar *name);
 
XMLPUBFUN xmlNsPtr XMLCALL	
 
		getNamespace			(void *ctx);
 
XMLPUBFUN int XMLCALL		
 
		checkNamespace			(void *ctx,
 
						 xmlChar *nameSpace);
 
XMLPUBFUN void XMLCALL		
 
		namespaceDecl			(void *ctx,
 
						 const xmlChar *href,
 
						 const xmlChar *prefix);
 
XMLPUBFUN void XMLCALL		
 
		comment				(void *ctx,
 
						 const xmlChar *value);
 
XMLPUBFUN void XMLCALL		
 
		cdataBlock			(void *ctx,
 
						 const xmlChar *value,
 
						 int len);
 

	
 
#ifdef LIBXML_SAX1_ENABLED
 
XMLPUBFUN void XMLCALL		
 
		initxmlDefaultSAXHandler	(xmlSAXHandlerV1 *hdlr,
 
						 int warning);
 
#ifdef LIBXML_HTML_ENABLED
 
XMLPUBFUN void XMLCALL		
 
		inithtmlDefaultSAXHandler	(xmlSAXHandlerV1 *hdlr);
 
#endif
 
#ifdef LIBXML_DOCB_ENABLED
 
XMLPUBFUN void XMLCALL		
 
		initdocbDefaultSAXHandler	(xmlSAXHandlerV1 *hdlr);
 
#endif
 
#endif /* LIBXML_SAX1_ENABLED */
 

	
 
#ifdef __cplusplus
 
}
 
#endif
 

	
 
#endif /* LIBXML_LEGACY_ENABLED */
 

	
 
#endif /* __XML_SAX_H__ */
lib/libxml2/include/libxml/SAX2.h
Show inline comments
 
new file 100755
 
/*
 
 * Summary: SAX2 parser interface used to build the DOM tree
 
 * Description: those are the default SAX2 interfaces used by
 
 *              the library when building DOM tree.
 
 *
 
 * Copy: See Copyright for the status of this software.
 
 *
 
 * Author: Daniel Veillard
 
 */
 

	
 

	
 
#ifndef __XML_SAX2_H__
 
#define __XML_SAX2_H__
 

	
 
#include <stdio.h>
 
#include <stdlib.h>
 
#include <libxml/xmlversion.h>
 
#include <libxml/parser.h>
 
#include <libxml/xlink.h>
 

	
 
#ifdef __cplusplus
 
extern "C" {
 
#endif
 
XMLPUBFUN const xmlChar * XMLCALL
 
		xmlSAX2GetPublicId		(void *ctx);
 
XMLPUBFUN const xmlChar * XMLCALL	
 
		xmlSAX2GetSystemId		(void *ctx);
 
XMLPUBFUN void XMLCALL		
 
		xmlSAX2SetDocumentLocator	(void *ctx,
 
						 xmlSAXLocatorPtr loc);
 
    
 
XMLPUBFUN int XMLCALL		
 
		xmlSAX2GetLineNumber		(void *ctx);
 
XMLPUBFUN int XMLCALL		
 
		xmlSAX2GetColumnNumber		(void *ctx);
 

	
 
XMLPUBFUN int XMLCALL		
 
		xmlSAX2IsStandalone		(void *ctx);
 
XMLPUBFUN int XMLCALL		
 
		xmlSAX2HasInternalSubset	(void *ctx);
 
XMLPUBFUN int XMLCALL		
 
		xmlSAX2HasExternalSubset	(void *ctx);
 

	
 
XMLPUBFUN void XMLCALL		
 
		xmlSAX2InternalSubset		(void *ctx,
 
						 const xmlChar *name,
 
						 const xmlChar *ExternalID,
 
						 const xmlChar *SystemID);
 
XMLPUBFUN void XMLCALL		
 
		xmlSAX2ExternalSubset		(void *ctx,
 
						 const xmlChar *name,
 
						 const xmlChar *ExternalID,
 
						 const xmlChar *SystemID);
 
XMLPUBFUN xmlEntityPtr XMLCALL	
 
		xmlSAX2GetEntity		(void *ctx,
 
						 const xmlChar *name);
 
XMLPUBFUN xmlEntityPtr XMLCALL	
 
		xmlSAX2GetParameterEntity	(void *ctx,
 
						 const xmlChar *name);
 
XMLPUBFUN xmlParserInputPtr XMLCALL 
 
		xmlSAX2ResolveEntity		(void *ctx,
 
						 const xmlChar *publicId,
 
						 const xmlChar *systemId);
 

	
 
XMLPUBFUN void XMLCALL		
 
		xmlSAX2EntityDecl		(void *ctx,
 
						 const xmlChar *name,
 
						 int type,
 
						 const xmlChar *publicId,
 
						 const xmlChar *systemId,
 
						 xmlChar *content);
 
XMLPUBFUN void XMLCALL		
 
		xmlSAX2AttributeDecl		(void *ctx,
 
						 const xmlChar *elem,
 
						 const xmlChar *fullname,
 
						 int type,
 
						 int def,
 
						 const xmlChar *defaultValue,
 
						 xmlEnumerationPtr tree);
 
XMLPUBFUN void XMLCALL		
 
		xmlSAX2ElementDecl		(void *ctx,
 
						 const xmlChar *name,
 
						 int type,
 
						 xmlElementContentPtr content);
 
XMLPUBFUN void XMLCALL		
 
		xmlSAX2NotationDecl		(void *ctx,
 
						 const xmlChar *name,
 
						 const xmlChar *publicId,
 
						 const xmlChar *systemId);
 
XMLPUBFUN void XMLCALL		
 
		xmlSAX2UnparsedEntityDecl	(void *ctx,
 
						 const xmlChar *name,
 
						 const xmlChar *publicId,
 
						 const xmlChar *systemId,
 
						 const xmlChar *notationName);
 

	
 
XMLPUBFUN void XMLCALL		
 
		xmlSAX2StartDocument		(void *ctx);
 
XMLPUBFUN void XMLCALL		
 
		xmlSAX2EndDocument		(void *ctx);
 
#if defined(LIBXML_SAX1_ENABLED) || defined(LIBXML_HTML_ENABLED) || defined(LIBXML_WRITER_ENABLED) || defined(LIBXML_DOCB_ENABLED)
 
XMLPUBFUN void XMLCALL		
 
		xmlSAX2StartElement		(void *ctx,
 
						 const xmlChar *fullname,
 
						 const xmlChar **atts);
 
XMLPUBFUN void XMLCALL		
 
		xmlSAX2EndElement		(void *ctx,
 
						 const xmlChar *name);
 
#endif /* LIBXML_SAX1_ENABLED or LIBXML_HTML_ENABLED */
 
XMLPUBFUN void XMLCALL
 
		xmlSAX2StartElementNs		(void *ctx,
 
						 const xmlChar *localname,
 
						 const xmlChar *prefix,
 
						 const xmlChar *URI,
 
						 int nb_namespaces,
 
						 const xmlChar **namespaces,
 
						 int nb_attributes,
 
						 int nb_defaulted,
 
						 const xmlChar **attributes);
 
XMLPUBFUN void XMLCALL
 
		xmlSAX2EndElementNs		(void *ctx,
 
						 const xmlChar *localname,
 
						 const xmlChar *prefix,
 
						 const xmlChar *URI);
 
XMLPUBFUN void XMLCALL		
 
		xmlSAX2Reference		(void *ctx,
 
						 const xmlChar *name);
 
XMLPUBFUN void XMLCALL		
 
		xmlSAX2Characters		(void *ctx,
 
						 const xmlChar *ch,
 
						 int len);
 
XMLPUBFUN void XMLCALL		
 
		xmlSAX2IgnorableWhitespace	(void *ctx,
 
						 const xmlChar *ch,
 
						 int len);
 
XMLPUBFUN void XMLCALL		
 
		xmlSAX2ProcessingInstruction	(void *ctx,
 
						 const xmlChar *target,
 
						 const xmlChar *data);
 
XMLPUBFUN void XMLCALL		
 
		xmlSAX2Comment			(void *ctx,
 
						 const xmlChar *value);
 
XMLPUBFUN void XMLCALL		
 
		xmlSAX2CDataBlock		(void *ctx,
 
						 const xmlChar *value,
 
						 int len);
 

	
 
#ifdef LIBXML_SAX1_ENABLED
 
XMLPUBFUN int XMLCALL
 
		xmlSAXDefaultVersion		(int version);
 
#endif /* LIBXML_SAX1_ENABLED */
 

	
 
XMLPUBFUN int XMLCALL
 
		xmlSAXVersion			(xmlSAXHandler *hdlr,
 
						 int version);
 
XMLPUBFUN void XMLCALL		
 
		xmlSAX2InitDefaultSAXHandler    (xmlSAXHandler *hdlr,
 
						 int warning);
 
#ifdef LIBXML_HTML_ENABLED
 
XMLPUBFUN void XMLCALL		
 
		xmlSAX2InitHtmlDefaultSAXHandler(xmlSAXHandler *hdlr);
 
XMLPUBFUN void XMLCALL		
 
		htmlDefaultSAXHandlerInit	(void);
 
#endif
 
#ifdef LIBXML_DOCB_ENABLED
 
XMLPUBFUN void XMLCALL		
 
		xmlSAX2InitDocbDefaultSAXHandler(xmlSAXHandler *hdlr);
 
XMLPUBFUN void XMLCALL		
 
		docbDefaultSAXHandlerInit	(void);
 
#endif
 
XMLPUBFUN void XMLCALL		
 
		xmlDefaultSAXHandlerInit	(void);
 
#ifdef __cplusplus
 
}
 
#endif
 
#endif /* __XML_SAX2_H__ */
lib/libxml2/include/libxml/c14n.h
Show inline comments
 
new file 100755
 
/*
 
 * Summary: Provide Canonical XML and Exclusive XML Canonicalization
 
 * Description: the c14n modules provides a
 
 *
 
 * "Canonical XML" implementation
 
 * http://www.w3.org/TR/xml-c14n
 
 *
 
 * and an
 
 *
 
 * "Exclusive XML Canonicalization" implementation
 
 * http://www.w3.org/TR/xml-exc-c14n
 

	
 
 * Copy: See Copyright for the status of this software.
 
 *
 
 * Author: Aleksey Sanin <aleksey@aleksey.com>
 
 */
 
#ifndef __XML_C14N_H__
 
#define __XML_C14N_H__
 
#ifdef LIBXML_C14N_ENABLED
 
#ifdef LIBXML_OUTPUT_ENABLED
 

	
 
#ifdef __cplusplus
 
extern "C" {
 
#endif /* __cplusplus */
 

	
 
#include <libxml/xmlversion.h>
 
#include <libxml/tree.h>
 
#include <libxml/xpath.h>
 

	
 
/*
 
 * XML Canonicazation
 
 * http://www.w3.org/TR/xml-c14n
 
 *
 
 * Exclusive XML Canonicazation
 
 * http://www.w3.org/TR/xml-exc-c14n
 
 *
 
 * Canonical form of an XML document could be created if and only if
 
 *  a) default attributes (if any) are added to all nodes
 
 *  b) all character and parsed entity references are resolved
 
 * In order to achive this in libxml2 the document MUST be loaded with
 
 * following global setings:
 
 *
 
 *    xmlLoadExtDtdDefaultValue = XML_DETECT_IDS | XML_COMPLETE_ATTRS;
 
 *    xmlSubstituteEntitiesDefault(1);
 
 *
 
 * or corresponding parser context setting:
 
 *    xmlParserCtxtPtr ctxt;
 
 *
 
 *    ...
 
 *    ctxt->loadsubset = XML_DETECT_IDS | XML_COMPLETE_ATTRS;
 
 *    ctxt->replaceEntities = 1;
 
 *    ...
 
 */
 

	
 
/*
 
 * xmlC14NMode:
 
 * 
 
 * Predefined values for C14N modes
 
 *
 
 */
 
typedef enum {
 
    XML_C14N_1_0            = 0,    /* Origianal C14N 1.0 spec */
 
    XML_C14N_EXCLUSIVE_1_0  = 1,    /* Exclusive C14N 1.0 spec */
 
    XML_C14N_1_1            = 2     /* C14N 1.1 spec */
 
} xmlC14NMode;
 

	
 
XMLPUBFUN int XMLCALL
 
		xmlC14NDocSaveTo	(xmlDocPtr doc,
 
					 xmlNodeSetPtr nodes,
 
					 int mode, /* a xmlC14NMode */
 
					 xmlChar **inclusive_ns_prefixes,
 
					 int with_comments,
 
					 xmlOutputBufferPtr buf);
 

	
 
XMLPUBFUN int XMLCALL
 
		xmlC14NDocDumpMemory	(xmlDocPtr doc,
 
					 xmlNodeSetPtr nodes,
 
					 int mode, /* a xmlC14NMode */
 
					 xmlChar **inclusive_ns_prefixes,
 
					 int with_comments,
 
					 xmlChar **doc_txt_ptr);
 

	
 
XMLPUBFUN int XMLCALL
 
		xmlC14NDocSave		(xmlDocPtr doc,
 
					 xmlNodeSetPtr nodes,
 
					 int mode, /* a xmlC14NMode */
 
					 xmlChar **inclusive_ns_prefixes,
 
					 int with_comments,
 
					 const char* filename,
 
					 int compression);
 

	
 

	
 
/**
 
 * This is the core C14N function
 
 */
 
/**
 
 * xmlC14NIsVisibleCallback:
 
 * @user_data: user data
 
 * @node: the curent node
 
 * @parent: the parent node
 
 *
 
 * Signature for a C14N callback on visible nodes
 
 *
 
 * Returns 1 if the node should be included
 
 */
 
typedef int (*xmlC14NIsVisibleCallback)	(void* user_data,
 
					 xmlNodePtr node,
 
					 xmlNodePtr parent);
 

	
 
XMLPUBFUN int XMLCALL
 
		xmlC14NExecute		(xmlDocPtr doc,
 
					 xmlC14NIsVisibleCallback is_visible_callback,
 
					 void* user_data,
 
					 int mode, /* a xmlC14NMode */
 
					 xmlChar **inclusive_ns_prefixes,
 
					 int with_comments,
 
					 xmlOutputBufferPtr buf);
 

	
 
#ifdef __cplusplus
 
}
 
#endif /* __cplusplus */
 

	
 
#endif /* LIBXML_OUTPUT_ENABLED */
 
#endif /* LIBXML_C14N_ENABLED */
 
#endif /* __XML_C14N_H__ */
 

	
lib/libxml2/include/libxml/catalog.h
Show inline comments
 
new file 100755
 
/**
 
 * Summary: interfaces to the Catalog handling system
 
 * Description: the catalog module implements the support for
 
 * XML Catalogs and SGML catalogs
 
 *
 
 * SGML Open Technical Resolution TR9401:1997.
 
 * http://www.jclark.com/sp/catalog.htm
 
 *
 
 * XML Catalogs Working Draft 06 August 2001
 
 * http://www.oasis-open.org/committees/entity/spec-2001-08-06.html
 
 *
 
 * Copy: See Copyright for the status of this software.
 
 *
 
 * Author: Daniel Veillard
 
 */
 

	
 
#ifndef __XML_CATALOG_H__
 
#define __XML_CATALOG_H__
 

	
 
#include <stdio.h>
 

	
 
#include <libxml/xmlversion.h>
 
#include <libxml/xmlstring.h>
 
#include <libxml/tree.h>
 

	
 
#ifdef LIBXML_CATALOG_ENABLED
 

	
 
#ifdef __cplusplus
 
extern "C" {
 
#endif
 

	
 
/**
 
 * XML_CATALOGS_NAMESPACE:
 
 *
 
 * The namespace for the XML Catalogs elements.
 
 */
 
#define XML_CATALOGS_NAMESPACE					\
 
    (const xmlChar *) "urn:oasis:names:tc:entity:xmlns:xml:catalog"
 
/**
 
 * XML_CATALOG_PI:
 
 *
 
 * The specific XML Catalog Processing Instuction name.
 
 */
 
#define XML_CATALOG_PI						\
 
    (const xmlChar *) "oasis-xml-catalog"
 

	
 
/*
 
 * The API is voluntarily limited to general cataloging.
 
 */
 
typedef enum {
 
    XML_CATA_PREFER_NONE = 0,
 
    XML_CATA_PREFER_PUBLIC = 1,
 
    XML_CATA_PREFER_SYSTEM
 
} xmlCatalogPrefer;
 

	
 
typedef enum {
 
    XML_CATA_ALLOW_NONE = 0,
 
    XML_CATA_ALLOW_GLOBAL = 1,
 
    XML_CATA_ALLOW_DOCUMENT = 2,
 
    XML_CATA_ALLOW_ALL = 3
 
} xmlCatalogAllow;
 

	
 
typedef struct _xmlCatalog xmlCatalog;
 
typedef xmlCatalog *xmlCatalogPtr;
 

	
 
/*
 
 * Operations on a given catalog.
 
 */
 
XMLPUBFUN xmlCatalogPtr XMLCALL
 
		xmlNewCatalog		(int sgml);
 
XMLPUBFUN xmlCatalogPtr XMLCALL	
 
		xmlLoadACatalog		(const char *filename);
 
XMLPUBFUN xmlCatalogPtr XMLCALL	
 
		xmlLoadSGMLSuperCatalog	(const char *filename);
 
XMLPUBFUN int XMLCALL		
 
		xmlConvertSGMLCatalog	(xmlCatalogPtr catal);
 
XMLPUBFUN int XMLCALL		
 
		xmlACatalogAdd		(xmlCatalogPtr catal,
 
					 const xmlChar *type,
 
					 const xmlChar *orig,
 
					 const xmlChar *replace);
 
XMLPUBFUN int XMLCALL		
 
		xmlACatalogRemove	(xmlCatalogPtr catal,
 
					 const xmlChar *value);
 
XMLPUBFUN xmlChar * XMLCALL	
 
		xmlACatalogResolve	(xmlCatalogPtr catal,
 
					 const xmlChar *pubID,
 
	                                 const xmlChar *sysID);
 
XMLPUBFUN xmlChar * XMLCALL	
 
		xmlACatalogResolveSystem(xmlCatalogPtr catal,
 
					 const xmlChar *sysID);
 
XMLPUBFUN xmlChar * XMLCALL	
 
		xmlACatalogResolvePublic(xmlCatalogPtr catal,
 
					 const xmlChar *pubID);
 
XMLPUBFUN xmlChar * XMLCALL	
 
		xmlACatalogResolveURI	(xmlCatalogPtr catal,
 
					 const xmlChar *URI);
 
#ifdef LIBXML_OUTPUT_ENABLED
 
XMLPUBFUN void XMLCALL		
 
		xmlACatalogDump		(xmlCatalogPtr catal,
 
					 FILE *out);
 
#endif /* LIBXML_OUTPUT_ENABLED */
 
XMLPUBFUN void XMLCALL		
 
		xmlFreeCatalog		(xmlCatalogPtr catal);
 
XMLPUBFUN int XMLCALL		
 
		xmlCatalogIsEmpty	(xmlCatalogPtr catal);
 

	
 
/*
 
 * Global operations.
 
 */
 
XMLPUBFUN void XMLCALL		
 
		xmlInitializeCatalog	(void);
 
XMLPUBFUN int XMLCALL		
 
		xmlLoadCatalog		(const char *filename);
 
XMLPUBFUN void XMLCALL		
 
		xmlLoadCatalogs		(const char *paths);
 
XMLPUBFUN void XMLCALL		
 
		xmlCatalogCleanup	(void);
 
#ifdef LIBXML_OUTPUT_ENABLED
 
XMLPUBFUN void XMLCALL		
 
		xmlCatalogDump		(FILE *out);
 
#endif /* LIBXML_OUTPUT_ENABLED */
 
XMLPUBFUN xmlChar * XMLCALL	
 
		xmlCatalogResolve	(const xmlChar *pubID,
 
	                                 const xmlChar *sysID);
 
XMLPUBFUN xmlChar * XMLCALL	
 
		xmlCatalogResolveSystem	(const xmlChar *sysID);
 
XMLPUBFUN xmlChar * XMLCALL	
 
		xmlCatalogResolvePublic	(const xmlChar *pubID);
 
XMLPUBFUN xmlChar * XMLCALL	
 
		xmlCatalogResolveURI	(const xmlChar *URI);
 
XMLPUBFUN int XMLCALL		
 
		xmlCatalogAdd		(const xmlChar *type,
 
					 const xmlChar *orig,
 
					 const xmlChar *replace);
 
XMLPUBFUN int XMLCALL		
 
		xmlCatalogRemove	(const xmlChar *value);
 
XMLPUBFUN xmlDocPtr XMLCALL	
 
		xmlParseCatalogFile	(const char *filename);
 
XMLPUBFUN int XMLCALL		
 
		xmlCatalogConvert	(void);
 

	
 
/*
 
 * Strictly minimal interfaces for per-document catalogs used
 
 * by the parser.
 
 */
 
XMLPUBFUN void XMLCALL		
 
		xmlCatalogFreeLocal	(void *catalogs);
 
XMLPUBFUN void * XMLCALL		
 
		xmlCatalogAddLocal	(void *catalogs,
 
					 const xmlChar *URL);
 
XMLPUBFUN xmlChar * XMLCALL	
 
		xmlCatalogLocalResolve	(void *catalogs,
 
					 const xmlChar *pubID,
 
	                                 const xmlChar *sysID);
 
XMLPUBFUN xmlChar * XMLCALL	
 
		xmlCatalogLocalResolveURI(void *catalogs,
 
					 const xmlChar *URI);
 
/*
 
 * Preference settings.
 
 */
 
XMLPUBFUN int XMLCALL		
 
		xmlCatalogSetDebug	(int level);
 
XMLPUBFUN xmlCatalogPrefer XMLCALL 
 
		xmlCatalogSetDefaultPrefer(xmlCatalogPrefer prefer);
 
XMLPUBFUN void XMLCALL		
 
		xmlCatalogSetDefaults	(xmlCatalogAllow allow);
 
XMLPUBFUN xmlCatalogAllow XMLCALL	
 
		xmlCatalogGetDefaults	(void);
 

	
 

	
 
/* DEPRECATED interfaces */
 
XMLPUBFUN const xmlChar * XMLCALL	
 
		xmlCatalogGetSystem	(const xmlChar *sysID);
 
XMLPUBFUN const xmlChar * XMLCALL	
 
		xmlCatalogGetPublic	(const xmlChar *pubID);
 

	
 
#ifdef __cplusplus
 
}
 
#endif
 
#endif /* LIBXML_CATALOG_ENABLED */
 
#endif /* __XML_CATALOG_H__ */
lib/libxml2/include/libxml/chvalid.h
Show inline comments
 
new file 100755
 
/*
 
 * Summary: Unicode character range checking
 
 * Description: this module exports interfaces for the character
 
 *               range validation APIs
 
 *
 
 * This file is automatically generated from the cvs source
 
 * definition files using the genChRanges.py Python script
 
 *
 
 * Generation date: Mon Mar 27 11:09:48 2006
 
 * Sources: chvalid.def
 
 * Author: William Brack <wbrack@mmm.com.hk>
 
 */
 

	
 
#ifndef __XML_CHVALID_H__
 
#define __XML_CHVALID_H__
 

	
 
#include <libxml/xmlversion.h>
 
#include <libxml/xmlstring.h>
 

	
 
#ifdef __cplusplus
 
extern "C" {
 
#endif
 

	
 
/*
 
 * Define our typedefs and structures
 
 *
 
 */
 
typedef struct _xmlChSRange xmlChSRange;
 
typedef xmlChSRange *xmlChSRangePtr;
 
struct _xmlChSRange {
 
    unsigned short	low;
 
    unsigned short	high;
 
};
 

	
 
typedef struct _xmlChLRange xmlChLRange;
 
typedef xmlChLRange *xmlChLRangePtr;
 
struct _xmlChLRange {
 
    unsigned int	low;
 
    unsigned int	high;
 
};
 

	
 
typedef struct _xmlChRangeGroup xmlChRangeGroup;
 
typedef xmlChRangeGroup *xmlChRangeGroupPtr;
 
struct _xmlChRangeGroup {
 
    int			nbShortRange;
 
    int			nbLongRange;
 
    const xmlChSRange	*shortRange;	/* points to an array of ranges */
 
    const xmlChLRange	*longRange;
 
};
 

	
 
/**
 
 * Range checking routine
 
 */
 
XMLPUBFUN int XMLCALL
 
		xmlCharInRange(unsigned int val, const xmlChRangeGroup *group);
 

	
 

	
 
/**
 
 * xmlIsBaseChar_ch:
 
 * @c: char to validate
 
 *
 
 * Automatically generated by genChRanges.py
 
 */
 
#define xmlIsBaseChar_ch(c)	(((0x41 <= (c)) && ((c) <= 0x5a)) || \
 
				 ((0x61 <= (c)) && ((c) <= 0x7a)) || \
 
				 ((0xc0 <= (c)) && ((c) <= 0xd6)) || \
 
				 ((0xd8 <= (c)) && ((c) <= 0xf6)) || \
 
				  (0xf8 <= (c)))
 

	
 
/**
 
 * xmlIsBaseCharQ:
 
 * @c: char to validate
 
 *
 
 * Automatically generated by genChRanges.py
 
 */
 
#define xmlIsBaseCharQ(c)	(((c) < 0x100) ? \
 
				 xmlIsBaseChar_ch((c)) : \
 
				 xmlCharInRange((c), &xmlIsBaseCharGroup))
 

	
 
XMLPUBVAR const xmlChRangeGroup xmlIsBaseCharGroup;
 

	
 
/**
 
 * xmlIsBlank_ch:
 
 * @c: char to validate
 
 *
 
 * Automatically generated by genChRanges.py
 
 */
 
#define xmlIsBlank_ch(c)	(((c) == 0x20) || \
 
				 ((0x9 <= (c)) && ((c) <= 0xa)) || \
 
				 ((c) == 0xd))
 

	
 
/**
 
 * xmlIsBlankQ:
 
 * @c: char to validate
 
 *
 
 * Automatically generated by genChRanges.py
 
 */
 
#define xmlIsBlankQ(c)		(((c) < 0x100) ? \
 
				 xmlIsBlank_ch((c)) : 0)
 

	
 

	
 
/**
 
 * xmlIsChar_ch:
 
 * @c: char to validate
 
 *
 
 * Automatically generated by genChRanges.py
 
 */
 
#define xmlIsChar_ch(c)		(((0x9 <= (c)) && ((c) <= 0xa)) || \
 
				 ((c) == 0xd) || \
 
				  (0x20 <= (c)))
 

	
 
/**
 
 * xmlIsCharQ:
 
 * @c: char to validate
 
 *
 
 * Automatically generated by genChRanges.py
 
 */
 
#define xmlIsCharQ(c)		(((c) < 0x100) ? \
 
				 xmlIsChar_ch((c)) :\
 
				(((0x100 <= (c)) && ((c) <= 0xd7ff)) || \
 
				 ((0xe000 <= (c)) && ((c) <= 0xfffd)) || \
 
				 ((0x10000 <= (c)) && ((c) <= 0x10ffff))))
 

	
 
XMLPUBVAR const xmlChRangeGroup xmlIsCharGroup;
 

	
 
/**
 
 * xmlIsCombiningQ:
 
 * @c: char to validate
 
 *
 
 * Automatically generated by genChRanges.py
 
 */
 
#define xmlIsCombiningQ(c)	(((c) < 0x100) ? \
 
				 0 : \
 
				 xmlCharInRange((c), &xmlIsCombiningGroup))
 

	
 
XMLPUBVAR const xmlChRangeGroup xmlIsCombiningGroup;
 

	
 
/**
 
 * xmlIsDigit_ch:
 
 * @c: char to validate
 
 *
 
 * Automatically generated by genChRanges.py
 
 */
 
#define xmlIsDigit_ch(c)	(((0x30 <= (c)) && ((c) <= 0x39)))
 

	
 
/**
 
 * xmlIsDigitQ:
 
 * @c: char to validate
 
 *
 
 * Automatically generated by genChRanges.py
 
 */
 
#define xmlIsDigitQ(c)		(((c) < 0x100) ? \
 
				 xmlIsDigit_ch((c)) : \
 
				 xmlCharInRange((c), &xmlIsDigitGroup))
 

	
 
XMLPUBVAR const xmlChRangeGroup xmlIsDigitGroup;
 

	
 
/**
 
 * xmlIsExtender_ch:
 
 * @c: char to validate
 
 *
 
 * Automatically generated by genChRanges.py
 
 */
 
#define xmlIsExtender_ch(c)	(((c) == 0xb7))
 

	
 
/**
 
 * xmlIsExtenderQ:
 
 * @c: char to validate
 
 *
 
 * Automatically generated by genChRanges.py
 
 */
 
#define xmlIsExtenderQ(c)	(((c) < 0x100) ? \
 
				 xmlIsExtender_ch((c)) : \
 
				 xmlCharInRange((c), &xmlIsExtenderGroup))
 

	
 
XMLPUBVAR const xmlChRangeGroup xmlIsExtenderGroup;
 

	
 
/**
 
 * xmlIsIdeographicQ:
 
 * @c: char to validate
 
 *
 
 * Automatically generated by genChRanges.py
 
 */
 
#define xmlIsIdeographicQ(c)	(((c) < 0x100) ? \
 
				 0 :\
 
				(((0x4e00 <= (c)) && ((c) <= 0x9fa5)) || \
 
				 ((c) == 0x3007) || \
 
				 ((0x3021 <= (c)) && ((c) <= 0x3029))))
 

	
 
XMLPUBVAR const xmlChRangeGroup xmlIsIdeographicGroup;
 
XMLPUBVAR const unsigned char xmlIsPubidChar_tab[256];
 

	
 
/**
 
 * xmlIsPubidChar_ch:
 
 * @c: char to validate
 
 *
 
 * Automatically generated by genChRanges.py
 
 */
 
#define xmlIsPubidChar_ch(c)	(xmlIsPubidChar_tab[(c)])
 

	
 
/**
 
 * xmlIsPubidCharQ:
 
 * @c: char to validate
 
 *
 
 * Automatically generated by genChRanges.py
 
 */
 
#define xmlIsPubidCharQ(c)	(((c) < 0x100) ? \
 
				 xmlIsPubidChar_ch((c)) : 0)
 

	
 
XMLPUBFUN int XMLCALL
 
		xmlIsBaseChar(unsigned int ch);
 
XMLPUBFUN int XMLCALL
 
		xmlIsBlank(unsigned int ch);
 
XMLPUBFUN int XMLCALL
 
		xmlIsChar(unsigned int ch);
 
XMLPUBFUN int XMLCALL
 
		xmlIsCombining(unsigned int ch);
 
XMLPUBFUN int XMLCALL
 
		xmlIsDigit(unsigned int ch);
 
XMLPUBFUN int XMLCALL
 
		xmlIsExtender(unsigned int ch);
 
XMLPUBFUN int XMLCALL
 
		xmlIsIdeographic(unsigned int ch);
 
XMLPUBFUN int XMLCALL
 
		xmlIsPubidChar(unsigned int ch);
 

	
 
#ifdef __cplusplus
 
}
 
#endif
 
#endif /* __XML_CHVALID_H__ */
lib/libxml2/include/libxml/debugXML.h
Show inline comments
 
new file 100755
 
/*
 
 * Summary: Tree debugging APIs
 
 * Description: Interfaces to a set of routines used for debugging the tree
 
 *              produced by the XML parser.
 
 *
 
 * Copy: See Copyright for the status of this software.
 
 *
 
 * Author: Daniel Veillard
 
 */
 

	
 
#ifndef __DEBUG_XML__
 
#define __DEBUG_XML__
 
#include <stdio.h>
 
#include <libxml/xmlversion.h>
 
#include <libxml/tree.h>
 

	
 
#ifdef LIBXML_DEBUG_ENABLED
 

	
 
#include <libxml/xpath.h>
 

	
 
#ifdef __cplusplus
 
extern "C" {
 
#endif
 

	
 
/*
 
 * The standard Dump routines.
 
 */
 
XMLPUBFUN void XMLCALL	
 
	xmlDebugDumpString	(FILE *output,
 
				 const xmlChar *str);
 
XMLPUBFUN void XMLCALL	
 
	xmlDebugDumpAttr	(FILE *output,
 
				 xmlAttrPtr attr,
 
				 int depth);
 
XMLPUBFUN void XMLCALL	
 
	xmlDebugDumpAttrList	(FILE *output,
 
				 xmlAttrPtr attr,
 
				 int depth);
 
XMLPUBFUN void XMLCALL	
 
	xmlDebugDumpOneNode	(FILE *output,
 
				 xmlNodePtr node,
 
				 int depth);
 
XMLPUBFUN void XMLCALL
 
	xmlDebugDumpNode	(FILE *output,
 
				 xmlNodePtr node,
 
				 int depth);
 
XMLPUBFUN void XMLCALL
 
	xmlDebugDumpNodeList	(FILE *output,
 
				 xmlNodePtr node,
 
				 int depth);
 
XMLPUBFUN void XMLCALL
 
	xmlDebugDumpDocumentHead(FILE *output,
 
				 xmlDocPtr doc);
 
XMLPUBFUN void XMLCALL
 
	xmlDebugDumpDocument	(FILE *output,
 
				 xmlDocPtr doc);
 
XMLPUBFUN void XMLCALL	
 
	xmlDebugDumpDTD		(FILE *output,
 
				 xmlDtdPtr dtd);
 
XMLPUBFUN void XMLCALL	
 
	xmlDebugDumpEntities	(FILE *output,
 
				 xmlDocPtr doc);
 

	
 
/****************************************************************
 
 *								*
 
 *	 		Checking routines			*
 
 *								*
 
 ****************************************************************/
 

	
 
XMLPUBFUN int XMLCALL
 
	xmlDebugCheckDocument	(FILE * output,
 
				 xmlDocPtr doc);
 

	
 
/****************************************************************
 
 *								*
 
 *	 		XML shell helpers			*
 
 *								*
 
 ****************************************************************/
 

	
 
XMLPUBFUN void XMLCALL	
 
	xmlLsOneNode		(FILE *output, xmlNodePtr node);
 
XMLPUBFUN int XMLCALL	
 
	xmlLsCountNode		(xmlNodePtr node);
 

	
 
XMLPUBFUN const char * XMLCALL 
 
	xmlBoolToText		(int boolval);
 

	
 
/****************************************************************
 
 *								*
 
 *	 The XML shell related structures and functions		*
 
 *								*
 
 ****************************************************************/
 

	
 
#ifdef LIBXML_XPATH_ENABLED
 
/**
 
 * xmlShellReadlineFunc:
 
 * @prompt:  a string prompt
 
 *
 
 * This is a generic signature for the XML shell input function.
 
 *
 
 * Returns a string which will be freed by the Shell.
 
 */
 
typedef char * (* xmlShellReadlineFunc)(char *prompt);
 

	
 
/**
 
 * xmlShellCtxt:
 
 *
 
 * A debugging shell context.
 
 * TODO: add the defined function tables.
 
 */
 
typedef struct _xmlShellCtxt xmlShellCtxt;
 
typedef xmlShellCtxt *xmlShellCtxtPtr;
 
struct _xmlShellCtxt {
 
    char *filename;
 
    xmlDocPtr doc;
 
    xmlNodePtr node;
 
    xmlXPathContextPtr pctxt;
 
    int loaded;
 
    FILE *output;
 
    xmlShellReadlineFunc input;
 
};
 

	
 
/**
 
 * xmlShellCmd:
 
 * @ctxt:  a shell context
 
 * @arg:  a string argument
 
 * @node:  a first node
 
 * @node2:  a second node
 
 *
 
 * This is a generic signature for the XML shell functions.
 
 *
 
 * Returns an int, negative returns indicating errors.
 
 */
 
typedef int (* xmlShellCmd) (xmlShellCtxtPtr ctxt,
 
                             char *arg,
 
			     xmlNodePtr node,
 
			     xmlNodePtr node2);
 

	
 
XMLPUBFUN void XMLCALL	
 
	xmlShellPrintXPathError	(int errorType,
 
				 const char *arg);
 
XMLPUBFUN void XMLCALL	
 
	xmlShellPrintXPathResult(xmlXPathObjectPtr list);
 
XMLPUBFUN int XMLCALL	
 
	xmlShellList		(xmlShellCtxtPtr ctxt,
 
				 char *arg,
 
				 xmlNodePtr node,
 
				 xmlNodePtr node2);
 
XMLPUBFUN int XMLCALL	
 
	xmlShellBase		(xmlShellCtxtPtr ctxt,
 
				 char *arg,
 
				 xmlNodePtr node,
 
				 xmlNodePtr node2);
 
XMLPUBFUN int XMLCALL	
 
	xmlShellDir		(xmlShellCtxtPtr ctxt,
 
				 char *arg,
 
				 xmlNodePtr node,
 
				 xmlNodePtr node2);
 
XMLPUBFUN int XMLCALL	
 
	xmlShellLoad		(xmlShellCtxtPtr ctxt,
 
				 char *filename,
 
				 xmlNodePtr node,
 
				 xmlNodePtr node2);
 
#ifdef LIBXML_OUTPUT_ENABLED
 
XMLPUBFUN void XMLCALL	
 
	xmlShellPrintNode	(xmlNodePtr node);
 
XMLPUBFUN int XMLCALL	
 
	xmlShellCat		(xmlShellCtxtPtr ctxt,
 
				 char *arg,
 
				 xmlNodePtr node,
 
				 xmlNodePtr node2);
 
XMLPUBFUN int XMLCALL	
 
	xmlShellWrite		(xmlShellCtxtPtr ctxt,
 
				 char *filename,
 
				 xmlNodePtr node,
 
				 xmlNodePtr node2);
 
XMLPUBFUN int XMLCALL	
 
	xmlShellSave		(xmlShellCtxtPtr ctxt,
 
				 char *filename,
 
				 xmlNodePtr node,
 
				 xmlNodePtr node2);
 
#endif /* LIBXML_OUTPUT_ENABLED */
 
#ifdef LIBXML_VALID_ENABLED
 
XMLPUBFUN int XMLCALL	
 
	xmlShellValidate	(xmlShellCtxtPtr ctxt,
 
				 char *dtd,
 
				 xmlNodePtr node,
 
				 xmlNodePtr node2);
 
#endif /* LIBXML_VALID_ENABLED */
 
XMLPUBFUN int XMLCALL	
 
	xmlShellDu		(xmlShellCtxtPtr ctxt,
 
				 char *arg,
 
				 xmlNodePtr tree,
 
				 xmlNodePtr node2);
 
XMLPUBFUN int XMLCALL	
 
	xmlShellPwd		(xmlShellCtxtPtr ctxt,
 
				 char *buffer,
 
				 xmlNodePtr node,
 
				 xmlNodePtr node2);
 

	
 
/*
 
 * The Shell interface.
 
 */
 
XMLPUBFUN void XMLCALL	
 
	xmlShell		(xmlDocPtr doc,
 
				 char *filename,
 
				 xmlShellReadlineFunc input,
 
				 FILE *output);
 
			 
 
#endif /* LIBXML_XPATH_ENABLED */
 

	
 
#ifdef __cplusplus
 
}
 
#endif
 

	
 
#endif /* LIBXML_DEBUG_ENABLED */
 
#endif /* __DEBUG_XML__ */
lib/libxml2/include/libxml/dict.h
Show inline comments
 
new file 100755
 
/*
 
 * Summary: string dictionnary
 
 * Description: dictionary of reusable strings, just used to avoid allocation
 
 *         and freeing operations.
 
 *
 
 * Copy: See Copyright for the status of this software.
 
 *
 
 * Author: Daniel Veillard
 
 */
 

	
 
#ifndef __XML_DICT_H__
 
#define __XML_DICT_H__
 

	
 
#include <libxml/xmlversion.h>
 
#include <libxml/tree.h>
 

	
 
#ifdef __cplusplus
 
extern "C" {
 
#endif
 

	
 
/*
 
 * The dictionnary.
 
 */
 
typedef struct _xmlDict xmlDict;
 
typedef xmlDict *xmlDictPtr;
 

	
 
/*
 
 * Constructor and destructor.
 
 */
 
XMLPUBFUN xmlDictPtr XMLCALL
 
			xmlDictCreate	(void);
 
XMLPUBFUN xmlDictPtr XMLCALL
 
			xmlDictCreateSub(xmlDictPtr sub);
 
XMLPUBFUN int XMLCALL
 
			xmlDictReference(xmlDictPtr dict);
 
XMLPUBFUN void XMLCALL			
 
			xmlDictFree	(xmlDictPtr dict);
 

	
 
/*
 
 * Lookup of entry in the dictionnary.
 
 */
 
XMLPUBFUN const xmlChar * XMLCALL		
 
			xmlDictLookup	(xmlDictPtr dict,
 
		                         const xmlChar *name,
 
		                         int len);
 
XMLPUBFUN const xmlChar * XMLCALL		
 
			xmlDictExists	(xmlDictPtr dict,
 
		                         const xmlChar *name,
 
		                         int len);
 
XMLPUBFUN const xmlChar * XMLCALL		
 
			xmlDictQLookup	(xmlDictPtr dict,
 
		                         const xmlChar *prefix,
 
		                         const xmlChar *name);
 
XMLPUBFUN int XMLCALL
 
			xmlDictOwns	(xmlDictPtr dict,
 
					 const xmlChar *str);
 
XMLPUBFUN int XMLCALL			
 
			xmlDictSize	(xmlDictPtr dict);
 

	
 
/*
 
 * Cleanup function
 
 */
 
XMLPUBFUN void XMLCALL
 
                        xmlDictCleanup  (void);
 

	
 
#ifdef __cplusplus
 
}
 
#endif
 
#endif /* ! __XML_DICT_H__ */
lib/libxml2/include/libxml/encoding.h
Show inline comments
 
new file 100755
 
/*
 
 * Summary: interface for the encoding conversion functions
 
 * Description: interface for the encoding conversion functions needed for
 
 *              XML basic encoding and iconv() support.
 
 *
 
 * Related specs are
 
 * rfc2044        (UTF-8 and UTF-16) F. Yergeau Alis Technologies
 
 * [ISO-10646]    UTF-8 and UTF-16 in Annexes
 
 * [ISO-8859-1]   ISO Latin-1 characters codes.
 
 * [UNICODE]      The Unicode Consortium, "The Unicode Standard --
 
 *                Worldwide Character Encoding -- Version 1.0", Addison-
 
 *                Wesley, Volume 1, 1991, Volume 2, 1992.  UTF-8 is
 
 *                described in Unicode Technical Report #4.
 
 * [US-ASCII]     Coded Character Set--7-bit American Standard Code for
 
 *                Information Interchange, ANSI X3.4-1986.
 
 *
 
 * Copy: See Copyright for the status of this software.
 
 *
 
 * Author: Daniel Veillard
 
 */
 

	
 
#ifndef __XML_CHAR_ENCODING_H__
 
#define __XML_CHAR_ENCODING_H__
 

	
 
#include <libxml/xmlversion.h>
 

	
 
#ifdef LIBXML_ICONV_ENABLED
 
#include <iconv.h>
 
#endif
 
#ifdef __cplusplus
 
extern "C" {
 
#endif
 

	
 
/*
 
 * xmlCharEncoding:
 
 *
 
 * Predefined values for some standard encodings.
 
 * Libxml does not do beforehand translation on UTF8 and ISOLatinX.
 
 * It also supports ASCII, ISO-8859-1, and UTF16 (LE and BE) by default.
 
 *
 
 * Anything else would have to be translated to UTF8 before being
 
 * given to the parser itself. The BOM for UTF16 and the encoding
 
 * declaration are looked at and a converter is looked for at that
 
 * point. If not found the parser stops here as asked by the XML REC. A
 
 * converter can be registered by the user using xmlRegisterCharEncodingHandler
 
 * but the current form doesn't allow stateful transcoding (a serious
 
 * problem agreed !). If iconv has been found it will be used
 
 * automatically and allow stateful transcoding, the simplest is then
 
 * to be sure to enable iconv and to provide iconv libs for the encoding
 
 * support needed.
 
 *
 
 * Note that the generic "UTF-16" is not a predefined value.  Instead, only
 
 * the specific UTF-16LE and UTF-16BE are present.
 
 */
 
typedef enum {
 
    XML_CHAR_ENCODING_ERROR=   -1, /* No char encoding detected */
 
    XML_CHAR_ENCODING_NONE=	0, /* No char encoding detected */
 
    XML_CHAR_ENCODING_UTF8=	1, /* UTF-8 */
 
    XML_CHAR_ENCODING_UTF16LE=	2, /* UTF-16 little endian */
 
    XML_CHAR_ENCODING_UTF16BE=	3, /* UTF-16 big endian */
 
    XML_CHAR_ENCODING_UCS4LE=	4, /* UCS-4 little endian */
 
    XML_CHAR_ENCODING_UCS4BE=	5, /* UCS-4 big endian */
 
    XML_CHAR_ENCODING_EBCDIC=	6, /* EBCDIC uh! */
 
    XML_CHAR_ENCODING_UCS4_2143=7, /* UCS-4 unusual ordering */
 
    XML_CHAR_ENCODING_UCS4_3412=8, /* UCS-4 unusual ordering */
 
    XML_CHAR_ENCODING_UCS2=	9, /* UCS-2 */
 
    XML_CHAR_ENCODING_8859_1=	10,/* ISO-8859-1 ISO Latin 1 */
 
    XML_CHAR_ENCODING_8859_2=	11,/* ISO-8859-2 ISO Latin 2 */
 
    XML_CHAR_ENCODING_8859_3=	12,/* ISO-8859-3 */
 
    XML_CHAR_ENCODING_8859_4=	13,/* ISO-8859-4 */
 
    XML_CHAR_ENCODING_8859_5=	14,/* ISO-8859-5 */
 
    XML_CHAR_ENCODING_8859_6=	15,/* ISO-8859-6 */
 
    XML_CHAR_ENCODING_8859_7=	16,/* ISO-8859-7 */
 
    XML_CHAR_ENCODING_8859_8=	17,/* ISO-8859-8 */
 
    XML_CHAR_ENCODING_8859_9=	18,/* ISO-8859-9 */
 
    XML_CHAR_ENCODING_2022_JP=  19,/* ISO-2022-JP */
 
    XML_CHAR_ENCODING_SHIFT_JIS=20,/* Shift_JIS */
 
    XML_CHAR_ENCODING_EUC_JP=   21,/* EUC-JP */
 
    XML_CHAR_ENCODING_ASCII=    22 /* pure ASCII */
 
} xmlCharEncoding;
 

	
 
/**
 
 * xmlCharEncodingInputFunc:
 
 * @out:  a pointer to an array of bytes to store the UTF-8 result
 
 * @outlen:  the length of @out
 
 * @in:  a pointer to an array of chars in the original encoding
 
 * @inlen:  the length of @in
 
 *
 
 * Take a block of chars in the original encoding and try to convert
 
 * it to an UTF-8 block of chars out.
 
 *
 
 * Returns the number of bytes written, -1 if lack of space, or -2
 
 *     if the transcoding failed.
 
 * The value of @inlen after return is the number of octets consumed
 
 *     if the return value is positive, else unpredictiable.
 
 * The value of @outlen after return is the number of octets consumed.
 
 */
 
typedef int (* xmlCharEncodingInputFunc)(unsigned char *out, int *outlen,
 
                                         const unsigned char *in, int *inlen);
 

	
 

	
 
/**
 
 * xmlCharEncodingOutputFunc:
 
 * @out:  a pointer to an array of bytes to store the result
 
 * @outlen:  the length of @out
 
 * @in:  a pointer to an array of UTF-8 chars
 
 * @inlen:  the length of @in
 
 *
 
 * Take a block of UTF-8 chars in and try to convert it to another
 
 * encoding.
 
 * Note: a first call designed to produce heading info is called with
 
 * in = NULL. If stateful this should also initialize the encoder state.
 
 *
 
 * Returns the number of bytes written, -1 if lack of space, or -2
 
 *     if the transcoding failed.
 
 * The value of @inlen after return is the number of octets consumed
 
 *     if the return value is positive, else unpredictiable.
 
 * The value of @outlen after return is the number of octets produced.
 
 */
 
typedef int (* xmlCharEncodingOutputFunc)(unsigned char *out, int *outlen,
 
                                          const unsigned char *in, int *inlen);
 

	
 

	
 
/*
 
 * Block defining the handlers for non UTF-8 encodings.
 
 * If iconv is supported, there are two extra fields.
 
 */
 

	
 
typedef struct _xmlCharEncodingHandler xmlCharEncodingHandler;
 
typedef xmlCharEncodingHandler *xmlCharEncodingHandlerPtr;
 
struct _xmlCharEncodingHandler {
 
    char                       *name;
 
    xmlCharEncodingInputFunc   input;
 
    xmlCharEncodingOutputFunc  output;
 
#ifdef LIBXML_ICONV_ENABLED
 
    iconv_t                    iconv_in;
 
    iconv_t                    iconv_out;
 
#endif /* LIBXML_ICONV_ENABLED */
 
};
 

	
 
#ifdef __cplusplus
 
}
 
#endif
 
#include <libxml/tree.h>
 
#ifdef __cplusplus
 
extern "C" {
 
#endif
 

	
 
/*
 
 * Interfaces for encoding handlers.
 
 */
 
XMLPUBFUN void XMLCALL	
 
	xmlInitCharEncodingHandlers	(void);
 
XMLPUBFUN void XMLCALL	
 
	xmlCleanupCharEncodingHandlers	(void);
 
XMLPUBFUN void XMLCALL	
 
	xmlRegisterCharEncodingHandler	(xmlCharEncodingHandlerPtr handler);
 
XMLPUBFUN xmlCharEncodingHandlerPtr XMLCALL
 
	xmlGetCharEncodingHandler	(xmlCharEncoding enc);
 
XMLPUBFUN xmlCharEncodingHandlerPtr XMLCALL
 
	xmlFindCharEncodingHandler	(const char *name);
 
XMLPUBFUN xmlCharEncodingHandlerPtr XMLCALL
 
	xmlNewCharEncodingHandler	(const char *name, 
 
                          		 xmlCharEncodingInputFunc input,
 
                          		 xmlCharEncodingOutputFunc output);
 

	
 
/*
 
 * Interfaces for encoding names and aliases.
 
 */
 
XMLPUBFUN int XMLCALL	
 
	xmlAddEncodingAlias		(const char *name,
 
					 const char *alias);
 
XMLPUBFUN int XMLCALL	
 
	xmlDelEncodingAlias		(const char *alias);
 
XMLPUBFUN const char * XMLCALL
 
	xmlGetEncodingAlias		(const char *alias);
 
XMLPUBFUN void XMLCALL	
 
	xmlCleanupEncodingAliases	(void);
 
XMLPUBFUN xmlCharEncoding XMLCALL
 
	xmlParseCharEncoding		(const char *name);
 
XMLPUBFUN const char * XMLCALL
 
	xmlGetCharEncodingName		(xmlCharEncoding enc);
 

	
 
/*
 
 * Interfaces directly used by the parsers.
 
 */
 
XMLPUBFUN xmlCharEncoding XMLCALL
 
	xmlDetectCharEncoding		(const unsigned char *in,
 
					 int len);
 

	
 
XMLPUBFUN int XMLCALL	
 
	xmlCharEncOutFunc		(xmlCharEncodingHandler *handler,
 
					 xmlBufferPtr out,
 
					 xmlBufferPtr in);
 

	
 
XMLPUBFUN int XMLCALL	
 
	xmlCharEncInFunc		(xmlCharEncodingHandler *handler,
 
					 xmlBufferPtr out,
 
					 xmlBufferPtr in);
 
XMLPUBFUN int XMLCALL
 
	xmlCharEncFirstLine		(xmlCharEncodingHandler *handler,
 
					 xmlBufferPtr out,
 
					 xmlBufferPtr in);
 
XMLPUBFUN int XMLCALL	
 
	xmlCharEncCloseFunc		(xmlCharEncodingHandler *handler);
 

	
 
/*
 
 * Export a few useful functions
 
 */
 
#ifdef LIBXML_OUTPUT_ENABLED
 
XMLPUBFUN int XMLCALL	
 
	UTF8Toisolat1			(unsigned char *out,
 
					 int *outlen,
 
					 const unsigned char *in,
 
					 int *inlen);
 
#endif /* LIBXML_OUTPUT_ENABLED */
 
XMLPUBFUN int XMLCALL	
 
	isolat1ToUTF8			(unsigned char *out,
 
					 int *outlen,
 
					 const unsigned char *in,
 
					 int *inlen);
 
#ifdef __cplusplus
 
}
 
#endif
 

	
 
#endif /* __XML_CHAR_ENCODING_H__ */
lib/libxml2/include/libxml/entities.h
Show inline comments
 
new file 100755
 
/*
 
 * Summary: interface for the XML entities handling
 
 * Description: this module provides some of the entity API needed
 
 *              for the parser and applications.
 
 *
 
 * Copy: See Copyright for the status of this software.
 
 *
 
 * Author: Daniel Veillard
 
 */
 

	
 
#ifndef __XML_ENTITIES_H__
 
#define __XML_ENTITIES_H__
 

	
 
#include <libxml/xmlversion.h>
 
#include <libxml/tree.h>
 

	
 
#ifdef __cplusplus
 
extern "C" {
 
#endif
 

	
 
/*
 
 * The different valid entity types.
 
 */
 
typedef enum {
 
    XML_INTERNAL_GENERAL_ENTITY = 1,
 
    XML_EXTERNAL_GENERAL_PARSED_ENTITY = 2,
 
    XML_EXTERNAL_GENERAL_UNPARSED_ENTITY = 3,
 
    XML_INTERNAL_PARAMETER_ENTITY = 4,
 
    XML_EXTERNAL_PARAMETER_ENTITY = 5,
 
    XML_INTERNAL_PREDEFINED_ENTITY = 6
 
} xmlEntityType;
 

	
 
/*
 
 * An unit of storage for an entity, contains the string, the value
 
 * and the linkind data needed for the linking in the hash table.
 
 */
 

	
 
struct _xmlEntity {
 
    void           *_private;	        /* application data */
 
    xmlElementType          type;       /* XML_ENTITY_DECL, must be second ! */
 
    const xmlChar          *name;	/* Entity name */
 
    struct _xmlNode    *children;	/* First child link */
 
    struct _xmlNode        *last;	/* Last child link */
 
    struct _xmlDtd       *parent;	/* -> DTD */
 
    struct _xmlNode        *next;	/* next sibling link  */
 
    struct _xmlNode        *prev;	/* previous sibling link  */
 
    struct _xmlDoc          *doc;       /* the containing document */
 

	
 
    xmlChar                *orig;	/* content without ref substitution */
 
    xmlChar             *content;	/* content or ndata if unparsed */
 
    int                   length;	/* the content length */
 
    xmlEntityType          etype;	/* The entity type */
 
    const xmlChar    *ExternalID;	/* External identifier for PUBLIC */
 
    const xmlChar      *SystemID;	/* URI for a SYSTEM or PUBLIC Entity */
 

	
 
    struct _xmlEntity     *nexte;	/* unused */
 
    const xmlChar           *URI;	/* the full URI as computed */
 
    int                    owner;	/* does the entity own the childrens */
 
    int			 checked;	/* was the entity content checked */
 
					/* this is also used to count entites
 
					 * references done from that entity */
 
};
 

	
 
/*
 
 * All entities are stored in an hash table.
 
 * There is 2 separate hash tables for global and parameter entities.
 
 */
 

	
 
typedef struct _xmlHashTable xmlEntitiesTable;
 
typedef xmlEntitiesTable *xmlEntitiesTablePtr;
 

	
 
/*
 
 * External functions:
 
 */
 

	
 
#ifdef LIBXML_LEGACY_ENABLED
 
XMLPUBFUN void XMLCALL
 
		xmlInitializePredefinedEntities	(void);
 
#endif /* LIBXML_LEGACY_ENABLED */
 

	
 
XMLPUBFUN xmlEntityPtr XMLCALL
 
			xmlNewEntity		(xmlDocPtr doc,
 
						 const xmlChar *name,
 
						 int type,
 
						 const xmlChar *ExternalID,
 
						 const xmlChar *SystemID,
 
						 const xmlChar *content);
 
XMLPUBFUN xmlEntityPtr XMLCALL
 
			xmlAddDocEntity		(xmlDocPtr doc,
 
						 const xmlChar *name,
 
						 int type,
 
						 const xmlChar *ExternalID,
 
						 const xmlChar *SystemID,
 
						 const xmlChar *content);
 
XMLPUBFUN xmlEntityPtr XMLCALL
 
			xmlAddDtdEntity		(xmlDocPtr doc,
 
						 const xmlChar *name,
 
						 int type,
 
						 const xmlChar *ExternalID,
 
						 const xmlChar *SystemID,
 
						 const xmlChar *content);
 
XMLPUBFUN xmlEntityPtr XMLCALL
 
			xmlGetPredefinedEntity	(const xmlChar *name);
 
XMLPUBFUN xmlEntityPtr XMLCALL
 
			xmlGetDocEntity		(xmlDocPtr doc,
 
						 const xmlChar *name);
 
XMLPUBFUN xmlEntityPtr XMLCALL
 
			xmlGetDtdEntity		(xmlDocPtr doc,
 
						 const xmlChar *name);
 
XMLPUBFUN xmlEntityPtr XMLCALL
 
			xmlGetParameterEntity	(xmlDocPtr doc,
 
						 const xmlChar *name);
 
#ifdef LIBXML_LEGACY_ENABLED
 
XMLPUBFUN const xmlChar * XMLCALL
 
			xmlEncodeEntities	(xmlDocPtr doc,
 
						 const xmlChar *input);
 
#endif /* LIBXML_LEGACY_ENABLED */
 
XMLPUBFUN xmlChar * XMLCALL
 
			xmlEncodeEntitiesReentrant(xmlDocPtr doc,
 
						 const xmlChar *input);
 
XMLPUBFUN xmlChar * XMLCALL
 
			xmlEncodeSpecialChars	(xmlDocPtr doc,
 
						 const xmlChar *input);
 
XMLPUBFUN xmlEntitiesTablePtr XMLCALL
 
			xmlCreateEntitiesTable	(void);
 
#ifdef LIBXML_TREE_ENABLED
 
XMLPUBFUN xmlEntitiesTablePtr XMLCALL
 
			xmlCopyEntitiesTable	(xmlEntitiesTablePtr table);
 
#endif /* LIBXML_TREE_ENABLED */
 
XMLPUBFUN void XMLCALL
 
			xmlFreeEntitiesTable	(xmlEntitiesTablePtr table);
 
#ifdef LIBXML_OUTPUT_ENABLED
 
XMLPUBFUN void XMLCALL
 
			xmlDumpEntitiesTable	(xmlBufferPtr buf,
 
						 xmlEntitiesTablePtr table);
 
XMLPUBFUN void XMLCALL
 
			xmlDumpEntityDecl	(xmlBufferPtr buf,
 
						 xmlEntityPtr ent);
 
#endif /* LIBXML_OUTPUT_ENABLED */
 
#ifdef LIBXML_LEGACY_ENABLED
 
XMLPUBFUN void XMLCALL
 
			xmlCleanupPredefinedEntities(void);
 
#endif /* LIBXML_LEGACY_ENABLED */
 

	
 

	
 
#ifdef __cplusplus
 
}
 
#endif
 

	
 
# endif /* __XML_ENTITIES_H__ */
lib/libxml2/include/libxml/globals.h
Show inline comments
 
new file 100755
 
/*
 
 * Summary: interface for all global variables of the library
 
 * Description: all the global variables and thread handling for
 
 *              those variables is handled by this module.
 
 *
 
 * The bottom of this file is automatically generated by build_glob.py
 
 * based on the description file global.data
 
 *
 
 * Copy: See Copyright for the status of this software.
 
 *
 
 * Author: Gary Pennington <Gary.Pennington@uk.sun.com>, Daniel Veillard
 
 */
 

	
 
#ifndef __XML_GLOBALS_H
 
#define __XML_GLOBALS_H
 

	
 
#include <libxml/xmlversion.h>
 
#include <libxml/parser.h>
 
#include <libxml/xmlerror.h>
 
#include <libxml/SAX.h>
 
#include <libxml/SAX2.h>
 
#include <libxml/xmlmemory.h>
 

	
 
#ifdef __cplusplus
 
extern "C" {
 
#endif
 

	
 
XMLPUBFUN void XMLCALL xmlInitGlobals(void);
 
XMLPUBFUN void XMLCALL xmlCleanupGlobals(void);
 

	
 
/**
 
 * xmlParserInputBufferCreateFilenameFunc:
 
 * @URI: the URI to read from
 
 * @enc: the requested source encoding
 
 *
 
 * Signature for the function doing the lookup for a suitable input method
 
 * corresponding to an URI.
 
 *
 
 * Returns the new xmlParserInputBufferPtr in case of success or NULL if no
 
 *         method was found.
 
 */
 
typedef xmlParserInputBufferPtr (*xmlParserInputBufferCreateFilenameFunc) (const char *URI, xmlCharEncoding enc);
 

	
 
/**
 
 * xmlOutputBufferCreateFilenameFunc:
 
 * @URI: the URI to write to
 
 * @enc: the requested target encoding
 
 *
 
 * Signature for the function doing the lookup for a suitable output method
 
 * corresponding to an URI.
 
 *
 
 * Returns the new xmlOutputBufferPtr in case of success or NULL if no
 
 *         method was found.
 
 */
 
typedef xmlOutputBufferPtr (*xmlOutputBufferCreateFilenameFunc) (const char *URI, xmlCharEncodingHandlerPtr encoder, int compression);
 

	
 
XMLPUBFUN xmlParserInputBufferCreateFilenameFunc
 
XMLCALL xmlParserInputBufferCreateFilenameDefault (xmlParserInputBufferCreateFilenameFunc func);
 
XMLPUBFUN xmlOutputBufferCreateFilenameFunc
 
XMLCALL xmlOutputBufferCreateFilenameDefault (xmlOutputBufferCreateFilenameFunc func);
 

	
 
/*
 
 * Externally global symbols which need to be protected for backwards
 
 * compatibility support.
 
 */
 

	
 
#undef	docbDefaultSAXHandler
 
#undef	htmlDefaultSAXHandler
 
#undef	oldXMLWDcompatibility
 
#undef	xmlBufferAllocScheme
 
#undef	xmlDefaultBufferSize
 
#undef	xmlDefaultSAXHandler
 
#undef	xmlDefaultSAXLocator
 
#undef	xmlDoValidityCheckingDefaultValue
 
#undef	xmlFree
 
#undef	xmlGenericError
 
#undef	xmlStructuredError
 
#undef	xmlGenericErrorContext
 
#undef	xmlStructuredErrorContext
 
#undef	xmlGetWarningsDefaultValue
 
#undef	xmlIndentTreeOutput
 
#undef  xmlTreeIndentString
 
#undef	xmlKeepBlanksDefaultValue
 
#undef	xmlLineNumbersDefaultValue
 
#undef	xmlLoadExtDtdDefaultValue
 
#undef	xmlMalloc
 
#undef	xmlMallocAtomic
 
#undef	xmlMemStrdup
 
#undef	xmlParserDebugEntities
 
#undef	xmlParserVersion
 
#undef	xmlPedanticParserDefaultValue
 
#undef	xmlRealloc
 
#undef	xmlSaveNoEmptyTags
 
#undef	xmlSubstituteEntitiesDefaultValue
 
#undef  xmlRegisterNodeDefaultValue
 
#undef  xmlDeregisterNodeDefaultValue
 
#undef  xmlLastError
 
#undef  xmlParserInputBufferCreateFilenameValue
 
#undef  xmlOutputBufferCreateFilenameValue
 

	
 
/**
 
 * xmlRegisterNodeFunc:
 
 * @node: the current node
 
 *
 
 * Signature for the registration callback of a created node
 
 */
 
typedef void (*xmlRegisterNodeFunc) (xmlNodePtr node);
 
/**
 
 * xmlDeregisterNodeFunc:
 
 * @node: the current node
 
 *
 
 * Signature for the deregistration callback of a discarded node
 
 */
 
typedef void (*xmlDeregisterNodeFunc) (xmlNodePtr node);
 

	
 
typedef struct _xmlGlobalState xmlGlobalState;
 
typedef xmlGlobalState *xmlGlobalStatePtr;
 
struct _xmlGlobalState
 
{
 
	const char *xmlParserVersion;
 

	
 
	xmlSAXLocator xmlDefaultSAXLocator;
 
	xmlSAXHandlerV1 xmlDefaultSAXHandler;
 
	xmlSAXHandlerV1 docbDefaultSAXHandler;
 
	xmlSAXHandlerV1 htmlDefaultSAXHandler;
 

	
 
	xmlFreeFunc xmlFree;
 
	xmlMallocFunc xmlMalloc;
 
	xmlStrdupFunc xmlMemStrdup;
 
	xmlReallocFunc xmlRealloc;
 

	
 
	xmlGenericErrorFunc xmlGenericError;
 
	xmlStructuredErrorFunc xmlStructuredError;
 
	void *xmlGenericErrorContext;
 

	
 
	int oldXMLWDcompatibility;
 

	
 
	xmlBufferAllocationScheme xmlBufferAllocScheme;
 
	int xmlDefaultBufferSize;
 

	
 
	int xmlSubstituteEntitiesDefaultValue;
 
	int xmlDoValidityCheckingDefaultValue;
 
	int xmlGetWarningsDefaultValue;
 
	int xmlKeepBlanksDefaultValue;
 
	int xmlLineNumbersDefaultValue;
 
	int xmlLoadExtDtdDefaultValue;
 
	int xmlParserDebugEntities;
 
	int xmlPedanticParserDefaultValue;
 

	
 
	int xmlSaveNoEmptyTags;
 
	int xmlIndentTreeOutput;
 
	const char *xmlTreeIndentString;
 

	
 
	xmlRegisterNodeFunc xmlRegisterNodeDefaultValue;
 
	xmlDeregisterNodeFunc xmlDeregisterNodeDefaultValue;
 

	
 
	xmlMallocFunc xmlMallocAtomic;
 
	xmlError xmlLastError;
 

	
 
	xmlParserInputBufferCreateFilenameFunc xmlParserInputBufferCreateFilenameValue;
 
	xmlOutputBufferCreateFilenameFunc xmlOutputBufferCreateFilenameValue;
 

	
 
	void *xmlStructuredErrorContext;
 
};
 

	
 
#ifdef __cplusplus
 
}
 
#endif
 
#include <libxml/threads.h>
 
#ifdef __cplusplus
 
extern "C" {
 
#endif
 

	
 
XMLPUBFUN void XMLCALL	xmlInitializeGlobalState(xmlGlobalStatePtr gs);
 

	
 
XMLPUBFUN void XMLCALL xmlThrDefSetGenericErrorFunc(void *ctx, xmlGenericErrorFunc handler);
 

	
 
XMLPUBFUN void XMLCALL xmlThrDefSetStructuredErrorFunc(void *ctx, xmlStructuredErrorFunc handler);
 

	
 
XMLPUBFUN xmlRegisterNodeFunc XMLCALL xmlRegisterNodeDefault(xmlRegisterNodeFunc func);
 
XMLPUBFUN xmlRegisterNodeFunc XMLCALL xmlThrDefRegisterNodeDefault(xmlRegisterNodeFunc func);
 
XMLPUBFUN xmlDeregisterNodeFunc XMLCALL xmlDeregisterNodeDefault(xmlDeregisterNodeFunc func);
 
XMLPUBFUN xmlDeregisterNodeFunc XMLCALL xmlThrDefDeregisterNodeDefault(xmlDeregisterNodeFunc func);
 

	
 
XMLPUBFUN xmlOutputBufferCreateFilenameFunc XMLCALL
 
	xmlThrDefOutputBufferCreateFilenameDefault(xmlOutputBufferCreateFilenameFunc func);
 
XMLPUBFUN xmlParserInputBufferCreateFilenameFunc XMLCALL
 
	xmlThrDefParserInputBufferCreateFilenameDefault(xmlParserInputBufferCreateFilenameFunc func);
 

	
 
/** DOC_DISABLE */
 
/*
 
 * In general the memory allocation entry points are not kept
 
 * thread specific but this can be overridden by LIBXML_THREAD_ALLOC_ENABLED
 
 *    - xmlMalloc
 
 *    - xmlMallocAtomic
 
 *    - xmlRealloc
 
 *    - xmlMemStrdup
 
 *    - xmlFree
 
 */
 

	
 
#ifdef LIBXML_THREAD_ALLOC_ENABLED
 
#ifdef LIBXML_THREAD_ENABLED
 
XMLPUBFUN  xmlMallocFunc * XMLCALL __xmlMalloc(void);
 
#define xmlMalloc \
 
(*(__xmlMalloc()))
 
#else
 
XMLPUBVAR xmlMallocFunc xmlMalloc;
 
#endif
 

	
 
#ifdef LIBXML_THREAD_ENABLED
 
XMLPUBFUN  xmlMallocFunc * XMLCALL __xmlMallocAtomic(void);
 
#define xmlMallocAtomic \
 
(*(__xmlMallocAtomic()))
 
#else
 
XMLPUBVAR xmlMallocFunc xmlMallocAtomic;
 
#endif
 

	
 
#ifdef LIBXML_THREAD_ENABLED
 
XMLPUBFUN  xmlReallocFunc * XMLCALL __xmlRealloc(void);
 
#define xmlRealloc \
 
(*(__xmlRealloc()))
 
#else
 
XMLPUBVAR xmlReallocFunc xmlRealloc;
 
#endif
 

	
 
#ifdef LIBXML_THREAD_ENABLED
 
XMLPUBFUN  xmlFreeFunc * XMLCALL __xmlFree(void);
 
#define xmlFree \
 
(*(__xmlFree()))
 
#else
 
XMLPUBVAR xmlFreeFunc xmlFree;
 
#endif
 

	
 
#ifdef LIBXML_THREAD_ENABLED
 
XMLPUBFUN  xmlStrdupFunc * XMLCALL __xmlMemStrdup(void);
 
#define xmlMemStrdup \
 
(*(__xmlMemStrdup()))
 
#else
 
XMLPUBVAR xmlStrdupFunc xmlMemStrdup;
 
#endif
 

	
 
#else /* !LIBXML_THREAD_ALLOC_ENABLED */
 
XMLPUBVAR xmlMallocFunc xmlMalloc;
 
XMLPUBVAR xmlMallocFunc xmlMallocAtomic;
 
XMLPUBVAR xmlReallocFunc xmlRealloc;
 
XMLPUBVAR xmlFreeFunc xmlFree;
 
XMLPUBVAR xmlStrdupFunc xmlMemStrdup;
 
#endif /* LIBXML_THREAD_ALLOC_ENABLED */
 

	
 
#ifdef LIBXML_DOCB_ENABLED
 
XMLPUBFUN  xmlSAXHandlerV1 * XMLCALL __docbDefaultSAXHandler(void);
 
#ifdef LIBXML_THREAD_ENABLED
 
#define docbDefaultSAXHandler \
 
(*(__docbDefaultSAXHandler()))
 
#else
 
XMLPUBVAR xmlSAXHandlerV1 docbDefaultSAXHandler;
 
#endif
 
#endif
 

	
 
#ifdef LIBXML_HTML_ENABLED
 
XMLPUBFUN xmlSAXHandlerV1 * XMLCALL __htmlDefaultSAXHandler(void);
 
#ifdef LIBXML_THREAD_ENABLED
 
#define htmlDefaultSAXHandler \
 
(*(__htmlDefaultSAXHandler()))
 
#else
 
XMLPUBVAR xmlSAXHandlerV1 htmlDefaultSAXHandler;
 
#endif
 
#endif
 

	
 
XMLPUBFUN xmlError * XMLCALL __xmlLastError(void);
 
#ifdef LIBXML_THREAD_ENABLED
 
#define xmlLastError \
 
(*(__xmlLastError()))
 
#else
 
XMLPUBVAR xmlError xmlLastError;
 
#endif
 

	
 
/*
 
 * Everything starting from the line below is
 
 * Automatically generated by build_glob.py.
 
 * Do not modify the previous line.
 
 */
 

	
 

	
 
XMLPUBFUN int * XMLCALL __oldXMLWDcompatibility(void);
 
#ifdef LIBXML_THREAD_ENABLED
 
#define oldXMLWDcompatibility \
 
(*(__oldXMLWDcompatibility()))
 
#else
 
XMLPUBVAR int oldXMLWDcompatibility;
 
#endif
 

	
 
XMLPUBFUN xmlBufferAllocationScheme * XMLCALL __xmlBufferAllocScheme(void);
 
#ifdef LIBXML_THREAD_ENABLED
 
#define xmlBufferAllocScheme \
 
(*(__xmlBufferAllocScheme()))
 
#else
 
XMLPUBVAR xmlBufferAllocationScheme xmlBufferAllocScheme;
 
#endif
 
XMLPUBFUN xmlBufferAllocationScheme XMLCALL xmlThrDefBufferAllocScheme(xmlBufferAllocationScheme v);
 

	
 
XMLPUBFUN int * XMLCALL __xmlDefaultBufferSize(void);
 
#ifdef LIBXML_THREAD_ENABLED
 
#define xmlDefaultBufferSize \
 
(*(__xmlDefaultBufferSize()))
 
#else
 
XMLPUBVAR int xmlDefaultBufferSize;
 
#endif
 
XMLPUBFUN int XMLCALL xmlThrDefDefaultBufferSize(int v);
 

	
 
XMLPUBFUN xmlSAXHandlerV1 * XMLCALL __xmlDefaultSAXHandler(void);
 
#ifdef LIBXML_THREAD_ENABLED
 
#define xmlDefaultSAXHandler \
 
(*(__xmlDefaultSAXHandler()))
 
#else
 
XMLPUBVAR xmlSAXHandlerV1 xmlDefaultSAXHandler;
 
#endif
 

	
 
XMLPUBFUN xmlSAXLocator * XMLCALL __xmlDefaultSAXLocator(void);
 
#ifdef LIBXML_THREAD_ENABLED
 
#define xmlDefaultSAXLocator \
 
(*(__xmlDefaultSAXLocator()))
 
#else
 
XMLPUBVAR xmlSAXLocator xmlDefaultSAXLocator;
 
#endif
 

	
 
XMLPUBFUN int * XMLCALL __xmlDoValidityCheckingDefaultValue(void);
 
#ifdef LIBXML_THREAD_ENABLED
 
#define xmlDoValidityCheckingDefaultValue \
 
(*(__xmlDoValidityCheckingDefaultValue()))
 
#else
 
XMLPUBVAR int xmlDoValidityCheckingDefaultValue;
 
#endif
 
XMLPUBFUN int XMLCALL xmlThrDefDoValidityCheckingDefaultValue(int v);
 

	
 
XMLPUBFUN xmlGenericErrorFunc * XMLCALL __xmlGenericError(void);
 
#ifdef LIBXML_THREAD_ENABLED
 
#define xmlGenericError \
 
(*(__xmlGenericError()))
 
#else
 
XMLPUBVAR xmlGenericErrorFunc xmlGenericError;
 
#endif
 

	
 
XMLPUBFUN xmlStructuredErrorFunc * XMLCALL __xmlStructuredError(void);
 
#ifdef LIBXML_THREAD_ENABLED
 
#define xmlStructuredError \
 
(*(__xmlStructuredError()))
 
#else
 
XMLPUBVAR xmlStructuredErrorFunc xmlStructuredError;
 
#endif
 

	
 
XMLPUBFUN void * * XMLCALL __xmlGenericErrorContext(void);
 
#ifdef LIBXML_THREAD_ENABLED
 
#define xmlGenericErrorContext \
 
(*(__xmlGenericErrorContext()))
 
#else
 
XMLPUBVAR void * xmlGenericErrorContext;
 
#endif
 

	
 
XMLPUBFUN void * * XMLCALL __xmlStructuredErrorContext(void);
 
#ifdef LIBXML_THREAD_ENABLED
 
#define xmlStructuredErrorContext \
 
(*(__xmlStructuredErrorContext()))
 
#else
 
XMLPUBVAR void * xmlStructuredErrorContext;
 
#endif
 

	
 
XMLPUBFUN int * XMLCALL __xmlGetWarningsDefaultValue(void);
 
#ifdef LIBXML_THREAD_ENABLED
 
#define xmlGetWarningsDefaultValue \
 
(*(__xmlGetWarningsDefaultValue()))
 
#else
 
XMLPUBVAR int xmlGetWarningsDefaultValue;
 
#endif
 
XMLPUBFUN int XMLCALL xmlThrDefGetWarningsDefaultValue(int v);
 

	
 
XMLPUBFUN int * XMLCALL __xmlIndentTreeOutput(void);
 
#ifdef LIBXML_THREAD_ENABLED
 
#define xmlIndentTreeOutput \
 
(*(__xmlIndentTreeOutput()))
 
#else
 
XMLPUBVAR int xmlIndentTreeOutput;
 
#endif
 
XMLPUBFUN int XMLCALL xmlThrDefIndentTreeOutput(int v);
 

	
 
XMLPUBFUN const char * * XMLCALL __xmlTreeIndentString(void);
 
#ifdef LIBXML_THREAD_ENABLED
 
#define xmlTreeIndentString \
 
(*(__xmlTreeIndentString()))
 
#else
 
XMLPUBVAR const char * xmlTreeIndentString;
 
#endif
 
XMLPUBFUN const char * XMLCALL xmlThrDefTreeIndentString(const char * v);
 

	
 
XMLPUBFUN int * XMLCALL __xmlKeepBlanksDefaultValue(void);
 
#ifdef LIBXML_THREAD_ENABLED
 
#define xmlKeepBlanksDefaultValue \
 
(*(__xmlKeepBlanksDefaultValue()))
 
#else
 
XMLPUBVAR int xmlKeepBlanksDefaultValue;
 
#endif
 
XMLPUBFUN int XMLCALL xmlThrDefKeepBlanksDefaultValue(int v);
 

	
 
XMLPUBFUN int * XMLCALL __xmlLineNumbersDefaultValue(void);
 
#ifdef LIBXML_THREAD_ENABLED
 
#define xmlLineNumbersDefaultValue \
 
(*(__xmlLineNumbersDefaultValue()))
 
#else
 
XMLPUBVAR int xmlLineNumbersDefaultValue;
 
#endif
 
XMLPUBFUN int XMLCALL xmlThrDefLineNumbersDefaultValue(int v);
 

	
 
XMLPUBFUN int * XMLCALL __xmlLoadExtDtdDefaultValue(void);
 
#ifdef LIBXML_THREAD_ENABLED
 
#define xmlLoadExtDtdDefaultValue \
 
(*(__xmlLoadExtDtdDefaultValue()))
 
#else
 
XMLPUBVAR int xmlLoadExtDtdDefaultValue;
 
#endif
 
XMLPUBFUN int XMLCALL xmlThrDefLoadExtDtdDefaultValue(int v);
 

	
 
XMLPUBFUN int * XMLCALL __xmlParserDebugEntities(void);
 
#ifdef LIBXML_THREAD_ENABLED
 
#define xmlParserDebugEntities \
 
(*(__xmlParserDebugEntities()))
 
#else
 
XMLPUBVAR int xmlParserDebugEntities;
 
#endif
 
XMLPUBFUN int XMLCALL xmlThrDefParserDebugEntities(int v);
 

	
 
XMLPUBFUN const char * * XMLCALL __xmlParserVersion(void);
 
#ifdef LIBXML_THREAD_ENABLED
 
#define xmlParserVersion \
 
(*(__xmlParserVersion()))
 
#else
 
XMLPUBVAR const char * xmlParserVersion;
 
#endif
 

	
 
XMLPUBFUN int * XMLCALL __xmlPedanticParserDefaultValue(void);
 
#ifdef LIBXML_THREAD_ENABLED
 
#define xmlPedanticParserDefaultValue \
 
(*(__xmlPedanticParserDefaultValue()))
 
#else
 
XMLPUBVAR int xmlPedanticParserDefaultValue;
 
#endif
 
XMLPUBFUN int XMLCALL xmlThrDefPedanticParserDefaultValue(int v);
 

	
 
XMLPUBFUN int * XMLCALL __xmlSaveNoEmptyTags(void);
 
#ifdef LIBXML_THREAD_ENABLED
 
#define xmlSaveNoEmptyTags \
 
(*(__xmlSaveNoEmptyTags()))
 
#else
 
XMLPUBVAR int xmlSaveNoEmptyTags;
 
#endif
 
XMLPUBFUN int XMLCALL xmlThrDefSaveNoEmptyTags(int v);
 

	
 
XMLPUBFUN int * XMLCALL __xmlSubstituteEntitiesDefaultValue(void);
 
#ifdef LIBXML_THREAD_ENABLED
 
#define xmlSubstituteEntitiesDefaultValue \
 
(*(__xmlSubstituteEntitiesDefaultValue()))
 
#else
 
XMLPUBVAR int xmlSubstituteEntitiesDefaultValue;
 
#endif
 
XMLPUBFUN int XMLCALL xmlThrDefSubstituteEntitiesDefaultValue(int v);
 

	
 
XMLPUBFUN xmlRegisterNodeFunc * XMLCALL __xmlRegisterNodeDefaultValue(void);
 
#ifdef LIBXML_THREAD_ENABLED
 
#define xmlRegisterNodeDefaultValue \
 
(*(__xmlRegisterNodeDefaultValue()))
 
#else
 
XMLPUBVAR xmlRegisterNodeFunc xmlRegisterNodeDefaultValue;
 
#endif
 

	
 
XMLPUBFUN xmlDeregisterNodeFunc * XMLCALL __xmlDeregisterNodeDefaultValue(void);
 
#ifdef LIBXML_THREAD_ENABLED
 
#define xmlDeregisterNodeDefaultValue \
 
(*(__xmlDeregisterNodeDefaultValue()))
 
#else
 
XMLPUBVAR xmlDeregisterNodeFunc xmlDeregisterNodeDefaultValue;
 
#endif
 

	
 
XMLPUBFUN xmlParserInputBufferCreateFilenameFunc * XMLCALL __xmlParserInputBufferCreateFilenameValue(void);
 
#ifdef LIBXML_THREAD_ENABLED
 
#define xmlParserInputBufferCreateFilenameValue \
 
(*(__xmlParserInputBufferCreateFilenameValue()))
 
#else
 
XMLPUBVAR xmlParserInputBufferCreateFilenameFunc xmlParserInputBufferCreateFilenameValue;
 
#endif
 

	
 
XMLPUBFUN xmlOutputBufferCreateFilenameFunc * XMLCALL __xmlOutputBufferCreateFilenameValue(void);
 
#ifdef LIBXML_THREAD_ENABLED
 
#define xmlOutputBufferCreateFilenameValue \
 
(*(__xmlOutputBufferCreateFilenameValue()))
 
#else
 
XMLPUBVAR xmlOutputBufferCreateFilenameFunc xmlOutputBufferCreateFilenameValue;
 
#endif
 

	
 
#ifdef __cplusplus
 
}
 
#endif
 

	
 
#endif /* __XML_GLOBALS_H */
lib/libxml2/include/libxml/hash.h
Show inline comments
 
new file 100755
 
/*
 
 * Summary: Chained hash tables
 
 * Description: This module implements the hash table support used in 
 
 * 		various places in the library.
 
 *
 
 * Copy: See Copyright for the status of this software.
 
 *
 
 * Author: Bjorn Reese <bjorn.reese@systematic.dk>
 
 */
 

	
 
#ifndef __XML_HASH_H__
 
#define __XML_HASH_H__
 

	
 
#ifdef __cplusplus
 
extern "C" {
 
#endif
 

	
 
/*
 
 * The hash table.
 
 */
 
typedef struct _xmlHashTable xmlHashTable;
 
typedef xmlHashTable *xmlHashTablePtr;
 

	
 
#ifdef __cplusplus
 
}
 
#endif
 

	
 
#include <libxml/xmlversion.h>
 
#include <libxml/parser.h>
 
#include <libxml/dict.h>
 

	
 
#ifdef __cplusplus
 
extern "C" {
 
#endif
 

	
 
/*
 
 * Recent version of gcc produce a warning when a function pointer is assigned
 
 * to an object pointer, or vice versa.  The following macro is a dirty hack
 
 * to allow suppression of the warning.  If your architecture has function
 
 * pointers which are a different size than a void pointer, there may be some
 
 * serious trouble within the library.
 
 */
 
/**
 
 * XML_CAST_FPTR:
 
 * @fptr:  pointer to a function
 
 *
 
 * Macro to do a casting from an object pointer to a
 
 * function pointer without encountering a warning from
 
 * gcc
 
 *
 
 * #define XML_CAST_FPTR(fptr) (*(void **)(&fptr))
 
 * This macro violated ISO C aliasing rules (gcc4 on s390 broke)
 
 * so it is disabled now
 
 */
 

	
 
#define XML_CAST_FPTR(fptr) fptr
 

	
 

	
 
/*
 
 * function types:
 
 */
 
/**
 
 * xmlHashDeallocator:
 
 * @payload:  the data in the hash
 
 * @name:  the name associated
 
 *
 
 * Callback to free data from a hash.
 
 */
 
typedef void (*xmlHashDeallocator)(void *payload, xmlChar *name);
 
/**
 
 * xmlHashCopier:
 
 * @payload:  the data in the hash
 
 * @name:  the name associated
 
 *
 
 * Callback to copy data from a hash.
 
 *
 
 * Returns a copy of the data or NULL in case of error.
 
 */
 
typedef void *(*xmlHashCopier)(void *payload, xmlChar *name);
 
/**
 
 * xmlHashScanner:
 
 * @payload:  the data in the hash
 
 * @data:  extra scannner data
 
 * @name:  the name associated
 
 *
 
 * Callback when scanning data in a hash with the simple scanner.
 
 */
 
typedef void (*xmlHashScanner)(void *payload, void *data, xmlChar *name);
 
/**
 
 * xmlHashScannerFull:
 
 * @payload:  the data in the hash
 
 * @data:  extra scannner data
 
 * @name:  the name associated
 
 * @name2:  the second name associated
 
 * @name3:  the third name associated
 
 *
 
 * Callback when scanning data in a hash with the full scanner.
 
 */
 
typedef void (*xmlHashScannerFull)(void *payload, void *data,
 
				   const xmlChar *name, const xmlChar *name2,
 
				   const xmlChar *name3);
 

	
 
/*
 
 * Constructor and destructor.
 
 */
 
XMLPUBFUN xmlHashTablePtr XMLCALL
 
			xmlHashCreate	(int size);
 
XMLPUBFUN xmlHashTablePtr XMLCALL
 
			xmlHashCreateDict(int size,
 
					 xmlDictPtr dict);
 
XMLPUBFUN void XMLCALL			
 
			xmlHashFree	(xmlHashTablePtr table,
 
					 xmlHashDeallocator f);
 

	
 
/*
 
 * Add a new entry to the hash table.
 
 */
 
XMLPUBFUN int XMLCALL			
 
			xmlHashAddEntry	(xmlHashTablePtr table,
 
		                         const xmlChar *name,
 
		                         void *userdata);
 
XMLPUBFUN int XMLCALL			
 
			xmlHashUpdateEntry(xmlHashTablePtr table,
 
		                         const xmlChar *name,
 
		                         void *userdata,
 
					 xmlHashDeallocator f);
 
XMLPUBFUN int XMLCALL		    
 
			xmlHashAddEntry2(xmlHashTablePtr table,
 
		                         const xmlChar *name,
 
		                         const xmlChar *name2,
 
		                         void *userdata);
 
XMLPUBFUN int XMLCALL			
 
			xmlHashUpdateEntry2(xmlHashTablePtr table,
 
		                         const xmlChar *name,
 
		                         const xmlChar *name2,
 
		                         void *userdata,
 
					 xmlHashDeallocator f);
 
XMLPUBFUN int XMLCALL			
 
			xmlHashAddEntry3(xmlHashTablePtr table,
 
		                         const xmlChar *name,
 
		                         const xmlChar *name2,
 
		                         const xmlChar *name3,
 
		                         void *userdata);
 
XMLPUBFUN int XMLCALL			
 
			xmlHashUpdateEntry3(xmlHashTablePtr table,
 
		                         const xmlChar *name,
 
		                         const xmlChar *name2,
 
		                         const xmlChar *name3,
 
		                         void *userdata,
 
					 xmlHashDeallocator f);
 

	
 
/*
 
 * Remove an entry from the hash table.
 
 */
 
XMLPUBFUN int XMLCALL     
 
			xmlHashRemoveEntry(xmlHashTablePtr table, const xmlChar *name,
 
                           xmlHashDeallocator f);
 
XMLPUBFUN int XMLCALL     
 
			xmlHashRemoveEntry2(xmlHashTablePtr table, const xmlChar *name,
 
                            const xmlChar *name2, xmlHashDeallocator f);
 
XMLPUBFUN int  XMLCALL    
 
			xmlHashRemoveEntry3(xmlHashTablePtr table, const xmlChar *name,
 
                            const xmlChar *name2, const xmlChar *name3,
 
                            xmlHashDeallocator f);
 

	
 
/*
 
 * Retrieve the userdata.
 
 */
 
XMLPUBFUN void * XMLCALL			
 
			xmlHashLookup	(xmlHashTablePtr table,
 
					 const xmlChar *name);
 
XMLPUBFUN void * XMLCALL			
 
			xmlHashLookup2	(xmlHashTablePtr table,
 
					 const xmlChar *name,
 
					 const xmlChar *name2);
 
XMLPUBFUN void * XMLCALL			
 
			xmlHashLookup3	(xmlHashTablePtr table,
 
					 const xmlChar *name,
 
					 const xmlChar *name2,
 
					 const xmlChar *name3);
 
XMLPUBFUN void * XMLCALL			
 
			xmlHashQLookup	(xmlHashTablePtr table,
 
					 const xmlChar *name,
 
					 const xmlChar *prefix);
 
XMLPUBFUN void * XMLCALL			
 
			xmlHashQLookup2	(xmlHashTablePtr table,
 
					 const xmlChar *name,
 
					 const xmlChar *prefix,
 
					 const xmlChar *name2,
 
					 const xmlChar *prefix2);
 
XMLPUBFUN void * XMLCALL			
 
			xmlHashQLookup3	(xmlHashTablePtr table,
 
					 const xmlChar *name,
 
					 const xmlChar *prefix,
 
					 const xmlChar *name2,
 
					 const xmlChar *prefix2,
 
					 const xmlChar *name3,
 
					 const xmlChar *prefix3);
 

	
 
/*
 
 * Helpers.
 
 */
 
XMLPUBFUN xmlHashTablePtr XMLCALL		
 
			xmlHashCopy	(xmlHashTablePtr table,
 
					 xmlHashCopier f);
 
XMLPUBFUN int XMLCALL			
 
			xmlHashSize	(xmlHashTablePtr table);
 
XMLPUBFUN void XMLCALL			
 
			xmlHashScan	(xmlHashTablePtr table,
 
					 xmlHashScanner f,
 
					 void *data);
 
XMLPUBFUN void XMLCALL			
 
			xmlHashScan3	(xmlHashTablePtr table,
 
					 const xmlChar *name,
 
					 const xmlChar *name2,
 
					 const xmlChar *name3,
 
					 xmlHashScanner f,
 
					 void *data);
 
XMLPUBFUN void XMLCALL			
 
			xmlHashScanFull	(xmlHashTablePtr table,
 
					 xmlHashScannerFull f,
 
					 void *data);
 
XMLPUBFUN void XMLCALL			
 
			xmlHashScanFull3(xmlHashTablePtr table,
 
					 const xmlChar *name,
 
					 const xmlChar *name2,
 
					 const xmlChar *name3,
 
					 xmlHashScannerFull f,
 
					 void *data);
 
#ifdef __cplusplus
 
}
 
#endif
 
#endif /* ! __XML_HASH_H__ */
lib/libxml2/include/libxml/list.h
Show inline comments
 
new file 100755
 
/*
 
 * Summary: lists interfaces
 
 * Description: this module implement the list support used in 
 
 * various place in the library.
 
 *
 
 * Copy: See Copyright for the status of this software.
 
 *
 
 * Author: Gary Pennington <Gary.Pennington@uk.sun.com>
 
 */
 

	
 
#ifndef __XML_LINK_INCLUDE__
 
#define __XML_LINK_INCLUDE__
 

	
 
#include <libxml/xmlversion.h>
 

	
 
#ifdef __cplusplus
 
extern "C" {
 
#endif
 

	
 
typedef struct _xmlLink xmlLink;
 
typedef xmlLink *xmlLinkPtr;
 

	
 
typedef struct _xmlList xmlList;
 
typedef xmlList *xmlListPtr;
 

	
 
/**
 
 * xmlListDeallocator:
 
 * @lk:  the data to deallocate
 
 *
 
 * Callback function used to free data from a list.
 
 */
 
typedef void (*xmlListDeallocator) (xmlLinkPtr lk);
 
/**
 
 * xmlListDataCompare:
 
 * @data0: the first data
 
 * @data1: the second data
 
 *
 
 * Callback function used to compare 2 data.
 
 *
 
 * Returns 0 is equality, -1 or 1 otherwise depending on the ordering.
 
 */
 
typedef int  (*xmlListDataCompare) (const void *data0, const void *data1);
 
/**
 
 * xmlListWalker:
 
 * @data: the data found in the list
 
 * @user: extra user provided data to the walker
 
 *
 
 * Callback function used when walking a list with xmlListWalk().
 
 *
 
 * Returns 0 to stop walking the list, 1 otherwise.
 
 */
 
typedef int (*xmlListWalker) (const void *data, const void *user);
 

	
 
/* Creation/Deletion */
 
XMLPUBFUN xmlListPtr XMLCALL
 
		xmlListCreate		(xmlListDeallocator deallocator,
 
	                                 xmlListDataCompare compare);
 
XMLPUBFUN void XMLCALL		
 
		xmlListDelete		(xmlListPtr l);
 

	
 
/* Basic Operators */
 
XMLPUBFUN void * XMLCALL		
 
		xmlListSearch		(xmlListPtr l,
 
					 void *data);
 
XMLPUBFUN void * XMLCALL		
 
		xmlListReverseSearch	(xmlListPtr l,
 
					 void *data);
 
XMLPUBFUN int XMLCALL		
 
		xmlListInsert		(xmlListPtr l,
 
					 void *data) ;
 
XMLPUBFUN int XMLCALL		
 
		xmlListAppend		(xmlListPtr l,
 
					 void *data) ;
 
XMLPUBFUN int XMLCALL		
 
		xmlListRemoveFirst	(xmlListPtr l,
 
					 void *data);
 
XMLPUBFUN int XMLCALL		
 
		xmlListRemoveLast	(xmlListPtr l,
 
					 void *data);
 
XMLPUBFUN int XMLCALL		
 
		xmlListRemoveAll	(xmlListPtr l,
 
					 void *data);
 
XMLPUBFUN void XMLCALL		
 
		xmlListClear		(xmlListPtr l);
 
XMLPUBFUN int XMLCALL		
 
		xmlListEmpty		(xmlListPtr l);
 
XMLPUBFUN xmlLinkPtr XMLCALL	
 
		xmlListFront		(xmlListPtr l);
 
XMLPUBFUN xmlLinkPtr XMLCALL	
 
		xmlListEnd		(xmlListPtr l);
 
XMLPUBFUN int XMLCALL		
 
		xmlListSize		(xmlListPtr l);
 

	
 
XMLPUBFUN void XMLCALL		
 
		xmlListPopFront		(xmlListPtr l);
 
XMLPUBFUN void XMLCALL		
 
		xmlListPopBack		(xmlListPtr l);
 
XMLPUBFUN int XMLCALL		
 
		xmlListPushFront	(xmlListPtr l,
 
					 void *data);
 
XMLPUBFUN int XMLCALL		
 
		xmlListPushBack		(xmlListPtr l,
 
					 void *data);
 

	
 
/* Advanced Operators */
 
XMLPUBFUN void XMLCALL		
 
		xmlListReverse		(xmlListPtr l);
 
XMLPUBFUN void XMLCALL		
 
		xmlListSort		(xmlListPtr l);
 
XMLPUBFUN void XMLCALL		
 
		xmlListWalk		(xmlListPtr l,
 
					 xmlListWalker walker,
 
					 const void *user);
 
XMLPUBFUN void XMLCALL		
 
		xmlListReverseWalk	(xmlListPtr l,
 
					 xmlListWalker walker,
 
					 const void *user);
 
XMLPUBFUN void XMLCALL		
 
		xmlListMerge		(xmlListPtr l1,
 
					 xmlListPtr l2);
 
XMLPUBFUN xmlListPtr XMLCALL	
 
		xmlListDup		(const xmlListPtr old);
 
XMLPUBFUN int XMLCALL		
 
		xmlListCopy		(xmlListPtr cur,
 
					 const xmlListPtr old);
 
/* Link operators */
 
XMLPUBFUN void * XMLCALL          
 
		xmlLinkGetData          (xmlLinkPtr lk);
 

	
 
/* xmlListUnique() */
 
/* xmlListSwap */
 

	
 
#ifdef __cplusplus
 
}
 
#endif
 

	
 
#endif /* __XML_LINK_INCLUDE__ */
lib/libxml2/include/libxml/nanoftp.h
Show inline comments
 
new file 100755
 
/*
 
 * Summary: minimal FTP implementation
 
 * Description: minimal FTP implementation allowing to fetch resources
 
 *              like external subset.
 
 *
 
 * Copy: See Copyright for the status of this software.
 
 *
 
 * Author: Daniel Veillard
 
 */
 
 
 
#ifndef __NANO_FTP_H__
 
#define __NANO_FTP_H__
 

	
 
#include <libxml/xmlversion.h>
 

	
 
#ifdef LIBXML_FTP_ENABLED
 

	
 
#ifdef __cplusplus
 
extern "C" {
 
#endif
 

	
 
/**
 
 * ftpListCallback: 
 
 * @userData:  user provided data for the callback
 
 * @filename:  the file name (including "->" when links are shown)
 
 * @attrib:  the attribute string
 
 * @owner:  the owner string
 
 * @group:  the group string
 
 * @size:  the file size
 
 * @links:  the link count
 
 * @year:  the year
 
 * @month:  the month
 
 * @day:  the day
 
 * @hour:  the hour
 
 * @minute:  the minute
 
 *
 
 * A callback for the xmlNanoFTPList command.
 
 * Note that only one of year and day:minute are specified.
 
 */
 
typedef void (*ftpListCallback) (void *userData,
 
	                         const char *filename, const char *attrib,
 
	                         const char *owner, const char *group,
 
				 unsigned long size, int links, int year,
 
				 const char *month, int day, int hour,
 
				 int minute);
 
/**
 
 * ftpDataCallback: 
 
 * @userData: the user provided context
 
 * @data: the data received
 
 * @len: its size in bytes
 
 *
 
 * A callback for the xmlNanoFTPGet command.
 
 */
 
typedef void (*ftpDataCallback) (void *userData,
 
				 const char *data,
 
				 int len);
 

	
 
/*
 
 * Init
 
 */
 
XMLPUBFUN void XMLCALL
 
	xmlNanoFTPInit		(void);
 
XMLPUBFUN void XMLCALL	
 
	xmlNanoFTPCleanup	(void);
 

	
 
/*
 
 * Creating/freeing contexts.
 
 */
 
XMLPUBFUN void * XMLCALL	
 
	xmlNanoFTPNewCtxt	(const char *URL);
 
XMLPUBFUN void XMLCALL	
 
	xmlNanoFTPFreeCtxt	(void * ctx);
 
XMLPUBFUN void * XMLCALL 	
 
	xmlNanoFTPConnectTo	(const char *server,
 
				 int port);
 
/*
 
 * Opening/closing session connections.
 
 */
 
XMLPUBFUN void * XMLCALL 	
 
	xmlNanoFTPOpen		(const char *URL);
 
XMLPUBFUN int XMLCALL	
 
	xmlNanoFTPConnect	(void *ctx);
 
XMLPUBFUN int XMLCALL	
 
	xmlNanoFTPClose		(void *ctx);
 
XMLPUBFUN int XMLCALL	
 
	xmlNanoFTPQuit		(void *ctx);
 
XMLPUBFUN void XMLCALL	
 
	xmlNanoFTPScanProxy	(const char *URL);
 
XMLPUBFUN void XMLCALL	
 
	xmlNanoFTPProxy		(const char *host,
 
				 int port,
 
				 const char *user,
 
				 const char *passwd,
 
				 int type);
 
XMLPUBFUN int XMLCALL	
 
	xmlNanoFTPUpdateURL	(void *ctx,
 
				 const char *URL);
 

	
 
/*
 
 * Rather internal commands.
 
 */
 
XMLPUBFUN int XMLCALL	
 
	xmlNanoFTPGetResponse	(void *ctx);
 
XMLPUBFUN int XMLCALL	
 
	xmlNanoFTPCheckResponse	(void *ctx);
 

	
 
/*
 
 * CD/DIR/GET handlers.
 
 */
 
XMLPUBFUN int XMLCALL	
 
	xmlNanoFTPCwd		(void *ctx,
 
				 const char *directory);
 
XMLPUBFUN int XMLCALL	
 
	xmlNanoFTPDele		(void *ctx,
 
				 const char *file);
 

	
 
XMLPUBFUN int XMLCALL	
 
	xmlNanoFTPGetConnection	(void *ctx);
 
XMLPUBFUN int XMLCALL	
 
	xmlNanoFTPCloseConnection(void *ctx);
 
XMLPUBFUN int XMLCALL	
 
	xmlNanoFTPList		(void *ctx,
 
				 ftpListCallback callback,
 
				 void *userData,
 
				 const char *filename);
 
XMLPUBFUN int XMLCALL	
 
	xmlNanoFTPGetSocket	(void *ctx,
 
				 const char *filename);
 
XMLPUBFUN int XMLCALL	
 
	xmlNanoFTPGet		(void *ctx,
 
				 ftpDataCallback callback,
 
				 void *userData,
 
				 const char *filename);
 
XMLPUBFUN int XMLCALL	
 
	xmlNanoFTPRead		(void *ctx,
 
				 void *dest,
 
				 int len);
 

	
 
#ifdef __cplusplus
 
}
 
#endif
 
#endif /* LIBXML_FTP_ENABLED */
 
#endif /* __NANO_FTP_H__ */
lib/libxml2/include/libxml/nanohttp.h
Show inline comments
 
new file 100755
 
/*
 
 * Summary: minimal HTTP implementation
 
 * Description: minimal HTTP implementation allowing to fetch resources
 
 *              like external subset.
 
 *
 
 * Copy: See Copyright for the status of this software.
 
 *
 
 * Author: Daniel Veillard
 
 */
 
 
 
#ifndef __NANO_HTTP_H__
 
#define __NANO_HTTP_H__
 

	
 
#include <libxml/xmlversion.h>
 

	
 
#ifdef LIBXML_HTTP_ENABLED
 

	
 
#ifdef __cplusplus
 
extern "C" {
 
#endif
 
XMLPUBFUN void XMLCALL
 
	xmlNanoHTTPInit		(void);
 
XMLPUBFUN void XMLCALL	
 
	xmlNanoHTTPCleanup	(void);
 
XMLPUBFUN void XMLCALL	
 
	xmlNanoHTTPScanProxy	(const char *URL);
 
XMLPUBFUN int XMLCALL	
 
	xmlNanoHTTPFetch	(const char *URL,
 
				 const char *filename,
 
				 char **contentType);
 
XMLPUBFUN void * XMLCALL	
 
	xmlNanoHTTPMethod	(const char *URL,
 
				 const char *method,
 
				 const char *input,
 
				 char **contentType,
 
				 const char *headers,
 
				 int   ilen);
 
XMLPUBFUN void * XMLCALL	
 
	xmlNanoHTTPMethodRedir	(const char *URL,
 
				 const char *method,
 
				 const char *input,
 
				 char **contentType,
 
				 char **redir,
 
				 const char *headers,
 
				 int   ilen);
 
XMLPUBFUN void * XMLCALL	
 
	xmlNanoHTTPOpen		(const char *URL,
 
				 char **contentType);
 
XMLPUBFUN void * XMLCALL	
 
	xmlNanoHTTPOpenRedir	(const char *URL,
 
				 char **contentType,
 
				 char **redir);
 
XMLPUBFUN int XMLCALL	
 
	xmlNanoHTTPReturnCode	(void *ctx);
 
XMLPUBFUN const char * XMLCALL 
 
	xmlNanoHTTPAuthHeader	(void *ctx);
 
XMLPUBFUN const char * XMLCALL
 
	xmlNanoHTTPRedir	(void *ctx);
 
XMLPUBFUN int XMLCALL
 
	xmlNanoHTTPContentLength( void * ctx );
 
XMLPUBFUN const char * XMLCALL
 
	xmlNanoHTTPEncoding	(void *ctx);
 
XMLPUBFUN const char * XMLCALL
 
	xmlNanoHTTPMimeType	(void *ctx);
 
XMLPUBFUN int XMLCALL	
 
	xmlNanoHTTPRead		(void *ctx,
 
				 void *dest,
 
				 int len);
 
#ifdef LIBXML_OUTPUT_ENABLED
 
XMLPUBFUN int XMLCALL	
 
	xmlNanoHTTPSave		(void *ctxt,
 
				 const char *filename);
 
#endif /* LIBXML_OUTPUT_ENABLED */
 
XMLPUBFUN void XMLCALL	
 
	xmlNanoHTTPClose	(void *ctx);
 
#ifdef __cplusplus
 
}
 
#endif
 

	
 
#endif /* LIBXML_HTTP_ENABLED */
 
#endif /* __NANO_HTTP_H__ */
lib/libxml2/include/libxml/parser.h
Show inline comments
 
new file 100755
 
/*
 
 * Summary: the core parser module
 
 * Description: Interfaces, constants and types related to the XML parser
 
 *
 
 * Copy: See Copyright for the status of this software.
 
 *
 
 * Author: Daniel Veillard
 
 */
 

	
 
#ifndef __XML_PARSER_H__
 
#define __XML_PARSER_H__
 

	
 
#include <stdarg.h>
 

	
 
#include <libxml/xmlversion.h>
 
#include <libxml/tree.h>
 
#include <libxml/dict.h>
 
#include <libxml/hash.h>
 
#include <libxml/valid.h>
 
#include <libxml/entities.h>
 
#include <libxml/xmlerror.h>
 
#include <libxml/xmlstring.h>
 

	
 
#ifdef __cplusplus
 
extern "C" {
 
#endif
 

	
 
/**
 
 * XML_DEFAULT_VERSION:
 
 *
 
 * The default version of XML used: 1.0
 
 */
 
#define XML_DEFAULT_VERSION	"1.0"
 

	
 
/**
 
 * xmlParserInput:
 
 *
 
 * An xmlParserInput is an input flow for the XML processor.
 
 * Each entity parsed is associated an xmlParserInput (except the
 
 * few predefined ones). This is the case both for internal entities
 
 * - in which case the flow is already completely in memory - or
 
 * external entities - in which case we use the buf structure for
 
 * progressive reading and I18N conversions to the internal UTF-8 format.
 
 */
 

	
 
/**
 
 * xmlParserInputDeallocate:
 
 * @str:  the string to deallocate
 
 *
 
 * Callback for freeing some parser input allocations.
 
 */
 
typedef void (* xmlParserInputDeallocate)(xmlChar *str);
 

	
 
struct _xmlParserInput {
 
    /* Input buffer */
 
    xmlParserInputBufferPtr buf;      /* UTF-8 encoded buffer */
 

	
 
    const char *filename;             /* The file analyzed, if any */
 
    const char *directory;            /* the directory/base of the file */
 
    const xmlChar *base;              /* Base of the array to parse */
 
    const xmlChar *cur;               /* Current char being parsed */
 
    const xmlChar *end;               /* end of the array to parse */
 
    int length;                       /* length if known */
 
    int line;                         /* Current line */
 
    int col;                          /* Current column */
 
    /*
 
     * NOTE: consumed is only tested for equality in the parser code,
 
     *       so even if there is an overflow this should not give troubles
 
     *       for parsing very large instances.
 
     */
 
    unsigned long consumed;           /* How many xmlChars already consumed */
 
    xmlParserInputDeallocate free;    /* function to deallocate the base */
 
    const xmlChar *encoding;          /* the encoding string for entity */
 
    const xmlChar *version;           /* the version string for entity */
 
    int standalone;                   /* Was that entity marked standalone */
 
    int id;                           /* an unique identifier for the entity */
 
};
 

	
 
/**
 
 * xmlParserNodeInfo:
 
 *
 
 * The parser can be asked to collect Node informations, i.e. at what
 
 * place in the file they were detected. 
 
 * NOTE: This is off by default and not very well tested.
 
 */
 
typedef struct _xmlParserNodeInfo xmlParserNodeInfo;
 
typedef xmlParserNodeInfo *xmlParserNodeInfoPtr;
 

	
 
struct _xmlParserNodeInfo {
 
  const struct _xmlNode* node;
 
  /* Position & line # that text that created the node begins & ends on */
 
  unsigned long begin_pos;
 
  unsigned long begin_line;
 
  unsigned long end_pos;
 
  unsigned long end_line;
 
};
 

	
 
typedef struct _xmlParserNodeInfoSeq xmlParserNodeInfoSeq;
 
typedef xmlParserNodeInfoSeq *xmlParserNodeInfoSeqPtr;
 
struct _xmlParserNodeInfoSeq {
 
  unsigned long maximum;
 
  unsigned long length;
 
  xmlParserNodeInfo* buffer;
 
};
 

	
 
/**
 
 * xmlParserInputState:
 
 *
 
 * The parser is now working also as a state based parser.
 
 * The recursive one use the state info for entities processing.
 
 */
 
typedef enum {
 
    XML_PARSER_EOF = -1,	/* nothing is to be parsed */
 
    XML_PARSER_START = 0,	/* nothing has been parsed */
 
    XML_PARSER_MISC,		/* Misc* before int subset */
 
    XML_PARSER_PI,		/* Within a processing instruction */
 
    XML_PARSER_DTD,		/* within some DTD content */
 
    XML_PARSER_PROLOG,		/* Misc* after internal subset */
 
    XML_PARSER_COMMENT,		/* within a comment */
 
    XML_PARSER_START_TAG,	/* within a start tag */
 
    XML_PARSER_CONTENT,		/* within the content */
 
    XML_PARSER_CDATA_SECTION,	/* within a CDATA section */
 
    XML_PARSER_END_TAG,		/* within a closing tag */
 
    XML_PARSER_ENTITY_DECL,	/* within an entity declaration */
 
    XML_PARSER_ENTITY_VALUE,	/* within an entity value in a decl */
 
    XML_PARSER_ATTRIBUTE_VALUE,	/* within an attribute value */
 
    XML_PARSER_SYSTEM_LITERAL,	/* within a SYSTEM value */
 
    XML_PARSER_EPILOG, 		/* the Misc* after the last end tag */
 
    XML_PARSER_IGNORE,		/* within an IGNORED section */
 
    XML_PARSER_PUBLIC_LITERAL 	/* within a PUBLIC value */
 
} xmlParserInputState;
 

	
 
/**
 
 * XML_DETECT_IDS:
 
 *
 
 * Bit in the loadsubset context field to tell to do ID/REFs lookups.
 
 * Use it to initialize xmlLoadExtDtdDefaultValue.
 
 */
 
#define XML_DETECT_IDS		2
 

	
 
/**
 
 * XML_COMPLETE_ATTRS:
 
 *
 
 * Bit in the loadsubset context field to tell to do complete the
 
 * elements attributes lists with the ones defaulted from the DTDs.
 
 * Use it to initialize xmlLoadExtDtdDefaultValue.
 
 */
 
#define XML_COMPLETE_ATTRS	4
 

	
 
/**
 
 * XML_SKIP_IDS:
 
 *
 
 * Bit in the loadsubset context field to tell to not do ID/REFs registration.
 
 * Used to initialize xmlLoadExtDtdDefaultValue in some special cases.
 
 */
 
#define XML_SKIP_IDS		8
 

	
 
/**
 
 * xmlParserMode:
 
 *
 
 * A parser can operate in various modes
 
 */
 
typedef enum {
 
    XML_PARSE_UNKNOWN = 0,
 
    XML_PARSE_DOM = 1,
 
    XML_PARSE_SAX = 2,
 
    XML_PARSE_PUSH_DOM = 3,
 
    XML_PARSE_PUSH_SAX = 4,
 
    XML_PARSE_READER = 5
 
} xmlParserMode;
 

	
 
/**
 
 * xmlParserCtxt:
 
 *
 
 * The parser context.
 
 * NOTE This doesn't completely define the parser state, the (current ?)
 
 *      design of the parser uses recursive function calls since this allow
 
 *      and easy mapping from the production rules of the specification
 
 *      to the actual code. The drawback is that the actual function call
 
 *      also reflect the parser state. However most of the parsing routines
 
 *      takes as the only argument the parser context pointer, so migrating
 
 *      to a state based parser for progressive parsing shouldn't be too hard.
 
 */
 
struct _xmlParserCtxt {
 
    struct _xmlSAXHandler *sax;       /* The SAX handler */
 
    void            *userData;        /* For SAX interface only, used by DOM build */
 
    xmlDocPtr           myDoc;        /* the document being built */
 
    int            wellFormed;        /* is the document well formed */
 
    int       replaceEntities;        /* shall we replace entities ? */
 
    const xmlChar    *version;        /* the XML version string */
 
    const xmlChar   *encoding;        /* the declared encoding, if any */
 
    int            standalone;        /* standalone document */
 
    int                  html;        /* an HTML(1)/Docbook(2) document
 
                                       * 3 is HTML after <head>
 
                                       * 10 is HTML after <body>
 
                                       */
 

	
 
    /* Input stream stack */
 
    xmlParserInputPtr  input;         /* Current input stream */
 
    int                inputNr;       /* Number of current input streams */
 
    int                inputMax;      /* Max number of input streams */
 
    xmlParserInputPtr *inputTab;      /* stack of inputs */
 

	
 
    /* Node analysis stack only used for DOM building */
 
    xmlNodePtr         node;          /* Current parsed Node */
 
    int                nodeNr;        /* Depth of the parsing stack */
 
    int                nodeMax;       /* Max depth of the parsing stack */
 
    xmlNodePtr        *nodeTab;       /* array of nodes */
 

	
 
    int record_info;                  /* Whether node info should be kept */
 
    xmlParserNodeInfoSeq node_seq;    /* info about each node parsed */
 

	
 
    int errNo;                        /* error code */
 

	
 
    int     hasExternalSubset;        /* reference and external subset */
 
    int             hasPErefs;        /* the internal subset has PE refs */
 
    int              external;        /* are we parsing an external entity */
 

	
 
    int                 valid;        /* is the document valid */
 
    int              validate;        /* shall we try to validate ? */
 
    xmlValidCtxt        vctxt;        /* The validity context */
 

	
 
    xmlParserInputState instate;      /* current type of input */
 
    int                 token;        /* next char look-ahead */    
 

	
 
    char           *directory;        /* the data directory */
 

	
 
    /* Node name stack */
 
    const xmlChar     *name;          /* Current parsed Node */
 
    int                nameNr;        /* Depth of the parsing stack */
 
    int                nameMax;       /* Max depth of the parsing stack */
 
    const xmlChar *   *nameTab;       /* array of nodes */
 

	
 
    long               nbChars;       /* number of xmlChar processed */
 
    long            checkIndex;       /* used by progressive parsing lookup */
 
    int             keepBlanks;       /* ugly but ... */
 
    int             disableSAX;       /* SAX callbacks are disabled */
 
    int               inSubset;       /* Parsing is in int 1/ext 2 subset */
 
    const xmlChar *    intSubName;    /* name of subset */
 
    xmlChar *          extSubURI;     /* URI of external subset */
 
    xmlChar *          extSubSystem;  /* SYSTEM ID of external subset */
 

	
 
    /* xml:space values */
 
    int *              space;         /* Should the parser preserve spaces */
 
    int                spaceNr;       /* Depth of the parsing stack */
 
    int                spaceMax;      /* Max depth of the parsing stack */
 
    int *              spaceTab;      /* array of space infos */
 

	
 
    int                depth;         /* to prevent entity substitution loops */
 
    xmlParserInputPtr  entity;        /* used to check entities boundaries */
 
    int                charset;       /* encoding of the in-memory content
 
				         actually an xmlCharEncoding */
 
    int                nodelen;       /* Those two fields are there to */
 
    int                nodemem;       /* Speed up large node parsing */
 
    int                pedantic;      /* signal pedantic warnings */
 
    void              *_private;      /* For user data, libxml won't touch it */
 

	
 
    int                loadsubset;    /* should the external subset be loaded */
 
    int                linenumbers;   /* set line number in element content */
 
    void              *catalogs;      /* document's own catalog */
 
    int                recovery;      /* run in recovery mode */
 
    int                progressive;   /* is this a progressive parsing */
 
    xmlDictPtr         dict;          /* dictionnary for the parser */
 
    const xmlChar *   *atts;          /* array for the attributes callbacks */
 
    int                maxatts;       /* the size of the array */
 
    int                docdict;       /* use strings from dict to build tree */
 

	
 
    /*
 
     * pre-interned strings
 
     */
 
    const xmlChar *str_xml;
 
    const xmlChar *str_xmlns;
 
    const xmlChar *str_xml_ns;
 

	
 
    /*
 
     * Everything below is used only by the new SAX mode
 
     */
 
    int                sax2;          /* operating in the new SAX mode */
 
    int                nsNr;          /* the number of inherited namespaces */
 
    int                nsMax;         /* the size of the arrays */
 
    const xmlChar *   *nsTab;         /* the array of prefix/namespace name */
 
    int               *attallocs;     /* which attribute were allocated */
 
    void *            *pushTab;       /* array of data for push */
 
    xmlHashTablePtr    attsDefault;   /* defaulted attributes if any */
 
    xmlHashTablePtr    attsSpecial;   /* non-CDATA attributes if any */
 
    int                nsWellFormed;  /* is the document XML Nanespace okay */
 
    int                options;       /* Extra options */
 

	
 
    /*
 
     * Those fields are needed only for treaming parsing so far
 
     */
 
    int               dictNames;    /* Use dictionary names for the tree */
 
    int               freeElemsNr;  /* number of freed element nodes */
 
    xmlNodePtr        freeElems;    /* List of freed element nodes */
 
    int               freeAttrsNr;  /* number of freed attributes nodes */
 
    xmlAttrPtr        freeAttrs;    /* List of freed attributes nodes */
 

	
 
    /*
 
     * the complete error informations for the last error.
 
     */
 
    xmlError          lastError;
 
    xmlParserMode     parseMode;    /* the parser mode */
 
    unsigned long    nbentities;    /* number of entities references */
 
    unsigned long  sizeentities;    /* size of parsed entities */
 

	
 
    /* for use by HTML non-recursive parser */
 
    xmlParserNodeInfo *nodeInfo;      /* Current NodeInfo */
 
    int                nodeInfoNr;    /* Depth of the parsing stack */
 
    int                nodeInfoMax;   /* Max depth of the parsing stack */
 
    xmlParserNodeInfo *nodeInfoTab;   /* array of nodeInfos */
 
};
 

	
 
/**
 
 * xmlSAXLocator:
 
 *
 
 * A SAX Locator.
 
 */
 
struct _xmlSAXLocator {
 
    const xmlChar *(*getPublicId)(void *ctx);
 
    const xmlChar *(*getSystemId)(void *ctx);
 
    int (*getLineNumber)(void *ctx);
 
    int (*getColumnNumber)(void *ctx);
 
};
 

	
 
/**
 
 * xmlSAXHandler:
 
 *
 
 * A SAX handler is bunch of callbacks called by the parser when processing
 
 * of the input generate data or structure informations.
 
 */
 

	
 
/**
 
 * resolveEntitySAXFunc:
 
 * @ctx:  the user data (XML parser context)
 
 * @publicId: The public ID of the entity
 
 * @systemId: The system ID of the entity
 
 *
 
 * Callback:
 
 * The entity loader, to control the loading of external entities,
 
 * the application can either:
 
 *    - override this resolveEntity() callback in the SAX block
 
 *    - or better use the xmlSetExternalEntityLoader() function to
 
 *      set up it's own entity resolution routine
 
 *
 
 * Returns the xmlParserInputPtr if inlined or NULL for DOM behaviour.
 
 */
 
typedef xmlParserInputPtr (*resolveEntitySAXFunc) (void *ctx,
 
				const xmlChar *publicId,
 
				const xmlChar *systemId);
 
/**
 
 * internalSubsetSAXFunc:
 
 * @ctx:  the user data (XML parser context)
 
 * @name:  the root element name
 
 * @ExternalID:  the external ID
 
 * @SystemID:  the SYSTEM ID (e.g. filename or URL)
 
 *
 
 * Callback on internal subset declaration.
 
 */
 
typedef void (*internalSubsetSAXFunc) (void *ctx,
 
				const xmlChar *name,
 
				const xmlChar *ExternalID,
 
				const xmlChar *SystemID);
 
/**
 
 * externalSubsetSAXFunc:
 
 * @ctx:  the user data (XML parser context)
 
 * @name:  the root element name
 
 * @ExternalID:  the external ID
 
 * @SystemID:  the SYSTEM ID (e.g. filename or URL)
 
 *
 
 * Callback on external subset declaration.
 
 */
 
typedef void (*externalSubsetSAXFunc) (void *ctx,
 
				const xmlChar *name,
 
				const xmlChar *ExternalID,
 
				const xmlChar *SystemID);
 
/**
 
 * getEntitySAXFunc:
 
 * @ctx:  the user data (XML parser context)
 
 * @name: The entity name
 
 *
 
 * Get an entity by name.
 
 *
 
 * Returns the xmlEntityPtr if found.
 
 */
 
typedef xmlEntityPtr (*getEntitySAXFunc) (void *ctx,
 
				const xmlChar *name);
 
/**
 
 * getParameterEntitySAXFunc:
 
 * @ctx:  the user data (XML parser context)
 
 * @name: The entity name
 
 *
 
 * Get a parameter entity by name.
 
 *
 
 * Returns the xmlEntityPtr if found.
 
 */
 
typedef xmlEntityPtr (*getParameterEntitySAXFunc) (void *ctx,
 
				const xmlChar *name);
 
/**
 
 * entityDeclSAXFunc:
 
 * @ctx:  the user data (XML parser context)
 
 * @name:  the entity name 
 
 * @type:  the entity type 
 
 * @publicId: The public ID of the entity
 
 * @systemId: The system ID of the entity
 
 * @content: the entity value (without processing).
 
 *
 
 * An entity definition has been parsed.
 
 */
 
typedef void (*entityDeclSAXFunc) (void *ctx,
 
				const xmlChar *name,
 
				int type,
 
				const xmlChar *publicId,
 
				const xmlChar *systemId,
 
				xmlChar *content);
 
/**
 
 * notationDeclSAXFunc:
 
 * @ctx:  the user data (XML parser context)
 
 * @name: The name of the notation
 
 * @publicId: The public ID of the entity
 
 * @systemId: The system ID of the entity
 
 *
 
 * What to do when a notation declaration has been parsed.
 
 */
 
typedef void (*notationDeclSAXFunc)(void *ctx,
 
				const xmlChar *name,
 
				const xmlChar *publicId,
 
				const xmlChar *systemId);
 
/**
 
 * attributeDeclSAXFunc:
 
 * @ctx:  the user data (XML parser context)
 
 * @elem:  the name of the element
 
 * @fullname:  the attribute name 
 
 * @type:  the attribute type 
 
 * @def:  the type of default value
 
 * @defaultValue: the attribute default value
 
 * @tree:  the tree of enumerated value set
 
 *
 
 * An attribute definition has been parsed.
 
 */
 
typedef void (*attributeDeclSAXFunc)(void *ctx,
 
				const xmlChar *elem,
 
				const xmlChar *fullname,
 
				int type,
 
				int def,
 
				const xmlChar *defaultValue,
 
				xmlEnumerationPtr tree);
 
/**
 
 * elementDeclSAXFunc:
 
 * @ctx:  the user data (XML parser context)
 
 * @name:  the element name 
 
 * @type:  the element type 
 
 * @content: the element value tree
 
 *
 
 * An element definition has been parsed.
 
 */
 
typedef void (*elementDeclSAXFunc)(void *ctx,
 
				const xmlChar *name,
 
				int type,
 
				xmlElementContentPtr content);
 
/**
 
 * unparsedEntityDeclSAXFunc:
 
 * @ctx:  the user data (XML parser context)
 
 * @name: The name of the entity
 
 * @publicId: The public ID of the entity
 
 * @systemId: The system ID of the entity
 
 * @notationName: the name of the notation
 
 *
 
 * What to do when an unparsed entity declaration is parsed.
 
 */
 
typedef void (*unparsedEntityDeclSAXFunc)(void *ctx,
 
				const xmlChar *name,
 
				const xmlChar *publicId,
 
				const xmlChar *systemId,
 
				const xmlChar *notationName);
 
/**
 
 * setDocumentLocatorSAXFunc:
 
 * @ctx:  the user data (XML parser context)
 
 * @loc: A SAX Locator
 
 *
 
 * Receive the document locator at startup, actually xmlDefaultSAXLocator.
 
 * Everything is available on the context, so this is useless in our case.
 
 */
 
typedef void (*setDocumentLocatorSAXFunc) (void *ctx,
 
				xmlSAXLocatorPtr loc);
 
/**
 
 * startDocumentSAXFunc:
 
 * @ctx:  the user data (XML parser context)
 
 *
 
 * Called when the document start being processed.
 
 */
 
typedef void (*startDocumentSAXFunc) (void *ctx);
 
/**
 
 * endDocumentSAXFunc:
 
 * @ctx:  the user data (XML parser context)
 
 *
 
 * Called when the document end has been detected.
 
 */
 
typedef void (*endDocumentSAXFunc) (void *ctx);
 
/**
 
 * startElementSAXFunc:
 
 * @ctx:  the user data (XML parser context)
 
 * @name:  The element name, including namespace prefix
 
 * @atts:  An array of name/value attributes pairs, NULL terminated
 
 *
 
 * Called when an opening tag has been processed.
 
 */
 
typedef void (*startElementSAXFunc) (void *ctx,
 
				const xmlChar *name,
 
				const xmlChar **atts);
 
/**
 
 * endElementSAXFunc:
 
 * @ctx:  the user data (XML parser context)
 
 * @name:  The element name
 
 *
 
 * Called when the end of an element has been detected.
 
 */
 
typedef void (*endElementSAXFunc) (void *ctx,
 
				const xmlChar *name);
 
/**
 
 * attributeSAXFunc:
 
 * @ctx:  the user data (XML parser context)
 
 * @name:  The attribute name, including namespace prefix
 
 * @value:  The attribute value
 
 *
 
 * Handle an attribute that has been read by the parser.
 
 * The default handling is to convert the attribute into an
 
 * DOM subtree and past it in a new xmlAttr element added to
 
 * the element.
 
 */
 
typedef void (*attributeSAXFunc) (void *ctx,
 
				const xmlChar *name,
 
				const xmlChar *value);
 
/**
 
 * referenceSAXFunc:
 
 * @ctx:  the user data (XML parser context)
 
 * @name:  The entity name
 
 *
 
 * Called when an entity reference is detected. 
 
 */
 
typedef void (*referenceSAXFunc) (void *ctx,
 
				const xmlChar *name);
 
/**
 
 * charactersSAXFunc:
 
 * @ctx:  the user data (XML parser context)
 
 * @ch:  a xmlChar string
 
 * @len: the number of xmlChar
 
 *
 
 * Receiving some chars from the parser.
 
 */
 
typedef void (*charactersSAXFunc) (void *ctx,
 
				const xmlChar *ch,
 
				int len);
 
/**
 
 * ignorableWhitespaceSAXFunc:
 
 * @ctx:  the user data (XML parser context)
 
 * @ch:  a xmlChar string
 
 * @len: the number of xmlChar
 
 *
 
 * Receiving some ignorable whitespaces from the parser.
 
 * UNUSED: by default the DOM building will use characters.
 
 */
 
typedef void (*ignorableWhitespaceSAXFunc) (void *ctx,
 
				const xmlChar *ch,
 
				int len);
 
/**
 
 * processingInstructionSAXFunc:
 
 * @ctx:  the user data (XML parser context)
 
 * @target:  the target name
 
 * @data: the PI data's
 
 *
 
 * A processing instruction has been parsed.
 
 */
 
typedef void (*processingInstructionSAXFunc) (void *ctx,
 
				const xmlChar *target,
 
				const xmlChar *data);
 
/**
 
 * commentSAXFunc:
 
 * @ctx:  the user data (XML parser context)
 
 * @value:  the comment content
 
 *
 
 * A comment has been parsed.
 
 */
 
typedef void (*commentSAXFunc) (void *ctx,
 
				const xmlChar *value);
 
/**
 
 * cdataBlockSAXFunc:
 
 * @ctx:  the user data (XML parser context)
 
 * @value:  The pcdata content
 
 * @len:  the block length
 
 *
 
 * Called when a pcdata block has been parsed.
 
 */
 
typedef void (*cdataBlockSAXFunc) (
 
	                        void *ctx,
 
				const xmlChar *value,
 
				int len);
 
/**
 
 * warningSAXFunc:
 
 * @ctx:  an XML parser context
 
 * @msg:  the message to display/transmit
 
 * @...:  extra parameters for the message display
 
 * 
 
 * Display and format a warning messages, callback.
 
 */
 
typedef void (XMLCDECL *warningSAXFunc) (void *ctx,
 
				const char *msg, ...) LIBXML_ATTR_FORMAT(2,3);
 
/**
 
 * errorSAXFunc:
 
 * @ctx:  an XML parser context
 
 * @msg:  the message to display/transmit
 
 * @...:  extra parameters for the message display
 
 * 
 
 * Display and format an error messages, callback.
 
 */
 
typedef void (XMLCDECL *errorSAXFunc) (void *ctx,
 
				const char *msg, ...) LIBXML_ATTR_FORMAT(2,3);
 
/**
 
 * fatalErrorSAXFunc:
 
 * @ctx:  an XML parser context
 
 * @msg:  the message to display/transmit
 
 * @...:  extra parameters for the message display
 
 * 
 
 * Display and format fatal error messages, callback.
 
 * Note: so far fatalError() SAX callbacks are not used, error()
 
 *       get all the callbacks for errors.
 
 */
 
typedef void (XMLCDECL *fatalErrorSAXFunc) (void *ctx,
 
				const char *msg, ...) LIBXML_ATTR_FORMAT(2,3);
 
/**
 
 * isStandaloneSAXFunc:
 
 * @ctx:  the user data (XML parser context)
 
 *
 
 * Is this document tagged standalone?
 
 *
 
 * Returns 1 if true
 
 */
 
typedef int (*isStandaloneSAXFunc) (void *ctx);
 
/**
 
 * hasInternalSubsetSAXFunc:
 
 * @ctx:  the user data (XML parser context)
 
 *
 
 * Does this document has an internal subset.
 
 *
 
 * Returns 1 if true
 
 */
 
typedef int (*hasInternalSubsetSAXFunc) (void *ctx);
 

	
 
/**
 
 * hasExternalSubsetSAXFunc:
 
 * @ctx:  the user data (XML parser context)
 
 *
 
 * Does this document has an external subset?
 
 *
 
 * Returns 1 if true
 
 */
 
typedef int (*hasExternalSubsetSAXFunc) (void *ctx);
 

	
 
/************************************************************************
 
 *									*
 
 *			The SAX version 2 API extensions		*
 
 *									*
 
 ************************************************************************/
 
/**
 
 * XML_SAX2_MAGIC:
 
 *
 
 * Special constant found in SAX2 blocks initialized fields
 
 */
 
#define XML_SAX2_MAGIC 0xDEEDBEAF
 

	
 
/**
 
 * startElementNsSAX2Func:
 
 * @ctx:  the user data (XML parser context)
 
 * @localname:  the local name of the element
 
 * @prefix:  the element namespace prefix if available
 
 * @URI:  the element namespace name if available
 
 * @nb_namespaces:  number of namespace definitions on that node
 
 * @namespaces:  pointer to the array of prefix/URI pairs namespace definitions
 
 * @nb_attributes:  the number of attributes on that node
 
 * @nb_defaulted:  the number of defaulted attributes. The defaulted
 
 *                  ones are at the end of the array
 
 * @attributes:  pointer to the array of (localname/prefix/URI/value/end)
 
 *               attribute values.
 
 *
 
 * SAX2 callback when an element start has been detected by the parser.
 
 * It provides the namespace informations for the element, as well as
 
 * the new namespace declarations on the element.
 
 */
 

	
 
typedef void (*startElementNsSAX2Func) (void *ctx,
 
					const xmlChar *localname,
 
					const xmlChar *prefix,
 
					const xmlChar *URI,
 
					int nb_namespaces,
 
					const xmlChar **namespaces,
 
					int nb_attributes,
 
					int nb_defaulted,
 
					const xmlChar **attributes);
 
 
 
/**
 
 * endElementNsSAX2Func:
 
 * @ctx:  the user data (XML parser context)
 
 * @localname:  the local name of the element
 
 * @prefix:  the element namespace prefix if available
 
 * @URI:  the element namespace name if available
 
 *
 
 * SAX2 callback when an element end has been detected by the parser.
 
 * It provides the namespace informations for the element.
 
 */
 

	
 
typedef void (*endElementNsSAX2Func)   (void *ctx,
 
					const xmlChar *localname,
 
					const xmlChar *prefix,
 
					const xmlChar *URI);
 

	
 

	
 
struct _xmlSAXHandler {
 
    internalSubsetSAXFunc internalSubset;
 
    isStandaloneSAXFunc isStandalone;
 
    hasInternalSubsetSAXFunc hasInternalSubset;
 
    hasExternalSubsetSAXFunc hasExternalSubset;
 
    resolveEntitySAXFunc resolveEntity;
 
    getEntitySAXFunc getEntity;
 
    entityDeclSAXFunc entityDecl;
 
    notationDeclSAXFunc notationDecl;
 
    attributeDeclSAXFunc attributeDecl;
 
    elementDeclSAXFunc elementDecl;
 
    unparsedEntityDeclSAXFunc unparsedEntityDecl;
 
    setDocumentLocatorSAXFunc setDocumentLocator;
 
    startDocumentSAXFunc startDocument;
 
    endDocumentSAXFunc endDocument;
 
    startElementSAXFunc startElement;
 
    endElementSAXFunc endElement;
 
    referenceSAXFunc reference;
 
    charactersSAXFunc characters;
 
    ignorableWhitespaceSAXFunc ignorableWhitespace;
 
    processingInstructionSAXFunc processingInstruction;
 
    commentSAXFunc comment;
 
    warningSAXFunc warning;
 
    errorSAXFunc error;
 
    fatalErrorSAXFunc fatalError; /* unused error() get all the errors */
 
    getParameterEntitySAXFunc getParameterEntity;
 
    cdataBlockSAXFunc cdataBlock;
 
    externalSubsetSAXFunc externalSubset;
 
    unsigned int initialized;
 
    /* The following fields are extensions available only on version 2 */
 
    void *_private;
 
    startElementNsSAX2Func startElementNs;
 
    endElementNsSAX2Func endElementNs;
 
    xmlStructuredErrorFunc serror;
 
};
 

	
 
/*
 
 * SAX Version 1
 
 */
 
typedef struct _xmlSAXHandlerV1 xmlSAXHandlerV1;
 
typedef xmlSAXHandlerV1 *xmlSAXHandlerV1Ptr;
 
struct _xmlSAXHandlerV1 {
 
    internalSubsetSAXFunc internalSubset;
 
    isStandaloneSAXFunc isStandalone;
 
    hasInternalSubsetSAXFunc hasInternalSubset;
 
    hasExternalSubsetSAXFunc hasExternalSubset;
 
    resolveEntitySAXFunc resolveEntity;
 
    getEntitySAXFunc getEntity;
 
    entityDeclSAXFunc entityDecl;
 
    notationDeclSAXFunc notationDecl;
 
    attributeDeclSAXFunc attributeDecl;
 
    elementDeclSAXFunc elementDecl;
 
    unparsedEntityDeclSAXFunc unparsedEntityDecl;
 
    setDocumentLocatorSAXFunc setDocumentLocator;
 
    startDocumentSAXFunc startDocument;
 
    endDocumentSAXFunc endDocument;
 
    startElementSAXFunc startElement;
 
    endElementSAXFunc endElement;
 
    referenceSAXFunc reference;
 
    charactersSAXFunc characters;
 
    ignorableWhitespaceSAXFunc ignorableWhitespace;
 
    processingInstructionSAXFunc processingInstruction;
 
    commentSAXFunc comment;
 
    warningSAXFunc warning;
 
    errorSAXFunc error;
 
    fatalErrorSAXFunc fatalError; /* unused error() get all the errors */
 
    getParameterEntitySAXFunc getParameterEntity;
 
    cdataBlockSAXFunc cdataBlock;
 
    externalSubsetSAXFunc externalSubset;
 
    unsigned int initialized;
 
};
 

	
 

	
 
/**
 
 * xmlExternalEntityLoader:
 
 * @URL: The System ID of the resource requested
 
 * @ID: The Public ID of the resource requested
 
 * @context: the XML parser context 
 
 *
 
 * External entity loaders types.
 
 *
 
 * Returns the entity input parser.
 
 */
 
typedef xmlParserInputPtr (*xmlExternalEntityLoader) (const char *URL,
 
					 const char *ID,
 
					 xmlParserCtxtPtr context);
 

	
 
#ifdef __cplusplus
 
}
 
#endif
 

	
 
#include <libxml/encoding.h>
 
#include <libxml/xmlIO.h>
 
#include <libxml/globals.h>
 

	
 
#ifdef __cplusplus
 
extern "C" {
 
#endif
 

	
 

	
 
/*
 
 * Init/Cleanup
 
 */
 
XMLPUBFUN void XMLCALL		
 
		xmlInitParser		(void);
 
XMLPUBFUN void XMLCALL		
 
		xmlCleanupParser	(void);
 

	
 
/*
 
 * Input functions
 
 */
 
XMLPUBFUN int XMLCALL		
 
		xmlParserInputRead	(xmlParserInputPtr in,
 
					 int len);
 
XMLPUBFUN int XMLCALL		
 
		xmlParserInputGrow	(xmlParserInputPtr in,
 
					 int len);
 

	
 
/*
 
 * Basic parsing Interfaces
 
 */
 
#ifdef LIBXML_SAX1_ENABLED
 
XMLPUBFUN xmlDocPtr XMLCALL	
 
		xmlParseDoc		(const xmlChar *cur);
 
XMLPUBFUN xmlDocPtr XMLCALL	
 
		xmlParseFile		(const char *filename);
 
XMLPUBFUN xmlDocPtr XMLCALL	
 
		xmlParseMemory		(const char *buffer,
 
					 int size);
 
#endif /* LIBXML_SAX1_ENABLED */
 
XMLPUBFUN int XMLCALL		
 
		xmlSubstituteEntitiesDefault(int val);
 
XMLPUBFUN int XMLCALL		
 
		xmlKeepBlanksDefault	(int val);
 
XMLPUBFUN void XMLCALL		
 
		xmlStopParser		(xmlParserCtxtPtr ctxt);
 
XMLPUBFUN int XMLCALL		
 
		xmlPedanticParserDefault(int val);
 
XMLPUBFUN int XMLCALL		
 
		xmlLineNumbersDefault	(int val);
 

	
 
#ifdef LIBXML_SAX1_ENABLED
 
/*
 
 * Recovery mode 
 
 */
 
XMLPUBFUN xmlDocPtr XMLCALL	
 
		xmlRecoverDoc		(const xmlChar *cur);
 
XMLPUBFUN xmlDocPtr XMLCALL	
 
		xmlRecoverMemory	(const char *buffer,
 
					 int size);
 
XMLPUBFUN xmlDocPtr XMLCALL	
 
		xmlRecoverFile		(const char *filename);
 
#endif /* LIBXML_SAX1_ENABLED */
 

	
 
/*
 
 * Less common routines and SAX interfaces
 
 */
 
XMLPUBFUN int XMLCALL		
 
		xmlParseDocument	(xmlParserCtxtPtr ctxt);
 
XMLPUBFUN int XMLCALL		
 
		xmlParseExtParsedEnt	(xmlParserCtxtPtr ctxt);
 
#ifdef LIBXML_SAX1_ENABLED
 
XMLPUBFUN int XMLCALL		
 
		xmlSAXUserParseFile	(xmlSAXHandlerPtr sax,
 
					 void *user_data,
 
					 const char *filename);
 
XMLPUBFUN int XMLCALL		
 
		xmlSAXUserParseMemory	(xmlSAXHandlerPtr sax,
 
					 void *user_data,
 
					 const char *buffer,
 
					 int size);
 
XMLPUBFUN xmlDocPtr XMLCALL	
 
		xmlSAXParseDoc		(xmlSAXHandlerPtr sax,
 
					 const xmlChar *cur,
 
					 int recovery);
 
XMLPUBFUN xmlDocPtr XMLCALL	
 
		xmlSAXParseMemory	(xmlSAXHandlerPtr sax,
 
					 const char *buffer,
 
                                   	 int size,
 
					 int recovery);
 
XMLPUBFUN xmlDocPtr XMLCALL	
 
		xmlSAXParseMemoryWithData (xmlSAXHandlerPtr sax,
 
					 const char *buffer,
 
                                   	 int size,
 
					 int recovery,
 
					 void *data);
 
XMLPUBFUN xmlDocPtr XMLCALL	
 
		xmlSAXParseFile		(xmlSAXHandlerPtr sax,
 
					 const char *filename,
 
					 int recovery);
 
XMLPUBFUN xmlDocPtr XMLCALL	
 
		xmlSAXParseFileWithData	(xmlSAXHandlerPtr sax,
 
					 const char *filename,
 
					 int recovery,
 
					 void *data);
 
XMLPUBFUN xmlDocPtr XMLCALL	
 
		xmlSAXParseEntity	(xmlSAXHandlerPtr sax,
 
					 const char *filename);
 
XMLPUBFUN xmlDocPtr XMLCALL	
 
		xmlParseEntity		(const char *filename);
 
#endif /* LIBXML_SAX1_ENABLED */
 

	
 
#ifdef LIBXML_VALID_ENABLED
 
XMLPUBFUN xmlDtdPtr XMLCALL	
 
		xmlSAXParseDTD		(xmlSAXHandlerPtr sax,
 
					 const xmlChar *ExternalID,
 
					 const xmlChar *SystemID);
 
XMLPUBFUN xmlDtdPtr XMLCALL	
 
		xmlParseDTD		(const xmlChar *ExternalID,
 
					 const xmlChar *SystemID);
 
XMLPUBFUN xmlDtdPtr XMLCALL	
 
		xmlIOParseDTD		(xmlSAXHandlerPtr sax,
 
					 xmlParserInputBufferPtr input,
 
					 xmlCharEncoding enc);
 
#endif /* LIBXML_VALID_ENABLE */
 
#ifdef LIBXML_SAX1_ENABLED
 
XMLPUBFUN int XMLCALL	
 
		xmlParseBalancedChunkMemory(xmlDocPtr doc,
 
					 xmlSAXHandlerPtr sax,
 
					 void *user_data,
 
					 int depth,
 
					 const xmlChar *string,
 
					 xmlNodePtr *lst);
 
#endif /* LIBXML_SAX1_ENABLED */
 
XMLPUBFUN xmlParserErrors XMLCALL
 
		xmlParseInNodeContext	(xmlNodePtr node,
 
					 const char *data,
 
					 int datalen,
 
					 int options,
 
					 xmlNodePtr *lst);
 
#ifdef LIBXML_SAX1_ENABLED
 
XMLPUBFUN int XMLCALL          
 
		xmlParseBalancedChunkMemoryRecover(xmlDocPtr doc,
 
                     xmlSAXHandlerPtr sax,
 
                     void *user_data,
 
                     int depth,
 
                     const xmlChar *string,
 
                     xmlNodePtr *lst,
 
                     int recover);
 
XMLPUBFUN int XMLCALL		
 
		xmlParseExternalEntity	(xmlDocPtr doc,
 
					 xmlSAXHandlerPtr sax,
 
					 void *user_data,
 
					 int depth,
 
					 const xmlChar *URL,
 
					 const xmlChar *ID,
 
					 xmlNodePtr *lst);
 
#endif /* LIBXML_SAX1_ENABLED */
 
XMLPUBFUN int XMLCALL		
 
		xmlParseCtxtExternalEntity(xmlParserCtxtPtr ctx,
 
					 const xmlChar *URL,
 
					 const xmlChar *ID,
 
					 xmlNodePtr *lst);
 

	
 
/*
 
 * Parser contexts handling.
 
 */
 
XMLPUBFUN xmlParserCtxtPtr XMLCALL	
 
		xmlNewParserCtxt	(void);
 
XMLPUBFUN int XMLCALL		
 
		xmlInitParserCtxt	(xmlParserCtxtPtr ctxt);
 
XMLPUBFUN void XMLCALL		
 
		xmlClearParserCtxt	(xmlParserCtxtPtr ctxt);
 
XMLPUBFUN void XMLCALL		
 
		xmlFreeParserCtxt	(xmlParserCtxtPtr ctxt);
 
#ifdef LIBXML_SAX1_ENABLED
 
XMLPUBFUN void XMLCALL		
 
		xmlSetupParserForBuffer	(xmlParserCtxtPtr ctxt,
 
					 const xmlChar* buffer,
 
					 const char *filename);
 
#endif /* LIBXML_SAX1_ENABLED */
 
XMLPUBFUN xmlParserCtxtPtr XMLCALL 
 
		xmlCreateDocParserCtxt	(const xmlChar *cur);
 

	
 
#ifdef LIBXML_LEGACY_ENABLED
 
/*
 
 * Reading/setting optional parsing features.
 
 */
 
XMLPUBFUN int XMLCALL		
 
		xmlGetFeaturesList	(int *len,
 
					 const char **result);
 
XMLPUBFUN int XMLCALL		
 
		xmlGetFeature		(xmlParserCtxtPtr ctxt,
 
					 const char *name,
 
					 void *result);
 
XMLPUBFUN int XMLCALL		
 
		xmlSetFeature		(xmlParserCtxtPtr ctxt,
 
					 const char *name,
 
					 void *value);
 
#endif /* LIBXML_LEGACY_ENABLED */
 

	
 
#ifdef LIBXML_PUSH_ENABLED
 
/*
 
 * Interfaces for the Push mode.
 
 */
 
XMLPUBFUN xmlParserCtxtPtr XMLCALL 
 
		xmlCreatePushParserCtxt(xmlSAXHandlerPtr sax,
 
					 void *user_data,
 
					 const char *chunk,
 
					 int size,
 
					 const char *filename);
 
XMLPUBFUN int XMLCALL		 
 
		xmlParseChunk		(xmlParserCtxtPtr ctxt,
 
					 const char *chunk,
 
					 int size,
 
					 int terminate);
 
#endif /* LIBXML_PUSH_ENABLED */
 

	
 
/*
 
 * Special I/O mode.
 
 */
 

	
 
XMLPUBFUN xmlParserCtxtPtr XMLCALL 
 
		xmlCreateIOParserCtxt	(xmlSAXHandlerPtr sax,
 
					 void *user_data,
 
					 xmlInputReadCallback   ioread,
 
					 xmlInputCloseCallback  ioclose,
 
					 void *ioctx,
 
					 xmlCharEncoding enc);
 

	
 
XMLPUBFUN xmlParserInputPtr XMLCALL 
 
		xmlNewIOInputStream	(xmlParserCtxtPtr ctxt,
 
					 xmlParserInputBufferPtr input,
 
					 xmlCharEncoding enc);
 

	
 
/*
 
 * Node infos.
 
 */
 
XMLPUBFUN const xmlParserNodeInfo* XMLCALL
 
		xmlParserFindNodeInfo	(const xmlParserCtxtPtr ctxt,
 
				         const xmlNodePtr node);
 
XMLPUBFUN void XMLCALL		
 
		xmlInitNodeInfoSeq	(xmlParserNodeInfoSeqPtr seq);
 
XMLPUBFUN void XMLCALL		
 
		xmlClearNodeInfoSeq	(xmlParserNodeInfoSeqPtr seq);
 
XMLPUBFUN unsigned long XMLCALL 
 
		xmlParserFindNodeInfoIndex(const xmlParserNodeInfoSeqPtr seq,
 
                                         const xmlNodePtr node);
 
XMLPUBFUN void XMLCALL		
 
		xmlParserAddNodeInfo	(xmlParserCtxtPtr ctxt,
 
					 const xmlParserNodeInfoPtr info);
 

	
 
/*
 
 * External entities handling actually implemented in xmlIO.
 
 */
 

	
 
XMLPUBFUN void XMLCALL		
 
		xmlSetExternalEntityLoader(xmlExternalEntityLoader f);
 
XMLPUBFUN xmlExternalEntityLoader XMLCALL
 
		xmlGetExternalEntityLoader(void);
 
XMLPUBFUN xmlParserInputPtr XMLCALL
 
		xmlLoadExternalEntity	(const char *URL,
 
					 const char *ID,
 
					 xmlParserCtxtPtr ctxt);
 

	
 
/*
 
 * Index lookup, actually implemented in the encoding module
 
 */
 
XMLPUBFUN long XMLCALL
 
		xmlByteConsumed		(xmlParserCtxtPtr ctxt);
 

	
 
/*
 
 * New set of simpler/more flexible APIs
 
 */
 
/**
 
 * xmlParserOption:
 
 *
 
 * This is the set of XML parser options that can be passed down
 
 * to the xmlReadDoc() and similar calls.
 
 */
 
typedef enum {
 
    XML_PARSE_RECOVER	= 1<<0,	/* recover on errors */
 
    XML_PARSE_NOENT	= 1<<1,	/* substitute entities */
 
    XML_PARSE_DTDLOAD	= 1<<2,	/* load the external subset */
 
    XML_PARSE_DTDATTR	= 1<<3,	/* default DTD attributes */
 
    XML_PARSE_DTDVALID	= 1<<4,	/* validate with the DTD */
 
    XML_PARSE_NOERROR	= 1<<5,	/* suppress error reports */
 
    XML_PARSE_NOWARNING	= 1<<6,	/* suppress warning reports */
 
    XML_PARSE_PEDANTIC	= 1<<7,	/* pedantic error reporting */
 
    XML_PARSE_NOBLANKS	= 1<<8,	/* remove blank nodes */
 
    XML_PARSE_SAX1	= 1<<9,	/* use the SAX1 interface internally */
 
    XML_PARSE_XINCLUDE	= 1<<10,/* Implement XInclude substitition  */
 
    XML_PARSE_NONET	= 1<<11,/* Forbid network access */
 
    XML_PARSE_NODICT	= 1<<12,/* Do not reuse the context dictionnary */
 
    XML_PARSE_NSCLEAN	= 1<<13,/* remove redundant namespaces declarations */
 
    XML_PARSE_NOCDATA	= 1<<14,/* merge CDATA as text nodes */
 
    XML_PARSE_NOXINCNODE= 1<<15,/* do not generate XINCLUDE START/END nodes */
 
    XML_PARSE_COMPACT   = 1<<16,/* compact small text nodes; no modification of
 
                                   the tree allowed afterwards (will possibly
 
				   crash if you try to modify the tree) */
 
    XML_PARSE_OLD10	= 1<<17,/* parse using XML-1.0 before update 5 */
 
    XML_PARSE_NOBASEFIX = 1<<18,/* do not fixup XINCLUDE xml:base uris */
 
    XML_PARSE_HUGE      = 1<<19, /* relax any hardcoded limit from the parser */
 
    XML_PARSE_OLDSAX    = 1<<20 /* parse using SAX2 interface from before 2.7.0 */
 
} xmlParserOption;
 

	
 
XMLPUBFUN void XMLCALL
 
		xmlCtxtReset		(xmlParserCtxtPtr ctxt);
 
XMLPUBFUN int XMLCALL
 
		xmlCtxtResetPush	(xmlParserCtxtPtr ctxt,
 
					 const char *chunk,
 
					 int size,
 
					 const char *filename,
 
					 const char *encoding);
 
XMLPUBFUN int XMLCALL
 
		xmlCtxtUseOptions	(xmlParserCtxtPtr ctxt,
 
					 int options);
 
XMLPUBFUN xmlDocPtr XMLCALL
 
		xmlReadDoc		(const xmlChar *cur,
 
					 const char *URL,
 
					 const char *encoding,
 
					 int options);
 
XMLPUBFUN xmlDocPtr XMLCALL
 
		xmlReadFile		(const char *URL,
 
					 const char *encoding,
 
					 int options);
 
XMLPUBFUN xmlDocPtr XMLCALL
 
		xmlReadMemory		(const char *buffer,
 
					 int size,
 
					 const char *URL,
 
					 const char *encoding,
 
					 int options);
 
XMLPUBFUN xmlDocPtr XMLCALL
 
		xmlReadFd		(int fd,
 
					 const char *URL,
 
					 const char *encoding,
 
					 int options);
 
XMLPUBFUN xmlDocPtr XMLCALL
 
		xmlReadIO		(xmlInputReadCallback ioread,
 
					 xmlInputCloseCallback ioclose,
 
					 void *ioctx,
 
					 const char *URL,
 
					 const char *encoding,
 
					 int options);
 
XMLPUBFUN xmlDocPtr XMLCALL
 
		xmlCtxtReadDoc		(xmlParserCtxtPtr ctxt,
 
					 const xmlChar *cur,
 
					 const char *URL,
 
					 const char *encoding,
 
					 int options);
 
XMLPUBFUN xmlDocPtr XMLCALL
 
		xmlCtxtReadFile		(xmlParserCtxtPtr ctxt,
 
					 const char *filename,
 
					 const char *encoding,
 
					 int options);
 
XMLPUBFUN xmlDocPtr XMLCALL
 
		xmlCtxtReadMemory		(xmlParserCtxtPtr ctxt,
 
					 const char *buffer,
 
					 int size,
 
					 const char *URL,
 
					 const char *encoding,
 
					 int options);
 
XMLPUBFUN xmlDocPtr XMLCALL
 
		xmlCtxtReadFd		(xmlParserCtxtPtr ctxt,
 
					 int fd,
 
					 const char *URL,
 
					 const char *encoding,
 
					 int options);
 
XMLPUBFUN xmlDocPtr XMLCALL
 
		xmlCtxtReadIO		(xmlParserCtxtPtr ctxt,
 
					 xmlInputReadCallback ioread,
 
					 xmlInputCloseCallback ioclose,
 
					 void *ioctx,
 
					 const char *URL,
 
					 const char *encoding,
 
					 int options);
 

	
 
/*
 
 * Library wide options
 
 */
 
/**
 
 * xmlFeature:
 
 *
 
 * Used to examine the existance of features that can be enabled
 
 * or disabled at compile-time.
 
 * They used to be called XML_FEATURE_xxx but this clashed with Expat
 
 */
 
typedef enum {
 
    XML_WITH_THREAD = 1,
 
    XML_WITH_TREE = 2,
 
    XML_WITH_OUTPUT = 3,
 
    XML_WITH_PUSH = 4,
 
    XML_WITH_READER = 5,
 
    XML_WITH_PATTERN = 6,
 
    XML_WITH_WRITER = 7,
 
    XML_WITH_SAX1 = 8,
 
    XML_WITH_FTP = 9,
 
    XML_WITH_HTTP = 10,
 
    XML_WITH_VALID = 11,
 
    XML_WITH_HTML = 12,
 
    XML_WITH_LEGACY = 13,
 
    XML_WITH_C14N = 14,
 
    XML_WITH_CATALOG = 15,
 
    XML_WITH_XPATH = 16,
 
    XML_WITH_XPTR = 17,
 
    XML_WITH_XINCLUDE = 18,
 
    XML_WITH_ICONV = 19,
 
    XML_WITH_ISO8859X = 20,
 
    XML_WITH_UNICODE = 21,
 
    XML_WITH_REGEXP = 22,
 
    XML_WITH_AUTOMATA = 23,
 
    XML_WITH_EXPR = 24,
 
    XML_WITH_SCHEMAS = 25,
 
    XML_WITH_SCHEMATRON = 26,
 
    XML_WITH_MODULES = 27,
 
    XML_WITH_DEBUG = 28,
 
    XML_WITH_DEBUG_MEM = 29,
 
    XML_WITH_DEBUG_RUN = 30,
 
    XML_WITH_ZLIB = 31,
 
    XML_WITH_NONE = 99999 /* just to be sure of allocation size */
 
} xmlFeature;
 

	
 
XMLPUBFUN int XMLCALL
 
		xmlHasFeature		(xmlFeature feature);
 

	
 
#ifdef __cplusplus
 
}
 
#endif
 
#endif /* __XML_PARSER_H__ */
 

	
lib/libxml2/include/libxml/parserInternals.h
Show inline comments
 
new file 100755
 
/*
 
 * Summary: internals routines exported by the parser.
 
 * Description: this module exports a number of internal parsing routines
 
 *              they are not really all intended for applications but
 
 *              can prove useful doing low level processing.
 
 *
 
 * Copy: See Copyright for the status of this software.
 
 *
 
 * Author: Daniel Veillard
 
 */
 

	
 
#ifndef __XML_PARSER_INTERNALS_H__
 
#define __XML_PARSER_INTERNALS_H__
 

	
 
#include <libxml/xmlversion.h>
 
#include <libxml/parser.h>
 
#include <libxml/HTMLparser.h>
 
#include <libxml/chvalid.h>
 

	
 
#ifdef __cplusplus
 
extern "C" {
 
#endif
 

	
 
/**
 
 * xmlParserMaxDepth:
 
 *
 
 * arbitrary depth limit for the XML documents that we allow to
 
 * process. This is not a limitation of the parser but a safety
 
 * boundary feature, use XML_PARSE_HUGE option to override it.
 
 */
 
XMLPUBVAR unsigned int xmlParserMaxDepth;
 

	
 
/**
 
 * XML_MAX_TEXT_LENGTH:
 
 *
 
 * Maximum size allowed for a single text node when building a tree.
 
 * This is not a limitation of the parser but a safety boundary feature,
 
 * use XML_PARSE_HUGE option to override it.
 
 */
 
#define XML_MAX_TEXT_LENGTH 10000000
 

	
 
/**
 
 * XML_MAX_NAMELEN:
 
 *
 
 * Identifiers can be longer, but this will be more costly
 
 * at runtime.
 
 */
 
#define XML_MAX_NAMELEN 100
 

	
 
/**
 
 * INPUT_CHUNK:
 
 *
 
 * The parser tries to always have that amount of input ready.
 
 * One of the point is providing context when reporting errors.
 
 */
 
#define INPUT_CHUNK	250
 

	
 
/************************************************************************
 
 *									*
 
 * UNICODE version of the macros.      					*
 
 *									*
 
 ************************************************************************/
 
/**
 
 * IS_BYTE_CHAR:
 
 * @c:  an byte value (int)
 
 *
 
 * Macro to check the following production in the XML spec:
 
 *
 
 * [2] Char ::= #x9 | #xA | #xD | [#x20...]
 
 * any byte character in the accepted range
 
 */
 
#define IS_BYTE_CHAR(c)	 xmlIsChar_ch(c)
 

	
 
/**
 
 * IS_CHAR:
 
 * @c:  an UNICODE value (int)
 
 *
 
 * Macro to check the following production in the XML spec:
 
 *
 
 * [2] Char ::= #x9 | #xA | #xD | [#x20-#xD7FF] | [#xE000-#xFFFD]
 
 *                  | [#x10000-#x10FFFF]
 
 * any Unicode character, excluding the surrogate blocks, FFFE, and FFFF.
 
 */
 
#define IS_CHAR(c)   xmlIsCharQ(c)
 

	
 
/**
 
 * IS_CHAR_CH:
 
 * @c: an xmlChar (usually an unsigned char)
 
 *
 
 * Behaves like IS_CHAR on single-byte value
 
 */
 
#define IS_CHAR_CH(c)  xmlIsChar_ch(c)
 

	
 
/**
 
 * IS_BLANK:
 
 * @c:  an UNICODE value (int)
 
 *
 
 * Macro to check the following production in the XML spec:
 
 *
 
 * [3] S ::= (#x20 | #x9 | #xD | #xA)+
 
 */
 
#define IS_BLANK(c)  xmlIsBlankQ(c)
 

	
 
/**
 
 * IS_BLANK_CH:
 
 * @c:  an xmlChar value (normally unsigned char)
 
 *
 
 * Behaviour same as IS_BLANK
 
 */
 
#define IS_BLANK_CH(c)  xmlIsBlank_ch(c)
 

	
 
/**
 
 * IS_BASECHAR:
 
 * @c:  an UNICODE value (int)
 
 *
 
 * Macro to check the following production in the XML spec:
 
 *
 
 * [85] BaseChar ::= ... long list see REC ...
 
 */
 
#define IS_BASECHAR(c) xmlIsBaseCharQ(c)
 

	
 
/**
 
 * IS_DIGIT:
 
 * @c:  an UNICODE value (int)
 
 *
 
 * Macro to check the following production in the XML spec:
 
 *
 
 * [88] Digit ::= ... long list see REC ...
 
 */
 
#define IS_DIGIT(c) xmlIsDigitQ(c)
 

	
 
/**
 
 * IS_DIGIT_CH:
 
 * @c:  an xmlChar value (usually an unsigned char)
 
 *
 
 * Behaves like IS_DIGIT but with a single byte argument
 
 */
 
#define IS_DIGIT_CH(c)  xmlIsDigit_ch(c)
 

	
 
/**
 
 * IS_COMBINING:
 
 * @c:  an UNICODE value (int)
 
 *
 
 * Macro to check the following production in the XML spec:
 
 *
 
 * [87] CombiningChar ::= ... long list see REC ...
 
 */
 
#define IS_COMBINING(c) xmlIsCombiningQ(c)
 

	
 
/**
 
 * IS_COMBINING_CH:
 
 * @c:  an xmlChar (usually an unsigned char)
 
 *
 
 * Always false (all combining chars > 0xff)
 
 */
 
#define IS_COMBINING_CH(c) 0 
 

	
 
/**
 
 * IS_EXTENDER:
 
 * @c:  an UNICODE value (int)
 
 *
 
 * Macro to check the following production in the XML spec:
 
 *
 
 *
 
 * [89] Extender ::= #x00B7 | #x02D0 | #x02D1 | #x0387 | #x0640 |
 
 *                   #x0E46 | #x0EC6 | #x3005 | [#x3031-#x3035] |
 
 *                   [#x309D-#x309E] | [#x30FC-#x30FE]
 
 */
 
#define IS_EXTENDER(c) xmlIsExtenderQ(c)
 

	
 
/**
 
 * IS_EXTENDER_CH:
 
 * @c:  an xmlChar value (usually an unsigned char)
 
 *
 
 * Behaves like IS_EXTENDER but with a single-byte argument
 
 */
 
#define IS_EXTENDER_CH(c)  xmlIsExtender_ch(c)
 

	
 
/**
 
 * IS_IDEOGRAPHIC:
 
 * @c:  an UNICODE value (int)
 
 *
 
 * Macro to check the following production in the XML spec:
 
 *
 
 *
 
 * [86] Ideographic ::= [#x4E00-#x9FA5] | #x3007 | [#x3021-#x3029]
 
 */
 
#define IS_IDEOGRAPHIC(c) xmlIsIdeographicQ(c)
 

	
 
/**
 
 * IS_LETTER:
 
 * @c:  an UNICODE value (int)
 
 *
 
 * Macro to check the following production in the XML spec:
 
 *
 
 *
 
 * [84] Letter ::= BaseChar | Ideographic 
 
 */
 
#define IS_LETTER(c) (IS_BASECHAR(c) || IS_IDEOGRAPHIC(c))
 

	
 
/**
 
 * IS_LETTER_CH:
 
 * @c:  an xmlChar value (normally unsigned char)
 
 *
 
 * Macro behaves like IS_LETTER, but only check base chars
 
 *
 
 */
 
#define IS_LETTER_CH(c) xmlIsBaseChar_ch(c)
 

	
 
/**
 
 * IS_ASCII_LETTER:
 
 * @c: an xmlChar value
 
 *
 
 * Macro to check [a-zA-Z]
 
 *
 
 */
 
#define IS_ASCII_LETTER(c)	(((0x41 <= (c)) && ((c) <= 0x5a)) || \
 
				 ((0x61 <= (c)) && ((c) <= 0x7a)))
 

	
 
/**
 
 * IS_ASCII_DIGIT:
 
 * @c: an xmlChar value
 
 *
 
 * Macro to check [0-9]
 
 *
 
 */
 
#define IS_ASCII_DIGIT(c)	((0x30 <= (c)) && ((c) <= 0x39))
 

	
 
/**
 
 * IS_PUBIDCHAR:
 
 * @c:  an UNICODE value (int)
 
 *
 
 * Macro to check the following production in the XML spec:
 
 *
 
 *
 
 * [13] PubidChar ::= #x20 | #xD | #xA | [a-zA-Z0-9] | [-'()+,./:=?;!*#@$_%]
 
 */
 
#define IS_PUBIDCHAR(c)	xmlIsPubidCharQ(c)
 

	
 
/**
 
 * IS_PUBIDCHAR_CH:
 
 * @c:  an xmlChar value (normally unsigned char)
 
 *
 
 * Same as IS_PUBIDCHAR but for single-byte value
 
 */
 
#define IS_PUBIDCHAR_CH(c) xmlIsPubidChar_ch(c)
 

	
 
/**
 
 * SKIP_EOL:
 
 * @p:  and UTF8 string pointer
 
 *
 
 * Skips the end of line chars.
 
 */
 
#define SKIP_EOL(p) 							\
 
    if (*(p) == 0x13) { p++ ; if (*(p) == 0x10) p++; }			\
 
    if (*(p) == 0x10) { p++ ; if (*(p) == 0x13) p++; }
 

	
 
/**
 
 * MOVETO_ENDTAG:
 
 * @p:  and UTF8 string pointer
 
 *
 
 * Skips to the next '>' char.
 
 */
 
#define MOVETO_ENDTAG(p)						\
 
    while ((*p) && (*(p) != '>')) (p)++
 

	
 
/**
 
 * MOVETO_STARTTAG:
 
 * @p:  and UTF8 string pointer
 
 *
 
 * Skips to the next '<' char.
 
 */
 
#define MOVETO_STARTTAG(p)						\
 
    while ((*p) && (*(p) != '<')) (p)++
 

	
 
/**
 
 * Global variables used for predefined strings.
 
 */
 
XMLPUBVAR const xmlChar xmlStringText[];
 
XMLPUBVAR const xmlChar xmlStringTextNoenc[];
 
XMLPUBVAR const xmlChar xmlStringComment[];
 

	
 
/*
 
 * Function to finish the work of the macros where needed.
 
 */
 
XMLPUBFUN int XMLCALL                   xmlIsLetter     (int c);
 

	
 
/**
 
 * Parser context.
 
 */
 
XMLPUBFUN xmlParserCtxtPtr XMLCALL	
 
			xmlCreateFileParserCtxt	(const char *filename);
 
XMLPUBFUN xmlParserCtxtPtr XMLCALL	
 
			xmlCreateURLParserCtxt	(const char *filename,
 
						 int options);
 
XMLPUBFUN xmlParserCtxtPtr XMLCALL	
 
			xmlCreateMemoryParserCtxt(const char *buffer,
 
						 int size);
 
XMLPUBFUN xmlParserCtxtPtr XMLCALL	
 
			xmlCreateEntityParserCtxt(const xmlChar *URL,
 
						 const xmlChar *ID,
 
						 const xmlChar *base);
 
XMLPUBFUN int XMLCALL			
 
			xmlSwitchEncoding	(xmlParserCtxtPtr ctxt,
 
						 xmlCharEncoding enc);
 
XMLPUBFUN int XMLCALL			
 
			xmlSwitchToEncoding	(xmlParserCtxtPtr ctxt,
 
					 xmlCharEncodingHandlerPtr handler);
 
XMLPUBFUN int XMLCALL			
 
			xmlSwitchInputEncoding	(xmlParserCtxtPtr ctxt,
 
						 xmlParserInputPtr input,
 
					 xmlCharEncodingHandlerPtr handler);
 

	
 
#ifdef IN_LIBXML
 
/* internal error reporting */
 
XMLPUBFUN void XMLCALL
 
			__xmlErrEncoding	(xmlParserCtxtPtr ctxt,
 
						 xmlParserErrors xmlerr,
 
						 const char *msg,
 
						 const xmlChar * str1,
 
						 const xmlChar * str2);
 
#endif
 

	
 
/**
 
 * Input Streams.
 
 */
 
XMLPUBFUN xmlParserInputPtr XMLCALL	
 
			xmlNewStringInputStream	(xmlParserCtxtPtr ctxt,
 
						 const xmlChar *buffer);
 
XMLPUBFUN xmlParserInputPtr XMLCALL	
 
			xmlNewEntityInputStream	(xmlParserCtxtPtr ctxt,
 
						 xmlEntityPtr entity);
 
XMLPUBFUN int XMLCALL			
 
			xmlPushInput		(xmlParserCtxtPtr ctxt,
 
						 xmlParserInputPtr input);
 
XMLPUBFUN xmlChar XMLCALL			
 
			xmlPopInput		(xmlParserCtxtPtr ctxt);
 
XMLPUBFUN void XMLCALL			
 
			xmlFreeInputStream	(xmlParserInputPtr input);
 
XMLPUBFUN xmlParserInputPtr XMLCALL	
 
			xmlNewInputFromFile	(xmlParserCtxtPtr ctxt,
 
						 const char *filename);
 
XMLPUBFUN xmlParserInputPtr XMLCALL	
 
			xmlNewInputStream	(xmlParserCtxtPtr ctxt);
 

	
 
/**
 
 * Namespaces.
 
 */
 
XMLPUBFUN xmlChar * XMLCALL		
 
			xmlSplitQName		(xmlParserCtxtPtr ctxt,
 
						 const xmlChar *name,
 
						 xmlChar **prefix);
 

	
 
/**
 
 * Generic production rules.
 
 */
 
XMLPUBFUN const xmlChar * XMLCALL		
 
			xmlParseName		(xmlParserCtxtPtr ctxt);
 
XMLPUBFUN xmlChar * XMLCALL		
 
			xmlParseNmtoken		(xmlParserCtxtPtr ctxt);
 
XMLPUBFUN xmlChar * XMLCALL		
 
			xmlParseEntityValue	(xmlParserCtxtPtr ctxt,
 
						 xmlChar **orig);
 
XMLPUBFUN xmlChar * XMLCALL		
 
			xmlParseAttValue	(xmlParserCtxtPtr ctxt);
 
XMLPUBFUN xmlChar * XMLCALL		
 
			xmlParseSystemLiteral	(xmlParserCtxtPtr ctxt);
 
XMLPUBFUN xmlChar * XMLCALL		
 
			xmlParsePubidLiteral	(xmlParserCtxtPtr ctxt);
 
XMLPUBFUN void XMLCALL			
 
			xmlParseCharData	(xmlParserCtxtPtr ctxt,
 
						 int cdata);
 
XMLPUBFUN xmlChar * XMLCALL		
 
			xmlParseExternalID	(xmlParserCtxtPtr ctxt,
 
						 xmlChar **publicID,
 
						 int strict);
 
XMLPUBFUN void XMLCALL			
 
			xmlParseComment		(xmlParserCtxtPtr ctxt);
 
XMLPUBFUN const xmlChar * XMLCALL		
 
			xmlParsePITarget	(xmlParserCtxtPtr ctxt);
 
XMLPUBFUN void XMLCALL			
 
			xmlParsePI		(xmlParserCtxtPtr ctxt);
 
XMLPUBFUN void XMLCALL			
 
			xmlParseNotationDecl	(xmlParserCtxtPtr ctxt);
 
XMLPUBFUN void XMLCALL			
 
			xmlParseEntityDecl	(xmlParserCtxtPtr ctxt);
 
XMLPUBFUN int XMLCALL			
 
			xmlParseDefaultDecl	(xmlParserCtxtPtr ctxt,
 
						 xmlChar **value);
 
XMLPUBFUN xmlEnumerationPtr XMLCALL	
 
			xmlParseNotationType	(xmlParserCtxtPtr ctxt);
 
XMLPUBFUN xmlEnumerationPtr XMLCALL	
 
			xmlParseEnumerationType	(xmlParserCtxtPtr ctxt);
 
XMLPUBFUN int XMLCALL			
 
			xmlParseEnumeratedType	(xmlParserCtxtPtr ctxt,
 
						 xmlEnumerationPtr *tree);
 
XMLPUBFUN int XMLCALL			
 
			xmlParseAttributeType	(xmlParserCtxtPtr ctxt,
 
						 xmlEnumerationPtr *tree);
 
XMLPUBFUN void XMLCALL			
 
			xmlParseAttributeListDecl(xmlParserCtxtPtr ctxt);
 
XMLPUBFUN xmlElementContentPtr XMLCALL	
 
			xmlParseElementMixedContentDecl
 
						(xmlParserCtxtPtr ctxt,
 
						 int inputchk);
 
XMLPUBFUN xmlElementContentPtr XMLCALL	
 
			xmlParseElementChildrenContentDecl
 
						(xmlParserCtxtPtr ctxt,
 
						 int inputchk);
 
XMLPUBFUN int XMLCALL			
 
			xmlParseElementContentDecl(xmlParserCtxtPtr ctxt,
 
						 const xmlChar *name,
 
						 xmlElementContentPtr *result);
 
XMLPUBFUN int XMLCALL			
 
			xmlParseElementDecl	(xmlParserCtxtPtr ctxt);
 
XMLPUBFUN void XMLCALL			
 
			xmlParseMarkupDecl	(xmlParserCtxtPtr ctxt);
 
XMLPUBFUN int XMLCALL			
 
			xmlParseCharRef		(xmlParserCtxtPtr ctxt);
 
XMLPUBFUN xmlEntityPtr XMLCALL		
 
			xmlParseEntityRef	(xmlParserCtxtPtr ctxt);
 
XMLPUBFUN void XMLCALL			
 
			xmlParseReference	(xmlParserCtxtPtr ctxt);
 
XMLPUBFUN void XMLCALL			
 
			xmlParsePEReference	(xmlParserCtxtPtr ctxt);
 
XMLPUBFUN void XMLCALL			
 
			xmlParseDocTypeDecl	(xmlParserCtxtPtr ctxt);
 
#ifdef LIBXML_SAX1_ENABLED
 
XMLPUBFUN const xmlChar * XMLCALL		
 
			xmlParseAttribute	(xmlParserCtxtPtr ctxt,
 
						 xmlChar **value);
 
XMLPUBFUN const xmlChar * XMLCALL		
 
			xmlParseStartTag	(xmlParserCtxtPtr ctxt);
 
XMLPUBFUN void XMLCALL			
 
			xmlParseEndTag		(xmlParserCtxtPtr ctxt);
 
#endif /* LIBXML_SAX1_ENABLED */
 
XMLPUBFUN void XMLCALL			
 
			xmlParseCDSect		(xmlParserCtxtPtr ctxt);
 
XMLPUBFUN void XMLCALL			
 
			xmlParseContent		(xmlParserCtxtPtr ctxt);
 
XMLPUBFUN void XMLCALL			
 
			xmlParseElement		(xmlParserCtxtPtr ctxt);
 
XMLPUBFUN xmlChar * XMLCALL		
 
			xmlParseVersionNum	(xmlParserCtxtPtr ctxt);
 
XMLPUBFUN xmlChar * XMLCALL		
 
			xmlParseVersionInfo	(xmlParserCtxtPtr ctxt);
 
XMLPUBFUN xmlChar * XMLCALL		
 
			xmlParseEncName		(xmlParserCtxtPtr ctxt);
 
XMLPUBFUN const xmlChar * XMLCALL		
 
			xmlParseEncodingDecl	(xmlParserCtxtPtr ctxt);
 
XMLPUBFUN int XMLCALL			
 
			xmlParseSDDecl		(xmlParserCtxtPtr ctxt);
 
XMLPUBFUN void XMLCALL			
 
			xmlParseXMLDecl		(xmlParserCtxtPtr ctxt);
 
XMLPUBFUN void XMLCALL			
 
			xmlParseTextDecl	(xmlParserCtxtPtr ctxt);
 
XMLPUBFUN void XMLCALL			
 
			xmlParseMisc		(xmlParserCtxtPtr ctxt);
 
XMLPUBFUN void XMLCALL			
 
			xmlParseExternalSubset	(xmlParserCtxtPtr ctxt,
 
						 const xmlChar *ExternalID,
 
						 const xmlChar *SystemID); 
 
/**
 
 * XML_SUBSTITUTE_NONE:
 
 *
 
 * If no entities need to be substituted.
 
 */
 
#define XML_SUBSTITUTE_NONE	0
 
/**
 
 * XML_SUBSTITUTE_REF:
 
 *
 
 * Whether general entities need to be substituted.
 
 */
 
#define XML_SUBSTITUTE_REF	1
 
/**
 
 * XML_SUBSTITUTE_PEREF:
 
 *
 
 * Whether parameter entities need to be substituted.
 
 */
 
#define XML_SUBSTITUTE_PEREF	2
 
/**
 
 * XML_SUBSTITUTE_BOTH:
 
 *
 
 * Both general and parameter entities need to be substituted.
 
 */
 
#define XML_SUBSTITUTE_BOTH 	3
 

	
 
XMLPUBFUN xmlChar * XMLCALL
 
		xmlStringDecodeEntities		(xmlParserCtxtPtr ctxt,
 
						 const xmlChar *str,
 
						 int what,
 
						 xmlChar end,
 
						 xmlChar  end2,
 
						 xmlChar end3);
 
XMLPUBFUN xmlChar * XMLCALL
 
		xmlStringLenDecodeEntities	(xmlParserCtxtPtr ctxt,
 
						 const xmlChar *str,
 
						 int len,
 
						 int what,
 
						 xmlChar end,
 
						 xmlChar  end2,
 
						 xmlChar end3);
 

	
 
/*
 
 * Generated by MACROS on top of parser.c c.f. PUSH_AND_POP.
 
 */
 
XMLPUBFUN int XMLCALL			nodePush		(xmlParserCtxtPtr ctxt,
 
						 xmlNodePtr value);
 
XMLPUBFUN xmlNodePtr XMLCALL		nodePop			(xmlParserCtxtPtr ctxt);
 
XMLPUBFUN int XMLCALL			inputPush		(xmlParserCtxtPtr ctxt,
 
						 xmlParserInputPtr value);
 
XMLPUBFUN xmlParserInputPtr XMLCALL	inputPop		(xmlParserCtxtPtr ctxt);
 
XMLPUBFUN const xmlChar * XMLCALL	namePop			(xmlParserCtxtPtr ctxt);
 
XMLPUBFUN int XMLCALL			namePush		(xmlParserCtxtPtr ctxt,
 
						 const xmlChar *value);
 

	
 
/*
 
 * other commodities shared between parser.c and parserInternals.
 
 */
 
XMLPUBFUN int XMLCALL			xmlSkipBlankChars	(xmlParserCtxtPtr ctxt);
 
XMLPUBFUN int XMLCALL			xmlStringCurrentChar	(xmlParserCtxtPtr ctxt,
 
						 const xmlChar *cur,
 
						 int *len);
 
XMLPUBFUN void XMLCALL			xmlParserHandlePEReference(xmlParserCtxtPtr ctxt);
 
XMLPUBFUN int XMLCALL			xmlCheckLanguageID	(const xmlChar *lang);
 

	
 
/*
 
 * Really core function shared with HTML parser.
 
 */
 
XMLPUBFUN int XMLCALL			xmlCurrentChar		(xmlParserCtxtPtr ctxt,
 
						 int *len);
 
XMLPUBFUN int XMLCALL		xmlCopyCharMultiByte	(xmlChar *out,
 
						 int val);
 
XMLPUBFUN int XMLCALL			xmlCopyChar		(int len,
 
						 xmlChar *out,
 
						 int val);
 
XMLPUBFUN void XMLCALL			xmlNextChar		(xmlParserCtxtPtr ctxt);
 
XMLPUBFUN void XMLCALL			xmlParserInputShrink	(xmlParserInputPtr in);
 

	
 
#ifdef LIBXML_HTML_ENABLED
 
/*
 
 * Actually comes from the HTML parser but launched from the init stuff.
 
 */
 
XMLPUBFUN void XMLCALL			htmlInitAutoClose	(void);
 
XMLPUBFUN htmlParserCtxtPtr XMLCALL	htmlCreateFileParserCtxt(const char *filename,
 
	                                         const char *encoding);
 
#endif
 

	
 
/*
 
 * Specific function to keep track of entities references
 
 * and used by the XSLT debugger.
 
 */
 
#ifdef LIBXML_LEGACY_ENABLED
 
/**
 
 * xmlEntityReferenceFunc:
 
 * @ent: the entity
 
 * @firstNode:  the fist node in the chunk
 
 * @lastNode:  the last nod in the chunk
 
 *
 
 * Callback function used when one needs to be able to track back the
 
 * provenance of a chunk of nodes inherited from an entity replacement.
 
 */
 
typedef	void	(*xmlEntityReferenceFunc)	(xmlEntityPtr ent,
 
						 xmlNodePtr firstNode,
 
						 xmlNodePtr lastNode);
 
  
 
XMLPUBFUN void XMLCALL		xmlSetEntityReferenceFunc	(xmlEntityReferenceFunc func);
 

	
 
XMLPUBFUN xmlChar * XMLCALL		
 
			xmlParseQuotedString	(xmlParserCtxtPtr ctxt);
 
XMLPUBFUN void XMLCALL
 
                        xmlParseNamespace       (xmlParserCtxtPtr ctxt);
 
XMLPUBFUN xmlChar * XMLCALL		
 
			xmlNamespaceParseNSDef	(xmlParserCtxtPtr ctxt);
 
XMLPUBFUN xmlChar * XMLCALL		
 
			xmlScanName		(xmlParserCtxtPtr ctxt);
 
XMLPUBFUN xmlChar * XMLCALL		
 
			xmlNamespaceParseNCName	(xmlParserCtxtPtr ctxt);
 
XMLPUBFUN void XMLCALL	xmlParserHandleReference(xmlParserCtxtPtr ctxt);
 
XMLPUBFUN xmlChar * XMLCALL		
 
			xmlNamespaceParseQName	(xmlParserCtxtPtr ctxt,
 
						 xmlChar **prefix);
 
/**
 
 * Entities
 
 */
 
XMLPUBFUN xmlChar * XMLCALL
 
		xmlDecodeEntities		(xmlParserCtxtPtr ctxt,
 
						 int len,
 
						 int what,
 
						 xmlChar end,
 
						 xmlChar  end2,
 
						 xmlChar end3);
 
XMLPUBFUN void XMLCALL			
 
			xmlHandleEntity		(xmlParserCtxtPtr ctxt,
 
						 xmlEntityPtr entity);
 

	
 
#endif /* LIBXML_LEGACY_ENABLED */
 

	
 
#ifdef IN_LIBXML
 
/*
 
 * internal only
 
 */
 
XMLPUBFUN void XMLCALL
 
	xmlErrMemory		(xmlParserCtxtPtr ctxt,
 
				 const char *extra);
 
#endif
 

	
 
#ifdef __cplusplus
 
}
 
#endif
 
#endif /* __XML_PARSER_INTERNALS_H__ */
lib/libxml2/include/libxml/pattern.h
Show inline comments
 
new file 100755
 
/*
 
 * Summary: pattern expression handling
 
 * Description: allows to compile and test pattern expressions for nodes
 
 *              either in a tree or based on a parser state.
 
 *
 
 * Copy: See Copyright for the status of this software.
 
 *
 
 * Author: Daniel Veillard
 
 */
 

	
 
#ifndef __XML_PATTERN_H__
 
#define __XML_PATTERN_H__
 

	
 
#include <libxml/xmlversion.h>
 
#include <libxml/tree.h>
 
#include <libxml/dict.h>
 

	
 
#ifdef LIBXML_PATTERN_ENABLED
 

	
 
#ifdef __cplusplus
 
extern "C" {
 
#endif
 

	
 
/**
 
 * xmlPattern:
 
 *
 
 * A compiled (XPath based) pattern to select nodes
 
 */
 
typedef struct _xmlPattern xmlPattern;
 
typedef xmlPattern *xmlPatternPtr;
 

	
 
/**
 
 * xmlPatternFlags:
 
 *
 
 * This is the set of options affecting the behaviour of pattern
 
 * matching with this module
 
 *
 
 */
 
typedef enum {
 
    XML_PATTERN_DEFAULT		= 0,	/* simple pattern match */
 
    XML_PATTERN_XPATH		= 1<<0,	/* standard XPath pattern */
 
    XML_PATTERN_XSSEL		= 1<<1,	/* XPath subset for schema selector */
 
    XML_PATTERN_XSFIELD		= 1<<2	/* XPath subset for schema field */
 
} xmlPatternFlags;
 

	
 
XMLPUBFUN void XMLCALL
 
			xmlFreePattern		(xmlPatternPtr comp);
 

	
 
XMLPUBFUN void XMLCALL
 
			xmlFreePatternList	(xmlPatternPtr comp);
 

	
 
XMLPUBFUN xmlPatternPtr XMLCALL
 
			xmlPatterncompile	(const xmlChar *pattern,
 
						 xmlDict *dict,
 
						 int flags,
 
						 const xmlChar **namespaces);
 
XMLPUBFUN int XMLCALL
 
			xmlPatternMatch		(xmlPatternPtr comp,
 
						 xmlNodePtr node);
 

	
 
/* streaming interfaces */
 
typedef struct _xmlStreamCtxt xmlStreamCtxt;
 
typedef xmlStreamCtxt *xmlStreamCtxtPtr;
 

	
 
XMLPUBFUN int XMLCALL
 
			xmlPatternStreamable	(xmlPatternPtr comp);
 
XMLPUBFUN int XMLCALL
 
			xmlPatternMaxDepth	(xmlPatternPtr comp);
 
XMLPUBFUN int XMLCALL
 
			xmlPatternMinDepth	(xmlPatternPtr comp);
 
XMLPUBFUN int XMLCALL
 
			xmlPatternFromRoot	(xmlPatternPtr comp);
 
XMLPUBFUN xmlStreamCtxtPtr XMLCALL
 
			xmlPatternGetStreamCtxt	(xmlPatternPtr comp);
 
XMLPUBFUN void XMLCALL
 
			xmlFreeStreamCtxt	(xmlStreamCtxtPtr stream);
 
XMLPUBFUN int XMLCALL
 
			xmlStreamPushNode	(xmlStreamCtxtPtr stream,
 
						 const xmlChar *name,
 
						 const xmlChar *ns,
 
						 int nodeType);
 
XMLPUBFUN int XMLCALL
 
			xmlStreamPush		(xmlStreamCtxtPtr stream,
 
						 const xmlChar *name,
 
						 const xmlChar *ns);
 
XMLPUBFUN int XMLCALL
 
			xmlStreamPushAttr	(xmlStreamCtxtPtr stream,
 
						 const xmlChar *name,
 
						 const xmlChar *ns);
 
XMLPUBFUN int XMLCALL
 
			xmlStreamPop		(xmlStreamCtxtPtr stream);
 
XMLPUBFUN int XMLCALL
 
			xmlStreamWantsAnyNode	(xmlStreamCtxtPtr stream);
 
#ifdef __cplusplus
 
}
 
#endif
 

	
 
#endif /* LIBXML_PATTERN_ENABLED */
 

	
 
#endif /* __XML_PATTERN_H__ */
lib/libxml2/include/libxml/relaxng.h
Show inline comments
 
new file 100755
 
/*
 
 * Summary: implementation of the Relax-NG validation
 
 * Description: implementation of the Relax-NG validation
 
 *
 
 * Copy: See Copyright for the status of this software.
 
 *
 
 * Author: Daniel Veillard
 
 */
 

	
 
#ifndef __XML_RELAX_NG__
 
#define __XML_RELAX_NG__
 

	
 
#include <libxml/xmlversion.h>
 
#include <libxml/hash.h>
 
#include <libxml/xmlstring.h>
 

	
 
#ifdef LIBXML_SCHEMAS_ENABLED
 

	
 
#ifdef __cplusplus
 
extern "C" {
 
#endif
 

	
 
typedef struct _xmlRelaxNG xmlRelaxNG;
 
typedef xmlRelaxNG *xmlRelaxNGPtr;
 

	
 

	
 
/**
 
 * xmlRelaxNGValidityErrorFunc:
 
 * @ctx: the validation context
 
 * @msg: the message
 
 * @...: extra arguments
 
 *
 
 * Signature of an error callback from a Relax-NG validation
 
 */
 
typedef void (XMLCDECL *xmlRelaxNGValidityErrorFunc) (void *ctx, const char *msg, ...) LIBXML_ATTR_FORMAT(2,3);
 

	
 
/**
 
 * xmlRelaxNGValidityWarningFunc:
 
 * @ctx: the validation context
 
 * @msg: the message
 
 * @...: extra arguments
 
 *
 
 * Signature of a warning callback from a Relax-NG validation
 
 */
 
typedef void (XMLCDECL *xmlRelaxNGValidityWarningFunc) (void *ctx, const char *msg, ...) LIBXML_ATTR_FORMAT(2,3);
 

	
 
/**
 
 * A schemas validation context
 
 */
 
typedef struct _xmlRelaxNGParserCtxt xmlRelaxNGParserCtxt;
 
typedef xmlRelaxNGParserCtxt *xmlRelaxNGParserCtxtPtr;
 

	
 
typedef struct _xmlRelaxNGValidCtxt xmlRelaxNGValidCtxt;
 
typedef xmlRelaxNGValidCtxt *xmlRelaxNGValidCtxtPtr;
 

	
 
/*
 
 * xmlRelaxNGValidErr:
 
 *
 
 * List of possible Relax NG validation errors
 
 */
 
typedef enum {
 
    XML_RELAXNG_OK = 0,
 
    XML_RELAXNG_ERR_MEMORY,
 
    XML_RELAXNG_ERR_TYPE,
 
    XML_RELAXNG_ERR_TYPEVAL,
 
    XML_RELAXNG_ERR_DUPID,
 
    XML_RELAXNG_ERR_TYPECMP,
 
    XML_RELAXNG_ERR_NOSTATE,
 
    XML_RELAXNG_ERR_NODEFINE,
 
    XML_RELAXNG_ERR_LISTEXTRA,
 
    XML_RELAXNG_ERR_LISTEMPTY,
 
    XML_RELAXNG_ERR_INTERNODATA,
 
    XML_RELAXNG_ERR_INTERSEQ,
 
    XML_RELAXNG_ERR_INTEREXTRA,
 
    XML_RELAXNG_ERR_ELEMNAME,
 
    XML_RELAXNG_ERR_ATTRNAME,
 
    XML_RELAXNG_ERR_ELEMNONS,
 
    XML_RELAXNG_ERR_ATTRNONS,
 
    XML_RELAXNG_ERR_ELEMWRONGNS,
 
    XML_RELAXNG_ERR_ATTRWRONGNS,
 
    XML_RELAXNG_ERR_ELEMEXTRANS,
 
    XML_RELAXNG_ERR_ATTREXTRANS,
 
    XML_RELAXNG_ERR_ELEMNOTEMPTY,
 
    XML_RELAXNG_ERR_NOELEM,
 
    XML_RELAXNG_ERR_NOTELEM,
 
    XML_RELAXNG_ERR_ATTRVALID,
 
    XML_RELAXNG_ERR_CONTENTVALID,
 
    XML_RELAXNG_ERR_EXTRACONTENT,
 
    XML_RELAXNG_ERR_INVALIDATTR,
 
    XML_RELAXNG_ERR_DATAELEM,
 
    XML_RELAXNG_ERR_VALELEM,
 
    XML_RELAXNG_ERR_LISTELEM,
 
    XML_RELAXNG_ERR_DATATYPE,
 
    XML_RELAXNG_ERR_VALUE,
 
    XML_RELAXNG_ERR_LIST,
 
    XML_RELAXNG_ERR_NOGRAMMAR,
 
    XML_RELAXNG_ERR_EXTRADATA,
 
    XML_RELAXNG_ERR_LACKDATA,
 
    XML_RELAXNG_ERR_INTERNAL,
 
    XML_RELAXNG_ERR_ELEMWRONG,
 
    XML_RELAXNG_ERR_TEXTWRONG
 
} xmlRelaxNGValidErr;
 

	
 
/*
 
 * xmlRelaxNGParserFlags:
 
 *
 
 * List of possible Relax NG Parser flags
 
 */
 
typedef enum {
 
    XML_RELAXNGP_NONE = 0,
 
    XML_RELAXNGP_FREE_DOC = 1,
 
    XML_RELAXNGP_CRNG = 2
 
} xmlRelaxNGParserFlag;
 

	
 
XMLPUBFUN int XMLCALL
 
		    xmlRelaxNGInitTypes		(void);
 
XMLPUBFUN void XMLCALL
 
		    xmlRelaxNGCleanupTypes	(void);
 

	
 
/*
 
 * Interfaces for parsing.
 
 */
 
XMLPUBFUN xmlRelaxNGParserCtxtPtr XMLCALL
 
		    xmlRelaxNGNewParserCtxt	(const char *URL);
 
XMLPUBFUN xmlRelaxNGParserCtxtPtr XMLCALL
 
		    xmlRelaxNGNewMemParserCtxt	(const char *buffer,
 
						 int size);
 
XMLPUBFUN xmlRelaxNGParserCtxtPtr XMLCALL
 
		    xmlRelaxNGNewDocParserCtxt	(xmlDocPtr doc);
 

	
 
XMLPUBFUN int XMLCALL
 
		    xmlRelaxParserSetFlag	(xmlRelaxNGParserCtxtPtr ctxt,
 
						 int flag);
 

	
 
XMLPUBFUN void XMLCALL
 
		    xmlRelaxNGFreeParserCtxt	(xmlRelaxNGParserCtxtPtr ctxt);
 
XMLPUBFUN void XMLCALL
 
		    xmlRelaxNGSetParserErrors(xmlRelaxNGParserCtxtPtr ctxt,
 
					 xmlRelaxNGValidityErrorFunc err,
 
					 xmlRelaxNGValidityWarningFunc warn,
 
					 void *ctx);
 
XMLPUBFUN int XMLCALL
 
		    xmlRelaxNGGetParserErrors(xmlRelaxNGParserCtxtPtr ctxt,
 
					 xmlRelaxNGValidityErrorFunc *err,
 
					 xmlRelaxNGValidityWarningFunc *warn,
 
					 void **ctx);
 
XMLPUBFUN void XMLCALL
 
		    xmlRelaxNGSetParserStructuredErrors(
 
					 xmlRelaxNGParserCtxtPtr ctxt,
 
					 xmlStructuredErrorFunc serror,
 
					 void *ctx);
 
XMLPUBFUN xmlRelaxNGPtr XMLCALL
 
		    xmlRelaxNGParse		(xmlRelaxNGParserCtxtPtr ctxt);
 
XMLPUBFUN void XMLCALL
 
		    xmlRelaxNGFree		(xmlRelaxNGPtr schema);
 
#ifdef LIBXML_OUTPUT_ENABLED
 
XMLPUBFUN void XMLCALL
 
		    xmlRelaxNGDump		(FILE *output,
 
					 xmlRelaxNGPtr schema);
 
XMLPUBFUN void XMLCALL
 
		    xmlRelaxNGDumpTree	(FILE * output,
 
					 xmlRelaxNGPtr schema);
 
#endif /* LIBXML_OUTPUT_ENABLED */
 
/*
 
 * Interfaces for validating
 
 */
 
XMLPUBFUN void XMLCALL
 
		    xmlRelaxNGSetValidErrors(xmlRelaxNGValidCtxtPtr ctxt,
 
					 xmlRelaxNGValidityErrorFunc err,
 
					 xmlRelaxNGValidityWarningFunc warn,
 
					 void *ctx);
 
XMLPUBFUN int XMLCALL
 
		    xmlRelaxNGGetValidErrors(xmlRelaxNGValidCtxtPtr ctxt,
 
					 xmlRelaxNGValidityErrorFunc *err,
 
					 xmlRelaxNGValidityWarningFunc *warn,
 
					 void **ctx);
 
XMLPUBFUN void XMLCALL
 
			xmlRelaxNGSetValidStructuredErrors(xmlRelaxNGValidCtxtPtr ctxt,
 
					  xmlStructuredErrorFunc serror, void *ctx);
 
XMLPUBFUN xmlRelaxNGValidCtxtPtr XMLCALL
 
		    xmlRelaxNGNewValidCtxt	(xmlRelaxNGPtr schema);
 
XMLPUBFUN void XMLCALL
 
		    xmlRelaxNGFreeValidCtxt	(xmlRelaxNGValidCtxtPtr ctxt);
 
XMLPUBFUN int XMLCALL
 
		    xmlRelaxNGValidateDoc	(xmlRelaxNGValidCtxtPtr ctxt,
 
						 xmlDocPtr doc);
 
/*
 
 * Interfaces for progressive validation when possible
 
 */
 
XMLPUBFUN int XMLCALL
 
		    xmlRelaxNGValidatePushElement	(xmlRelaxNGValidCtxtPtr ctxt,
 
					 xmlDocPtr doc,
 
					 xmlNodePtr elem);
 
XMLPUBFUN int XMLCALL
 
		    xmlRelaxNGValidatePushCData	(xmlRelaxNGValidCtxtPtr ctxt,
 
					 const xmlChar *data,
 
					 int len);
 
XMLPUBFUN int XMLCALL
 
		    xmlRelaxNGValidatePopElement	(xmlRelaxNGValidCtxtPtr ctxt,
 
					 xmlDocPtr doc,
 
					 xmlNodePtr elem);
 
XMLPUBFUN int XMLCALL
 
		    xmlRelaxNGValidateFullElement	(xmlRelaxNGValidCtxtPtr ctxt,
 
					 xmlDocPtr doc,
 
					 xmlNodePtr elem);
 

	
 
#ifdef __cplusplus
 
}
 
#endif
 

	
 
#endif /* LIBXML_SCHEMAS_ENABLED */
 

	
 
#endif /* __XML_RELAX_NG__ */
lib/libxml2/include/libxml/schemasInternals.h
Show inline comments
 
new file 100755
 
/*
 
 * Summary: internal interfaces for XML Schemas
 
 * Description: internal interfaces for the XML Schemas handling
 
 *              and schema validity checking
 
 *		The Schemas development is a Work In Progress.
 
 *              Some of those interfaces are not garanteed to be API or ABI stable !
 
 *
 
 * Copy: See Copyright for the status of this software.
 
 *
 
 * Author: Daniel Veillard
 
 */
 

	
 

	
 
#ifndef __XML_SCHEMA_INTERNALS_H__
 
#define __XML_SCHEMA_INTERNALS_H__
 

	
 
#include <libxml/xmlversion.h>
 

	
 
#ifdef LIBXML_SCHEMAS_ENABLED
 

	
 
#include <libxml/xmlregexp.h>
 
#include <libxml/hash.h>
 
#include <libxml/dict.h>
 

	
 
#ifdef __cplusplus
 
extern "C" {
 
#endif
 

	
 
typedef enum {
 
    XML_SCHEMAS_UNKNOWN = 0,
 
    XML_SCHEMAS_STRING,
 
    XML_SCHEMAS_NORMSTRING,
 
    XML_SCHEMAS_DECIMAL,
 
    XML_SCHEMAS_TIME,
 
    XML_SCHEMAS_GDAY,
 
    XML_SCHEMAS_GMONTH,
 
    XML_SCHEMAS_GMONTHDAY,
 
    XML_SCHEMAS_GYEAR,
 
    XML_SCHEMAS_GYEARMONTH,
 
    XML_SCHEMAS_DATE,
 
    XML_SCHEMAS_DATETIME,
 
    XML_SCHEMAS_DURATION,
 
    XML_SCHEMAS_FLOAT,
 
    XML_SCHEMAS_DOUBLE,
 
    XML_SCHEMAS_BOOLEAN,
 
    XML_SCHEMAS_TOKEN,
 
    XML_SCHEMAS_LANGUAGE,
 
    XML_SCHEMAS_NMTOKEN,
 
    XML_SCHEMAS_NMTOKENS,
 
    XML_SCHEMAS_NAME,
 
    XML_SCHEMAS_QNAME,
 
    XML_SCHEMAS_NCNAME,
 
    XML_SCHEMAS_ID,
 
    XML_SCHEMAS_IDREF,
 
    XML_SCHEMAS_IDREFS,
 
    XML_SCHEMAS_ENTITY,
 
    XML_SCHEMAS_ENTITIES,
 
    XML_SCHEMAS_NOTATION,
 
    XML_SCHEMAS_ANYURI,
 
    XML_SCHEMAS_INTEGER,
 
    XML_SCHEMAS_NPINTEGER,
 
    XML_SCHEMAS_NINTEGER,
 
    XML_SCHEMAS_NNINTEGER,
 
    XML_SCHEMAS_PINTEGER,
 
    XML_SCHEMAS_INT,
 
    XML_SCHEMAS_UINT,
 
    XML_SCHEMAS_LONG,
 
    XML_SCHEMAS_ULONG,
 
    XML_SCHEMAS_SHORT,
 
    XML_SCHEMAS_USHORT,
 
    XML_SCHEMAS_BYTE,
 
    XML_SCHEMAS_UBYTE,
 
    XML_SCHEMAS_HEXBINARY,
 
    XML_SCHEMAS_BASE64BINARY,
 
    XML_SCHEMAS_ANYTYPE,
 
    XML_SCHEMAS_ANYSIMPLETYPE
 
} xmlSchemaValType;
 

	
 
/*
 
 * XML Schemas defines multiple type of types.
 
 */
 
typedef enum {
 
    XML_SCHEMA_TYPE_BASIC = 1, /* A built-in datatype */
 
    XML_SCHEMA_TYPE_ANY,
 
    XML_SCHEMA_TYPE_FACET,
 
    XML_SCHEMA_TYPE_SIMPLE,
 
    XML_SCHEMA_TYPE_COMPLEX,
 
    XML_SCHEMA_TYPE_SEQUENCE = 6,
 
    XML_SCHEMA_TYPE_CHOICE,
 
    XML_SCHEMA_TYPE_ALL,
 
    XML_SCHEMA_TYPE_SIMPLE_CONTENT,
 
    XML_SCHEMA_TYPE_COMPLEX_CONTENT,
 
    XML_SCHEMA_TYPE_UR,
 
    XML_SCHEMA_TYPE_RESTRICTION,
 
    XML_SCHEMA_TYPE_EXTENSION,
 
    XML_SCHEMA_TYPE_ELEMENT,
 
    XML_SCHEMA_TYPE_ATTRIBUTE,
 
    XML_SCHEMA_TYPE_ATTRIBUTEGROUP,
 
    XML_SCHEMA_TYPE_GROUP,
 
    XML_SCHEMA_TYPE_NOTATION,
 
    XML_SCHEMA_TYPE_LIST,
 
    XML_SCHEMA_TYPE_UNION,
 
    XML_SCHEMA_TYPE_ANY_ATTRIBUTE,
 
    XML_SCHEMA_TYPE_IDC_UNIQUE,
 
    XML_SCHEMA_TYPE_IDC_KEY,
 
    XML_SCHEMA_TYPE_IDC_KEYREF,
 
    XML_SCHEMA_TYPE_PARTICLE = 25, 
 
    XML_SCHEMA_TYPE_ATTRIBUTE_USE, 
 
    XML_SCHEMA_FACET_MININCLUSIVE = 1000,
 
    XML_SCHEMA_FACET_MINEXCLUSIVE,
 
    XML_SCHEMA_FACET_MAXINCLUSIVE,
 
    XML_SCHEMA_FACET_MAXEXCLUSIVE,
 
    XML_SCHEMA_FACET_TOTALDIGITS,
 
    XML_SCHEMA_FACET_FRACTIONDIGITS,
 
    XML_SCHEMA_FACET_PATTERN,
 
    XML_SCHEMA_FACET_ENUMERATION,
 
    XML_SCHEMA_FACET_WHITESPACE,
 
    XML_SCHEMA_FACET_LENGTH,
 
    XML_SCHEMA_FACET_MAXLENGTH,
 
    XML_SCHEMA_FACET_MINLENGTH,
 
    XML_SCHEMA_EXTRA_QNAMEREF = 2000,
 
    XML_SCHEMA_EXTRA_ATTR_USE_PROHIB
 
} xmlSchemaTypeType;
 

	
 
typedef enum {
 
    XML_SCHEMA_CONTENT_UNKNOWN = 0,
 
    XML_SCHEMA_CONTENT_EMPTY = 1,
 
    XML_SCHEMA_CONTENT_ELEMENTS,
 
    XML_SCHEMA_CONTENT_MIXED,
 
    XML_SCHEMA_CONTENT_SIMPLE,
 
    XML_SCHEMA_CONTENT_MIXED_OR_ELEMENTS, /* Obsolete */
 
    XML_SCHEMA_CONTENT_BASIC,
 
    XML_SCHEMA_CONTENT_ANY
 
} xmlSchemaContentType;
 

	
 
typedef struct _xmlSchemaVal xmlSchemaVal;
 
typedef xmlSchemaVal *xmlSchemaValPtr;
 

	
 
typedef struct _xmlSchemaType xmlSchemaType;
 
typedef xmlSchemaType *xmlSchemaTypePtr;
 

	
 
typedef struct _xmlSchemaFacet xmlSchemaFacet;
 
typedef xmlSchemaFacet *xmlSchemaFacetPtr;
 

	
 
/**
 
 * Annotation
 
 */
 
typedef struct _xmlSchemaAnnot xmlSchemaAnnot;
 
typedef xmlSchemaAnnot *xmlSchemaAnnotPtr;
 
struct _xmlSchemaAnnot {
 
    struct _xmlSchemaAnnot *next;
 
    xmlNodePtr content;         /* the annotation */
 
};
 

	
 
/**
 
 * XML_SCHEMAS_ANYATTR_SKIP:
 
 *
 
 * Skip unknown attribute from validation
 
 * Obsolete, not used anymore.
 
 */
 
#define XML_SCHEMAS_ANYATTR_SKIP        1
 
/**
 
 * XML_SCHEMAS_ANYATTR_LAX:
 
 *
 
 * Ignore validation non definition on attributes
 
 * Obsolete, not used anymore.
 
 */
 
#define XML_SCHEMAS_ANYATTR_LAX                2
 
/**
 
 * XML_SCHEMAS_ANYATTR_STRICT:
 
 *
 
 * Apply strict validation rules on attributes
 
 * Obsolete, not used anymore.
 
 */
 
#define XML_SCHEMAS_ANYATTR_STRICT        3
 
/**
 
 * XML_SCHEMAS_ANY_SKIP:
 
 *
 
 * Skip unknown attribute from validation
 
 */
 
#define XML_SCHEMAS_ANY_SKIP        1
 
/**
 
 * XML_SCHEMAS_ANY_LAX:
 
 *
 
 * Used by wildcards.
 
 * Validate if type found, don't worry if not found
 
 */
 
#define XML_SCHEMAS_ANY_LAX                2
 
/**
 
 * XML_SCHEMAS_ANY_STRICT:
 
 *
 
 * Used by wildcards.
 
 * Apply strict validation rules
 
 */
 
#define XML_SCHEMAS_ANY_STRICT        3
 
/**
 
 * XML_SCHEMAS_ATTR_USE_PROHIBITED:
 
 *
 
 * Used by wildcards.
 
 * The attribute is prohibited.
 
 */
 
#define XML_SCHEMAS_ATTR_USE_PROHIBITED 0
 
/**
 
 * XML_SCHEMAS_ATTR_USE_REQUIRED:
 
 *
 
 * The attribute is required.
 
 */
 
#define XML_SCHEMAS_ATTR_USE_REQUIRED 1
 
/**
 
 * XML_SCHEMAS_ATTR_USE_OPTIONAL:
 
 *
 
 * The attribute is optional.
 
 */
 
#define XML_SCHEMAS_ATTR_USE_OPTIONAL 2
 
/**
 
 * XML_SCHEMAS_ATTR_GLOBAL:
 
 *
 
 * allow elements in no namespace
 
 */
 
#define XML_SCHEMAS_ATTR_GLOBAL        1 << 0
 
/**
 
 * XML_SCHEMAS_ATTR_NSDEFAULT:
 
 *
 
 * allow elements in no namespace
 
 */
 
#define XML_SCHEMAS_ATTR_NSDEFAULT        1 << 7
 
/**
 
 * XML_SCHEMAS_ATTR_INTERNAL_RESOLVED:
 
 *
 
 * this is set when the "type" and "ref" references
 
 * have been resolved.
 
 */
 
#define XML_SCHEMAS_ATTR_INTERNAL_RESOLVED        1 << 8
 
/**
 
 * XML_SCHEMAS_ATTR_FIXED:
 
 *
 
 * the attribute has a fixed value
 
 */
 
#define XML_SCHEMAS_ATTR_FIXED        1 << 9
 

	
 
/**
 
 * xmlSchemaAttribute:
 
 * An attribute definition.
 
 */
 

	
 
typedef struct _xmlSchemaAttribute xmlSchemaAttribute;
 
typedef xmlSchemaAttribute *xmlSchemaAttributePtr;
 
struct _xmlSchemaAttribute {
 
    xmlSchemaTypeType type;
 
    struct _xmlSchemaAttribute *next; /* the next attribute (not used?) */
 
    const xmlChar *name; /* the name of the declaration */
 
    const xmlChar *id; /* Deprecated; not used */
 
    const xmlChar *ref; /* Deprecated; not used */
 
    const xmlChar *refNs; /* Deprecated; not used */
 
    const xmlChar *typeName; /* the local name of the type definition */
 
    const xmlChar *typeNs; /* the ns URI of the type definition */
 
    xmlSchemaAnnotPtr annot;
 

	
 
    xmlSchemaTypePtr base; /* Deprecated; not used */
 
    int occurs; /* Deprecated; not used */
 
    const xmlChar *defValue; /* The initial value of the value constraint */
 
    xmlSchemaTypePtr subtypes; /* the type definition */
 
    xmlNodePtr node;
 
    const xmlChar *targetNamespace;
 
    int flags;
 
    const xmlChar *refPrefix; /* Deprecated; not used */
 
    xmlSchemaValPtr defVal; /* The compiled value constraint */
 
    xmlSchemaAttributePtr refDecl; /* Deprecated; not used */
 
};
 

	
 
/**
 
 * xmlSchemaAttributeLink:
 
 * Used to build a list of attribute uses on complexType definitions.
 
 * WARNING: Deprecated; not used.
 
 */
 
typedef struct _xmlSchemaAttributeLink xmlSchemaAttributeLink;
 
typedef xmlSchemaAttributeLink *xmlSchemaAttributeLinkPtr;
 
struct _xmlSchemaAttributeLink {
 
    struct _xmlSchemaAttributeLink *next;/* the next attribute link ... */
 
    struct _xmlSchemaAttribute *attr;/* the linked attribute */
 
};
 

	
 
/**
 
 * XML_SCHEMAS_WILDCARD_COMPLETE:
 
 *
 
 * If the wildcard is complete.
 
 */
 
#define XML_SCHEMAS_WILDCARD_COMPLETE 1 << 0
 

	
 
/**
 
 * xmlSchemaCharValueLink:
 
 * Used to build a list of namespaces on wildcards.
 
 */
 
typedef struct _xmlSchemaWildcardNs xmlSchemaWildcardNs;
 
typedef xmlSchemaWildcardNs *xmlSchemaWildcardNsPtr;
 
struct _xmlSchemaWildcardNs {
 
    struct _xmlSchemaWildcardNs *next;/* the next constraint link ... */
 
    const xmlChar *value;/* the value */
 
};
 

	
 
/**
 
 * xmlSchemaWildcard.
 
 * A wildcard.
 
 */
 
typedef struct _xmlSchemaWildcard xmlSchemaWildcard;
 
typedef xmlSchemaWildcard *xmlSchemaWildcardPtr;
 
struct _xmlSchemaWildcard {
 
    xmlSchemaTypeType type;        /* The kind of type */
 
    const xmlChar *id; /* Deprecated; not used */
 
    xmlSchemaAnnotPtr annot;
 
    xmlNodePtr node;
 
    int minOccurs; /* Deprecated; not used */
 
    int maxOccurs; /* Deprecated; not used */
 
    int processContents;
 
    int any; /* Indicates if the ns constraint is of ##any */
 
    xmlSchemaWildcardNsPtr nsSet; /* The list of allowed namespaces */
 
    xmlSchemaWildcardNsPtr negNsSet; /* The negated namespace */
 
    int flags;
 
};
 

	
 
/**
 
 * XML_SCHEMAS_ATTRGROUP_WILDCARD_BUILDED:
 
 *
 
 * The attribute wildcard has been already builded.
 
 */
 
#define XML_SCHEMAS_ATTRGROUP_WILDCARD_BUILDED 1 << 0
 
/**
 
 * XML_SCHEMAS_ATTRGROUP_GLOBAL:
 
 *
 
 * The attribute wildcard has been already builded.
 
 */
 
#define XML_SCHEMAS_ATTRGROUP_GLOBAL 1 << 1
 
/**
 
 * XML_SCHEMAS_ATTRGROUP_MARKED:
 
 *
 
 * Marks the attr group as marked; used for circular checks.
 
 */
 
#define XML_SCHEMAS_ATTRGROUP_MARKED 1 << 2
 

	
 
/**
 
 * XML_SCHEMAS_ATTRGROUP_REDEFINED:
 
 *
 
 * The attr group was redefined.
 
 */
 
#define XML_SCHEMAS_ATTRGROUP_REDEFINED 1 << 3
 
/**
 
 * XML_SCHEMAS_ATTRGROUP_HAS_REFS:
 
 *
 
 * Whether this attr. group contains attr. group references.
 
 */
 
#define XML_SCHEMAS_ATTRGROUP_HAS_REFS 1 << 4
 

	
 
/**
 
 * An attribute group definition.
 
 *
 
 * xmlSchemaAttribute and xmlSchemaAttributeGroup start of structures
 
 * must be kept similar
 
 */
 
typedef struct _xmlSchemaAttributeGroup xmlSchemaAttributeGroup;
 
typedef xmlSchemaAttributeGroup *xmlSchemaAttributeGroupPtr;
 
struct _xmlSchemaAttributeGroup {
 
    xmlSchemaTypeType type;        /* The kind of type */
 
    struct _xmlSchemaAttribute *next;/* the next attribute if in a group ... */
 
    const xmlChar *name;
 
    const xmlChar *id;
 
    const xmlChar *ref; /* Deprecated; not used */
 
    const xmlChar *refNs; /* Deprecated; not used */
 
    xmlSchemaAnnotPtr annot;
 

	
 
    xmlSchemaAttributePtr attributes; /* Deprecated; not used */
 
    xmlNodePtr node;
 
    int flags;
 
    xmlSchemaWildcardPtr attributeWildcard;
 
    const xmlChar *refPrefix; /* Deprecated; not used */
 
    xmlSchemaAttributeGroupPtr refItem; /* Deprecated; not used */
 
    const xmlChar *targetNamespace;
 
    void *attrUses;
 
};
 

	
 
/**
 
 * xmlSchemaTypeLink:
 
 * Used to build a list of types (e.g. member types of
 
 * simpleType with variety "union").
 
 */
 
typedef struct _xmlSchemaTypeLink xmlSchemaTypeLink;
 
typedef xmlSchemaTypeLink *xmlSchemaTypeLinkPtr;
 
struct _xmlSchemaTypeLink {
 
    struct _xmlSchemaTypeLink *next;/* the next type link ... */
 
    xmlSchemaTypePtr type;/* the linked type */
 
};
 

	
 
/**
 
 * xmlSchemaFacetLink:
 
 * Used to build a list of facets.
 
 */
 
typedef struct _xmlSchemaFacetLink xmlSchemaFacetLink;
 
typedef xmlSchemaFacetLink *xmlSchemaFacetLinkPtr;
 
struct _xmlSchemaFacetLink {
 
    struct _xmlSchemaFacetLink *next;/* the next facet link ... */
 
    xmlSchemaFacetPtr facet;/* the linked facet */
 
};
 

	
 
/**
 
 * XML_SCHEMAS_TYPE_MIXED:
 
 *
 
 * the element content type is mixed
 
 */
 
#define XML_SCHEMAS_TYPE_MIXED                1 << 0
 
/**
 
 * XML_SCHEMAS_TYPE_DERIVATION_METHOD_EXTENSION:
 
 *
 
 * the simple or complex type has a derivation method of "extension".
 
 */
 
#define XML_SCHEMAS_TYPE_DERIVATION_METHOD_EXTENSION                1 << 1
 
/**
 
 * XML_SCHEMAS_TYPE_DERIVATION_METHOD_RESTRICTION:
 
 *
 
 * the simple or complex type has a derivation method of "restriction".
 
 */
 
#define XML_SCHEMAS_TYPE_DERIVATION_METHOD_RESTRICTION                1 << 2
 
/**
 
 * XML_SCHEMAS_TYPE_GLOBAL:
 
 *
 
 * the type is global
 
 */
 
#define XML_SCHEMAS_TYPE_GLOBAL                1 << 3
 
/**
 
 * XML_SCHEMAS_TYPE_OWNED_ATTR_WILDCARD:
 
 *
 
 * the complexType owns an attribute wildcard, i.e.
 
 * it can be freed by the complexType
 
 */
 
#define XML_SCHEMAS_TYPE_OWNED_ATTR_WILDCARD    1 << 4 /* Obsolete. */
 
/**
 
 * XML_SCHEMAS_TYPE_VARIETY_ABSENT:
 
 *
 
 * the simpleType has a variety of "absent".
 
 * TODO: Actually not necessary :-/, since if
 
 * none of the variety flags occur then it's
 
 * automatically absent.
 
 */
 
#define XML_SCHEMAS_TYPE_VARIETY_ABSENT    1 << 5
 
/**
 
 * XML_SCHEMAS_TYPE_VARIETY_LIST:
 
 *
 
 * the simpleType has a variety of "list".
 
 */
 
#define XML_SCHEMAS_TYPE_VARIETY_LIST    1 << 6
 
/**
 
 * XML_SCHEMAS_TYPE_VARIETY_UNION:
 
 *
 
 * the simpleType has a variety of "union".
 
 */
 
#define XML_SCHEMAS_TYPE_VARIETY_UNION    1 << 7
 
/**
 
 * XML_SCHEMAS_TYPE_VARIETY_ATOMIC:
 
 *
 
 * the simpleType has a variety of "union".
 
 */
 
#define XML_SCHEMAS_TYPE_VARIETY_ATOMIC    1 << 8
 
/**
 
 * XML_SCHEMAS_TYPE_FINAL_EXTENSION:
 
 *
 
 * the complexType has a final of "extension".
 
 */
 
#define XML_SCHEMAS_TYPE_FINAL_EXTENSION    1 << 9
 
/**
 
 * XML_SCHEMAS_TYPE_FINAL_RESTRICTION:
 
 *
 
 * the simpleType/complexType has a final of "restriction".
 
 */
 
#define XML_SCHEMAS_TYPE_FINAL_RESTRICTION    1 << 10
 
/**
 
 * XML_SCHEMAS_TYPE_FINAL_LIST:
 
 *
 
 * the simpleType has a final of "list".
 
 */
 
#define XML_SCHEMAS_TYPE_FINAL_LIST    1 << 11
 
/**
 
 * XML_SCHEMAS_TYPE_FINAL_UNION:
 
 *
 
 * the simpleType has a final of "union".
 
 */
 
#define XML_SCHEMAS_TYPE_FINAL_UNION    1 << 12
 
/**
 
 * XML_SCHEMAS_TYPE_FINAL_DEFAULT:
 
 *
 
 * the simpleType has a final of "default".
 
 */
 
#define XML_SCHEMAS_TYPE_FINAL_DEFAULT    1 << 13
 
/**
 
 * XML_SCHEMAS_TYPE_BUILTIN_PRIMITIVE:
 
 *
 
 * Marks the item as a builtin primitive.
 
 */
 
#define XML_SCHEMAS_TYPE_BUILTIN_PRIMITIVE    1 << 14
 
/**
 
 * XML_SCHEMAS_TYPE_MARKED:
 
 *
 
 * Marks the item as marked; used for circular checks.
 
 */
 
#define XML_SCHEMAS_TYPE_MARKED        1 << 16
 
/**
 
 * XML_SCHEMAS_TYPE_BLOCK_DEFAULT:
 
 *
 
 * the complexType did not specify 'block' so use the default of the
 
 * <schema> item.
 
 */
 
#define XML_SCHEMAS_TYPE_BLOCK_DEFAULT    1 << 17
 
/**
 
 * XML_SCHEMAS_TYPE_BLOCK_EXTENSION:
 
 *
 
 * the complexType has a 'block' of "extension".
 
 */
 
#define XML_SCHEMAS_TYPE_BLOCK_EXTENSION    1 << 18
 
/**
 
 * XML_SCHEMAS_TYPE_BLOCK_RESTRICTION:
 
 *
 
 * the complexType has a 'block' of "restriction".
 
 */
 
#define XML_SCHEMAS_TYPE_BLOCK_RESTRICTION    1 << 19
 
/**
 
 * XML_SCHEMAS_TYPE_ABSTRACT:
 
 *
 
 * the simple/complexType is abstract.
 
 */
 
#define XML_SCHEMAS_TYPE_ABSTRACT    1 << 20
 
/**
 
 * XML_SCHEMAS_TYPE_FACETSNEEDVALUE:
 
 *
 
 * indicates if the facets need a computed value
 
 */
 
#define XML_SCHEMAS_TYPE_FACETSNEEDVALUE    1 << 21
 
/**
 
 * XML_SCHEMAS_TYPE_INTERNAL_RESOLVED:
 
 *
 
 * indicates that the type was typefixed
 
 */
 
#define XML_SCHEMAS_TYPE_INTERNAL_RESOLVED    1 << 22
 
/**
 
 * XML_SCHEMAS_TYPE_INTERNAL_INVALID:
 
 *
 
 * indicates that the type is invalid
 
 */
 
#define XML_SCHEMAS_TYPE_INTERNAL_INVALID    1 << 23
 
/**
 
 * XML_SCHEMAS_TYPE_WHITESPACE_PRESERVE:
 
 *
 
 * a whitespace-facet value of "preserve"
 
 */
 
#define XML_SCHEMAS_TYPE_WHITESPACE_PRESERVE    1 << 24
 
/**
 
 * XML_SCHEMAS_TYPE_WHITESPACE_REPLACE:
 
 *
 
 * a whitespace-facet value of "replace"
 
 */
 
#define XML_SCHEMAS_TYPE_WHITESPACE_REPLACE    1 << 25
 
/**
 
 * XML_SCHEMAS_TYPE_WHITESPACE_COLLAPSE:
 
 *
 
 * a whitespace-facet value of "collapse"
 
 */
 
#define XML_SCHEMAS_TYPE_WHITESPACE_COLLAPSE    1 << 26
 
/**
 
 * XML_SCHEMAS_TYPE_HAS_FACETS:
 
 *
 
 * has facets
 
 */
 
#define XML_SCHEMAS_TYPE_HAS_FACETS    1 << 27
 
/**
 
 * XML_SCHEMAS_TYPE_NORMVALUENEEDED:
 
 *
 
 * indicates if the facets (pattern) need a normalized value
 
 */
 
#define XML_SCHEMAS_TYPE_NORMVALUENEEDED    1 << 28
 

	
 
/**
 
 * XML_SCHEMAS_TYPE_FIXUP_1:
 
 *
 
 * First stage of fixup was done.
 
 */
 
#define XML_SCHEMAS_TYPE_FIXUP_1    1 << 29
 

	
 
/**
 
 * XML_SCHEMAS_TYPE_REDEFINED:
 
 *
 
 * The type was redefined.
 
 */
 
#define XML_SCHEMAS_TYPE_REDEFINED    1 << 30
 
/**
 
 * XML_SCHEMAS_TYPE_REDEFINING:
 
 *
 
 * The type redefines an other type.
 
 */
 
/* #define XML_SCHEMAS_TYPE_REDEFINING    1 << 31 */
 

	
 
/**
 
 * _xmlSchemaType:
 
 *
 
 * Schemas type definition.
 
 */
 
struct _xmlSchemaType {
 
    xmlSchemaTypeType type; /* The kind of type */
 
    struct _xmlSchemaType *next; /* the next type if in a sequence ... */
 
    const xmlChar *name;
 
    const xmlChar *id ; /* Deprecated; not used */
 
    const xmlChar *ref; /* Deprecated; not used */
 
    const xmlChar *refNs; /* Deprecated; not used */
 
    xmlSchemaAnnotPtr annot;
 
    xmlSchemaTypePtr subtypes;
 
    xmlSchemaAttributePtr attributes; /* Deprecated; not used */
 
    xmlNodePtr node;
 
    int minOccurs; /* Deprecated; not used */
 
    int maxOccurs; /* Deprecated; not used */
 

	
 
    int flags;
 
    xmlSchemaContentType contentType;
 
    const xmlChar *base; /* Base type's local name */
 
    const xmlChar *baseNs; /* Base type's target namespace */
 
    xmlSchemaTypePtr baseType; /* The base type component */
 
    xmlSchemaFacetPtr facets; /* Local facets */
 
    struct _xmlSchemaType *redef; /* Deprecated; not used */
 
    int recurse; /* Obsolete */
 
    xmlSchemaAttributeLinkPtr *attributeUses; /* Deprecated; not used */
 
    xmlSchemaWildcardPtr attributeWildcard;
 
    int builtInType; /* Type of built-in types. */
 
    xmlSchemaTypeLinkPtr memberTypes; /* member-types if a union type. */
 
    xmlSchemaFacetLinkPtr facetSet; /* All facets (incl. inherited) */
 
    const xmlChar *refPrefix; /* Deprecated; not used */
 
    xmlSchemaTypePtr contentTypeDef; /* Used for the simple content of complex types.
 
                                        Could we use @subtypes for this? */
 
    xmlRegexpPtr contModel; /* Holds the automaton of the content model */
 
    const xmlChar *targetNamespace;
 
    void *attrUses;
 
};
 

	
 
/*
 
 * xmlSchemaElement:
 
 * An element definition.
 
 *
 
 * xmlSchemaType, xmlSchemaFacet and xmlSchemaElement start of
 
 * structures must be kept similar
 
 */
 
/**
 
 * XML_SCHEMAS_ELEM_NILLABLE:
 
 *
 
 * the element is nillable
 
 */
 
#define XML_SCHEMAS_ELEM_NILLABLE        1 << 0
 
/**
 
 * XML_SCHEMAS_ELEM_GLOBAL:
 
 *
 
 * the element is global
 
 */
 
#define XML_SCHEMAS_ELEM_GLOBAL                1 << 1
 
/**
 
 * XML_SCHEMAS_ELEM_DEFAULT:
 
 *
 
 * the element has a default value
 
 */
 
#define XML_SCHEMAS_ELEM_DEFAULT        1 << 2
 
/**
 
 * XML_SCHEMAS_ELEM_FIXED:
 
 *
 
 * the element has a fixed value
 
 */
 
#define XML_SCHEMAS_ELEM_FIXED                1 << 3
 
/**
 
 * XML_SCHEMAS_ELEM_ABSTRACT:
 
 *
 
 * the element is abstract
 
 */
 
#define XML_SCHEMAS_ELEM_ABSTRACT        1 << 4
 
/**
 
 * XML_SCHEMAS_ELEM_TOPLEVEL:
 
 *
 
 * the element is top level
 
 * obsolete: use XML_SCHEMAS_ELEM_GLOBAL instead
 
 */
 
#define XML_SCHEMAS_ELEM_TOPLEVEL        1 << 5
 
/**
 
 * XML_SCHEMAS_ELEM_REF:
 
 *
 
 * the element is a reference to a type
 
 */
 
#define XML_SCHEMAS_ELEM_REF                1 << 6
 
/**
 
 * XML_SCHEMAS_ELEM_NSDEFAULT:
 
 *
 
 * allow elements in no namespace
 
 * Obsolete, not used anymore.
 
 */
 
#define XML_SCHEMAS_ELEM_NSDEFAULT        1 << 7
 
/**
 
 * XML_SCHEMAS_ELEM_INTERNAL_RESOLVED:
 
 *
 
 * this is set when "type", "ref", "substitutionGroup"
 
 * references have been resolved.
 
 */
 
#define XML_SCHEMAS_ELEM_INTERNAL_RESOLVED        1 << 8
 
 /**
 
 * XML_SCHEMAS_ELEM_CIRCULAR:
 
 *
 
 * a helper flag for the search of circular references.
 
 */
 
#define XML_SCHEMAS_ELEM_CIRCULAR        1 << 9
 
/**
 
 * XML_SCHEMAS_ELEM_BLOCK_ABSENT:
 
 *
 
 * the "block" attribute is absent
 
 */
 
#define XML_SCHEMAS_ELEM_BLOCK_ABSENT        1 << 10
 
/**
 
 * XML_SCHEMAS_ELEM_BLOCK_EXTENSION:
 
 *
 
 * disallowed substitutions are absent
 
 */
 
#define XML_SCHEMAS_ELEM_BLOCK_EXTENSION        1 << 11
 
/**
 
 * XML_SCHEMAS_ELEM_BLOCK_RESTRICTION:
 
 *
 
 * disallowed substitutions: "restriction"
 
 */
 
#define XML_SCHEMAS_ELEM_BLOCK_RESTRICTION        1 << 12
 
/**
 
 * XML_SCHEMAS_ELEM_BLOCK_SUBSTITUTION:
 
 *
 
 * disallowed substitutions: "substituion"
 
 */
 
#define XML_SCHEMAS_ELEM_BLOCK_SUBSTITUTION        1 << 13
 
/**
 
 * XML_SCHEMAS_ELEM_FINAL_ABSENT:
 
 *
 
 * substitution group exclusions are absent
 
 */
 
#define XML_SCHEMAS_ELEM_FINAL_ABSENT        1 << 14
 
/**
 
 * XML_SCHEMAS_ELEM_FINAL_EXTENSION:
 
 *
 
 * substitution group exclusions: "extension"
 
 */
 
#define XML_SCHEMAS_ELEM_FINAL_EXTENSION        1 << 15
 
/**
 
 * XML_SCHEMAS_ELEM_FINAL_RESTRICTION:
 
 *
 
 * substitution group exclusions: "restriction"
 
 */
 
#define XML_SCHEMAS_ELEM_FINAL_RESTRICTION        1 << 16
 
/**
 
 * XML_SCHEMAS_ELEM_SUBST_GROUP_HEAD:
 
 *
 
 * the declaration is a substitution group head
 
 */
 
#define XML_SCHEMAS_ELEM_SUBST_GROUP_HEAD        1 << 17
 
/**
 
 * XML_SCHEMAS_ELEM_INTERNAL_CHECKED:
 
 *
 
 * this is set when the elem decl has been checked against
 
 * all constraints
 
 */
 
#define XML_SCHEMAS_ELEM_INTERNAL_CHECKED        1 << 18
 

	
 
typedef struct _xmlSchemaElement xmlSchemaElement;
 
typedef xmlSchemaElement *xmlSchemaElementPtr;
 
struct _xmlSchemaElement {
 
    xmlSchemaTypeType type; /* The kind of type */
 
    struct _xmlSchemaType *next; /* Not used? */
 
    const xmlChar *name;
 
    const xmlChar *id; /* Deprecated; not used */
 
    const xmlChar *ref; /* Deprecated; not used */
 
    const xmlChar *refNs; /* Deprecated; not used */
 
    xmlSchemaAnnotPtr annot;
 
    xmlSchemaTypePtr subtypes; /* the type definition */
 
    xmlSchemaAttributePtr attributes;
 
    xmlNodePtr node;
 
    int minOccurs; /* Deprecated; not used */
 
    int maxOccurs; /* Deprecated; not used */
 

	
 
    int flags;
 
    const xmlChar *targetNamespace;
 
    const xmlChar *namedType;
 
    const xmlChar *namedTypeNs;
 
    const xmlChar *substGroup;
 
    const xmlChar *substGroupNs;
 
    const xmlChar *scope;
 
    const xmlChar *value; /* The original value of the value constraint. */
 
    struct _xmlSchemaElement *refDecl; /* This will now be used for the
 
                                          substitution group affiliation */
 
    xmlRegexpPtr contModel; /* Obsolete for WXS, maybe used for RelaxNG */
 
    xmlSchemaContentType contentType;
 
    const xmlChar *refPrefix; /* Deprecated; not used */
 
    xmlSchemaValPtr defVal; /* The compiled value contraint. */
 
    void *idcs; /* The identity-constraint defs */
 
};
 

	
 
/*
 
 * XML_SCHEMAS_FACET_UNKNOWN:
 
 *
 
 * unknown facet handling
 
 */
 
#define XML_SCHEMAS_FACET_UNKNOWN        0
 
/*
 
 * XML_SCHEMAS_FACET_PRESERVE:
 
 *
 
 * preserve the type of the facet
 
 */
 
#define XML_SCHEMAS_FACET_PRESERVE        1
 
/*
 
 * XML_SCHEMAS_FACET_REPLACE:
 
 *
 
 * replace the type of the facet
 
 */
 
#define XML_SCHEMAS_FACET_REPLACE        2
 
/*
 
 * XML_SCHEMAS_FACET_COLLAPSE:
 
 *
 
 * collapse the types of the facet
 
 */
 
#define XML_SCHEMAS_FACET_COLLAPSE        3
 
/**
 
 * A facet definition.
 
 */
 
struct _xmlSchemaFacet {
 
    xmlSchemaTypeType type;        /* The kind of type */
 
    struct _xmlSchemaFacet *next;/* the next type if in a sequence ... */
 
    const xmlChar *value; /* The original value */
 
    const xmlChar *id; /* Obsolete */
 
    xmlSchemaAnnotPtr annot;
 
    xmlNodePtr node;
 
    int fixed; /* XML_SCHEMAS_FACET_PRESERVE, etc. */
 
    int whitespace;
 
    xmlSchemaValPtr val; /* The compiled value */
 
    xmlRegexpPtr    regexp; /* The regex for patterns */
 
};
 

	
 
/**
 
 * A notation definition.
 
 */
 
typedef struct _xmlSchemaNotation xmlSchemaNotation;
 
typedef xmlSchemaNotation *xmlSchemaNotationPtr;
 
struct _xmlSchemaNotation {
 
    xmlSchemaTypeType type; /* The kind of type */
 
    const xmlChar *name;
 
    xmlSchemaAnnotPtr annot;
 
    const xmlChar *identifier;
 
    const xmlChar *targetNamespace;
 
};
 

	
 
/*
 
* TODO: Actually all those flags used for the schema should sit
 
* on the schema parser context, since they are used only
 
* during parsing an XML schema document, and not available
 
* on the component level as per spec.
 
*/
 
/**
 
 * XML_SCHEMAS_QUALIF_ELEM:
 
 *
 
 * Reflects elementFormDefault == qualified in
 
 * an XML schema document.
 
 */
 
#define XML_SCHEMAS_QUALIF_ELEM                1 << 0
 
/**
 
 * XML_SCHEMAS_QUALIF_ATTR:
 
 *
 
 * Reflects attributeFormDefault == qualified in
 
 * an XML schema document.
 
 */
 
#define XML_SCHEMAS_QUALIF_ATTR            1 << 1
 
/**
 
 * XML_SCHEMAS_FINAL_DEFAULT_EXTENSION:
 
 *
 
 * the schema has "extension" in the set of finalDefault.
 
 */
 
#define XML_SCHEMAS_FINAL_DEFAULT_EXTENSION        1 << 2
 
/**
 
 * XML_SCHEMAS_FINAL_DEFAULT_RESTRICTION:
 
 *
 
 * the schema has "restriction" in the set of finalDefault.
 
 */
 
#define XML_SCHEMAS_FINAL_DEFAULT_RESTRICTION            1 << 3
 
/**
 
 * XML_SCHEMAS_FINAL_DEFAULT_LIST:
 
 *
 
 * the cshema has "list" in the set of finalDefault.
 
 */
 
#define XML_SCHEMAS_FINAL_DEFAULT_LIST            1 << 4
 
/**
 
 * XML_SCHEMAS_FINAL_DEFAULT_UNION:
 
 *
 
 * the schema has "union" in the set of finalDefault.
 
 */
 
#define XML_SCHEMAS_FINAL_DEFAULT_UNION            1 << 5
 
/**
 
 * XML_SCHEMAS_BLOCK_DEFAULT_EXTENSION:
 
 *
 
 * the schema has "extension" in the set of blockDefault.
 
 */
 
#define XML_SCHEMAS_BLOCK_DEFAULT_EXTENSION            1 << 6
 
/**
 
 * XML_SCHEMAS_BLOCK_DEFAULT_RESTRICTION:
 
 *
 
 * the schema has "restriction" in the set of blockDefault.
 
 */
 
#define XML_SCHEMAS_BLOCK_DEFAULT_RESTRICTION            1 << 7
 
/**
 
 * XML_SCHEMAS_BLOCK_DEFAULT_SUBSTITUTION:
 
 *
 
 * the schema has "substitution" in the set of blockDefault.
 
 */
 
#define XML_SCHEMAS_BLOCK_DEFAULT_SUBSTITUTION            1 << 8
 
/**
 
 * XML_SCHEMAS_INCLUDING_CONVERT_NS:
 
 *
 
 * the schema is currently including an other schema with
 
 * no target namespace.
 
 */
 
#define XML_SCHEMAS_INCLUDING_CONVERT_NS            1 << 9
 
/**
 
 * _xmlSchema:
 
 *
 
 * A Schemas definition
 
 */
 
struct _xmlSchema {
 
    const xmlChar *name; /* schema name */
 
    const xmlChar *targetNamespace; /* the target namespace */
 
    const xmlChar *version;
 
    const xmlChar *id; /* Obsolete */
 
    xmlDocPtr doc;
 
    xmlSchemaAnnotPtr annot;
 
    int flags;
 

	
 
    xmlHashTablePtr typeDecl;
 
    xmlHashTablePtr attrDecl;
 
    xmlHashTablePtr attrgrpDecl;
 
    xmlHashTablePtr elemDecl;
 
    xmlHashTablePtr notaDecl;
 

	
 
    xmlHashTablePtr schemasImports;
 

	
 
    void *_private;        /* unused by the library for users or bindings */
 
    xmlHashTablePtr groupDecl;
 
    xmlDictPtr      dict;
 
    void *includes;     /* the includes, this is opaque for now */
 
    int preserve;        /* whether to free the document */
 
    int counter; /* used to give ononymous components unique names */
 
    xmlHashTablePtr idcDef; /* All identity-constraint defs. */
 
    void *volatiles; /* Obsolete */
 
};
 

	
 
XMLPUBFUN void XMLCALL         xmlSchemaFreeType        (xmlSchemaTypePtr type);
 
XMLPUBFUN void XMLCALL         xmlSchemaFreeWildcard(xmlSchemaWildcardPtr wildcard);
 

	
 
#ifdef __cplusplus
 
}
 
#endif
 

	
 
#endif /* LIBXML_SCHEMAS_ENABLED */
 
#endif /* __XML_SCHEMA_INTERNALS_H__ */
lib/libxml2/include/libxml/schematron.h
Show inline comments
 
new file 100755
 
/*
 
 * Summary: XML Schemastron implementation
 
 * Description: interface to the XML Schematron validity checking.
 
 *
 
 * Copy: See Copyright for the status of this software.
 
 *
 
 * Author: Daniel Veillard
 
 */
 

	
 

	
 
#ifndef __XML_SCHEMATRON_H__
 
#define __XML_SCHEMATRON_H__
 

	
 
#include <libxml/xmlversion.h>
 

	
 
#ifdef LIBXML_SCHEMATRON_ENABLED
 

	
 
#include <libxml/tree.h>
 

	
 
#ifdef __cplusplus
 
extern "C" {
 
#endif
 

	
 
typedef enum {
 
    XML_SCHEMATRON_OUT_QUIET = 1 << 0,	/* quiet no report */
 
    XML_SCHEMATRON_OUT_TEXT = 1 << 1,	/* build a textual report */
 
    XML_SCHEMATRON_OUT_XML = 1 << 2,	/* output SVRL */
 
    XML_SCHEMATRON_OUT_ERROR = 1 << 3,  /* output via xmlStructuredErrorFunc */
 
    XML_SCHEMATRON_OUT_FILE = 1 << 8,	/* output to a file descriptor */
 
    XML_SCHEMATRON_OUT_BUFFER = 1 << 9,	/* output to a buffer */
 
    XML_SCHEMATRON_OUT_IO = 1 << 10	/* output to I/O mechanism */
 
} xmlSchematronValidOptions;
 

	
 
/**
 
 * The schemas related types are kept internal
 
 */
 
typedef struct _xmlSchematron xmlSchematron;
 
typedef xmlSchematron *xmlSchematronPtr;
 

	
 
/**
 
 * xmlSchematronValidityErrorFunc:
 
 * @ctx: the validation context
 
 * @msg: the message
 
 * @...: extra arguments
 
 *
 
 * Signature of an error callback from a Schematron validation
 
 */
 
typedef void (*xmlSchematronValidityErrorFunc) (void *ctx, const char *msg, ...);
 

	
 
/**
 
 * xmlSchematronValidityWarningFunc:
 
 * @ctx: the validation context
 
 * @msg: the message
 
 * @...: extra arguments
 
 *
 
 * Signature of a warning callback from a Schematron validation
 
 */
 
typedef void (*xmlSchematronValidityWarningFunc) (void *ctx, const char *msg, ...);
 

	
 
/**
 
 * A schemas validation context
 
 */
 
typedef struct _xmlSchematronParserCtxt xmlSchematronParserCtxt;
 
typedef xmlSchematronParserCtxt *xmlSchematronParserCtxtPtr;
 

	
 
typedef struct _xmlSchematronValidCtxt xmlSchematronValidCtxt;
 
typedef xmlSchematronValidCtxt *xmlSchematronValidCtxtPtr;
 

	
 
/*
 
 * Interfaces for parsing.
 
 */
 
XMLPUBFUN xmlSchematronParserCtxtPtr XMLCALL 
 
	    xmlSchematronNewParserCtxt	(const char *URL);
 
XMLPUBFUN xmlSchematronParserCtxtPtr XMLCALL 
 
	    xmlSchematronNewMemParserCtxt(const char *buffer,
 
					 int size);
 
XMLPUBFUN xmlSchematronParserCtxtPtr XMLCALL
 
	    xmlSchematronNewDocParserCtxt(xmlDocPtr doc);
 
XMLPUBFUN void XMLCALL		
 
	    xmlSchematronFreeParserCtxt	(xmlSchematronParserCtxtPtr ctxt);
 
/*****
 
XMLPUBFUN void XMLCALL		
 
	    xmlSchematronSetParserErrors(xmlSchematronParserCtxtPtr ctxt,
 
					 xmlSchematronValidityErrorFunc err,
 
					 xmlSchematronValidityWarningFunc warn,
 
					 void *ctx);
 
XMLPUBFUN int XMLCALL
 
		xmlSchematronGetParserErrors(xmlSchematronParserCtxtPtr ctxt,
 
					xmlSchematronValidityErrorFunc * err,
 
					xmlSchematronValidityWarningFunc * warn,
 
					void **ctx);
 
XMLPUBFUN int XMLCALL
 
		xmlSchematronIsValid	(xmlSchematronValidCtxtPtr ctxt);
 
 *****/
 
XMLPUBFUN xmlSchematronPtr XMLCALL	
 
	    xmlSchematronParse		(xmlSchematronParserCtxtPtr ctxt);
 
XMLPUBFUN void XMLCALL		
 
	    xmlSchematronFree		(xmlSchematronPtr schema);
 
/*
 
 * Interfaces for validating
 
 */
 
XMLPUBFUN void XMLCALL
 
	    xmlSchematronSetValidStructuredErrors(
 
	                                  xmlSchematronValidCtxtPtr ctxt,
 
					  xmlStructuredErrorFunc serror,
 
					  void *ctx);
 
/******
 
XMLPUBFUN void XMLCALL		
 
	    xmlSchematronSetValidErrors	(xmlSchematronValidCtxtPtr ctxt,
 
					 xmlSchematronValidityErrorFunc err,
 
					 xmlSchematronValidityWarningFunc warn,
 
					 void *ctx);
 
XMLPUBFUN int XMLCALL
 
	    xmlSchematronGetValidErrors	(xmlSchematronValidCtxtPtr ctxt,
 
					 xmlSchematronValidityErrorFunc *err,
 
					 xmlSchematronValidityWarningFunc *warn,
 
					 void **ctx);
 
XMLPUBFUN int XMLCALL
 
	    xmlSchematronSetValidOptions(xmlSchematronValidCtxtPtr ctxt,
 
					 int options);
 
XMLPUBFUN int XMLCALL
 
	    xmlSchematronValidCtxtGetOptions(xmlSchematronValidCtxtPtr ctxt);
 
XMLPUBFUN int XMLCALL
 
            xmlSchematronValidateOneElement (xmlSchematronValidCtxtPtr ctxt,
 
			                 xmlNodePtr elem);
 
 *******/
 

	
 
XMLPUBFUN xmlSchematronValidCtxtPtr XMLCALL	
 
	    xmlSchematronNewValidCtxt	(xmlSchematronPtr schema,
 
	    				 int options);
 
XMLPUBFUN void XMLCALL			
 
	    xmlSchematronFreeValidCtxt	(xmlSchematronValidCtxtPtr ctxt);
 
XMLPUBFUN int XMLCALL			
 
	    xmlSchematronValidateDoc	(xmlSchematronValidCtxtPtr ctxt,
 
					 xmlDocPtr instance);
 

	
 
#ifdef __cplusplus
 
}
 
#endif
 

	
 
#endif /* LIBXML_SCHEMATRON_ENABLED */
 
#endif /* __XML_SCHEMATRON_H__ */
lib/libxml2/include/libxml/threads.h
Show inline comments
 
new file 100755
 
/**
 
 * Summary: interfaces for thread handling
 
 * Description: set of generic threading related routines
 
 *              should work with pthreads, Windows native or TLS threads
 
 *
 
 * Copy: See Copyright for the status of this software.
 
 *
 
 * Author: Daniel Veillard
 
 */
 

	
 
#ifndef __XML_THREADS_H__
 
#define __XML_THREADS_H__
 

	
 
#include <libxml/xmlversion.h>
 

	
 
#ifdef __cplusplus
 
extern "C" {
 
#endif
 

	
 
/*
 
 * xmlMutex are a simple mutual exception locks.
 
 */
 
typedef struct _xmlMutex xmlMutex;
 
typedef xmlMutex *xmlMutexPtr;
 

	
 
/*
 
 * xmlRMutex are reentrant mutual exception locks.
 
 */
 
typedef struct _xmlRMutex xmlRMutex;
 
typedef xmlRMutex *xmlRMutexPtr;
 

	
 
#ifdef __cplusplus
 
}
 
#endif
 
#include <libxml/globals.h>
 
#ifdef __cplusplus
 
extern "C" {
 
#endif
 
XMLPUBFUN xmlMutexPtr XMLCALL
 
			xmlNewMutex	(void);
 
XMLPUBFUN void XMLCALL
 
			xmlMutexLock	(xmlMutexPtr tok);
 
XMLPUBFUN void XMLCALL
 
			xmlMutexUnlock	(xmlMutexPtr tok);
 
XMLPUBFUN void XMLCALL
 
			xmlFreeMutex	(xmlMutexPtr tok);
 

	
 
XMLPUBFUN xmlRMutexPtr XMLCALL
 
			xmlNewRMutex	(void);
 
XMLPUBFUN void XMLCALL
 
			xmlRMutexLock	(xmlRMutexPtr tok);
 
XMLPUBFUN void XMLCALL
 
			xmlRMutexUnlock	(xmlRMutexPtr tok);
 
XMLPUBFUN void XMLCALL
 
			xmlFreeRMutex	(xmlRMutexPtr tok);
 

	
 
/*
 
 * Library wide APIs.
 
 */
 
XMLPUBFUN void XMLCALL
 
			xmlInitThreads	(void);
 
XMLPUBFUN void XMLCALL
 
			xmlLockLibrary	(void);
 
XMLPUBFUN void XMLCALL
 
			xmlUnlockLibrary(void);
 
XMLPUBFUN int XMLCALL
 
			xmlGetThreadId	(void);
 
XMLPUBFUN int XMLCALL
 
			xmlIsMainThread	(void);
 
XMLPUBFUN void XMLCALL
 
			xmlCleanupThreads(void);
 
XMLPUBFUN xmlGlobalStatePtr XMLCALL
 
			xmlGetGlobalState(void);
 

	
 
#if defined(HAVE_WIN32_THREADS) && !defined(HAVE_COMPILER_TLS) && defined(LIBXML_STATIC_FOR_DLL)
 
int XMLCALL xmlDllMain(void *hinstDLL, unsigned long fdwReason, void *lpvReserved);
 
#endif
 

	
 
#ifdef __cplusplus
 
}
 
#endif
 

	
 

	
 
#endif /* __XML_THREADS_H__ */
lib/libxml2/include/libxml/tree.h
Show inline comments
 
new file 100755
 
/*
 
 * Summary: interfaces for tree manipulation
 
 * Description: this module describes the structures found in an tree resulting
 
 *              from an XML or HTML parsing, as well as the API provided for
 
 *              various processing on that tree
 
 *
 
 * Copy: See Copyright for the status of this software.
 
 *
 
 * Author: Daniel Veillard
 
 */
 

	
 
#ifndef __XML_TREE_H__
 
#define __XML_TREE_H__
 

	
 
#include <stdio.h>
 
#include <libxml/xmlversion.h>
 
#include <libxml/xmlstring.h>
 

	
 
#ifdef __cplusplus
 
extern "C" {
 
#endif
 

	
 
/*
 
 * Some of the basic types pointer to structures:
 
 */
 
/* xmlIO.h */
 
typedef struct _xmlParserInputBuffer xmlParserInputBuffer;
 
typedef xmlParserInputBuffer *xmlParserInputBufferPtr;
 

	
 
typedef struct _xmlOutputBuffer xmlOutputBuffer;
 
typedef xmlOutputBuffer *xmlOutputBufferPtr;
 

	
 
/* parser.h */
 
typedef struct _xmlParserInput xmlParserInput;
 
typedef xmlParserInput *xmlParserInputPtr;
 

	
 
typedef struct _xmlParserCtxt xmlParserCtxt;
 
typedef xmlParserCtxt *xmlParserCtxtPtr;
 

	
 
typedef struct _xmlSAXLocator xmlSAXLocator;
 
typedef xmlSAXLocator *xmlSAXLocatorPtr;
 

	
 
typedef struct _xmlSAXHandler xmlSAXHandler;
 
typedef xmlSAXHandler *xmlSAXHandlerPtr;
 

	
 
/* entities.h */
 
typedef struct _xmlEntity xmlEntity;
 
typedef xmlEntity *xmlEntityPtr;
 

	
 
/**
 
 * BASE_BUFFER_SIZE:
 
 *
 
 * default buffer size 4000.
 
 */
 
#define BASE_BUFFER_SIZE 4096
 

	
 
/**
 
 * LIBXML_NAMESPACE_DICT:
 
 *
 
 * Defines experimental behaviour:
 
 * 1) xmlNs gets an additional field @context (a xmlDoc)
 
 * 2) when creating a tree, xmlNs->href is stored in the dict of xmlDoc.
 
 */
 
/* #define LIBXML_NAMESPACE_DICT */
 

	
 
/**
 
 * xmlBufferAllocationScheme:
 
 *
 
 * A buffer allocation scheme can be defined to either match exactly the
 
 * need or double it's allocated size each time it is found too small.
 
 */
 

	
 
typedef enum {
 
    XML_BUFFER_ALLOC_DOUBLEIT,	/* double each time one need to grow */
 
    XML_BUFFER_ALLOC_EXACT,	/* grow only to the minimal size */
 
    XML_BUFFER_ALLOC_IMMUTABLE, /* immutable buffer */
 
    XML_BUFFER_ALLOC_IO		/* special allocation scheme used for I/O */
 
} xmlBufferAllocationScheme;
 

	
 
/**
 
 * xmlBuffer:
 
 *
 
 * A buffer structure.
 
 */
 
typedef struct _xmlBuffer xmlBuffer;
 
typedef xmlBuffer *xmlBufferPtr;
 
struct _xmlBuffer {
 
    xmlChar *content;		/* The buffer content UTF8 */
 
    unsigned int use;		/* The buffer size used */
 
    unsigned int size;		/* The buffer size */
 
    xmlBufferAllocationScheme alloc; /* The realloc method */
 
    xmlChar *contentIO;		/* in IO mode we may have a different base */
 
};
 

	
 
/**
 
 * XML_XML_NAMESPACE:
 
 *
 
 * This is the namespace for the special xml: prefix predefined in the
 
 * XML Namespace specification.
 
 */
 
#define XML_XML_NAMESPACE \
 
    (const xmlChar *) "http://www.w3.org/XML/1998/namespace"
 

	
 
/**
 
 * XML_XML_ID:
 
 *
 
 * This is the name for the special xml:id attribute
 
 */
 
#define XML_XML_ID (const xmlChar *) "xml:id"
 

	
 
/*
 
 * The different element types carried by an XML tree.
 
 *
 
 * NOTE: This is synchronized with DOM Level1 values
 
 *       See http://www.w3.org/TR/REC-DOM-Level-1/
 
 *
 
 * Actually this had diverged a bit, and now XML_DOCUMENT_TYPE_NODE should
 
 * be deprecated to use an XML_DTD_NODE.
 
 */
 
typedef enum {
 
    XML_ELEMENT_NODE=		1,
 
    XML_ATTRIBUTE_NODE=		2,
 
    XML_TEXT_NODE=		3,
 
    XML_CDATA_SECTION_NODE=	4,
 
    XML_ENTITY_REF_NODE=	5,
 
    XML_ENTITY_NODE=		6,
 
    XML_PI_NODE=		7,
 
    XML_COMMENT_NODE=		8,
 
    XML_DOCUMENT_NODE=		9,
 
    XML_DOCUMENT_TYPE_NODE=	10,
 
    XML_DOCUMENT_FRAG_NODE=	11,
 
    XML_NOTATION_NODE=		12,
 
    XML_HTML_DOCUMENT_NODE=	13,
 
    XML_DTD_NODE=		14,
 
    XML_ELEMENT_DECL=		15,
 
    XML_ATTRIBUTE_DECL=		16,
 
    XML_ENTITY_DECL=		17,
 
    XML_NAMESPACE_DECL=		18,
 
    XML_XINCLUDE_START=		19,
 
    XML_XINCLUDE_END=		20
 
#ifdef LIBXML_DOCB_ENABLED
 
   ,XML_DOCB_DOCUMENT_NODE=	21
 
#endif
 
} xmlElementType;
 

	
 

	
 
/**
 
 * xmlNotation:
 
 *
 
 * A DTD Notation definition.
 
 */
 

	
 
typedef struct _xmlNotation xmlNotation;
 
typedef xmlNotation *xmlNotationPtr;
 
struct _xmlNotation {
 
    const xmlChar               *name;	        /* Notation name */
 
    const xmlChar               *PublicID;	/* Public identifier, if any */
 
    const xmlChar               *SystemID;	/* System identifier, if any */
 
};
 

	
 
/**
 
 * xmlAttributeType:
 
 *
 
 * A DTD Attribute type definition.
 
 */
 

	
 
typedef enum {
 
    XML_ATTRIBUTE_CDATA = 1,
 
    XML_ATTRIBUTE_ID,
 
    XML_ATTRIBUTE_IDREF	,
 
    XML_ATTRIBUTE_IDREFS,
 
    XML_ATTRIBUTE_ENTITY,
 
    XML_ATTRIBUTE_ENTITIES,
 
    XML_ATTRIBUTE_NMTOKEN,
 
    XML_ATTRIBUTE_NMTOKENS,
 
    XML_ATTRIBUTE_ENUMERATION,
 
    XML_ATTRIBUTE_NOTATION
 
} xmlAttributeType;
 

	
 
/**
 
 * xmlAttributeDefault:
 
 *
 
 * A DTD Attribute default definition.
 
 */
 

	
 
typedef enum {
 
    XML_ATTRIBUTE_NONE = 1,
 
    XML_ATTRIBUTE_REQUIRED,
 
    XML_ATTRIBUTE_IMPLIED,
 
    XML_ATTRIBUTE_FIXED
 
} xmlAttributeDefault;
 

	
 
/**
 
 * xmlEnumeration:
 
 *
 
 * List structure used when there is an enumeration in DTDs.
 
 */
 

	
 
typedef struct _xmlEnumeration xmlEnumeration;
 
typedef xmlEnumeration *xmlEnumerationPtr;
 
struct _xmlEnumeration {
 
    struct _xmlEnumeration    *next;	/* next one */
 
    const xmlChar            *name;	/* Enumeration name */
 
};
 

	
 
/**
 
 * xmlAttribute:
 
 *
 
 * An Attribute declaration in a DTD.
 
 */
 

	
 
typedef struct _xmlAttribute xmlAttribute;
 
typedef xmlAttribute *xmlAttributePtr;
 
struct _xmlAttribute {
 
    void           *_private;	        /* application data */
 
    xmlElementType          type;       /* XML_ATTRIBUTE_DECL, must be second ! */
 
    const xmlChar          *name;	/* Attribute name */
 
    struct _xmlNode    *children;	/* NULL */
 
    struct _xmlNode        *last;	/* NULL */
 
    struct _xmlDtd       *parent;	/* -> DTD */
 
    struct _xmlNode        *next;	/* next sibling link  */
 
    struct _xmlNode        *prev;	/* previous sibling link  */
 
    struct _xmlDoc          *doc;       /* the containing document */
 

	
 
    struct _xmlAttribute  *nexth;	/* next in hash table */
 
    xmlAttributeType       atype;	/* The attribute type */
 
    xmlAttributeDefault      def;	/* the default */
 
    const xmlChar  *defaultValue;	/* or the default value */
 
    xmlEnumerationPtr       tree;       /* or the enumeration tree if any */
 
    const xmlChar        *prefix;	/* the namespace prefix if any */
 
    const xmlChar          *elem;	/* Element holding the attribute */
 
};
 

	
 
/**
 
 * xmlElementContentType:
 
 *
 
 * Possible definitions of element content types.
 
 */
 
typedef enum {
 
    XML_ELEMENT_CONTENT_PCDATA = 1,
 
    XML_ELEMENT_CONTENT_ELEMENT,
 
    XML_ELEMENT_CONTENT_SEQ,
 
    XML_ELEMENT_CONTENT_OR
 
} xmlElementContentType;
 

	
 
/**
 
 * xmlElementContentOccur:
 
 *
 
 * Possible definitions of element content occurrences.
 
 */
 
typedef enum {
 
    XML_ELEMENT_CONTENT_ONCE = 1,
 
    XML_ELEMENT_CONTENT_OPT,
 
    XML_ELEMENT_CONTENT_MULT,
 
    XML_ELEMENT_CONTENT_PLUS
 
} xmlElementContentOccur;
 

	
 
/**
 
 * xmlElementContent:
 
 *
 
 * An XML Element content as stored after parsing an element definition
 
 * in a DTD.
 
 */
 

	
 
typedef struct _xmlElementContent xmlElementContent;
 
typedef xmlElementContent *xmlElementContentPtr;
 
struct _xmlElementContent {
 
    xmlElementContentType     type;	/* PCDATA, ELEMENT, SEQ or OR */
 
    xmlElementContentOccur    ocur;	/* ONCE, OPT, MULT or PLUS */
 
    const xmlChar             *name;	/* Element name */
 
    struct _xmlElementContent *c1;	/* first child */
 
    struct _xmlElementContent *c2;	/* second child */
 
    struct _xmlElementContent *parent;	/* parent */
 
    const xmlChar             *prefix;	/* Namespace prefix */
 
};
 

	
 
/**
 
 * xmlElementTypeVal:
 
 *
 
 * The different possibilities for an element content type.
 
 */
 

	
 
typedef enum {
 
    XML_ELEMENT_TYPE_UNDEFINED = 0,
 
    XML_ELEMENT_TYPE_EMPTY = 1,
 
    XML_ELEMENT_TYPE_ANY,
 
    XML_ELEMENT_TYPE_MIXED,
 
    XML_ELEMENT_TYPE_ELEMENT
 
} xmlElementTypeVal;
 

	
 
#ifdef __cplusplus
 
}
 
#endif
 
#include <libxml/xmlregexp.h>
 
#ifdef __cplusplus
 
extern "C" {
 
#endif
 

	
 
/**
 
 * xmlElement:
 
 *
 
 * An XML Element declaration from a DTD.
 
 */
 

	
 
typedef struct _xmlElement xmlElement;
 
typedef xmlElement *xmlElementPtr;
 
struct _xmlElement {
 
    void           *_private;	        /* application data */
 
    xmlElementType          type;       /* XML_ELEMENT_DECL, must be second ! */
 
    const xmlChar          *name;	/* Element name */
 
    struct _xmlNode    *children;	/* NULL */
 
    struct _xmlNode        *last;	/* NULL */
 
    struct _xmlDtd       *parent;	/* -> DTD */
 
    struct _xmlNode        *next;	/* next sibling link  */
 
    struct _xmlNode        *prev;	/* previous sibling link  */
 
    struct _xmlDoc          *doc;       /* the containing document */
 

	
 
    xmlElementTypeVal      etype;	/* The type */
 
    xmlElementContentPtr content;	/* the allowed element content */
 
    xmlAttributePtr   attributes;	/* List of the declared attributes */
 
    const xmlChar        *prefix;	/* the namespace prefix if any */
 
#ifdef LIBXML_REGEXP_ENABLED
 
    xmlRegexpPtr       contModel;	/* the validating regexp */
 
#else
 
    void	      *contModel;
 
#endif
 
};
 

	
 

	
 
/**
 
 * XML_LOCAL_NAMESPACE:
 
 *
 
 * A namespace declaration node.
 
 */
 
#define XML_LOCAL_NAMESPACE XML_NAMESPACE_DECL
 
typedef xmlElementType xmlNsType;
 

	
 
/**
 
 * xmlNs:
 
 *
 
 * An XML namespace.
 
 * Note that prefix == NULL is valid, it defines the default namespace
 
 * within the subtree (until overridden).
 
 *
 
 * xmlNsType is unified with xmlElementType.
 
 */
 

	
 
typedef struct _xmlNs xmlNs;
 
typedef xmlNs *xmlNsPtr;
 
struct _xmlNs {
 
    struct _xmlNs  *next;	/* next Ns link for this node  */
 
    xmlNsType      type;	/* global or local */
 
    const xmlChar *href;	/* URL for the namespace */
 
    const xmlChar *prefix;	/* prefix for the namespace */
 
    void           *_private;   /* application data */
 
    struct _xmlDoc *context;		/* normally an xmlDoc */
 
};
 

	
 
/**
 
 * xmlDtd:
 
 *
 
 * An XML DTD, as defined by <!DOCTYPE ... There is actually one for
 
 * the internal subset and for the external subset.
 
 */
 
typedef struct _xmlDtd xmlDtd;
 
typedef xmlDtd *xmlDtdPtr;
 
struct _xmlDtd {
 
    void           *_private;	/* application data */
 
    xmlElementType  type;       /* XML_DTD_NODE, must be second ! */
 
    const xmlChar *name;	/* Name of the DTD */
 
    struct _xmlNode *children;	/* the value of the property link */
 
    struct _xmlNode *last;	/* last child link */
 
    struct _xmlDoc  *parent;	/* child->parent link */
 
    struct _xmlNode *next;	/* next sibling link  */
 
    struct _xmlNode *prev;	/* previous sibling link  */
 
    struct _xmlDoc  *doc;	/* the containing document */
 

	
 
    /* End of common part */
 
    void          *notations;   /* Hash table for notations if any */
 
    void          *elements;    /* Hash table for elements if any */
 
    void          *attributes;  /* Hash table for attributes if any */
 
    void          *entities;    /* Hash table for entities if any */
 
    const xmlChar *ExternalID;	/* External identifier for PUBLIC DTD */
 
    const xmlChar *SystemID;	/* URI for a SYSTEM or PUBLIC DTD */
 
    void          *pentities;   /* Hash table for param entities if any */
 
};
 

	
 
/**
 
 * xmlAttr:
 
 *
 
 * An attribute on an XML node.
 
 */
 
typedef struct _xmlAttr xmlAttr;
 
typedef xmlAttr *xmlAttrPtr;
 
struct _xmlAttr {
 
    void           *_private;	/* application data */
 
    xmlElementType   type;      /* XML_ATTRIBUTE_NODE, must be second ! */
 
    const xmlChar   *name;      /* the name of the property */
 
    struct _xmlNode *children;	/* the value of the property */
 
    struct _xmlNode *last;	/* NULL */
 
    struct _xmlNode *parent;	/* child->parent link */
 
    struct _xmlAttr *next;	/* next sibling link  */
 
    struct _xmlAttr *prev;	/* previous sibling link  */
 
    struct _xmlDoc  *doc;	/* the containing document */
 
    xmlNs           *ns;        /* pointer to the associated namespace */
 
    xmlAttributeType atype;     /* the attribute type if validating */
 
    void            *psvi;	/* for type/PSVI informations */
 
};
 

	
 
/**
 
 * xmlID:
 
 *
 
 * An XML ID instance.
 
 */
 

	
 
typedef struct _xmlID xmlID;
 
typedef xmlID *xmlIDPtr;
 
struct _xmlID {
 
    struct _xmlID    *next;	/* next ID */
 
    const xmlChar    *value;	/* The ID name */
 
    xmlAttrPtr        attr;	/* The attribute holding it */
 
    const xmlChar    *name;	/* The attribute if attr is not available */
 
    int               lineno;	/* The line number if attr is not available */
 
    struct _xmlDoc   *doc;	/* The document holding the ID */
 
};
 

	
 
/**
 
 * xmlRef:
 
 *
 
 * An XML IDREF instance.
 
 */
 

	
 
typedef struct _xmlRef xmlRef;
 
typedef xmlRef *xmlRefPtr;
 
struct _xmlRef {
 
    struct _xmlRef    *next;	/* next Ref */
 
    const xmlChar     *value;	/* The Ref name */
 
    xmlAttrPtr        attr;	/* The attribute holding it */
 
    const xmlChar    *name;	/* The attribute if attr is not available */
 
    int               lineno;	/* The line number if attr is not available */
 
};
 

	
 
/**
 
 * xmlNode:
 
 *
 
 * A node in an XML tree.
 
 */
 
typedef struct _xmlNode xmlNode;
 
typedef xmlNode *xmlNodePtr;
 
struct _xmlNode {
 
    void           *_private;	/* application data */
 
    xmlElementType   type;	/* type number, must be second ! */
 
    const xmlChar   *name;      /* the name of the node, or the entity */
 
    struct _xmlNode *children;	/* parent->childs link */
 
    struct _xmlNode *last;	/* last child link */
 
    struct _xmlNode *parent;	/* child->parent link */
 
    struct _xmlNode *next;	/* next sibling link  */
 
    struct _xmlNode *prev;	/* previous sibling link  */
 
    struct _xmlDoc  *doc;	/* the containing document */
 

	
 
    /* End of common part */
 
    xmlNs           *ns;        /* pointer to the associated namespace */
 
    xmlChar         *content;   /* the content */
 
    struct _xmlAttr *properties;/* properties list */
 
    xmlNs           *nsDef;     /* namespace definitions on this node */
 
    void            *psvi;	/* for type/PSVI informations */
 
    unsigned short   line;	/* line number */
 
    unsigned short   extra;	/* extra data for XPath/XSLT */
 
};
 

	
 
/**
 
 * XML_GET_CONTENT:
 
 *
 
 * Macro to extract the content pointer of a node.
 
 */
 
#define XML_GET_CONTENT(n)					\
 
    ((n)->type == XML_ELEMENT_NODE ? NULL : (n)->content)
 

	
 
/**
 
 * XML_GET_LINE:
 
 *
 
 * Macro to extract the line number of an element node. 
 
 */
 
#define XML_GET_LINE(n)						\
 
    (xmlGetLineNo(n))
 

	
 
/**
 
 * xmlDocProperty
 
 *
 
 * Set of properties of the document as found by the parser
 
 * Some of them are linked to similary named xmlParserOption
 
 */
 
typedef enum {
 
    XML_DOC_WELLFORMED		= 1<<0, /* document is XML well formed */
 
    XML_DOC_NSVALID		= 1<<1, /* document is Namespace valid */
 
    XML_DOC_OLD10		= 1<<2, /* parsed with old XML-1.0 parser */
 
    XML_DOC_DTDVALID		= 1<<3, /* DTD validation was successful */
 
    XML_DOC_XINCLUDE		= 1<<4, /* XInclude substitution was done */
 
    XML_DOC_USERBUILT		= 1<<5, /* Document was built using the API
 
                                           and not by parsing an instance */
 
    XML_DOC_INTERNAL		= 1<<6, /* built for internal processing */
 
    XML_DOC_HTML		= 1<<7  /* parsed or built HTML document */
 
} xmlDocProperties;
 

	
 
/**
 
 * xmlDoc:
 
 *
 
 * An XML document.
 
 */
 
typedef struct _xmlDoc xmlDoc;
 
typedef xmlDoc *xmlDocPtr;
 
struct _xmlDoc {
 
    void           *_private;	/* application data */
 
    xmlElementType  type;       /* XML_DOCUMENT_NODE, must be second ! */
 
    char           *name;	/* name/filename/URI of the document */
 
    struct _xmlNode *children;	/* the document tree */
 
    struct _xmlNode *last;	/* last child link */
 
    struct _xmlNode *parent;	/* child->parent link */
 
    struct _xmlNode *next;	/* next sibling link  */
 
    struct _xmlNode *prev;	/* previous sibling link  */
 
    struct _xmlDoc  *doc;	/* autoreference to itself */
 

	
 
    /* End of common part */
 
    int             compression;/* level of zlib compression */
 
    int             standalone; /* standalone document (no external refs) 
 
				     1 if standalone="yes"
 
				     0 if standalone="no"
 
				    -1 if there is no XML declaration
 
				    -2 if there is an XML declaration, but no
 
					standalone attribute was specified */
 
    struct _xmlDtd  *intSubset;	/* the document internal subset */
 
    struct _xmlDtd  *extSubset;	/* the document external subset */
 
    struct _xmlNs   *oldNs;	/* Global namespace, the old way */
 
    const xmlChar  *version;	/* the XML version string */
 
    const xmlChar  *encoding;   /* external initial encoding, if any */
 
    void           *ids;        /* Hash table for ID attributes if any */
 
    void           *refs;       /* Hash table for IDREFs attributes if any */
 
    const xmlChar  *URL;	/* The URI for that document */
 
    int             charset;    /* encoding of the in-memory content
 
				   actually an xmlCharEncoding */
 
    struct _xmlDict *dict;      /* dict used to allocate names or NULL */
 
    void           *psvi;	/* for type/PSVI informations */
 
    int             parseFlags;	/* set of xmlParserOption used to parse the
 
				   document */
 
    int             properties;	/* set of xmlDocProperties for this document
 
				   set at the end of parsing */
 
};
 

	
 

	
 
typedef struct _xmlDOMWrapCtxt xmlDOMWrapCtxt;
 
typedef xmlDOMWrapCtxt *xmlDOMWrapCtxtPtr;
 

	
 
/**
 
 * xmlDOMWrapAcquireNsFunction:
 
 * @ctxt:  a DOM wrapper context
 
 * @node:  the context node (element or attribute) 
 
 * @nsName:  the requested namespace name
 
 * @nsPrefix:  the requested namespace prefix 
 
 *
 
 * A function called to acquire namespaces (xmlNs) from the wrapper.
 
 *
 
 * Returns an xmlNsPtr or NULL in case of an error.
 
 */
 
typedef xmlNsPtr (*xmlDOMWrapAcquireNsFunction) (xmlDOMWrapCtxtPtr ctxt,
 
						 xmlNodePtr node,
 
						 const xmlChar *nsName,
 
						 const xmlChar *nsPrefix);
 

	
 
/**
 
 * xmlDOMWrapCtxt:
 
 *
 
 * Context for DOM wrapper-operations.
 
 */
 
struct _xmlDOMWrapCtxt {
 
    void * _private;
 
    /*
 
    * The type of this context, just in case we need specialized
 
    * contexts in the future.
 
    */
 
    int type;
 
    /*
 
    * Internal namespace map used for various operations.
 
    */
 
    void * namespaceMap;
 
    /*
 
    * Use this one to acquire an xmlNsPtr intended for node->ns.
 
    * (Note that this is not intended for elem->nsDef).
 
    */
 
    xmlDOMWrapAcquireNsFunction getNsForNodeFunc;
 
};
 

	
 
/**
 
 * xmlChildrenNode:
 
 *
 
 * Macro for compatibility naming layer with libxml1. Maps
 
 * to "children."
 
 */
 
#ifndef xmlChildrenNode
 
#define xmlChildrenNode children
 
#endif
 

	
 
/**
 
 * xmlRootNode:
 
 *
 
 * Macro for compatibility naming layer with libxml1. Maps 
 
 * to "children".
 
 */
 
#ifndef xmlRootNode
 
#define xmlRootNode children
 
#endif
 

	
 
/*
 
 * Variables.
 
 */
 

	
 
/*
 
 * Some helper functions
 
 */
 
#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_XPATH_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) || defined(LIBXML_DEBUG_ENABLED) || defined (LIBXML_HTML_ENABLED) || defined(LIBXML_SAX1_ENABLED) || defined(LIBXML_HTML_ENABLED) || defined(LIBXML_WRITER_ENABLED) || defined(LIBXML_DOCB_ENABLED)
 
XMLPUBFUN int XMLCALL
 
		xmlValidateNCName	(const xmlChar *value,
 
					 int space);
 
#endif
 

	
 
#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED)
 
XMLPUBFUN int XMLCALL		
 
		xmlValidateQName	(const xmlChar *value,
 
					 int space);
 
XMLPUBFUN int XMLCALL		
 
		xmlValidateName		(const xmlChar *value,
 
					 int space);
 
XMLPUBFUN int XMLCALL		
 
		xmlValidateNMToken	(const xmlChar *value,
 
					 int space);
 
#endif
 

	
 
XMLPUBFUN xmlChar * XMLCALL	
 
		xmlBuildQName		(const xmlChar *ncname,
 
					 const xmlChar *prefix,
 
					 xmlChar *memory,
 
					 int len);
 
XMLPUBFUN xmlChar * XMLCALL	
 
		xmlSplitQName2		(const xmlChar *name,
 
					 xmlChar **prefix);
 
XMLPUBFUN const xmlChar * XMLCALL	
 
		xmlSplitQName3		(const xmlChar *name,
 
					 int *len);
 

	
 
/*
 
 * Handling Buffers.
 
 */
 

	
 
XMLPUBFUN void XMLCALL		
 
		xmlSetBufferAllocationScheme(xmlBufferAllocationScheme scheme);
 
XMLPUBFUN xmlBufferAllocationScheme XMLCALL	 
 
		xmlGetBufferAllocationScheme(void);
 

	
 
XMLPUBFUN xmlBufferPtr XMLCALL	
 
		xmlBufferCreate		(void);
 
XMLPUBFUN xmlBufferPtr XMLCALL	
 
		xmlBufferCreateSize	(size_t size);
 
XMLPUBFUN xmlBufferPtr XMLCALL	
 
		xmlBufferCreateStatic	(void *mem,
 
					 size_t size);
 
XMLPUBFUN int XMLCALL		
 
		xmlBufferResize		(xmlBufferPtr buf,
 
					 unsigned int size);
 
XMLPUBFUN void XMLCALL		
 
		xmlBufferFree		(xmlBufferPtr buf);
 
XMLPUBFUN int XMLCALL		
 
		xmlBufferDump		(FILE *file,
 
					 xmlBufferPtr buf);
 
XMLPUBFUN int XMLCALL		
 
		xmlBufferAdd		(xmlBufferPtr buf,
 
					 const xmlChar *str,
 
					 int len);
 
XMLPUBFUN int XMLCALL		
 
		xmlBufferAddHead	(xmlBufferPtr buf,
 
					 const xmlChar *str,
 
					 int len);
 
XMLPUBFUN int XMLCALL		
 
		xmlBufferCat		(xmlBufferPtr buf,
 
					 const xmlChar *str);
 
XMLPUBFUN int XMLCALL	
 
		xmlBufferCCat		(xmlBufferPtr buf,
 
					 const char *str);
 
XMLPUBFUN int XMLCALL		
 
		xmlBufferShrink		(xmlBufferPtr buf,
 
					 unsigned int len);
 
XMLPUBFUN int XMLCALL		
 
		xmlBufferGrow		(xmlBufferPtr buf,
 
					 unsigned int len);
 
XMLPUBFUN void XMLCALL		
 
		xmlBufferEmpty		(xmlBufferPtr buf);
 
XMLPUBFUN const xmlChar* XMLCALL	
 
		xmlBufferContent	(const xmlBufferPtr buf);
 
XMLPUBFUN void XMLCALL		
 
		xmlBufferSetAllocationScheme(xmlBufferPtr buf,
 
					 xmlBufferAllocationScheme scheme);
 
XMLPUBFUN int XMLCALL		
 
		xmlBufferLength		(const xmlBufferPtr buf);
 

	
 
/*
 
 * Creating/freeing new structures.
 
 */
 
XMLPUBFUN xmlDtdPtr XMLCALL	
 
		xmlCreateIntSubset	(xmlDocPtr doc,
 
					 const xmlChar *name,
 
					 const xmlChar *ExternalID,
 
					 const xmlChar *SystemID);
 
XMLPUBFUN xmlDtdPtr XMLCALL	
 
		xmlNewDtd		(xmlDocPtr doc,
 
					 const xmlChar *name,
 
					 const xmlChar *ExternalID,
 
					 const xmlChar *SystemID);
 
XMLPUBFUN xmlDtdPtr XMLCALL	
 
		xmlGetIntSubset		(xmlDocPtr doc);
 
XMLPUBFUN void XMLCALL		
 
		xmlFreeDtd		(xmlDtdPtr cur);
 
#ifdef LIBXML_LEGACY_ENABLED
 
XMLPUBFUN xmlNsPtr XMLCALL	
 
		xmlNewGlobalNs		(xmlDocPtr doc,
 
					 const xmlChar *href,
 
					 const xmlChar *prefix);
 
#endif /* LIBXML_LEGACY_ENABLED */
 
XMLPUBFUN xmlNsPtr XMLCALL	
 
		xmlNewNs		(xmlNodePtr node,
 
					 const xmlChar *href,
 
					 const xmlChar *prefix);
 
XMLPUBFUN void XMLCALL		
 
		xmlFreeNs		(xmlNsPtr cur);
 
XMLPUBFUN void XMLCALL		
 
		xmlFreeNsList		(xmlNsPtr cur);
 
XMLPUBFUN xmlDocPtr XMLCALL 	
 
		xmlNewDoc		(const xmlChar *version);
 
XMLPUBFUN void XMLCALL		
 
		xmlFreeDoc		(xmlDocPtr cur);
 
XMLPUBFUN xmlAttrPtr XMLCALL	
 
		xmlNewDocProp		(xmlDocPtr doc,
 
					 const xmlChar *name,
 
					 const xmlChar *value);
 
#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_HTML_ENABLED) || \
 
    defined(LIBXML_SCHEMAS_ENABLED)
 
XMLPUBFUN xmlAttrPtr XMLCALL	
 
		xmlNewProp		(xmlNodePtr node,
 
					 const xmlChar *name,
 
					 const xmlChar *value);
 
#endif
 
XMLPUBFUN xmlAttrPtr XMLCALL	
 
		xmlNewNsProp		(xmlNodePtr node,
 
					 xmlNsPtr ns,
 
					 const xmlChar *name,
 
					 const xmlChar *value);
 
XMLPUBFUN xmlAttrPtr XMLCALL	
 
		xmlNewNsPropEatName	(xmlNodePtr node,
 
					 xmlNsPtr ns,
 
					 xmlChar *name,
 
					 const xmlChar *value);
 
XMLPUBFUN void XMLCALL		
 
		xmlFreePropList		(xmlAttrPtr cur);
 
XMLPUBFUN void XMLCALL		
 
		xmlFreeProp		(xmlAttrPtr cur);
 
XMLPUBFUN xmlAttrPtr XMLCALL	
 
		xmlCopyProp		(xmlNodePtr target,
 
					 xmlAttrPtr cur);
 
XMLPUBFUN xmlAttrPtr XMLCALL	
 
		xmlCopyPropList		(xmlNodePtr target,
 
					 xmlAttrPtr cur);
 
#ifdef LIBXML_TREE_ENABLED
 
XMLPUBFUN xmlDtdPtr XMLCALL	
 
		xmlCopyDtd		(xmlDtdPtr dtd);
 
#endif /* LIBXML_TREE_ENABLED */
 
#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED)
 
XMLPUBFUN xmlDocPtr XMLCALL	
 
		xmlCopyDoc		(xmlDocPtr doc,
 
					 int recursive);
 
#endif /* defined(LIBXML_TREE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) */
 
/*
 
 * Creating new nodes.
 
 */
 
XMLPUBFUN xmlNodePtr XMLCALL	
 
		xmlNewDocNode		(xmlDocPtr doc,
 
					 xmlNsPtr ns,
 
					 const xmlChar *name,
 
					 const xmlChar *content);
 
XMLPUBFUN xmlNodePtr XMLCALL	
 
		xmlNewDocNodeEatName	(xmlDocPtr doc,
 
					 xmlNsPtr ns,
 
					 xmlChar *name,
 
					 const xmlChar *content);
 
XMLPUBFUN xmlNodePtr XMLCALL	
 
		xmlNewNode		(xmlNsPtr ns,
 
					 const xmlChar *name);
 
XMLPUBFUN xmlNodePtr XMLCALL	
 
		xmlNewNodeEatName	(xmlNsPtr ns,
 
					 xmlChar *name);
 
#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED)
 
XMLPUBFUN xmlNodePtr XMLCALL	
 
		xmlNewChild		(xmlNodePtr parent,
 
					 xmlNsPtr ns,
 
					 const xmlChar *name,
 
					 const xmlChar *content);
 
#endif
 
XMLPUBFUN xmlNodePtr XMLCALL	
 
		xmlNewDocText		(xmlDocPtr doc,
 
					 const xmlChar *content);
 
XMLPUBFUN xmlNodePtr XMLCALL	
 
		xmlNewText		(const xmlChar *content);
 
XMLPUBFUN xmlNodePtr XMLCALL	
 
		xmlNewDocPI		(xmlDocPtr doc,
 
					 const xmlChar *name,
 
					 const xmlChar *content);
 
XMLPUBFUN xmlNodePtr XMLCALL	
 
		xmlNewPI		(const xmlChar *name,
 
					 const xmlChar *content);
 
XMLPUBFUN xmlNodePtr XMLCALL	
 
		xmlNewDocTextLen	(xmlDocPtr doc,
 
					 const xmlChar *content,
 
					 int len);
 
XMLPUBFUN xmlNodePtr XMLCALL	
 
		xmlNewTextLen		(const xmlChar *content,
 
					 int len);
 
XMLPUBFUN xmlNodePtr XMLCALL	
 
		xmlNewDocComment	(xmlDocPtr doc,
 
					 const xmlChar *content);
 
XMLPUBFUN xmlNodePtr XMLCALL	
 
		xmlNewComment		(const xmlChar *content);
 
XMLPUBFUN xmlNodePtr XMLCALL	
 
		xmlNewCDataBlock	(xmlDocPtr doc,
 
					 const xmlChar *content,
 
					 int len);
 
XMLPUBFUN xmlNodePtr XMLCALL	
 
		xmlNewCharRef		(xmlDocPtr doc,
 
					 const xmlChar *name);
 
XMLPUBFUN xmlNodePtr XMLCALL	
 
		xmlNewReference		(xmlDocPtr doc,
 
					 const xmlChar *name);
 
XMLPUBFUN xmlNodePtr XMLCALL	
 
		xmlCopyNode		(const xmlNodePtr node,
 
					 int recursive);
 
XMLPUBFUN xmlNodePtr XMLCALL	
 
		xmlDocCopyNode		(const xmlNodePtr node,
 
					 xmlDocPtr doc,
 
					 int recursive);
 
XMLPUBFUN xmlNodePtr XMLCALL	
 
		xmlDocCopyNodeList	(xmlDocPtr doc,
 
					 const xmlNodePtr node);
 
XMLPUBFUN xmlNodePtr XMLCALL	
 
		xmlCopyNodeList		(const xmlNodePtr node);
 
#ifdef LIBXML_TREE_ENABLED
 
XMLPUBFUN xmlNodePtr XMLCALL	
 
		xmlNewTextChild		(xmlNodePtr parent,
 
					 xmlNsPtr ns,
 
					 const xmlChar *name,
 
					 const xmlChar *content);
 
XMLPUBFUN xmlNodePtr XMLCALL	
 
		xmlNewDocRawNode	(xmlDocPtr doc,
 
					 xmlNsPtr ns,
 
					 const xmlChar *name,
 
					 const xmlChar *content);
 
XMLPUBFUN xmlNodePtr XMLCALL	
 
		xmlNewDocFragment	(xmlDocPtr doc);
 
#endif /* LIBXML_TREE_ENABLED */
 

	
 
/*
 
 * Navigating.
 
 */
 
XMLPUBFUN long XMLCALL		
 
		xmlGetLineNo		(xmlNodePtr node);
 
#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_DEBUG_ENABLED)
 
XMLPUBFUN xmlChar * XMLCALL	
 
		xmlGetNodePath		(xmlNodePtr node);
 
#endif /* defined(LIBXML_TREE_ENABLED) || defined(LIBXML_DEBUG_ENABLED) */
 
XMLPUBFUN xmlNodePtr XMLCALL	
 
		xmlDocGetRootElement	(xmlDocPtr doc);
 
XMLPUBFUN xmlNodePtr XMLCALL	
 
		xmlGetLastChild		(xmlNodePtr parent);
 
XMLPUBFUN int XMLCALL		
 
		xmlNodeIsText		(xmlNodePtr node);
 
XMLPUBFUN int XMLCALL		
 
		xmlIsBlankNode		(xmlNodePtr node);
 

	
 
/*
 
 * Changing the structure.
 
 */
 
#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_WRITER_ENABLED)
 
XMLPUBFUN xmlNodePtr XMLCALL	
 
		xmlDocSetRootElement	(xmlDocPtr doc,
 
					 xmlNodePtr root);
 
#endif /* defined(LIBXML_TREE_ENABLED) || defined(LIBXML_WRITER_ENABLED) */
 
#ifdef LIBXML_TREE_ENABLED
 
XMLPUBFUN void XMLCALL		
 
		xmlNodeSetName		(xmlNodePtr cur,
 
					 const xmlChar *name);
 
#endif /* LIBXML_TREE_ENABLED */
 
XMLPUBFUN xmlNodePtr XMLCALL	
 
		xmlAddChild		(xmlNodePtr parent,
 
					 xmlNodePtr cur);
 
XMLPUBFUN xmlNodePtr XMLCALL	
 
		xmlAddChildList		(xmlNodePtr parent,
 
					 xmlNodePtr cur);
 
#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_WRITER_ENABLED)
 
XMLPUBFUN xmlNodePtr XMLCALL	
 
		xmlReplaceNode		(xmlNodePtr old,
 
					 xmlNodePtr cur);
 
#endif /* defined(LIBXML_TREE_ENABLED) || defined(LIBXML_WRITER_ENABLED) */
 
#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_HTML_ENABLED) || \
 
    defined(LIBXML_SCHEMAS_ENABLED)
 
XMLPUBFUN xmlNodePtr XMLCALL	
 
		xmlAddPrevSibling	(xmlNodePtr cur,
 
					 xmlNodePtr elem);
 
#endif /* LIBXML_TREE_ENABLED || LIBXML_HTML_ENABLED || LIBXML_SCHEMAS_ENABLED */
 
XMLPUBFUN xmlNodePtr XMLCALL	
 
		xmlAddSibling		(xmlNodePtr cur,
 
					 xmlNodePtr elem);
 
XMLPUBFUN xmlNodePtr XMLCALL	
 
		xmlAddNextSibling	(xmlNodePtr cur,
 
					 xmlNodePtr elem);
 
XMLPUBFUN void XMLCALL		
 
		xmlUnlinkNode		(xmlNodePtr cur);
 
XMLPUBFUN xmlNodePtr XMLCALL	
 
		xmlTextMerge		(xmlNodePtr first,
 
					 xmlNodePtr second);
 
XMLPUBFUN int XMLCALL		
 
		xmlTextConcat		(xmlNodePtr node,
 
					 const xmlChar *content,
 
					 int len);
 
XMLPUBFUN void XMLCALL		
 
		xmlFreeNodeList		(xmlNodePtr cur);
 
XMLPUBFUN void XMLCALL		
 
		xmlFreeNode		(xmlNodePtr cur);
 
XMLPUBFUN void XMLCALL		
 
		xmlSetTreeDoc		(xmlNodePtr tree,
 
					 xmlDocPtr doc);
 
XMLPUBFUN void XMLCALL		
 
		xmlSetListDoc		(xmlNodePtr list,
 
					 xmlDocPtr doc);
 
/*
 
 * Namespaces.
 
 */
 
XMLPUBFUN xmlNsPtr XMLCALL	
 
		xmlSearchNs		(xmlDocPtr doc,
 
					 xmlNodePtr node,
 
					 const xmlChar *nameSpace);
 
XMLPUBFUN xmlNsPtr XMLCALL	
 
		xmlSearchNsByHref	(xmlDocPtr doc,
 
					 xmlNodePtr node,
 
					 const xmlChar *href);
 
#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_XPATH_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED)
 
XMLPUBFUN xmlNsPtr * XMLCALL	
 
		xmlGetNsList		(xmlDocPtr doc,
 
					 xmlNodePtr node);
 
#endif /* defined(LIBXML_TREE_ENABLED) || defined(LIBXML_XPATH_ENABLED) */
 

	
 
XMLPUBFUN void XMLCALL		
 
		xmlSetNs		(xmlNodePtr node,
 
					 xmlNsPtr ns);
 
XMLPUBFUN xmlNsPtr XMLCALL	
 
		xmlCopyNamespace	(xmlNsPtr cur);
 
XMLPUBFUN xmlNsPtr XMLCALL	
 
		xmlCopyNamespaceList	(xmlNsPtr cur);
 

	
 
/*
 
 * Changing the content.
 
 */
 
#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_XINCLUDE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) || defined(LIBXML_HTML_ENABLED)
 
XMLPUBFUN xmlAttrPtr XMLCALL	
 
		xmlSetProp		(xmlNodePtr node,
 
					 const xmlChar *name,
 
					 const xmlChar *value);
 
XMLPUBFUN xmlAttrPtr XMLCALL	
 
		xmlSetNsProp		(xmlNodePtr node,
 
					 xmlNsPtr ns,
 
					 const xmlChar *name,
 
					 const xmlChar *value);
 
#endif /* defined(LIBXML_TREE_ENABLED) || defined(LIBXML_XINCLUDE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) || defined(LIBXML_HTML_ENABLED) */
 
XMLPUBFUN xmlChar * XMLCALL	
 
		xmlGetNoNsProp		(xmlNodePtr node,
 
					 const xmlChar *name);
 
XMLPUBFUN xmlChar * XMLCALL	
 
		xmlGetProp		(xmlNodePtr node,
 
					 const xmlChar *name);
 
XMLPUBFUN xmlAttrPtr XMLCALL	
 
		xmlHasProp		(xmlNodePtr node,
 
					 const xmlChar *name);
 
XMLPUBFUN xmlAttrPtr XMLCALL	
 
		xmlHasNsProp		(xmlNodePtr node,
 
					 const xmlChar *name,
 
					 const xmlChar *nameSpace);
 
XMLPUBFUN xmlChar * XMLCALL	
 
		xmlGetNsProp		(xmlNodePtr node,
 
					 const xmlChar *name,
 
					 const xmlChar *nameSpace);
 
XMLPUBFUN xmlNodePtr XMLCALL	
 
		xmlStringGetNodeList	(xmlDocPtr doc,
 
					 const xmlChar *value);
 
XMLPUBFUN xmlNodePtr XMLCALL	
 
		xmlStringLenGetNodeList	(xmlDocPtr doc,
 
					 const xmlChar *value,
 
					 int len);
 
XMLPUBFUN xmlChar * XMLCALL	
 
		xmlNodeListGetString	(xmlDocPtr doc,
 
					 xmlNodePtr list,
 
					 int inLine);
 
#ifdef LIBXML_TREE_ENABLED
 
XMLPUBFUN xmlChar * XMLCALL	
 
		xmlNodeListGetRawString	(xmlDocPtr doc,
 
					 xmlNodePtr list,
 
					 int inLine);
 
#endif /* LIBXML_TREE_ENABLED */
 
XMLPUBFUN void XMLCALL		
 
		xmlNodeSetContent	(xmlNodePtr cur,
 
					 const xmlChar *content);
 
#ifdef LIBXML_TREE_ENABLED
 
XMLPUBFUN void XMLCALL		
 
		xmlNodeSetContentLen	(xmlNodePtr cur,
 
					 const xmlChar *content,
 
					 int len);
 
#endif /* LIBXML_TREE_ENABLED */
 
XMLPUBFUN void XMLCALL		
 
		xmlNodeAddContent	(xmlNodePtr cur,
 
					 const xmlChar *content);
 
XMLPUBFUN void XMLCALL		
 
		xmlNodeAddContentLen	(xmlNodePtr cur,
 
					 const xmlChar *content,
 
					 int len);
 
XMLPUBFUN xmlChar * XMLCALL	
 
		xmlNodeGetContent	(xmlNodePtr cur);
 
XMLPUBFUN int XMLCALL
 
		xmlNodeBufGetContent	(xmlBufferPtr buffer,
 
					 xmlNodePtr cur);
 
XMLPUBFUN xmlChar * XMLCALL	
 
		xmlNodeGetLang		(xmlNodePtr cur);
 
XMLPUBFUN int XMLCALL		
 
		xmlNodeGetSpacePreserve	(xmlNodePtr cur);
 
#ifdef LIBXML_TREE_ENABLED
 
XMLPUBFUN void XMLCALL		
 
		xmlNodeSetLang		(xmlNodePtr cur,
 
					 const xmlChar *lang);
 
XMLPUBFUN void XMLCALL		
 
		xmlNodeSetSpacePreserve (xmlNodePtr cur,
 
					 int val);
 
#endif /* LIBXML_TREE_ENABLED */
 
XMLPUBFUN xmlChar * XMLCALL	
 
		xmlNodeGetBase		(xmlDocPtr doc,
 
					 xmlNodePtr cur);
 
#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_XINCLUDE_ENABLED)
 
XMLPUBFUN void XMLCALL		
 
		xmlNodeSetBase		(xmlNodePtr cur,
 
					 const xmlChar *uri);
 
#endif
 

	
 
/*
 
 * Removing content.
 
 */
 
XMLPUBFUN int XMLCALL		
 
		xmlRemoveProp		(xmlAttrPtr cur);
 
#if defined(LIBXML_TREE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED)
 
XMLPUBFUN int XMLCALL		
 
		xmlUnsetNsProp		(xmlNodePtr node,
 
					 xmlNsPtr ns,
 
					 const xmlChar *name);
 
XMLPUBFUN int XMLCALL		
 
		xmlUnsetProp		(xmlNodePtr node,
 
					 const xmlChar *name);
 
#endif /* defined(LIBXML_TREE_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED) */
 

	
 
/*
 
 * Internal, don't use.
 
 */
 
XMLPUBFUN void XMLCALL		
 
		xmlBufferWriteCHAR	(xmlBufferPtr buf,
 
					 const xmlChar *string);
 
XMLPUBFUN void XMLCALL		
 
		xmlBufferWriteChar	(xmlBufferPtr buf,
 
					 const char *string);
 
XMLPUBFUN void XMLCALL		
 
		xmlBufferWriteQuotedString(xmlBufferPtr buf,
 
					 const xmlChar *string);
 

	
 
#ifdef LIBXML_OUTPUT_ENABLED
 
XMLPUBFUN void xmlAttrSerializeTxtContent(xmlBufferPtr buf,
 
					 xmlDocPtr doc,
 
					 xmlAttrPtr attr,
 
					 const xmlChar *string);
 
#endif /* LIBXML_OUTPUT_ENABLED */
 

	
 
#ifdef LIBXML_TREE_ENABLED
 
/*
 
 * Namespace handling.
 
 */
 
XMLPUBFUN int XMLCALL		
 
		xmlReconciliateNs	(xmlDocPtr doc,
 
					 xmlNodePtr tree);
 
#endif
 

	
 
#ifdef LIBXML_OUTPUT_ENABLED
 
/*
 
 * Saving.
 
 */
 
XMLPUBFUN void XMLCALL		
 
		xmlDocDumpFormatMemory	(xmlDocPtr cur,
 
					 xmlChar **mem,
 
					 int *size,
 
					 int format);
 
XMLPUBFUN void XMLCALL		
 
		xmlDocDumpMemory	(xmlDocPtr cur,
 
					 xmlChar **mem,
 
					 int *size);
 
XMLPUBFUN void XMLCALL		
 
		xmlDocDumpMemoryEnc	(xmlDocPtr out_doc,
 
					 xmlChar **doc_txt_ptr,
 
					 int * doc_txt_len,
 
					 const char *txt_encoding);
 
XMLPUBFUN void XMLCALL		
 
		xmlDocDumpFormatMemoryEnc(xmlDocPtr out_doc,
 
					 xmlChar **doc_txt_ptr,
 
					 int * doc_txt_len,
 
					 const char *txt_encoding,
 
					 int format);
 
XMLPUBFUN int XMLCALL		
 
		xmlDocFormatDump	(FILE *f,
 
					 xmlDocPtr cur,
 
					 int format);
 
XMLPUBFUN int XMLCALL	
 
		xmlDocDump		(FILE *f,
 
					 xmlDocPtr cur);
 
XMLPUBFUN void XMLCALL		
 
		xmlElemDump		(FILE *f,
 
					 xmlDocPtr doc,
 
					 xmlNodePtr cur);
 
XMLPUBFUN int XMLCALL		
 
		xmlSaveFile		(const char *filename,
 
					 xmlDocPtr cur);
 
XMLPUBFUN int XMLCALL		
 
		xmlSaveFormatFile	(const char *filename,
 
					 xmlDocPtr cur,
 
					 int format);
 
XMLPUBFUN int XMLCALL		
 
		xmlNodeDump		(xmlBufferPtr buf,
 
					 xmlDocPtr doc,
 
					 xmlNodePtr cur,
 
					 int level,
 
					 int format);
 

	
 
XMLPUBFUN int XMLCALL		
 
		xmlSaveFileTo		(xmlOutputBufferPtr buf,
 
					 xmlDocPtr cur,
 
					 const char *encoding);
 
XMLPUBFUN int XMLCALL             
 
		xmlSaveFormatFileTo     (xmlOutputBufferPtr buf,
 
					 xmlDocPtr cur,
 
				         const char *encoding,
 
				         int format);
 
XMLPUBFUN void XMLCALL		
 
		xmlNodeDumpOutput	(xmlOutputBufferPtr buf,
 
					 xmlDocPtr doc,
 
					 xmlNodePtr cur,
 
					 int level,
 
					 int format,
 
					 const char *encoding);
 

	
 
XMLPUBFUN int XMLCALL		
 
		xmlSaveFormatFileEnc    (const char *filename,
 
					 xmlDocPtr cur,
 
					 const char *encoding,
 
					 int format);
 

	
 
XMLPUBFUN int XMLCALL		
 
		xmlSaveFileEnc		(const char *filename,
 
					 xmlDocPtr cur,
 
					 const char *encoding);
 

	
 
#endif /* LIBXML_OUTPUT_ENABLED */
 
/*
 
 * XHTML
 
 */
 
XMLPUBFUN int XMLCALL		
 
		xmlIsXHTML		(const xmlChar *systemID,
 
					 const xmlChar *publicID);
 

	
 
/*
 
 * Compression.
 
 */
 
XMLPUBFUN int XMLCALL		
 
		xmlGetDocCompressMode	(xmlDocPtr doc);
 
XMLPUBFUN void XMLCALL		
 
		xmlSetDocCompressMode	(xmlDocPtr doc,
 
					 int mode);
 
XMLPUBFUN int XMLCALL		
 
		xmlGetCompressMode	(void);
 
XMLPUBFUN void XMLCALL		
 
		xmlSetCompressMode	(int mode);
 

	
 
/*
 
* DOM-wrapper helper functions.
 
*/
 
XMLPUBFUN xmlDOMWrapCtxtPtr XMLCALL
 
		xmlDOMWrapNewCtxt	(void);
 
XMLPUBFUN void XMLCALL
 
		xmlDOMWrapFreeCtxt	(xmlDOMWrapCtxtPtr ctxt);
 
XMLPUBFUN int XMLCALL
 
	    xmlDOMWrapReconcileNamespaces(xmlDOMWrapCtxtPtr ctxt,
 
					 xmlNodePtr elem,
 
					 int options);
 
XMLPUBFUN int XMLCALL
 
	    xmlDOMWrapAdoptNode		(xmlDOMWrapCtxtPtr ctxt,
 
					 xmlDocPtr sourceDoc,
 
					 xmlNodePtr node,
 
					 xmlDocPtr destDoc,		    
 
					 xmlNodePtr destParent,
 
					 int options);
 
XMLPUBFUN int XMLCALL
 
	    xmlDOMWrapRemoveNode	(xmlDOMWrapCtxtPtr ctxt,
 
					 xmlDocPtr doc,
 
					 xmlNodePtr node,
 
					 int options);
 
XMLPUBFUN int XMLCALL
 
	    xmlDOMWrapCloneNode		(xmlDOMWrapCtxtPtr ctxt,
 
					 xmlDocPtr sourceDoc,
 
					 xmlNodePtr node,
 
					 xmlNodePtr *clonedNode,
 
					 xmlDocPtr destDoc,
 
					 xmlNodePtr destParent,
 
					 int deep,
 
					 int options);
 

	
 
#ifdef LIBXML_TREE_ENABLED
 
/*
 
 * 5 interfaces from DOM ElementTraversal, but different in entities
 
 * traversal.
 
 */
 
XMLPUBFUN unsigned long XMLCALL
 
            xmlChildElementCount        (xmlNodePtr parent);
 
XMLPUBFUN xmlNodePtr XMLCALL
 
            xmlNextElementSibling       (xmlNodePtr node);
 
XMLPUBFUN xmlNodePtr XMLCALL
 
            xmlFirstElementChild        (xmlNodePtr parent);
 
XMLPUBFUN xmlNodePtr XMLCALL
 
            xmlLastElementChild         (xmlNodePtr parent);
 
XMLPUBFUN xmlNodePtr XMLCALL
 
            xmlPreviousElementSibling   (xmlNodePtr node);
 
#endif
 
#ifdef __cplusplus
 
}
 
#endif
 
#ifndef __XML_PARSER_H__
 
#include <libxml/xmlmemory.h>
 
#endif
 

	
 
#endif /* __XML_TREE_H__ */
 

	
lib/libxml2/include/libxml/uri.h
Show inline comments
 
new file 100755
 
/**
 
 * Summary: library of generic URI related routines
 
 * Description: library of generic URI related routines
 
 *              Implements RFC 2396
 
 *
 
 * Copy: See Copyright for the status of this software.
 
 *
 
 * Author: Daniel Veillard
 
 */
 

	
 
#ifndef __XML_URI_H__
 
#define __XML_URI_H__
 

	
 
#include <libxml/xmlversion.h>
 
#include <libxml/tree.h>
 

	
 
#ifdef __cplusplus
 
extern "C" {
 
#endif
 

	
 
/**
 
 * xmlURI:
 
 *
 
 * A parsed URI reference. This is a struct containing the various fields
 
 * as described in RFC 2396 but separated for further processing.
 
 *
 
 * Note: query is a deprecated field which is incorrectly unescaped.
 
 * query_raw takes precedence over query if the former is set.
 
 * See: http://mail.gnome.org/archives/xml/2007-April/thread.html#00127
 
 */
 
typedef struct _xmlURI xmlURI;
 
typedef xmlURI *xmlURIPtr;
 
struct _xmlURI {
 
    char *scheme;	/* the URI scheme */
 
    char *opaque;	/* opaque part */
 
    char *authority;	/* the authority part */
 
    char *server;	/* the server part */
 
    char *user;		/* the user part */
 
    int port;		/* the port number */
 
    char *path;		/* the path string */
 
    char *query;	/* the query string (deprecated - use with caution) */
 
    char *fragment;	/* the fragment identifier */
 
    int  cleanup;	/* parsing potentially unclean URI */
 
    char *query_raw;	/* the query string (as it appears in the URI) */
 
};
 

	
 
/*
 
 * This function is in tree.h:
 
 * xmlChar *	xmlNodeGetBase	(xmlDocPtr doc,
 
 *                               xmlNodePtr cur);
 
 */
 
XMLPUBFUN xmlURIPtr XMLCALL
 
		xmlCreateURI		(void);
 
XMLPUBFUN xmlChar * XMLCALL
 
		xmlBuildURI		(const xmlChar *URI,
 
					 const xmlChar *base);
 
XMLPUBFUN xmlChar * XMLCALL
 
		xmlBuildRelativeURI	(const xmlChar *URI,
 
					 const xmlChar *base);
 
XMLPUBFUN xmlURIPtr XMLCALL
 
		xmlParseURI		(const char *str);
 
XMLPUBFUN xmlURIPtr XMLCALL
 
		xmlParseURIRaw		(const char *str,
 
					 int raw);
 
XMLPUBFUN int XMLCALL
 
		xmlParseURIReference	(xmlURIPtr uri,
 
					 const char *str);
 
XMLPUBFUN xmlChar * XMLCALL
 
		xmlSaveUri		(xmlURIPtr uri);
 
XMLPUBFUN void XMLCALL
 
		xmlPrintURI		(FILE *stream,
 
					 xmlURIPtr uri);
 
XMLPUBFUN xmlChar * XMLCALL
 
		xmlURIEscapeStr         (const xmlChar *str,
 
					 const xmlChar *list);
 
XMLPUBFUN char * XMLCALL
 
		xmlURIUnescapeString	(const char *str,
 
					 int len,
 
					 char *target);
 
XMLPUBFUN int XMLCALL
 
		xmlNormalizeURIPath	(char *path);
 
XMLPUBFUN xmlChar * XMLCALL
 
		xmlURIEscape		(const xmlChar *str);
 
XMLPUBFUN void XMLCALL
 
		xmlFreeURI		(xmlURIPtr uri);
 
XMLPUBFUN xmlChar* XMLCALL
 
		xmlCanonicPath		(const xmlChar *path);
 
XMLPUBFUN xmlChar* XMLCALL
 
		xmlPathToURI		(const xmlChar *path);
 

	
 
#ifdef __cplusplus
 
}
 
#endif
 
#endif /* __XML_URI_H__ */
lib/libxml2/include/libxml/valid.h
Show inline comments
 
new file 100755
 
/*
 
 * Summary: The DTD validation
 
 * Description: API for the DTD handling and the validity checking
 
 *
 
 * Copy: See Copyright for the status of this software.
 
 *
 
 * Author: Daniel Veillard
 
 */
 

	
 

	
 
#ifndef __XML_VALID_H__
 
#define __XML_VALID_H__
 

	
 
#include <libxml/xmlversion.h>
 
#include <libxml/xmlerror.h>
 
#include <libxml/tree.h>
 
#include <libxml/list.h>
 
#include <libxml/xmlautomata.h>
 
#include <libxml/xmlregexp.h>
 

	
 
#ifdef __cplusplus
 
extern "C" {
 
#endif
 

	
 
/*
 
 * Validation state added for non-determinist content model.
 
 */
 
typedef struct _xmlValidState xmlValidState;
 
typedef xmlValidState *xmlValidStatePtr;
 

	
 
/**
 
 * xmlValidityErrorFunc:
 
 * @ctx:  usually an xmlValidCtxtPtr to a validity error context,
 
 *        but comes from ctxt->userData (which normally contains such
 
 *        a pointer); ctxt->userData can be changed by the user.
 
 * @msg:  the string to format *printf like vararg
 
 * @...:  remaining arguments to the format
 
 *
 
 * Callback called when a validity error is found. This is a message
 
 * oriented function similar to an *printf function.
 
 */
 
typedef void (XMLCDECL *xmlValidityErrorFunc) (void *ctx,
 
			     const char *msg,
 
			     ...) LIBXML_ATTR_FORMAT(2,3);
 

	
 
/**
 
 * xmlValidityWarningFunc:
 
 * @ctx:  usually an xmlValidCtxtPtr to a validity error context,
 
 *        but comes from ctxt->userData (which normally contains such
 
 *        a pointer); ctxt->userData can be changed by the user.
 
 * @msg:  the string to format *printf like vararg
 
 * @...:  remaining arguments to the format
 
 *
 
 * Callback called when a validity warning is found. This is a message
 
 * oriented function similar to an *printf function.
 
 */
 
typedef void (XMLCDECL *xmlValidityWarningFunc) (void *ctx,
 
			       const char *msg,
 
			       ...) LIBXML_ATTR_FORMAT(2,3);
 

	
 
#ifdef IN_LIBXML
 
/**
 
 * XML_CTXT_FINISH_DTD_0:
 
 *
 
 * Special value for finishDtd field when embedded in an xmlParserCtxt
 
 */
 
#define XML_CTXT_FINISH_DTD_0 0xabcd1234
 
/**
 
 * XML_CTXT_FINISH_DTD_1:
 
 *
 
 * Special value for finishDtd field when embedded in an xmlParserCtxt
 
 */
 
#define XML_CTXT_FINISH_DTD_1 0xabcd1235
 
#endif
 

	
 
/*
 
 * xmlValidCtxt:
 
 * An xmlValidCtxt is used for error reporting when validating.
 
 */
 
typedef struct _xmlValidCtxt xmlValidCtxt;
 
typedef xmlValidCtxt *xmlValidCtxtPtr;
 
struct _xmlValidCtxt {
 
    void *userData;			/* user specific data block */
 
    xmlValidityErrorFunc error;		/* the callback in case of errors */
 
    xmlValidityWarningFunc warning;	/* the callback in case of warning */
 

	
 
    /* Node analysis stack used when validating within entities */
 
    xmlNodePtr         node;          /* Current parsed Node */
 
    int                nodeNr;        /* Depth of the parsing stack */
 
    int                nodeMax;       /* Max depth of the parsing stack */
 
    xmlNodePtr        *nodeTab;       /* array of nodes */
 

	
 
    unsigned int     finishDtd;       /* finished validating the Dtd ? */
 
    xmlDocPtr              doc;       /* the document */
 
    int                  valid;       /* temporary validity check result */
 

	
 
    /* state state used for non-determinist content validation */
 
    xmlValidState     *vstate;        /* current state */
 
    int                vstateNr;      /* Depth of the validation stack */
 
    int                vstateMax;     /* Max depth of the validation stack */
 
    xmlValidState     *vstateTab;     /* array of validation states */
 

	
 
#ifdef LIBXML_REGEXP_ENABLED
 
    xmlAutomataPtr            am;     /* the automata */
 
    xmlAutomataStatePtr    state;     /* used to build the automata */
 
#else
 
    void                     *am;
 
    void                  *state;
 
#endif
 
};
 

	
 
/*
 
 * ALL notation declarations are stored in a table.
 
 * There is one table per DTD.
 
 */
 

	
 
typedef struct _xmlHashTable xmlNotationTable;
 
typedef xmlNotationTable *xmlNotationTablePtr;
 

	
 
/*
 
 * ALL element declarations are stored in a table.
 
 * There is one table per DTD.
 
 */
 

	
 
typedef struct _xmlHashTable xmlElementTable;
 
typedef xmlElementTable *xmlElementTablePtr;
 

	
 
/*
 
 * ALL attribute declarations are stored in a table.
 
 * There is one table per DTD.
 
 */
 

	
 
typedef struct _xmlHashTable xmlAttributeTable;
 
typedef xmlAttributeTable *xmlAttributeTablePtr;
 

	
 
/*
 
 * ALL IDs attributes are stored in a table.
 
 * There is one table per document.
 
 */
 

	
 
typedef struct _xmlHashTable xmlIDTable;
 
typedef xmlIDTable *xmlIDTablePtr;
 

	
 
/*
 
 * ALL Refs attributes are stored in a table.
 
 * There is one table per document.
 
 */
 

	
 
typedef struct _xmlHashTable xmlRefTable;
 
typedef xmlRefTable *xmlRefTablePtr;
 

	
 
/* Notation */
 
XMLPUBFUN xmlNotationPtr XMLCALL	    
 
		xmlAddNotationDecl	(xmlValidCtxtPtr ctxt,
 
					 xmlDtdPtr dtd,
 
					 const xmlChar *name,
 
					 const xmlChar *PublicID,
 
					 const xmlChar *SystemID);
 
#ifdef LIBXML_TREE_ENABLED
 
XMLPUBFUN xmlNotationTablePtr XMLCALL 
 
		xmlCopyNotationTable	(xmlNotationTablePtr table);
 
#endif /* LIBXML_TREE_ENABLED */
 
XMLPUBFUN void XMLCALL		    
 
		xmlFreeNotationTable	(xmlNotationTablePtr table);
 
#ifdef LIBXML_OUTPUT_ENABLED
 
XMLPUBFUN void XMLCALL		    
 
		xmlDumpNotationDecl	(xmlBufferPtr buf,
 
					 xmlNotationPtr nota);
 
XMLPUBFUN void XMLCALL		    
 
		xmlDumpNotationTable	(xmlBufferPtr buf,
 
					 xmlNotationTablePtr table);
 
#endif /* LIBXML_OUTPUT_ENABLED */
 

	
 
/* Element Content */
 
/* the non Doc version are being deprecated */
 
XMLPUBFUN xmlElementContentPtr XMLCALL 
 
		xmlNewElementContent	(const xmlChar *name,
 
					 xmlElementContentType type);
 
XMLPUBFUN xmlElementContentPtr XMLCALL 
 
		xmlCopyElementContent	(xmlElementContentPtr content);
 
XMLPUBFUN void XMLCALL		     
 
		xmlFreeElementContent	(xmlElementContentPtr cur);
 
/* the new versions with doc argument */
 
XMLPUBFUN xmlElementContentPtr XMLCALL 
 
		xmlNewDocElementContent	(xmlDocPtr doc,
 
					 const xmlChar *name,
 
					 xmlElementContentType type);
 
XMLPUBFUN xmlElementContentPtr XMLCALL 
 
		xmlCopyDocElementContent(xmlDocPtr doc,
 
					 xmlElementContentPtr content);
 
XMLPUBFUN void XMLCALL		     
 
		xmlFreeDocElementContent(xmlDocPtr doc,
 
					 xmlElementContentPtr cur);
 
XMLPUBFUN void XMLCALL		     
 
		xmlSnprintfElementContent(char *buf,
 
					 int size,
 
	                                 xmlElementContentPtr content,
 
					 int englob);
 
#ifdef LIBXML_OUTPUT_ENABLED
 
/* DEPRECATED */
 
XMLPUBFUN void XMLCALL		     
 
		xmlSprintfElementContent(char *buf,
 
	                                 xmlElementContentPtr content,
 
					 int englob);
 
#endif /* LIBXML_OUTPUT_ENABLED */
 
/* DEPRECATED */
 

	
 
/* Element */
 
XMLPUBFUN xmlElementPtr XMLCALL	   
 
		xmlAddElementDecl	(xmlValidCtxtPtr ctxt,
 
					 xmlDtdPtr dtd,
 
					 const xmlChar *name,
 
					 xmlElementTypeVal type,
 
					 xmlElementContentPtr content);
 
#ifdef LIBXML_TREE_ENABLED
 
XMLPUBFUN xmlElementTablePtr XMLCALL 
 
		xmlCopyElementTable	(xmlElementTablePtr table);
 
#endif /* LIBXML_TREE_ENABLED */
 
XMLPUBFUN void XMLCALL		   
 
		xmlFreeElementTable	(xmlElementTablePtr table);
 
#ifdef LIBXML_OUTPUT_ENABLED
 
XMLPUBFUN void XMLCALL		   
 
		xmlDumpElementTable	(xmlBufferPtr buf,
 
					 xmlElementTablePtr table);
 
XMLPUBFUN void XMLCALL		   
 
		xmlDumpElementDecl	(xmlBufferPtr buf,
 
					 xmlElementPtr elem);
 
#endif /* LIBXML_OUTPUT_ENABLED */
 

	
 
/* Enumeration */
 
XMLPUBFUN xmlEnumerationPtr XMLCALL 
 
		xmlCreateEnumeration	(const xmlChar *name);
 
XMLPUBFUN void XMLCALL		   
 
		xmlFreeEnumeration	(xmlEnumerationPtr cur);
 
#ifdef LIBXML_TREE_ENABLED
 
XMLPUBFUN xmlEnumerationPtr XMLCALL  
 
		xmlCopyEnumeration	(xmlEnumerationPtr cur);
 
#endif /* LIBXML_TREE_ENABLED */
 

	
 
/* Attribute */
 
XMLPUBFUN xmlAttributePtr XMLCALL	    
 
		xmlAddAttributeDecl	(xmlValidCtxtPtr ctxt,
 
					 xmlDtdPtr dtd,
 
					 const xmlChar *elem,
 
					 const xmlChar *name,
 
					 const xmlChar *ns,
 
					 xmlAttributeType type,
 
					 xmlAttributeDefault def,
 
					 const xmlChar *defaultValue,
 
					 xmlEnumerationPtr tree);
 
#ifdef LIBXML_TREE_ENABLED
 
XMLPUBFUN xmlAttributeTablePtr XMLCALL 
 
		xmlCopyAttributeTable  (xmlAttributeTablePtr table);
 
#endif /* LIBXML_TREE_ENABLED */
 
XMLPUBFUN void XMLCALL		     
 
		xmlFreeAttributeTable  (xmlAttributeTablePtr table);
 
#ifdef LIBXML_OUTPUT_ENABLED
 
XMLPUBFUN void XMLCALL		     
 
		xmlDumpAttributeTable  (xmlBufferPtr buf,
 
					xmlAttributeTablePtr table);
 
XMLPUBFUN void XMLCALL		     
 
		xmlDumpAttributeDecl   (xmlBufferPtr buf,
 
					xmlAttributePtr attr);
 
#endif /* LIBXML_OUTPUT_ENABLED */
 

	
 
/* IDs */
 
XMLPUBFUN xmlIDPtr XMLCALL	
 
		xmlAddID	       (xmlValidCtxtPtr ctxt,
 
					xmlDocPtr doc,
 
					const xmlChar *value,
 
					xmlAttrPtr attr);
 
XMLPUBFUN void XMLCALL		
 
		xmlFreeIDTable	       (xmlIDTablePtr table);
 
XMLPUBFUN xmlAttrPtr XMLCALL	
 
		xmlGetID	       (xmlDocPtr doc,
 
					const xmlChar *ID);
 
XMLPUBFUN int XMLCALL		
 
		xmlIsID		       (xmlDocPtr doc,
 
					xmlNodePtr elem,
 
					xmlAttrPtr attr);
 
XMLPUBFUN int XMLCALL		
 
		xmlRemoveID	       (xmlDocPtr doc, 
 
					xmlAttrPtr attr);
 

	
 
/* IDREFs */
 
XMLPUBFUN xmlRefPtr XMLCALL	
 
		xmlAddRef	       (xmlValidCtxtPtr ctxt,
 
					xmlDocPtr doc,
 
					const xmlChar *value,
 
					xmlAttrPtr attr);
 
XMLPUBFUN void XMLCALL		
 
		xmlFreeRefTable	       (xmlRefTablePtr table);
 
XMLPUBFUN int XMLCALL		
 
		xmlIsRef	       (xmlDocPtr doc,
 
					xmlNodePtr elem,
 
					xmlAttrPtr attr);
 
XMLPUBFUN int XMLCALL		
 
		xmlRemoveRef	       (xmlDocPtr doc, 
 
					xmlAttrPtr attr);
 
XMLPUBFUN xmlListPtr XMLCALL	
 
		xmlGetRefs	       (xmlDocPtr doc,
 
					const xmlChar *ID);
 

	
 
/**
 
 * The public function calls related to validity checking.
 
 */
 
#ifdef LIBXML_VALID_ENABLED
 
/* Allocate/Release Validation Contexts */
 
XMLPUBFUN xmlValidCtxtPtr XMLCALL	    
 
		xmlNewValidCtxt(void);
 
XMLPUBFUN void XMLCALL		    
 
		xmlFreeValidCtxt(xmlValidCtxtPtr);
 

	
 
XMLPUBFUN int XMLCALL		
 
		xmlValidateRoot		(xmlValidCtxtPtr ctxt,
 
					 xmlDocPtr doc);
 
XMLPUBFUN int XMLCALL		
 
		xmlValidateElementDecl	(xmlValidCtxtPtr ctxt,
 
					 xmlDocPtr doc,
 
		                         xmlElementPtr elem);
 
XMLPUBFUN xmlChar * XMLCALL	
 
		xmlValidNormalizeAttributeValue(xmlDocPtr doc,
 
					 xmlNodePtr elem,
 
					 const xmlChar *name,
 
					 const xmlChar *value);
 
XMLPUBFUN xmlChar * XMLCALL	
 
		xmlValidCtxtNormalizeAttributeValue(xmlValidCtxtPtr ctxt,
 
					 xmlDocPtr doc,
 
					 xmlNodePtr elem,
 
					 const xmlChar *name,
 
					 const xmlChar *value);
 
XMLPUBFUN int XMLCALL		
 
		xmlValidateAttributeDecl(xmlValidCtxtPtr ctxt,
 
					 xmlDocPtr doc,
 
		                         xmlAttributePtr attr);
 
XMLPUBFUN int XMLCALL		
 
		xmlValidateAttributeValue(xmlAttributeType type,
 
					 const xmlChar *value);
 
XMLPUBFUN int XMLCALL		
 
		xmlValidateNotationDecl	(xmlValidCtxtPtr ctxt,
 
					 xmlDocPtr doc,
 
		                         xmlNotationPtr nota);
 
XMLPUBFUN int XMLCALL		
 
		xmlValidateDtd		(xmlValidCtxtPtr ctxt,
 
					 xmlDocPtr doc,
 
					 xmlDtdPtr dtd);
 
XMLPUBFUN int XMLCALL		
 
		xmlValidateDtdFinal	(xmlValidCtxtPtr ctxt,
 
					 xmlDocPtr doc);
 
XMLPUBFUN int XMLCALL		
 
		xmlValidateDocument	(xmlValidCtxtPtr ctxt,
 
					 xmlDocPtr doc);
 
XMLPUBFUN int XMLCALL		
 
		xmlValidateElement	(xmlValidCtxtPtr ctxt,
 
					 xmlDocPtr doc,
 
					 xmlNodePtr elem);
 
XMLPUBFUN int XMLCALL		
 
		xmlValidateOneElement	(xmlValidCtxtPtr ctxt,
 
					 xmlDocPtr doc,
 
		                         xmlNodePtr elem);
 
XMLPUBFUN int XMLCALL	
 
		xmlValidateOneAttribute	(xmlValidCtxtPtr ctxt,
 
					 xmlDocPtr doc,
 
					 xmlNodePtr	elem,
 
					 xmlAttrPtr attr,
 
					 const xmlChar *value);
 
XMLPUBFUN int XMLCALL		
 
		xmlValidateOneNamespace	(xmlValidCtxtPtr ctxt,
 
					 xmlDocPtr doc,
 
					 xmlNodePtr elem,
 
					 const xmlChar *prefix,
 
					 xmlNsPtr ns,
 
					 const xmlChar *value);
 
XMLPUBFUN int XMLCALL		
 
		xmlValidateDocumentFinal(xmlValidCtxtPtr ctxt,
 
					 xmlDocPtr doc);
 
#endif /* LIBXML_VALID_ENABLED */
 

	
 
#if defined(LIBXML_VALID_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED)
 
XMLPUBFUN int XMLCALL		
 
		xmlValidateNotationUse	(xmlValidCtxtPtr ctxt,
 
					 xmlDocPtr doc,
 
					 const xmlChar *notationName);
 
#endif /* LIBXML_VALID_ENABLED or LIBXML_SCHEMAS_ENABLED */
 

	
 
XMLPUBFUN int XMLCALL		
 
		xmlIsMixedElement	(xmlDocPtr doc,
 
					 const xmlChar *name);
 
XMLPUBFUN xmlAttributePtr XMLCALL	
 
		xmlGetDtdAttrDesc	(xmlDtdPtr dtd,
 
					 const xmlChar *elem,
 
					 const xmlChar *name);
 
XMLPUBFUN xmlAttributePtr XMLCALL	
 
		xmlGetDtdQAttrDesc	(xmlDtdPtr dtd,
 
					 const xmlChar *elem,
 
					 const xmlChar *name,
 
					 const xmlChar *prefix);
 
XMLPUBFUN xmlNotationPtr XMLCALL	
 
		xmlGetDtdNotationDesc	(xmlDtdPtr dtd,
 
					 const xmlChar *name);
 
XMLPUBFUN xmlElementPtr XMLCALL	
 
		xmlGetDtdQElementDesc	(xmlDtdPtr dtd,
 
					 const xmlChar *name,
 
					 const xmlChar *prefix);
 
XMLPUBFUN xmlElementPtr XMLCALL	
 
		xmlGetDtdElementDesc	(xmlDtdPtr dtd,
 
					 const xmlChar *name);
 

	
 
#ifdef LIBXML_VALID_ENABLED
 

	
 
XMLPUBFUN int XMLCALL		
 
		xmlValidGetPotentialChildren(xmlElementContent *ctree,
 
					 const xmlChar **names,
 
					 int *len,
 
					 int max);
 

	
 
XMLPUBFUN int XMLCALL		
 
		xmlValidGetValidElements(xmlNode *prev,
 
					 xmlNode *next,
 
					 const xmlChar **names,
 
					 int max);
 
XMLPUBFUN int XMLCALL		
 
		xmlValidateNameValue	(const xmlChar *value);
 
XMLPUBFUN int XMLCALL		
 
		xmlValidateNamesValue	(const xmlChar *value);
 
XMLPUBFUN int XMLCALL		
 
		xmlValidateNmtokenValue	(const xmlChar *value);
 
XMLPUBFUN int XMLCALL		
 
		xmlValidateNmtokensValue(const xmlChar *value);
 

	
 
#ifdef LIBXML_REGEXP_ENABLED
 
/*
 
 * Validation based on the regexp support
 
 */
 
XMLPUBFUN int XMLCALL		
 
		xmlValidBuildContentModel(xmlValidCtxtPtr ctxt,
 
					 xmlElementPtr elem);
 

	
 
XMLPUBFUN int XMLCALL		
 
		xmlValidatePushElement	(xmlValidCtxtPtr ctxt,
 
					 xmlDocPtr doc,
 
					 xmlNodePtr elem,
 
					 const xmlChar *qname);
 
XMLPUBFUN int XMLCALL		
 
		xmlValidatePushCData	(xmlValidCtxtPtr ctxt,
 
					 const xmlChar *data,
 
					 int len);
 
XMLPUBFUN int XMLCALL		
 
		xmlValidatePopElement	(xmlValidCtxtPtr ctxt,
 
					 xmlDocPtr doc,
 
					 xmlNodePtr elem,
 
					 const xmlChar *qname);
 
#endif /* LIBXML_REGEXP_ENABLED */
 
#endif /* LIBXML_VALID_ENABLED */
 
#ifdef __cplusplus
 
}
 
#endif
 
#endif /* __XML_VALID_H__ */
lib/libxml2/include/libxml/xinclude.h
Show inline comments
 
new file 100755
 
/*
 
 * Summary: implementation of XInclude
 
 * Description: API to handle XInclude processing,
 
 * implements the
 
 * World Wide Web Consortium Last Call Working Draft 10 November 2003
 
 * http://www.w3.org/TR/2003/WD-xinclude-20031110
 
 *
 
 * Copy: See Copyright for the status of this software.
 
 *
 
 * Author: Daniel Veillard
 
 */
 

	
 
#ifndef __XML_XINCLUDE_H__
 
#define __XML_XINCLUDE_H__
 

	
 
#include <libxml/xmlversion.h>
 
#include <libxml/tree.h>
 

	
 
#ifdef LIBXML_XINCLUDE_ENABLED
 

	
 
#ifdef __cplusplus
 
extern "C" {
 
#endif
 

	
 
/**
 
 * XINCLUDE_NS:
 
 *
 
 * Macro defining the Xinclude namespace: http://www.w3.org/2003/XInclude
 
 */
 
#define XINCLUDE_NS (const xmlChar *) "http://www.w3.org/2003/XInclude"
 
/**
 
 * XINCLUDE_OLD_NS:
 
 *
 
 * Macro defining the draft Xinclude namespace: http://www.w3.org/2001/XInclude
 
 */
 
#define XINCLUDE_OLD_NS (const xmlChar *) "http://www.w3.org/2001/XInclude"
 
/**
 
 * XINCLUDE_NODE:
 
 *
 
 * Macro defining "include"
 
 */
 
#define XINCLUDE_NODE (const xmlChar *) "include"
 
/**
 
 * XINCLUDE_FALLBACK:
 
 *
 
 * Macro defining "fallback"
 
 */
 
#define XINCLUDE_FALLBACK (const xmlChar *) "fallback"
 
/**
 
 * XINCLUDE_HREF:
 
 *
 
 * Macro defining "href"
 
 */
 
#define XINCLUDE_HREF (const xmlChar *) "href"
 
/**
 
 * XINCLUDE_PARSE:
 
 *
 
 * Macro defining "parse"
 
 */
 
#define XINCLUDE_PARSE (const xmlChar *) "parse"
 
/**
 
 * XINCLUDE_PARSE_XML:
 
 *
 
 * Macro defining "xml"
 
 */
 
#define XINCLUDE_PARSE_XML (const xmlChar *) "xml"
 
/**
 
 * XINCLUDE_PARSE_TEXT:
 
 *
 
 * Macro defining "text"
 
 */
 
#define XINCLUDE_PARSE_TEXT (const xmlChar *) "text"
 
/**
 
 * XINCLUDE_PARSE_ENCODING:
 
 *
 
 * Macro defining "encoding"
 
 */
 
#define XINCLUDE_PARSE_ENCODING (const xmlChar *) "encoding"
 
/**
 
 * XINCLUDE_PARSE_XPOINTER:
 
 *
 
 * Macro defining "xpointer"
 
 */
 
#define XINCLUDE_PARSE_XPOINTER (const xmlChar *) "xpointer"
 

	
 
typedef struct _xmlXIncludeCtxt xmlXIncludeCtxt;
 
typedef xmlXIncludeCtxt *xmlXIncludeCtxtPtr;
 

	
 
/*
 
 * standalone processing
 
 */
 
XMLPUBFUN int XMLCALL
 
		xmlXIncludeProcess	(xmlDocPtr doc);
 
XMLPUBFUN int XMLCALL
 
		xmlXIncludeProcessFlags	(xmlDocPtr doc,
 
					 int flags);
 
XMLPUBFUN int XMLCALL
 
		xmlXIncludeProcessFlagsData(xmlDocPtr doc,
 
					 int flags,
 
					 void *data);
 
XMLPUBFUN int XMLCALL
 
                xmlXIncludeProcessTreeFlagsData(xmlNodePtr tree,
 
                                         int flags,
 
                                         void *data);
 
XMLPUBFUN int XMLCALL
 
		xmlXIncludeProcessTree	(xmlNodePtr tree);
 
XMLPUBFUN int XMLCALL
 
		xmlXIncludeProcessTreeFlags(xmlNodePtr tree,
 
					 int flags);
 
/*
 
 * contextual processing
 
 */
 
XMLPUBFUN xmlXIncludeCtxtPtr XMLCALL
 
		xmlXIncludeNewContext	(xmlDocPtr doc);
 
XMLPUBFUN int XMLCALL
 
		xmlXIncludeSetFlags	(xmlXIncludeCtxtPtr ctxt,
 
					 int flags);
 
XMLPUBFUN void XMLCALL
 
		xmlXIncludeFreeContext	(xmlXIncludeCtxtPtr ctxt);
 
XMLPUBFUN int XMLCALL
 
		xmlXIncludeProcessNode	(xmlXIncludeCtxtPtr ctxt,
 
					 xmlNodePtr tree);
 
#ifdef __cplusplus
 
}
 
#endif
 

	
 
#endif /* LIBXML_XINCLUDE_ENABLED */
 

	
 
#endif /* __XML_XINCLUDE_H__ */
lib/libxml2/include/libxml/xlink.h
Show inline comments
 
new file 100755
 
/*
 
 * Summary: unfinished XLink detection module
 
 * Description: unfinished XLink detection module
 
 *
 
 * Copy: See Copyright for the status of this software.
 
 *
 
 * Author: Daniel Veillard
 
 */
 

	
 
#ifndef __XML_XLINK_H__
 
#define __XML_XLINK_H__
 

	
 
#include <libxml/xmlversion.h>
 
#include <libxml/tree.h>
 

	
 
#ifdef LIBXML_XPTR_ENABLED
 

	
 
#ifdef __cplusplus
 
extern "C" {
 
#endif
 

	
 
/**
 
 * Various defines for the various Link properties.
 
 *
 
 * NOTE: the link detection layer will try to resolve QName expansion
 
 *       of namespaces. If "foo" is the prefix for "http://foo.com/"
 
 *       then the link detection layer will expand role="foo:myrole"
 
 *       to "http://foo.com/:myrole".
 
 * NOTE: the link detection layer will expand URI-Refences found on
 
 *       href attributes by using the base mechanism if found.
 
 */
 
typedef xmlChar *xlinkHRef;
 
typedef xmlChar *xlinkRole;
 
typedef xmlChar *xlinkTitle;
 

	
 
typedef enum {
 
    XLINK_TYPE_NONE = 0,
 
    XLINK_TYPE_SIMPLE,
 
    XLINK_TYPE_EXTENDED,
 
    XLINK_TYPE_EXTENDED_SET
 
} xlinkType;
 

	
 
typedef enum {
 
    XLINK_SHOW_NONE = 0,
 
    XLINK_SHOW_NEW,
 
    XLINK_SHOW_EMBED,
 
    XLINK_SHOW_REPLACE
 
} xlinkShow;
 

	
 
typedef enum {
 
    XLINK_ACTUATE_NONE = 0,
 
    XLINK_ACTUATE_AUTO,
 
    XLINK_ACTUATE_ONREQUEST
 
} xlinkActuate;
 

	
 
/**
 
 * xlinkNodeDetectFunc:
 
 * @ctx:  user data pointer
 
 * @node:  the node to check
 
 * 
 
 * This is the prototype for the link detection routine.
 
 * It calls the default link detection callbacks upon link detection.
 
 */
 
typedef void (*xlinkNodeDetectFunc) (void *ctx, xmlNodePtr node);
 

	
 
/*
 
 * The link detection module interact with the upper layers using
 
 * a set of callback registered at parsing time.
 
 */
 

	
 
/**
 
 * xlinkSimpleLinkFunk:
 
 * @ctx:  user data pointer
 
 * @node:  the node carrying the link
 
 * @href:  the target of the link
 
 * @role:  the role string
 
 * @title:  the link title
 
 *
 
 * This is the prototype for a simple link detection callback.
 
 */
 
typedef void
 
(*xlinkSimpleLinkFunk)	(void *ctx,
 
			 xmlNodePtr node,
 
			 const xlinkHRef href,
 
			 const xlinkRole role,
 
			 const xlinkTitle title);
 

	
 
/**
 
 * xlinkExtendedLinkFunk:
 
 * @ctx:  user data pointer
 
 * @node:  the node carrying the link
 
 * @nbLocators: the number of locators detected on the link
 
 * @hrefs:  pointer to the array of locator hrefs
 
 * @roles:  pointer to the array of locator roles
 
 * @nbArcs: the number of arcs detected on the link
 
 * @from:  pointer to the array of source roles found on the arcs
 
 * @to:  pointer to the array of target roles found on the arcs
 
 * @show:  array of values for the show attributes found on the arcs
 
 * @actuate:  array of values for the actuate attributes found on the arcs
 
 * @nbTitles: the number of titles detected on the link
 
 * @title:  array of titles detected on the link
 
 * @langs:  array of xml:lang values for the titles
 
 *
 
 * This is the prototype for a extended link detection callback.
 
 */
 
typedef void
 
(*xlinkExtendedLinkFunk)(void *ctx,
 
			 xmlNodePtr node,
 
			 int nbLocators,
 
			 const xlinkHRef *hrefs,
 
			 const xlinkRole *roles,
 
			 int nbArcs,
 
			 const xlinkRole *from,
 
			 const xlinkRole *to,
 
			 xlinkShow *show,
 
			 xlinkActuate *actuate,
 
			 int nbTitles,
 
			 const xlinkTitle *titles,
 
			 const xmlChar **langs);
 

	
 
/**
 
 * xlinkExtendedLinkSetFunk:
 
 * @ctx:  user data pointer
 
 * @node:  the node carrying the link
 
 * @nbLocators: the number of locators detected on the link
 
 * @hrefs:  pointer to the array of locator hrefs
 
 * @roles:  pointer to the array of locator roles
 
 * @nbTitles: the number of titles detected on the link
 
 * @title:  array of titles detected on the link
 
 * @langs:  array of xml:lang values for the titles
 
 *
 
 * This is the prototype for a extended link set detection callback.
 
 */
 
typedef void
 
(*xlinkExtendedLinkSetFunk)	(void *ctx,
 
				 xmlNodePtr node,
 
				 int nbLocators,
 
				 const xlinkHRef *hrefs,
 
				 const xlinkRole *roles,
 
				 int nbTitles,
 
				 const xlinkTitle *titles,
 
				 const xmlChar **langs);
 

	
 
/**
 
 * This is the structure containing a set of Links detection callbacks.
 
 *
 
 * There is no default xlink callbacks, if one want to get link
 
 * recognition activated, those call backs must be provided before parsing.
 
 */
 
typedef struct _xlinkHandler xlinkHandler;
 
typedef xlinkHandler *xlinkHandlerPtr;
 
struct _xlinkHandler {
 
    xlinkSimpleLinkFunk simple;
 
    xlinkExtendedLinkFunk extended;
 
    xlinkExtendedLinkSetFunk set;
 
};
 

	
 
/*
 
 * The default detection routine, can be overridden, they call the default
 
 * detection callbacks. 
 
 */
 

	
 
XMLPUBFUN xlinkNodeDetectFunc XMLCALL	
 
		xlinkGetDefaultDetect	(void);
 
XMLPUBFUN void XMLCALL			
 
		xlinkSetDefaultDetect	(xlinkNodeDetectFunc func);
 

	
 
/*
 
 * Routines to set/get the default handlers.
 
 */
 
XMLPUBFUN xlinkHandlerPtr XMLCALL	
 
		xlinkGetDefaultHandler	(void);
 
XMLPUBFUN void XMLCALL		
 
		xlinkSetDefaultHandler	(xlinkHandlerPtr handler);
 

	
 
/*
 
 * Link detection module itself.
 
 */
 
XMLPUBFUN xlinkType XMLCALL	 
 
		xlinkIsLink		(xmlDocPtr doc,
 
					 xmlNodePtr node);
 

	
 
#ifdef __cplusplus
 
}
 
#endif
 

	
 
#endif /* LIBXML_XPTR_ENABLED */
 

	
 
#endif /* __XML_XLINK_H__ */
lib/libxml2/include/libxml/xmlIO.h
Show inline comments
 
new file 100755
 
/*
 
 * Summary: interface for the I/O interfaces used by the parser
 
 * Description: interface for the I/O interfaces used by the parser
 
 *
 
 * Copy: See Copyright for the status of this software.
 
 *
 
 * Author: Daniel Veillard
 
 */
 

	
 
#ifndef __XML_IO_H__
 
#define __XML_IO_H__
 

	
 
#include <stdio.h>
 
#include <libxml/xmlversion.h>
 

	
 
#ifdef __cplusplus
 
extern "C" {
 
#endif
 

	
 
/*
 
 * Those are the functions and datatypes for the parser input
 
 * I/O structures.
 
 */
 

	
 
/**
 
 * xmlInputMatchCallback:
 
 * @filename: the filename or URI
 
 *
 
 * Callback used in the I/O Input API to detect if the current handler 
 
 * can provide input fonctionnalities for this resource.
 
 *
 
 * Returns 1 if yes and 0 if another Input module should be used
 
 */
 
typedef int (XMLCALL *xmlInputMatchCallback) (char const *filename);
 
/**
 
 * xmlInputOpenCallback:
 
 * @filename: the filename or URI
 
 *
 
 * Callback used in the I/O Input API to open the resource
 
 *
 
 * Returns an Input context or NULL in case or error
 
 */
 
typedef void * (XMLCALL *xmlInputOpenCallback) (char const *filename);
 
/**
 
 * xmlInputReadCallback:
 
 * @context:  an Input context
 
 * @buffer:  the buffer to store data read
 
 * @len:  the length of the buffer in bytes
 
 *
 
 * Callback used in the I/O Input API to read the resource
 
 *
 
 * Returns the number of bytes read or -1 in case of error
 
 */
 
typedef int (XMLCALL *xmlInputReadCallback) (void * context, char * buffer, int len);
 
/**
 
 * xmlInputCloseCallback:
 
 * @context:  an Input context
 
 *
 
 * Callback used in the I/O Input API to close the resource
 
 *
 
 * Returns 0 or -1 in case of error
 
 */
 
typedef int (XMLCALL *xmlInputCloseCallback) (void * context);
 

	
 
#ifdef LIBXML_OUTPUT_ENABLED
 
/*
 
 * Those are the functions and datatypes for the library output
 
 * I/O structures.
 
 */
 

	
 
/**
 
 * xmlOutputMatchCallback:
 
 * @filename: the filename or URI
 
 *
 
 * Callback used in the I/O Output API to detect if the current handler 
 
 * can provide output fonctionnalities for this resource.
 
 *
 
 * Returns 1 if yes and 0 if another Output module should be used
 
 */
 
typedef int (XMLCALL *xmlOutputMatchCallback) (char const *filename);
 
/**
 
 * xmlOutputOpenCallback:
 
 * @filename: the filename or URI
 
 *
 
 * Callback used in the I/O Output API to open the resource
 
 *
 
 * Returns an Output context or NULL in case or error
 
 */
 
typedef void * (XMLCALL *xmlOutputOpenCallback) (char const *filename);
 
/**
 
 * xmlOutputWriteCallback:
 
 * @context:  an Output context
 
 * @buffer:  the buffer of data to write
 
 * @len:  the length of the buffer in bytes
 
 *
 
 * Callback used in the I/O Output API to write to the resource
 
 *
 
 * Returns the number of bytes written or -1 in case of error
 
 */
 
typedef int (XMLCALL *xmlOutputWriteCallback) (void * context, const char * buffer,
 
                                       int len);
 
/**
 
 * xmlOutputCloseCallback:
 
 * @context:  an Output context
 
 *
 
 * Callback used in the I/O Output API to close the resource
 
 *
 
 * Returns 0 or -1 in case of error
 
 */
 
typedef int (XMLCALL *xmlOutputCloseCallback) (void * context);
 
#endif /* LIBXML_OUTPUT_ENABLED */
 

	
 
#ifdef __cplusplus
 
}
 
#endif
 

	
 
#include <libxml/globals.h>
 
#include <libxml/tree.h>
 
#include <libxml/parser.h>
 
#include <libxml/encoding.h>
 

	
 
#ifdef __cplusplus
 
extern "C" {
 
#endif
 
struct _xmlParserInputBuffer {
 
    void*                  context;
 
    xmlInputReadCallback   readcallback;
 
    xmlInputCloseCallback  closecallback;
 
    
 
    xmlCharEncodingHandlerPtr encoder; /* I18N conversions to UTF-8 */
 
    
 
    xmlBufferPtr buffer;    /* Local buffer encoded in UTF-8 */
 
    xmlBufferPtr raw;       /* if encoder != NULL buffer for raw input */
 
    int	compressed;	    /* -1=unknown, 0=not compressed, 1=compressed */
 
    int error;
 
    unsigned long rawconsumed;/* amount consumed from raw */
 
};
 

	
 

	
 
#ifdef LIBXML_OUTPUT_ENABLED
 
struct _xmlOutputBuffer {
 
    void*                   context;
 
    xmlOutputWriteCallback  writecallback;
 
    xmlOutputCloseCallback  closecallback;
 
    
 
    xmlCharEncodingHandlerPtr encoder; /* I18N conversions to UTF-8 */
 
    
 
    xmlBufferPtr buffer;    /* Local buffer encoded in UTF-8 or ISOLatin */
 
    xmlBufferPtr conv;      /* if encoder != NULL buffer for output */
 
    int written;            /* total number of byte written */
 
    int error;
 
};
 
#endif /* LIBXML_OUTPUT_ENABLED */
 

	
 
/*
 
 * Interfaces for input
 
 */
 
XMLPUBFUN void XMLCALL	
 
	xmlCleanupInputCallbacks		(void);
 

	
 
XMLPUBFUN int XMLCALL
 
	xmlPopInputCallbacks			(void);
 

	
 
XMLPUBFUN void XMLCALL	
 
	xmlRegisterDefaultInputCallbacks	(void);
 
XMLPUBFUN xmlParserInputBufferPtr XMLCALL
 
	xmlAllocParserInputBuffer		(xmlCharEncoding enc);
 

	
 
XMLPUBFUN xmlParserInputBufferPtr XMLCALL
 
	xmlParserInputBufferCreateFilename	(const char *URI,
 
                                                 xmlCharEncoding enc);
 
XMLPUBFUN xmlParserInputBufferPtr XMLCALL
 
	xmlParserInputBufferCreateFile		(FILE *file,
 
                                                 xmlCharEncoding enc);
 
XMLPUBFUN xmlParserInputBufferPtr XMLCALL
 
	xmlParserInputBufferCreateFd		(int fd,
 
	                                         xmlCharEncoding enc);
 
XMLPUBFUN xmlParserInputBufferPtr XMLCALL
 
	xmlParserInputBufferCreateMem		(const char *mem, int size,
 
	                                         xmlCharEncoding enc);
 
XMLPUBFUN xmlParserInputBufferPtr XMLCALL
 
	xmlParserInputBufferCreateStatic	(const char *mem, int size,
 
	                                         xmlCharEncoding enc);
 
XMLPUBFUN xmlParserInputBufferPtr XMLCALL
 
	xmlParserInputBufferCreateIO		(xmlInputReadCallback   ioread,
 
						 xmlInputCloseCallback  ioclose,
 
						 void *ioctx,
 
	                                         xmlCharEncoding enc);
 
XMLPUBFUN int XMLCALL	
 
	xmlParserInputBufferRead		(xmlParserInputBufferPtr in,
 
						 int len);
 
XMLPUBFUN int XMLCALL	
 
	xmlParserInputBufferGrow		(xmlParserInputBufferPtr in,
 
						 int len);
 
XMLPUBFUN int XMLCALL	
 
	xmlParserInputBufferPush		(xmlParserInputBufferPtr in,
 
						 int len,
 
						 const char *buf);
 
XMLPUBFUN void XMLCALL	
 
	xmlFreeParserInputBuffer		(xmlParserInputBufferPtr in);
 
XMLPUBFUN char * XMLCALL	
 
	xmlParserGetDirectory			(const char *filename);
 

	
 
XMLPUBFUN int XMLCALL     
 
	xmlRegisterInputCallbacks		(xmlInputMatchCallback matchFunc,
 
						 xmlInputOpenCallback openFunc,
 
						 xmlInputReadCallback readFunc,
 
						 xmlInputCloseCallback closeFunc);
 

	
 
xmlParserInputBufferPtr
 
	__xmlParserInputBufferCreateFilename(const char *URI,
 
										xmlCharEncoding enc);
 

	
 
#ifdef LIBXML_OUTPUT_ENABLED
 
/*
 
 * Interfaces for output
 
 */
 
XMLPUBFUN void XMLCALL	
 
	xmlCleanupOutputCallbacks		(void);
 
XMLPUBFUN void XMLCALL	
 
	xmlRegisterDefaultOutputCallbacks(void);
 
XMLPUBFUN xmlOutputBufferPtr XMLCALL
 
	xmlAllocOutputBuffer		(xmlCharEncodingHandlerPtr encoder);
 

	
 
XMLPUBFUN xmlOutputBufferPtr XMLCALL
 
	xmlOutputBufferCreateFilename	(const char *URI,
 
					 xmlCharEncodingHandlerPtr encoder,
 
					 int compression);
 

	
 
XMLPUBFUN xmlOutputBufferPtr XMLCALL
 
	xmlOutputBufferCreateFile	(FILE *file,
 
					 xmlCharEncodingHandlerPtr encoder);
 

	
 
XMLPUBFUN xmlOutputBufferPtr XMLCALL
 
	xmlOutputBufferCreateBuffer	(xmlBufferPtr buffer,
 
					 xmlCharEncodingHandlerPtr encoder);
 

	
 
XMLPUBFUN xmlOutputBufferPtr XMLCALL
 
	xmlOutputBufferCreateFd		(int fd,
 
					 xmlCharEncodingHandlerPtr encoder);
 

	
 
XMLPUBFUN xmlOutputBufferPtr XMLCALL
 
	xmlOutputBufferCreateIO		(xmlOutputWriteCallback   iowrite,
 
					 xmlOutputCloseCallback  ioclose,
 
					 void *ioctx,
 
					 xmlCharEncodingHandlerPtr encoder);
 

	
 
XMLPUBFUN int XMLCALL	
 
	xmlOutputBufferWrite		(xmlOutputBufferPtr out,
 
					 int len,
 
					 const char *buf);
 
XMLPUBFUN int XMLCALL	
 
	xmlOutputBufferWriteString	(xmlOutputBufferPtr out,
 
					 const char *str);
 
XMLPUBFUN int XMLCALL	
 
	xmlOutputBufferWriteEscape	(xmlOutputBufferPtr out,
 
					 const xmlChar *str,
 
					 xmlCharEncodingOutputFunc escaping);
 

	
 
XMLPUBFUN int XMLCALL	
 
	xmlOutputBufferFlush		(xmlOutputBufferPtr out);
 
XMLPUBFUN int XMLCALL	
 
	xmlOutputBufferClose		(xmlOutputBufferPtr out);
 

	
 
XMLPUBFUN int XMLCALL     
 
	xmlRegisterOutputCallbacks	(xmlOutputMatchCallback matchFunc,
 
					 xmlOutputOpenCallback openFunc,
 
					 xmlOutputWriteCallback writeFunc,
 
					 xmlOutputCloseCallback closeFunc);
 

	
 
xmlOutputBufferPtr
 
	__xmlOutputBufferCreateFilename(const char *URI,
 
                              xmlCharEncodingHandlerPtr encoder,
 
                              int compression);
 

	
 
#ifdef LIBXML_HTTP_ENABLED
 
/*  This function only exists if HTTP support built into the library  */
 
XMLPUBFUN void XMLCALL	
 
	xmlRegisterHTTPPostCallbacks	(void );
 
#endif /* LIBXML_HTTP_ENABLED */
 
	
 
#endif /* LIBXML_OUTPUT_ENABLED */
 

	
 
XMLPUBFUN xmlParserInputPtr XMLCALL
 
	xmlCheckHTTPInput		(xmlParserCtxtPtr ctxt,
 
					 xmlParserInputPtr ret);
 

	
 
/*
 
 * A predefined entity loader disabling network accesses
 
 */
 
XMLPUBFUN xmlParserInputPtr XMLCALL 
 
	xmlNoNetExternalEntityLoader	(const char *URL,
 
					 const char *ID,
 
					 xmlParserCtxtPtr ctxt);
 

	
 
/* 
 
 * xmlNormalizeWindowsPath is obsolete, don't use it. 
 
 * Check xmlCanonicPath in uri.h for a better alternative.
 
 */
 
XMLPUBFUN xmlChar * XMLCALL 
 
	xmlNormalizeWindowsPath		(const xmlChar *path);
 

	
 
XMLPUBFUN int XMLCALL	
 
	xmlCheckFilename		(const char *path);
 
/**
 
 * Default 'file://' protocol callbacks 
 
 */
 
XMLPUBFUN int XMLCALL	
 
	xmlFileMatch 			(const char *filename);
 
XMLPUBFUN void * XMLCALL	
 
	xmlFileOpen 			(const char *filename);
 
XMLPUBFUN int XMLCALL	
 
	xmlFileRead 			(void * context, 
 
					 char * buffer, 
 
					 int len);
 
XMLPUBFUN int XMLCALL	
 
	xmlFileClose 			(void * context);
 

	
 
/**
 
 * Default 'http://' protocol callbacks 
 
 */
 
#ifdef LIBXML_HTTP_ENABLED
 
XMLPUBFUN int XMLCALL	
 
	xmlIOHTTPMatch 			(const char *filename);
 
XMLPUBFUN void * XMLCALL	
 
	xmlIOHTTPOpen 			(const char *filename);
 
#ifdef LIBXML_OUTPUT_ENABLED
 
XMLPUBFUN void * XMLCALL	
 
	xmlIOHTTPOpenW			(const char * post_uri,
 
					 int   compression );
 
#endif /* LIBXML_OUTPUT_ENABLED */
 
XMLPUBFUN int XMLCALL 	
 
	xmlIOHTTPRead			(void * context, 
 
					 char * buffer, 
 
					 int len);
 
XMLPUBFUN int XMLCALL	
 
	xmlIOHTTPClose 			(void * context);
 
#endif /* LIBXML_HTTP_ENABLED */
 

	
 
/**
 
 * Default 'ftp://' protocol callbacks 
 
 */
 
#ifdef LIBXML_FTP_ENABLED 
 
XMLPUBFUN int XMLCALL	
 
	xmlIOFTPMatch 			(const char *filename);
 
XMLPUBFUN void * XMLCALL	
 
	xmlIOFTPOpen 			(const char *filename);
 
XMLPUBFUN int XMLCALL 	
 
	xmlIOFTPRead			(void * context, 
 
					 char * buffer, 
 
					 int len);
 
XMLPUBFUN int XMLCALL 	
 
	xmlIOFTPClose 			(void * context);
 
#endif /* LIBXML_FTP_ENABLED */
 

	
 
#ifdef __cplusplus
 
}
 
#endif
 

	
 
#endif /* __XML_IO_H__ */
lib/libxml2/include/libxml/xmlautomata.h
Show inline comments
 
new file 100755
 
/*
 
 * Summary: API to build regexp automata
 
 * Description: the API to build regexp automata
 
 *
 
 * Copy: See Copyright for the status of this software.
 
 *
 
 * Author: Daniel Veillard
 
 */
 

	
 
#ifndef __XML_AUTOMATA_H__
 
#define __XML_AUTOMATA_H__
 

	
 
#include <libxml/xmlversion.h>
 
#include <libxml/tree.h>
 

	
 
#ifdef LIBXML_REGEXP_ENABLED
 
#ifdef LIBXML_AUTOMATA_ENABLED
 
#include <libxml/xmlregexp.h>
 

	
 
#ifdef __cplusplus
 
extern "C" {
 
#endif
 

	
 
/**
 
 * xmlAutomataPtr:
 
 *
 
 * A libxml automata description, It can be compiled into a regexp
 
 */
 
typedef struct _xmlAutomata xmlAutomata;
 
typedef xmlAutomata *xmlAutomataPtr;
 

	
 
/**
 
 * xmlAutomataStatePtr:
 
 *
 
 * A state int the automata description,
 
 */
 
typedef struct _xmlAutomataState xmlAutomataState;
 
typedef xmlAutomataState *xmlAutomataStatePtr;
 

	
 
/*
 
 * Building API
 
 */
 
XMLPUBFUN xmlAutomataPtr XMLCALL		
 
		    xmlNewAutomata		(void);
 
XMLPUBFUN void XMLCALL			
 
		    xmlFreeAutomata		(xmlAutomataPtr am);
 

	
 
XMLPUBFUN xmlAutomataStatePtr XMLCALL	
 
		    xmlAutomataGetInitState	(xmlAutomataPtr am);
 
XMLPUBFUN int XMLCALL			
 
		    xmlAutomataSetFinalState	(xmlAutomataPtr am,
 
						 xmlAutomataStatePtr state);
 
XMLPUBFUN xmlAutomataStatePtr XMLCALL	
 
		    xmlAutomataNewState		(xmlAutomataPtr am);
 
XMLPUBFUN xmlAutomataStatePtr XMLCALL	
 
		    xmlAutomataNewTransition	(xmlAutomataPtr am,
 
						 xmlAutomataStatePtr from,
 
						 xmlAutomataStatePtr to,
 
						 const xmlChar *token,
 
						 void *data);
 
XMLPUBFUN xmlAutomataStatePtr XMLCALL	
 
		    xmlAutomataNewTransition2	(xmlAutomataPtr am,
 
						 xmlAutomataStatePtr from,
 
						 xmlAutomataStatePtr to,
 
						 const xmlChar *token,
 
						 const xmlChar *token2,
 
						 void *data);
 
XMLPUBFUN xmlAutomataStatePtr XMLCALL
 
                    xmlAutomataNewNegTrans	(xmlAutomataPtr am,
 
						 xmlAutomataStatePtr from,
 
						 xmlAutomataStatePtr to,
 
						 const xmlChar *token,
 
						 const xmlChar *token2,
 
						 void *data);
 

	
 
XMLPUBFUN xmlAutomataStatePtr XMLCALL	
 
		    xmlAutomataNewCountTrans	(xmlAutomataPtr am,
 
						 xmlAutomataStatePtr from,
 
						 xmlAutomataStatePtr to,
 
						 const xmlChar *token,
 
						 int min,
 
						 int max,
 
						 void *data);
 
XMLPUBFUN xmlAutomataStatePtr XMLCALL	
 
		    xmlAutomataNewCountTrans2	(xmlAutomataPtr am,
 
						 xmlAutomataStatePtr from,
 
						 xmlAutomataStatePtr to,
 
						 const xmlChar *token,
 
						 const xmlChar *token2,
 
						 int min,
 
						 int max,
 
						 void *data);
 
XMLPUBFUN xmlAutomataStatePtr XMLCALL	
 
		    xmlAutomataNewOnceTrans	(xmlAutomataPtr am,
 
						 xmlAutomataStatePtr from,
 
						 xmlAutomataStatePtr to,
 
						 const xmlChar *token,
 
						 int min,
 
						 int max,
 
						 void *data);
 
XMLPUBFUN xmlAutomataStatePtr XMLCALL
 
		    xmlAutomataNewOnceTrans2	(xmlAutomataPtr am, 
 
						 xmlAutomataStatePtr from,
 
						 xmlAutomataStatePtr to, 
 
						 const xmlChar *token,
 
						 const xmlChar *token2,
 
						 int min, 
 
						 int max, 
 
						 void *data);
 
XMLPUBFUN xmlAutomataStatePtr XMLCALL	
 
		    xmlAutomataNewAllTrans	(xmlAutomataPtr am,
 
						 xmlAutomataStatePtr from,
 
						 xmlAutomataStatePtr to,
 
						 int lax);
 
XMLPUBFUN xmlAutomataStatePtr XMLCALL	
 
		    xmlAutomataNewEpsilon	(xmlAutomataPtr am,
 
						 xmlAutomataStatePtr from,
 
						 xmlAutomataStatePtr to);
 
XMLPUBFUN xmlAutomataStatePtr XMLCALL	
 
		    xmlAutomataNewCountedTrans	(xmlAutomataPtr am,
 
						 xmlAutomataStatePtr from,
 
						 xmlAutomataStatePtr to,
 
						 int counter);
 
XMLPUBFUN xmlAutomataStatePtr XMLCALL	
 
		    xmlAutomataNewCounterTrans	(xmlAutomataPtr am,
 
						 xmlAutomataStatePtr from,
 
						 xmlAutomataStatePtr to,
 
						 int counter);
 
XMLPUBFUN int XMLCALL			
 
		    xmlAutomataNewCounter	(xmlAutomataPtr am,
 
						 int min,
 
						 int max);
 

	
 
XMLPUBFUN xmlRegexpPtr XMLCALL		
 
		    xmlAutomataCompile		(xmlAutomataPtr am);
 
XMLPUBFUN int XMLCALL	    		
 
		    xmlAutomataIsDeterminist	(xmlAutomataPtr am);
 

	
 
#ifdef __cplusplus
 
}
 
#endif 
 

	
 
#endif /* LIBXML_AUTOMATA_ENABLED */
 
#endif /* LIBXML_REGEXP_ENABLED */
 

	
 
#endif /* __XML_AUTOMATA_H__ */
lib/libxml2/include/libxml/xmlerror.h
Show inline comments
 
new file 100755
 
/*
 
 * Summary: error handling
 
 * Description: the API used to report errors
 
 *
 
 * Copy: See Copyright for the status of this software.
 
 *
 
 * Author: Daniel Veillard
 
 */
 

	
 
#include <libxml/parser.h>
 

	
 
#ifndef __XML_ERROR_H__
 
#define __XML_ERROR_H__
 

	
 
#ifdef __cplusplus
 
extern "C" {
 
#endif
 

	
 
/**
 
 * xmlErrorLevel:
 
 *
 
 * Indicates the level of an error
 
 */
 
typedef enum {
 
    XML_ERR_NONE = 0,
 
    XML_ERR_WARNING = 1,	/* A simple warning */
 
    XML_ERR_ERROR = 2,		/* A recoverable error */
 
    XML_ERR_FATAL = 3		/* A fatal error */
 
} xmlErrorLevel;
 

	
 
/**
 
 * xmlErrorDomain:
 
 *
 
 * Indicates where an error may have come from
 
 */
 
typedef enum {
 
    XML_FROM_NONE = 0,
 
    XML_FROM_PARSER,	/* The XML parser */
 
    XML_FROM_TREE,	/* The tree module */
 
    XML_FROM_NAMESPACE,	/* The XML Namespace module */
 
    XML_FROM_DTD,	/* The XML DTD validation with parser context*/
 
    XML_FROM_HTML,	/* The HTML parser */
 
    XML_FROM_MEMORY,	/* The memory allocator */
 
    XML_FROM_OUTPUT,	/* The serialization code */
 
    XML_FROM_IO,	/* The Input/Output stack */
 
    XML_FROM_FTP,	/* The FTP module */
 
    XML_FROM_HTTP,	/* The HTTP module */
 
    XML_FROM_XINCLUDE,	/* The XInclude processing */
 
    XML_FROM_XPATH,	/* The XPath module */
 
    XML_FROM_XPOINTER,	/* The XPointer module */
 
    XML_FROM_REGEXP,	/* The regular expressions module */
 
    XML_FROM_DATATYPE,	/* The W3C XML Schemas Datatype module */
 
    XML_FROM_SCHEMASP,	/* The W3C XML Schemas parser module */
 
    XML_FROM_SCHEMASV,	/* The W3C XML Schemas validation module */
 
    XML_FROM_RELAXNGP,	/* The Relax-NG parser module */
 
    XML_FROM_RELAXNGV,	/* The Relax-NG validator module */
 
    XML_FROM_CATALOG,	/* The Catalog module */
 
    XML_FROM_C14N,	/* The Canonicalization module */
 
    XML_FROM_XSLT,	/* The XSLT engine from libxslt */
 
    XML_FROM_VALID,	/* The XML DTD validation with valid context */
 
    XML_FROM_CHECK,	/* The error checking module */
 
    XML_FROM_WRITER,	/* The xmlwriter module */
 
    XML_FROM_MODULE,	/* The dynamically loaded module module*/
 
    XML_FROM_I18N,	/* The module handling character conversion */
 
    XML_FROM_SCHEMATRONV	/* The Schematron validator module */
 
} xmlErrorDomain;
 

	
 
/**
 
 * xmlError:
 
 *
 
 * An XML Error instance.
 
 */
 

	
 
typedef struct _xmlError xmlError;
 
typedef xmlError *xmlErrorPtr;
 
struct _xmlError {
 
    int		domain;	/* What part of the library raised this error */
 
    int		code;	/* The error code, e.g. an xmlParserError */
 
    char       *message;/* human-readable informative error message */
 
    xmlErrorLevel level;/* how consequent is the error */
 
    char       *file;	/* the filename */
 
    int		line;	/* the line number if available */
 
    char       *str1;	/* extra string information */
 
    char       *str2;	/* extra string information */
 
    char       *str3;	/* extra string information */
 
    int		int1;	/* extra number information */
 
    int		int2;	/* column number of the error or 0 if N/A (todo: rename this field when we would break ABI) */
 
    void       *ctxt;   /* the parser context if available */
 
    void       *node;   /* the node in the tree */
 
};
 

	
 
/**
 
 * xmlParserError:
 
 *
 
 * This is an error that the XML (or HTML) parser can generate
 
 */
 
typedef enum {
 
    XML_ERR_OK = 0,
 
    XML_ERR_INTERNAL_ERROR, /* 1 */
 
    XML_ERR_NO_MEMORY, /* 2 */
 
    XML_ERR_DOCUMENT_START, /* 3 */
 
    XML_ERR_DOCUMENT_EMPTY, /* 4 */
 
    XML_ERR_DOCUMENT_END, /* 5 */
 
    XML_ERR_INVALID_HEX_CHARREF, /* 6 */
 
    XML_ERR_INVALID_DEC_CHARREF, /* 7 */
 
    XML_ERR_INVALID_CHARREF, /* 8 */
 
    XML_ERR_INVALID_CHAR, /* 9 */
 
    XML_ERR_CHARREF_AT_EOF, /* 10 */
 
    XML_ERR_CHARREF_IN_PROLOG, /* 11 */
 
    XML_ERR_CHARREF_IN_EPILOG, /* 12 */
 
    XML_ERR_CHARREF_IN_DTD, /* 13 */
 
    XML_ERR_ENTITYREF_AT_EOF, /* 14 */
 
    XML_ERR_ENTITYREF_IN_PROLOG, /* 15 */
 
    XML_ERR_ENTITYREF_IN_EPILOG, /* 16 */
 
    XML_ERR_ENTITYREF_IN_DTD, /* 17 */
 
    XML_ERR_PEREF_AT_EOF, /* 18 */
 
    XML_ERR_PEREF_IN_PROLOG, /* 19 */
 
    XML_ERR_PEREF_IN_EPILOG, /* 20 */
 
    XML_ERR_PEREF_IN_INT_SUBSET, /* 21 */
 
    XML_ERR_ENTITYREF_NO_NAME, /* 22 */
 
    XML_ERR_ENTITYREF_SEMICOL_MISSING, /* 23 */
 
    XML_ERR_PEREF_NO_NAME, /* 24 */
 
    XML_ERR_PEREF_SEMICOL_MISSING, /* 25 */
 
    XML_ERR_UNDECLARED_ENTITY, /* 26 */
 
    XML_WAR_UNDECLARED_ENTITY, /* 27 */
 
    XML_ERR_UNPARSED_ENTITY, /* 28 */
 
    XML_ERR_ENTITY_IS_EXTERNAL, /* 29 */
 
    XML_ERR_ENTITY_IS_PARAMETER, /* 30 */
 
    XML_ERR_UNKNOWN_ENCODING, /* 31 */
 
    XML_ERR_UNSUPPORTED_ENCODING, /* 32 */
 
    XML_ERR_STRING_NOT_STARTED, /* 33 */
 
    XML_ERR_STRING_NOT_CLOSED, /* 34 */
 
    XML_ERR_NS_DECL_ERROR, /* 35 */
 
    XML_ERR_ENTITY_NOT_STARTED, /* 36 */
 
    XML_ERR_ENTITY_NOT_FINISHED, /* 37 */
 
    XML_ERR_LT_IN_ATTRIBUTE, /* 38 */
 
    XML_ERR_ATTRIBUTE_NOT_STARTED, /* 39 */
 
    XML_ERR_ATTRIBUTE_NOT_FINISHED, /* 40 */
 
    XML_ERR_ATTRIBUTE_WITHOUT_VALUE, /* 41 */
 
    XML_ERR_ATTRIBUTE_REDEFINED, /* 42 */
 
    XML_ERR_LITERAL_NOT_STARTED, /* 43 */
 
    XML_ERR_LITERAL_NOT_FINISHED, /* 44 */
 
    XML_ERR_COMMENT_NOT_FINISHED, /* 45 */
 
    XML_ERR_PI_NOT_STARTED, /* 46 */
 
    XML_ERR_PI_NOT_FINISHED, /* 47 */
 
    XML_ERR_NOTATION_NOT_STARTED, /* 48 */
 
    XML_ERR_NOTATION_NOT_FINISHED, /* 49 */
 
    XML_ERR_ATTLIST_NOT_STARTED, /* 50 */
 
    XML_ERR_ATTLIST_NOT_FINISHED, /* 51 */
 
    XML_ERR_MIXED_NOT_STARTED, /* 52 */
 
    XML_ERR_MIXED_NOT_FINISHED, /* 53 */
 
    XML_ERR_ELEMCONTENT_NOT_STARTED, /* 54 */
 
    XML_ERR_ELEMCONTENT_NOT_FINISHED, /* 55 */
 
    XML_ERR_XMLDECL_NOT_STARTED, /* 56 */
 
    XML_ERR_XMLDECL_NOT_FINISHED, /* 57 */
 
    XML_ERR_CONDSEC_NOT_STARTED, /* 58 */
 
    XML_ERR_CONDSEC_NOT_FINISHED, /* 59 */
 
    XML_ERR_EXT_SUBSET_NOT_FINISHED, /* 60 */
 
    XML_ERR_DOCTYPE_NOT_FINISHED, /* 61 */
 
    XML_ERR_MISPLACED_CDATA_END, /* 62 */
 
    XML_ERR_CDATA_NOT_FINISHED, /* 63 */
 
    XML_ERR_RESERVED_XML_NAME, /* 64 */
 
    XML_ERR_SPACE_REQUIRED, /* 65 */
 
    XML_ERR_SEPARATOR_REQUIRED, /* 66 */
 
    XML_ERR_NMTOKEN_REQUIRED, /* 67 */
 
    XML_ERR_NAME_REQUIRED, /* 68 */
 
    XML_ERR_PCDATA_REQUIRED, /* 69 */
 
    XML_ERR_URI_REQUIRED, /* 70 */
 
    XML_ERR_PUBID_REQUIRED, /* 71 */
 
    XML_ERR_LT_REQUIRED, /* 72 */
 
    XML_ERR_GT_REQUIRED, /* 73 */
 
    XML_ERR_LTSLASH_REQUIRED, /* 74 */
 
    XML_ERR_EQUAL_REQUIRED, /* 75 */
 
    XML_ERR_TAG_NAME_MISMATCH, /* 76 */
 
    XML_ERR_TAG_NOT_FINISHED, /* 77 */
 
    XML_ERR_STANDALONE_VALUE, /* 78 */
 
    XML_ERR_ENCODING_NAME, /* 79 */
 
    XML_ERR_HYPHEN_IN_COMMENT, /* 80 */
 
    XML_ERR_INVALID_ENCODING, /* 81 */
 
    XML_ERR_EXT_ENTITY_STANDALONE, /* 82 */
 
    XML_ERR_CONDSEC_INVALID, /* 83 */
 
    XML_ERR_VALUE_REQUIRED, /* 84 */
 
    XML_ERR_NOT_WELL_BALANCED, /* 85 */
 
    XML_ERR_EXTRA_CONTENT, /* 86 */
 
    XML_ERR_ENTITY_CHAR_ERROR, /* 87 */
 
    XML_ERR_ENTITY_PE_INTERNAL, /* 88 */
 
    XML_ERR_ENTITY_LOOP, /* 89 */
 
    XML_ERR_ENTITY_BOUNDARY, /* 90 */
 
    XML_ERR_INVALID_URI, /* 91 */
 
    XML_ERR_URI_FRAGMENT, /* 92 */
 
    XML_WAR_CATALOG_PI, /* 93 */
 
    XML_ERR_NO_DTD, /* 94 */
 
    XML_ERR_CONDSEC_INVALID_KEYWORD, /* 95 */
 
    XML_ERR_VERSION_MISSING, /* 96 */
 
    XML_WAR_UNKNOWN_VERSION, /* 97 */
 
    XML_WAR_LANG_VALUE, /* 98 */
 
    XML_WAR_NS_URI, /* 99 */
 
    XML_WAR_NS_URI_RELATIVE, /* 100 */
 
    XML_ERR_MISSING_ENCODING, /* 101 */
 
    XML_WAR_SPACE_VALUE, /* 102 */
 
    XML_ERR_NOT_STANDALONE, /* 103 */
 
    XML_ERR_ENTITY_PROCESSING, /* 104 */
 
    XML_ERR_NOTATION_PROCESSING, /* 105 */
 
    XML_WAR_NS_COLUMN, /* 106 */
 
    XML_WAR_ENTITY_REDEFINED, /* 107 */
 
    XML_ERR_UNKNOWN_VERSION, /* 108 */
 
    XML_ERR_VERSION_MISMATCH, /* 109 */
 
    XML_NS_ERR_XML_NAMESPACE = 200,
 
    XML_NS_ERR_UNDEFINED_NAMESPACE, /* 201 */
 
    XML_NS_ERR_QNAME, /* 202 */
 
    XML_NS_ERR_ATTRIBUTE_REDEFINED, /* 203 */
 
    XML_NS_ERR_EMPTY, /* 204 */
 
    XML_NS_ERR_COLON, /* 205 */
 
    XML_DTD_ATTRIBUTE_DEFAULT = 500,
 
    XML_DTD_ATTRIBUTE_REDEFINED, /* 501 */
 
    XML_DTD_ATTRIBUTE_VALUE, /* 502 */
 
    XML_DTD_CONTENT_ERROR, /* 503 */
 
    XML_DTD_CONTENT_MODEL, /* 504 */
 
    XML_DTD_CONTENT_NOT_DETERMINIST, /* 505 */
 
    XML_DTD_DIFFERENT_PREFIX, /* 506 */
 
    XML_DTD_ELEM_DEFAULT_NAMESPACE, /* 507 */
 
    XML_DTD_ELEM_NAMESPACE, /* 508 */
 
    XML_DTD_ELEM_REDEFINED, /* 509 */
 
    XML_DTD_EMPTY_NOTATION, /* 510 */
 
    XML_DTD_ENTITY_TYPE, /* 511 */
 
    XML_DTD_ID_FIXED, /* 512 */
 
    XML_DTD_ID_REDEFINED, /* 513 */
 
    XML_DTD_ID_SUBSET, /* 514 */
 
    XML_DTD_INVALID_CHILD, /* 515 */
 
    XML_DTD_INVALID_DEFAULT, /* 516 */
 
    XML_DTD_LOAD_ERROR, /* 517 */
 
    XML_DTD_MISSING_ATTRIBUTE, /* 518 */
 
    XML_DTD_MIXED_CORRUPT, /* 519 */
 
    XML_DTD_MULTIPLE_ID, /* 520 */
 
    XML_DTD_NO_DOC, /* 521 */
 
    XML_DTD_NO_DTD, /* 522 */
 
    XML_DTD_NO_ELEM_NAME, /* 523 */
 
    XML_DTD_NO_PREFIX, /* 524 */
 
    XML_DTD_NO_ROOT, /* 525 */
 
    XML_DTD_NOTATION_REDEFINED, /* 526 */
 
    XML_DTD_NOTATION_VALUE, /* 527 */
 
    XML_DTD_NOT_EMPTY, /* 528 */
 
    XML_DTD_NOT_PCDATA, /* 529 */
 
    XML_DTD_NOT_STANDALONE, /* 530 */
 
    XML_DTD_ROOT_NAME, /* 531 */
 
    XML_DTD_STANDALONE_WHITE_SPACE, /* 532 */
 
    XML_DTD_UNKNOWN_ATTRIBUTE, /* 533 */
 
    XML_DTD_UNKNOWN_ELEM, /* 534 */
 
    XML_DTD_UNKNOWN_ENTITY, /* 535 */
 
    XML_DTD_UNKNOWN_ID, /* 536 */
 
    XML_DTD_UNKNOWN_NOTATION, /* 537 */
 
    XML_DTD_STANDALONE_DEFAULTED, /* 538 */
 
    XML_DTD_XMLID_VALUE, /* 539 */
 
    XML_DTD_XMLID_TYPE, /* 540 */
 
    XML_DTD_DUP_TOKEN, /* 541 */
 
    XML_HTML_STRUCURE_ERROR = 800,
 
    XML_HTML_UNKNOWN_TAG, /* 801 */
 
    XML_RNGP_ANYNAME_ATTR_ANCESTOR = 1000,
 
    XML_RNGP_ATTR_CONFLICT, /* 1001 */
 
    XML_RNGP_ATTRIBUTE_CHILDREN, /* 1002 */
 
    XML_RNGP_ATTRIBUTE_CONTENT, /* 1003 */
 
    XML_RNGP_ATTRIBUTE_EMPTY, /* 1004 */
 
    XML_RNGP_ATTRIBUTE_NOOP, /* 1005 */
 
    XML_RNGP_CHOICE_CONTENT, /* 1006 */
 
    XML_RNGP_CHOICE_EMPTY, /* 1007 */
 
    XML_RNGP_CREATE_FAILURE, /* 1008 */
 
    XML_RNGP_DATA_CONTENT, /* 1009 */
 
    XML_RNGP_DEF_CHOICE_AND_INTERLEAVE, /* 1010 */
 
    XML_RNGP_DEFINE_CREATE_FAILED, /* 1011 */
 
    XML_RNGP_DEFINE_EMPTY, /* 1012 */
 
    XML_RNGP_DEFINE_MISSING, /* 1013 */
 
    XML_RNGP_DEFINE_NAME_MISSING, /* 1014 */
 
    XML_RNGP_ELEM_CONTENT_EMPTY, /* 1015 */
 
    XML_RNGP_ELEM_CONTENT_ERROR, /* 1016 */
 
    XML_RNGP_ELEMENT_EMPTY, /* 1017 */
 
    XML_RNGP_ELEMENT_CONTENT, /* 1018 */
 
    XML_RNGP_ELEMENT_NAME, /* 1019 */
 
    XML_RNGP_ELEMENT_NO_CONTENT, /* 1020 */
 
    XML_RNGP_ELEM_TEXT_CONFLICT, /* 1021 */
 
    XML_RNGP_EMPTY, /* 1022 */
 
    XML_RNGP_EMPTY_CONSTRUCT, /* 1023 */
 
    XML_RNGP_EMPTY_CONTENT, /* 1024 */
 
    XML_RNGP_EMPTY_NOT_EMPTY, /* 1025 */
 
    XML_RNGP_ERROR_TYPE_LIB, /* 1026 */
 
    XML_RNGP_EXCEPT_EMPTY, /* 1027 */
 
    XML_RNGP_EXCEPT_MISSING, /* 1028 */
 
    XML_RNGP_EXCEPT_MULTIPLE, /* 1029 */
 
    XML_RNGP_EXCEPT_NO_CONTENT, /* 1030 */
 
    XML_RNGP_EXTERNALREF_EMTPY, /* 1031 */
 
    XML_RNGP_EXTERNAL_REF_FAILURE, /* 1032 */
 
    XML_RNGP_EXTERNALREF_RECURSE, /* 1033 */
 
    XML_RNGP_FORBIDDEN_ATTRIBUTE, /* 1034 */
 
    XML_RNGP_FOREIGN_ELEMENT, /* 1035 */
 
    XML_RNGP_GRAMMAR_CONTENT, /* 1036 */
 
    XML_RNGP_GRAMMAR_EMPTY, /* 1037 */
 
    XML_RNGP_GRAMMAR_MISSING, /* 1038 */
 
    XML_RNGP_GRAMMAR_NO_START, /* 1039 */
 
    XML_RNGP_GROUP_ATTR_CONFLICT, /* 1040 */
 
    XML_RNGP_HREF_ERROR, /* 1041 */
 
    XML_RNGP_INCLUDE_EMPTY, /* 1042 */
 
    XML_RNGP_INCLUDE_FAILURE, /* 1043 */
 
    XML_RNGP_INCLUDE_RECURSE, /* 1044 */
 
    XML_RNGP_INTERLEAVE_ADD, /* 1045 */
 
    XML_RNGP_INTERLEAVE_CREATE_FAILED, /* 1046 */
 
    XML_RNGP_INTERLEAVE_EMPTY, /* 1047 */
 
    XML_RNGP_INTERLEAVE_NO_CONTENT, /* 1048 */
 
    XML_RNGP_INVALID_DEFINE_NAME, /* 1049 */
 
    XML_RNGP_INVALID_URI, /* 1050 */
 
    XML_RNGP_INVALID_VALUE, /* 1051 */
 
    XML_RNGP_MISSING_HREF, /* 1052 */
 
    XML_RNGP_NAME_MISSING, /* 1053 */
 
    XML_RNGP_NEED_COMBINE, /* 1054 */
 
    XML_RNGP_NOTALLOWED_NOT_EMPTY, /* 1055 */
 
    XML_RNGP_NSNAME_ATTR_ANCESTOR, /* 1056 */
 
    XML_RNGP_NSNAME_NO_NS, /* 1057 */
 
    XML_RNGP_PARAM_FORBIDDEN, /* 1058 */
 
    XML_RNGP_PARAM_NAME_MISSING, /* 1059 */
 
    XML_RNGP_PARENTREF_CREATE_FAILED, /* 1060 */
 
    XML_RNGP_PARENTREF_NAME_INVALID, /* 1061 */
 
    XML_RNGP_PARENTREF_NO_NAME, /* 1062 */
 
    XML_RNGP_PARENTREF_NO_PARENT, /* 1063 */
 
    XML_RNGP_PARENTREF_NOT_EMPTY, /* 1064 */
 
    XML_RNGP_PARSE_ERROR, /* 1065 */
 
    XML_RNGP_PAT_ANYNAME_EXCEPT_ANYNAME, /* 1066 */
 
    XML_RNGP_PAT_ATTR_ATTR, /* 1067 */
 
    XML_RNGP_PAT_ATTR_ELEM, /* 1068 */
 
    XML_RNGP_PAT_DATA_EXCEPT_ATTR, /* 1069 */
 
    XML_RNGP_PAT_DATA_EXCEPT_ELEM, /* 1070 */
 
    XML_RNGP_PAT_DATA_EXCEPT_EMPTY, /* 1071 */
 
    XML_RNGP_PAT_DATA_EXCEPT_GROUP, /* 1072 */
 
    XML_RNGP_PAT_DATA_EXCEPT_INTERLEAVE, /* 1073 */
 
    XML_RNGP_PAT_DATA_EXCEPT_LIST, /* 1074 */
 
    XML_RNGP_PAT_DATA_EXCEPT_ONEMORE, /* 1075 */
 
    XML_RNGP_PAT_DATA_EXCEPT_REF, /* 1076 */
 
    XML_RNGP_PAT_DATA_EXCEPT_TEXT, /* 1077 */
 
    XML_RNGP_PAT_LIST_ATTR, /* 1078 */
 
    XML_RNGP_PAT_LIST_ELEM, /* 1079 */
 
    XML_RNGP_PAT_LIST_INTERLEAVE, /* 1080 */
 
    XML_RNGP_PAT_LIST_LIST, /* 1081 */
 
    XML_RNGP_PAT_LIST_REF, /* 1082 */
 
    XML_RNGP_PAT_LIST_TEXT, /* 1083 */
 
    XML_RNGP_PAT_NSNAME_EXCEPT_ANYNAME, /* 1084 */
 
    XML_RNGP_PAT_NSNAME_EXCEPT_NSNAME, /* 1085 */
 
    XML_RNGP_PAT_ONEMORE_GROUP_ATTR, /* 1086 */
 
    XML_RNGP_PAT_ONEMORE_INTERLEAVE_ATTR, /* 1087 */
 
    XML_RNGP_PAT_START_ATTR, /* 1088 */
 
    XML_RNGP_PAT_START_DATA, /* 1089 */
 
    XML_RNGP_PAT_START_EMPTY, /* 1090 */
 
    XML_RNGP_PAT_START_GROUP, /* 1091 */
 
    XML_RNGP_PAT_START_INTERLEAVE, /* 1092 */
 
    XML_RNGP_PAT_START_LIST, /* 1093 */
 
    XML_RNGP_PAT_START_ONEMORE, /* 1094 */
 
    XML_RNGP_PAT_START_TEXT, /* 1095 */
 
    XML_RNGP_PAT_START_VALUE, /* 1096 */
 
    XML_RNGP_PREFIX_UNDEFINED, /* 1097 */
 
    XML_RNGP_REF_CREATE_FAILED, /* 1098 */
 
    XML_RNGP_REF_CYCLE, /* 1099 */
 
    XML_RNGP_REF_NAME_INVALID, /* 1100 */
 
    XML_RNGP_REF_NO_DEF, /* 1101 */
 
    XML_RNGP_REF_NO_NAME, /* 1102 */
 
    XML_RNGP_REF_NOT_EMPTY, /* 1103 */
 
    XML_RNGP_START_CHOICE_AND_INTERLEAVE, /* 1104 */
 
    XML_RNGP_START_CONTENT, /* 1105 */
 
    XML_RNGP_START_EMPTY, /* 1106 */
 
    XML_RNGP_START_MISSING, /* 1107 */
 
    XML_RNGP_TEXT_EXPECTED, /* 1108 */
 
    XML_RNGP_TEXT_HAS_CHILD, /* 1109 */
 
    XML_RNGP_TYPE_MISSING, /* 1110 */
 
    XML_RNGP_TYPE_NOT_FOUND, /* 1111 */
 
    XML_RNGP_TYPE_VALUE, /* 1112 */
 
    XML_RNGP_UNKNOWN_ATTRIBUTE, /* 1113 */
 
    XML_RNGP_UNKNOWN_COMBINE, /* 1114 */
 
    XML_RNGP_UNKNOWN_CONSTRUCT, /* 1115 */
 
    XML_RNGP_UNKNOWN_TYPE_LIB, /* 1116 */
 
    XML_RNGP_URI_FRAGMENT, /* 1117 */
 
    XML_RNGP_URI_NOT_ABSOLUTE, /* 1118 */
 
    XML_RNGP_VALUE_EMPTY, /* 1119 */
 
    XML_RNGP_VALUE_NO_CONTENT, /* 1120 */
 
    XML_RNGP_XMLNS_NAME, /* 1121 */
 
    XML_RNGP_XML_NS, /* 1122 */
 
    XML_XPATH_EXPRESSION_OK = 1200,
 
    XML_XPATH_NUMBER_ERROR, /* 1201 */
 
    XML_XPATH_UNFINISHED_LITERAL_ERROR, /* 1202 */
 
    XML_XPATH_START_LITERAL_ERROR, /* 1203 */
 
    XML_XPATH_VARIABLE_REF_ERROR, /* 1204 */
 
    XML_XPATH_UNDEF_VARIABLE_ERROR, /* 1205 */
 
    XML_XPATH_INVALID_PREDICATE_ERROR, /* 1206 */
 
    XML_XPATH_EXPR_ERROR, /* 1207 */
 
    XML_XPATH_UNCLOSED_ERROR, /* 1208 */
 
    XML_XPATH_UNKNOWN_FUNC_ERROR, /* 1209 */
 
    XML_XPATH_INVALID_OPERAND, /* 1210 */
 
    XML_XPATH_INVALID_TYPE, /* 1211 */
 
    XML_XPATH_INVALID_ARITY, /* 1212 */
 
    XML_XPATH_INVALID_CTXT_SIZE, /* 1213 */
 
    XML_XPATH_INVALID_CTXT_POSITION, /* 1214 */
 
    XML_XPATH_MEMORY_ERROR, /* 1215 */
 
    XML_XPTR_SYNTAX_ERROR, /* 1216 */
 
    XML_XPTR_RESOURCE_ERROR, /* 1217 */
 
    XML_XPTR_SUB_RESOURCE_ERROR, /* 1218 */
 
    XML_XPATH_UNDEF_PREFIX_ERROR, /* 1219 */
 
    XML_XPATH_ENCODING_ERROR, /* 1220 */
 
    XML_XPATH_INVALID_CHAR_ERROR, /* 1221 */
 
    XML_TREE_INVALID_HEX = 1300,
 
    XML_TREE_INVALID_DEC, /* 1301 */
 
    XML_TREE_UNTERMINATED_ENTITY, /* 1302 */
 
    XML_TREE_NOT_UTF8, /* 1303 */
 
    XML_SAVE_NOT_UTF8 = 1400,
 
    XML_SAVE_CHAR_INVALID, /* 1401 */
 
    XML_SAVE_NO_DOCTYPE, /* 1402 */
 
    XML_SAVE_UNKNOWN_ENCODING, /* 1403 */
 
    XML_REGEXP_COMPILE_ERROR = 1450,
 
    XML_IO_UNKNOWN = 1500,
 
    XML_IO_EACCES, /* 1501 */
 
    XML_IO_EAGAIN, /* 1502 */
 
    XML_IO_EBADF, /* 1503 */
 
    XML_IO_EBADMSG, /* 1504 */
 
    XML_IO_EBUSY, /* 1505 */
 
    XML_IO_ECANCELED, /* 1506 */
 
    XML_IO_ECHILD, /* 1507 */
 
    XML_IO_EDEADLK, /* 1508 */
 
    XML_IO_EDOM, /* 1509 */
 
    XML_IO_EEXIST, /* 1510 */
 
    XML_IO_EFAULT, /* 1511 */
 
    XML_IO_EFBIG, /* 1512 */
 
    XML_IO_EINPROGRESS, /* 1513 */
 
    XML_IO_EINTR, /* 1514 */
 
    XML_IO_EINVAL, /* 1515 */
 
    XML_IO_EIO, /* 1516 */
 
    XML_IO_EISDIR, /* 1517 */
 
    XML_IO_EMFILE, /* 1518 */
 
    XML_IO_EMLINK, /* 1519 */
 
    XML_IO_EMSGSIZE, /* 1520 */
 
    XML_IO_ENAMETOOLONG, /* 1521 */
 
    XML_IO_ENFILE, /* 1522 */
 
    XML_IO_ENODEV, /* 1523 */
 
    XML_IO_ENOENT, /* 1524 */
 
    XML_IO_ENOEXEC, /* 1525 */
 
    XML_IO_ENOLCK, /* 1526 */
 
    XML_IO_ENOMEM, /* 1527 */
 
    XML_IO_ENOSPC, /* 1528 */
 
    XML_IO_ENOSYS, /* 1529 */
 
    XML_IO_ENOTDIR, /* 1530 */
 
    XML_IO_ENOTEMPTY, /* 1531 */
 
    XML_IO_ENOTSUP, /* 1532 */
 
    XML_IO_ENOTTY, /* 1533 */
 
    XML_IO_ENXIO, /* 1534 */
 
    XML_IO_EPERM, /* 1535 */
 
    XML_IO_EPIPE, /* 1536 */
 
    XML_IO_ERANGE, /* 1537 */
 
    XML_IO_EROFS, /* 1538 */
 
    XML_IO_ESPIPE, /* 1539 */
 
    XML_IO_ESRCH, /* 1540 */
 
    XML_IO_ETIMEDOUT, /* 1541 */
 
    XML_IO_EXDEV, /* 1542 */
 
    XML_IO_NETWORK_ATTEMPT, /* 1543 */
 
    XML_IO_ENCODER, /* 1544 */
 
    XML_IO_FLUSH, /* 1545 */
 
    XML_IO_WRITE, /* 1546 */
 
    XML_IO_NO_INPUT, /* 1547 */
 
    XML_IO_BUFFER_FULL, /* 1548 */
 
    XML_IO_LOAD_ERROR, /* 1549 */
 
    XML_IO_ENOTSOCK, /* 1550 */
 
    XML_IO_EISCONN, /* 1551 */
 
    XML_IO_ECONNREFUSED, /* 1552 */
 
    XML_IO_ENETUNREACH, /* 1553 */
 
    XML_IO_EADDRINUSE, /* 1554 */
 
    XML_IO_EALREADY, /* 1555 */
 
    XML_IO_EAFNOSUPPORT, /* 1556 */
 
    XML_XINCLUDE_RECURSION=1600,
 
    XML_XINCLUDE_PARSE_VALUE, /* 1601 */
 
    XML_XINCLUDE_ENTITY_DEF_MISMATCH, /* 1602 */
 
    XML_XINCLUDE_NO_HREF, /* 1603 */
 
    XML_XINCLUDE_NO_FALLBACK, /* 1604 */
 
    XML_XINCLUDE_HREF_URI, /* 1605 */
 
    XML_XINCLUDE_TEXT_FRAGMENT, /* 1606 */
 
    XML_XINCLUDE_TEXT_DOCUMENT, /* 1607 */
 
    XML_XINCLUDE_INVALID_CHAR, /* 1608 */
 
    XML_XINCLUDE_BUILD_FAILED, /* 1609 */
 
    XML_XINCLUDE_UNKNOWN_ENCODING, /* 1610 */
 
    XML_XINCLUDE_MULTIPLE_ROOT, /* 1611 */
 
    XML_XINCLUDE_XPTR_FAILED, /* 1612 */
 
    XML_XINCLUDE_XPTR_RESULT, /* 1613 */
 
    XML_XINCLUDE_INCLUDE_IN_INCLUDE, /* 1614 */
 
    XML_XINCLUDE_FALLBACKS_IN_INCLUDE, /* 1615 */
 
    XML_XINCLUDE_FALLBACK_NOT_IN_INCLUDE, /* 1616 */
 
    XML_XINCLUDE_DEPRECATED_NS, /* 1617 */
 
    XML_XINCLUDE_FRAGMENT_ID, /* 1618 */
 
    XML_CATALOG_MISSING_ATTR = 1650,
 
    XML_CATALOG_ENTRY_BROKEN, /* 1651 */
 
    XML_CATALOG_PREFER_VALUE, /* 1652 */
 
    XML_CATALOG_NOT_CATALOG, /* 1653 */
 
    XML_CATALOG_RECURSION, /* 1654 */
 
    XML_SCHEMAP_PREFIX_UNDEFINED = 1700,
 
    XML_SCHEMAP_ATTRFORMDEFAULT_VALUE, /* 1701 */
 
    XML_SCHEMAP_ATTRGRP_NONAME_NOREF, /* 1702 */
 
    XML_SCHEMAP_ATTR_NONAME_NOREF, /* 1703 */
 
    XML_SCHEMAP_COMPLEXTYPE_NONAME_NOREF, /* 1704 */
 
    XML_SCHEMAP_ELEMFORMDEFAULT_VALUE, /* 1705 */
 
    XML_SCHEMAP_ELEM_NONAME_NOREF, /* 1706 */
 
    XML_SCHEMAP_EXTENSION_NO_BASE, /* 1707 */
 
    XML_SCHEMAP_FACET_NO_VALUE, /* 1708 */
 
    XML_SCHEMAP_FAILED_BUILD_IMPORT, /* 1709 */
 
    XML_SCHEMAP_GROUP_NONAME_NOREF, /* 1710 */
 
    XML_SCHEMAP_IMPORT_NAMESPACE_NOT_URI, /* 1711 */
 
    XML_SCHEMAP_IMPORT_REDEFINE_NSNAME, /* 1712 */
 
    XML_SCHEMAP_IMPORT_SCHEMA_NOT_URI, /* 1713 */
 
    XML_SCHEMAP_INVALID_BOOLEAN, /* 1714 */
 
    XML_SCHEMAP_INVALID_ENUM, /* 1715 */
 
    XML_SCHEMAP_INVALID_FACET, /* 1716 */
 
    XML_SCHEMAP_INVALID_FACET_VALUE, /* 1717 */
 
    XML_SCHEMAP_INVALID_MAXOCCURS, /* 1718 */
 
    XML_SCHEMAP_INVALID_MINOCCURS, /* 1719 */
 
    XML_SCHEMAP_INVALID_REF_AND_SUBTYPE, /* 1720 */
 
    XML_SCHEMAP_INVALID_WHITE_SPACE, /* 1721 */
 
    XML_SCHEMAP_NOATTR_NOREF, /* 1722 */
 
    XML_SCHEMAP_NOTATION_NO_NAME, /* 1723 */
 
    XML_SCHEMAP_NOTYPE_NOREF, /* 1724 */
 
    XML_SCHEMAP_REF_AND_SUBTYPE, /* 1725 */
 
    XML_SCHEMAP_RESTRICTION_NONAME_NOREF, /* 1726 */
 
    XML_SCHEMAP_SIMPLETYPE_NONAME, /* 1727 */
 
    XML_SCHEMAP_TYPE_AND_SUBTYPE, /* 1728 */
 
    XML_SCHEMAP_UNKNOWN_ALL_CHILD, /* 1729 */
 
    XML_SCHEMAP_UNKNOWN_ANYATTRIBUTE_CHILD, /* 1730 */
 
    XML_SCHEMAP_UNKNOWN_ATTR_CHILD, /* 1731 */
 
    XML_SCHEMAP_UNKNOWN_ATTRGRP_CHILD, /* 1732 */
 
    XML_SCHEMAP_UNKNOWN_ATTRIBUTE_GROUP, /* 1733 */
 
    XML_SCHEMAP_UNKNOWN_BASE_TYPE, /* 1734 */
 
    XML_SCHEMAP_UNKNOWN_CHOICE_CHILD, /* 1735 */
 
    XML_SCHEMAP_UNKNOWN_COMPLEXCONTENT_CHILD, /* 1736 */
 
    XML_SCHEMAP_UNKNOWN_COMPLEXTYPE_CHILD, /* 1737 */
 
    XML_SCHEMAP_UNKNOWN_ELEM_CHILD, /* 1738 */
 
    XML_SCHEMAP_UNKNOWN_EXTENSION_CHILD, /* 1739 */
 
    XML_SCHEMAP_UNKNOWN_FACET_CHILD, /* 1740 */
 
    XML_SCHEMAP_UNKNOWN_FACET_TYPE, /* 1741 */
 
    XML_SCHEMAP_UNKNOWN_GROUP_CHILD, /* 1742 */
 
    XML_SCHEMAP_UNKNOWN_IMPORT_CHILD, /* 1743 */
 
    XML_SCHEMAP_UNKNOWN_LIST_CHILD, /* 1744 */
 
    XML_SCHEMAP_UNKNOWN_NOTATION_CHILD, /* 1745 */
 
    XML_SCHEMAP_UNKNOWN_PROCESSCONTENT_CHILD, /* 1746 */
 
    XML_SCHEMAP_UNKNOWN_REF, /* 1747 */
 
    XML_SCHEMAP_UNKNOWN_RESTRICTION_CHILD, /* 1748 */
 
    XML_SCHEMAP_UNKNOWN_SCHEMAS_CHILD, /* 1749 */
 
    XML_SCHEMAP_UNKNOWN_SEQUENCE_CHILD, /* 1750 */
 
    XML_SCHEMAP_UNKNOWN_SIMPLECONTENT_CHILD, /* 1751 */
 
    XML_SCHEMAP_UNKNOWN_SIMPLETYPE_CHILD, /* 1752 */
 
    XML_SCHEMAP_UNKNOWN_TYPE, /* 1753 */
 
    XML_SCHEMAP_UNKNOWN_UNION_CHILD, /* 1754 */
 
    XML_SCHEMAP_ELEM_DEFAULT_FIXED, /* 1755 */
 
    XML_SCHEMAP_REGEXP_INVALID, /* 1756 */
 
    XML_SCHEMAP_FAILED_LOAD, /* 1757 */
 
    XML_SCHEMAP_NOTHING_TO_PARSE, /* 1758 */
 
    XML_SCHEMAP_NOROOT, /* 1759 */
 
    XML_SCHEMAP_REDEFINED_GROUP, /* 1760 */
 
    XML_SCHEMAP_REDEFINED_TYPE, /* 1761 */
 
    XML_SCHEMAP_REDEFINED_ELEMENT, /* 1762 */
 
    XML_SCHEMAP_REDEFINED_ATTRGROUP, /* 1763 */
 
    XML_SCHEMAP_REDEFINED_ATTR, /* 1764 */
 
    XML_SCHEMAP_REDEFINED_NOTATION, /* 1765 */
 
    XML_SCHEMAP_FAILED_PARSE, /* 1766 */
 
    XML_SCHEMAP_UNKNOWN_PREFIX, /* 1767 */
 
    XML_SCHEMAP_DEF_AND_PREFIX, /* 1768 */
 
    XML_SCHEMAP_UNKNOWN_INCLUDE_CHILD, /* 1769 */
 
    XML_SCHEMAP_INCLUDE_SCHEMA_NOT_URI, /* 1770 */
 
    XML_SCHEMAP_INCLUDE_SCHEMA_NO_URI, /* 1771 */
 
    XML_SCHEMAP_NOT_SCHEMA, /* 1772 */
 
    XML_SCHEMAP_UNKNOWN_MEMBER_TYPE, /* 1773 */
 
    XML_SCHEMAP_INVALID_ATTR_USE, /* 1774 */
 
    XML_SCHEMAP_RECURSIVE, /* 1775 */
 
    XML_SCHEMAP_SUPERNUMEROUS_LIST_ITEM_TYPE, /* 1776 */
 
    XML_SCHEMAP_INVALID_ATTR_COMBINATION, /* 1777 */
 
    XML_SCHEMAP_INVALID_ATTR_INLINE_COMBINATION, /* 1778 */
 
    XML_SCHEMAP_MISSING_SIMPLETYPE_CHILD, /* 1779 */
 
    XML_SCHEMAP_INVALID_ATTR_NAME, /* 1780 */
 
    XML_SCHEMAP_REF_AND_CONTENT, /* 1781 */
 
    XML_SCHEMAP_CT_PROPS_CORRECT_1, /* 1782 */
 
    XML_SCHEMAP_CT_PROPS_CORRECT_2, /* 1783 */
 
    XML_SCHEMAP_CT_PROPS_CORRECT_3, /* 1784 */
 
    XML_SCHEMAP_CT_PROPS_CORRECT_4, /* 1785 */
 
    XML_SCHEMAP_CT_PROPS_CORRECT_5, /* 1786 */
 
    XML_SCHEMAP_DERIVATION_OK_RESTRICTION_1, /* 1787 */
 
    XML_SCHEMAP_DERIVATION_OK_RESTRICTION_2_1_1, /* 1788 */
 
    XML_SCHEMAP_DERIVATION_OK_RESTRICTION_2_1_2, /* 1789 */
 
    XML_SCHEMAP_DERIVATION_OK_RESTRICTION_2_2, /* 1790 */
 
    XML_SCHEMAP_DERIVATION_OK_RESTRICTION_3, /* 1791 */
 
    XML_SCHEMAP_WILDCARD_INVALID_NS_MEMBER, /* 1792 */
 
    XML_SCHEMAP_INTERSECTION_NOT_EXPRESSIBLE, /* 1793 */
 
    XML_SCHEMAP_UNION_NOT_EXPRESSIBLE, /* 1794 */
 
    XML_SCHEMAP_SRC_IMPORT_3_1, /* 1795 */
 
    XML_SCHEMAP_SRC_IMPORT_3_2, /* 1796 */
 
    XML_SCHEMAP_DERIVATION_OK_RESTRICTION_4_1, /* 1797 */
 
    XML_SCHEMAP_DERIVATION_OK_RESTRICTION_4_2, /* 1798 */
 
    XML_SCHEMAP_DERIVATION_OK_RESTRICTION_4_3, /* 1799 */
 
    XML_SCHEMAP_COS_CT_EXTENDS_1_3, /* 1800 */
 
    XML_SCHEMAV_NOROOT = 1801,
 
    XML_SCHEMAV_UNDECLAREDELEM, /* 1802 */
 
    XML_SCHEMAV_NOTTOPLEVEL, /* 1803 */
 
    XML_SCHEMAV_MISSING, /* 1804 */
 
    XML_SCHEMAV_WRONGELEM, /* 1805 */
 
    XML_SCHEMAV_NOTYPE, /* 1806 */
 
    XML_SCHEMAV_NOROLLBACK, /* 1807 */
 
    XML_SCHEMAV_ISABSTRACT, /* 1808 */
 
    XML_SCHEMAV_NOTEMPTY, /* 1809 */
 
    XML_SCHEMAV_ELEMCONT, /* 1810 */
 
    XML_SCHEMAV_HAVEDEFAULT, /* 1811 */
 
    XML_SCHEMAV_NOTNILLABLE, /* 1812 */
 
    XML_SCHEMAV_EXTRACONTENT, /* 1813 */
 
    XML_SCHEMAV_INVALIDATTR, /* 1814 */
 
    XML_SCHEMAV_INVALIDELEM, /* 1815 */
 
    XML_SCHEMAV_NOTDETERMINIST, /* 1816 */
 
    XML_SCHEMAV_CONSTRUCT, /* 1817 */
 
    XML_SCHEMAV_INTERNAL, /* 1818 */
 
    XML_SCHEMAV_NOTSIMPLE, /* 1819 */
 
    XML_SCHEMAV_ATTRUNKNOWN, /* 1820 */
 
    XML_SCHEMAV_ATTRINVALID, /* 1821 */
 
    XML_SCHEMAV_VALUE, /* 1822 */
 
    XML_SCHEMAV_FACET, /* 1823 */
 
    XML_SCHEMAV_CVC_DATATYPE_VALID_1_2_1, /* 1824 */
 
    XML_SCHEMAV_CVC_DATATYPE_VALID_1_2_2, /* 1825 */
 
    XML_SCHEMAV_CVC_DATATYPE_VALID_1_2_3, /* 1826 */
 
    XML_SCHEMAV_CVC_TYPE_3_1_1, /* 1827 */
 
    XML_SCHEMAV_CVC_TYPE_3_1_2, /* 1828 */
 
    XML_SCHEMAV_CVC_FACET_VALID, /* 1829 */
 
    XML_SCHEMAV_CVC_LENGTH_VALID, /* 1830 */
 
    XML_SCHEMAV_CVC_MINLENGTH_VALID, /* 1831 */
 
    XML_SCHEMAV_CVC_MAXLENGTH_VALID, /* 1832 */
 
    XML_SCHEMAV_CVC_MININCLUSIVE_VALID, /* 1833 */
 
    XML_SCHEMAV_CVC_MAXINCLUSIVE_VALID, /* 1834 */
 
    XML_SCHEMAV_CVC_MINEXCLUSIVE_VALID, /* 1835 */
 
    XML_SCHEMAV_CVC_MAXEXCLUSIVE_VALID, /* 1836 */
 
    XML_SCHEMAV_CVC_TOTALDIGITS_VALID, /* 1837 */
 
    XML_SCHEMAV_CVC_FRACTIONDIGITS_VALID, /* 1838 */
 
    XML_SCHEMAV_CVC_PATTERN_VALID, /* 1839 */
 
    XML_SCHEMAV_CVC_ENUMERATION_VALID, /* 1840 */
 
    XML_SCHEMAV_CVC_COMPLEX_TYPE_2_1, /* 1841 */
 
    XML_SCHEMAV_CVC_COMPLEX_TYPE_2_2, /* 1842 */
 
    XML_SCHEMAV_CVC_COMPLEX_TYPE_2_3, /* 1843 */
 
    XML_SCHEMAV_CVC_COMPLEX_TYPE_2_4, /* 1844 */
 
    XML_SCHEMAV_CVC_ELT_1, /* 1845 */
 
    XML_SCHEMAV_CVC_ELT_2, /* 1846 */
 
    XML_SCHEMAV_CVC_ELT_3_1, /* 1847 */
 
    XML_SCHEMAV_CVC_ELT_3_2_1, /* 1848 */
 
    XML_SCHEMAV_CVC_ELT_3_2_2, /* 1849 */
 
    XML_SCHEMAV_CVC_ELT_4_1, /* 1850 */
 
    XML_SCHEMAV_CVC_ELT_4_2, /* 1851 */
 
    XML_SCHEMAV_CVC_ELT_4_3, /* 1852 */
 
    XML_SCHEMAV_CVC_ELT_5_1_1, /* 1853 */
 
    XML_SCHEMAV_CVC_ELT_5_1_2, /* 1854 */
 
    XML_SCHEMAV_CVC_ELT_5_2_1, /* 1855 */
 
    XML_SCHEMAV_CVC_ELT_5_2_2_1, /* 1856 */
 
    XML_SCHEMAV_CVC_ELT_5_2_2_2_1, /* 1857 */
 
    XML_SCHEMAV_CVC_ELT_5_2_2_2_2, /* 1858 */
 
    XML_SCHEMAV_CVC_ELT_6, /* 1859 */
 
    XML_SCHEMAV_CVC_ELT_7, /* 1860 */
 
    XML_SCHEMAV_CVC_ATTRIBUTE_1, /* 1861 */
 
    XML_SCHEMAV_CVC_ATTRIBUTE_2, /* 1862 */
 
    XML_SCHEMAV_CVC_ATTRIBUTE_3, /* 1863 */
 
    XML_SCHEMAV_CVC_ATTRIBUTE_4, /* 1864 */
 
    XML_SCHEMAV_CVC_COMPLEX_TYPE_3_1, /* 1865 */
 
    XML_SCHEMAV_CVC_COMPLEX_TYPE_3_2_1, /* 1866 */
 
    XML_SCHEMAV_CVC_COMPLEX_TYPE_3_2_2, /* 1867 */
 
    XML_SCHEMAV_CVC_COMPLEX_TYPE_4, /* 1868 */
 
    XML_SCHEMAV_CVC_COMPLEX_TYPE_5_1, /* 1869 */
 
    XML_SCHEMAV_CVC_COMPLEX_TYPE_5_2, /* 1870 */
 
    XML_SCHEMAV_ELEMENT_CONTENT, /* 1871 */
 
    XML_SCHEMAV_DOCUMENT_ELEMENT_MISSING, /* 1872 */
 
    XML_SCHEMAV_CVC_COMPLEX_TYPE_1, /* 1873 */
 
    XML_SCHEMAV_CVC_AU, /* 1874 */
 
    XML_SCHEMAV_CVC_TYPE_1, /* 1875 */
 
    XML_SCHEMAV_CVC_TYPE_2, /* 1876 */
 
    XML_SCHEMAV_CVC_IDC, /* 1877 */
 
    XML_SCHEMAV_CVC_WILDCARD, /* 1878 */
 
    XML_SCHEMAV_MISC, /* 1879 */
 
    XML_XPTR_UNKNOWN_SCHEME = 1900,
 
    XML_XPTR_CHILDSEQ_START, /* 1901 */
 
    XML_XPTR_EVAL_FAILED, /* 1902 */
 
    XML_XPTR_EXTRA_OBJECTS, /* 1903 */
 
    XML_C14N_CREATE_CTXT = 1950,
 
    XML_C14N_REQUIRES_UTF8, /* 1951 */
 
    XML_C14N_CREATE_STACK, /* 1952 */
 
    XML_C14N_INVALID_NODE, /* 1953 */
 
    XML_C14N_UNKNOW_NODE, /* 1954 */
 
    XML_C14N_RELATIVE_NAMESPACE, /* 1955 */
 
    XML_FTP_PASV_ANSWER = 2000,
 
    XML_FTP_EPSV_ANSWER, /* 2001 */
 
    XML_FTP_ACCNT, /* 2002 */
 
    XML_FTP_URL_SYNTAX, /* 2003 */
 
    XML_HTTP_URL_SYNTAX = 2020,
 
    XML_HTTP_USE_IP, /* 2021 */
 
    XML_HTTP_UNKNOWN_HOST, /* 2022 */
 
    XML_SCHEMAP_SRC_SIMPLE_TYPE_1 = 3000,
 
    XML_SCHEMAP_SRC_SIMPLE_TYPE_2, /* 3001 */
 
    XML_SCHEMAP_SRC_SIMPLE_TYPE_3, /* 3002 */
 
    XML_SCHEMAP_SRC_SIMPLE_TYPE_4, /* 3003 */
 
    XML_SCHEMAP_SRC_RESOLVE, /* 3004 */
 
    XML_SCHEMAP_SRC_RESTRICTION_BASE_OR_SIMPLETYPE, /* 3005 */
 
    XML_SCHEMAP_SRC_LIST_ITEMTYPE_OR_SIMPLETYPE, /* 3006 */
 
    XML_SCHEMAP_SRC_UNION_MEMBERTYPES_OR_SIMPLETYPES, /* 3007 */
 
    XML_SCHEMAP_ST_PROPS_CORRECT_1, /* 3008 */
 
    XML_SCHEMAP_ST_PROPS_CORRECT_2, /* 3009 */
 
    XML_SCHEMAP_ST_PROPS_CORRECT_3, /* 3010 */
 
    XML_SCHEMAP_COS_ST_RESTRICTS_1_1, /* 3011 */
 
    XML_SCHEMAP_COS_ST_RESTRICTS_1_2, /* 3012 */
 
    XML_SCHEMAP_COS_ST_RESTRICTS_1_3_1, /* 3013 */
 
    XML_SCHEMAP_COS_ST_RESTRICTS_1_3_2, /* 3014 */
 
    XML_SCHEMAP_COS_ST_RESTRICTS_2_1, /* 3015 */
 
    XML_SCHEMAP_COS_ST_RESTRICTS_2_3_1_1, /* 3016 */
 
    XML_SCHEMAP_COS_ST_RESTRICTS_2_3_1_2, /* 3017 */
 
    XML_SCHEMAP_COS_ST_RESTRICTS_2_3_2_1, /* 3018 */
 
    XML_SCHEMAP_COS_ST_RESTRICTS_2_3_2_2, /* 3019 */
 
    XML_SCHEMAP_COS_ST_RESTRICTS_2_3_2_3, /* 3020 */
 
    XML_SCHEMAP_COS_ST_RESTRICTS_2_3_2_4, /* 3021 */
 
    XML_SCHEMAP_COS_ST_RESTRICTS_2_3_2_5, /* 3022 */
 
    XML_SCHEMAP_COS_ST_RESTRICTS_3_1, /* 3023 */
 
    XML_SCHEMAP_COS_ST_RESTRICTS_3_3_1, /* 3024 */
 
    XML_SCHEMAP_COS_ST_RESTRICTS_3_3_1_2, /* 3025 */
 
    XML_SCHEMAP_COS_ST_RESTRICTS_3_3_2_2, /* 3026 */
 
    XML_SCHEMAP_COS_ST_RESTRICTS_3_3_2_1, /* 3027 */
 
    XML_SCHEMAP_COS_ST_RESTRICTS_3_3_2_3, /* 3028 */
 
    XML_SCHEMAP_COS_ST_RESTRICTS_3_3_2_4, /* 3029 */
 
    XML_SCHEMAP_COS_ST_RESTRICTS_3_3_2_5, /* 3030 */
 
    XML_SCHEMAP_COS_ST_DERIVED_OK_2_1, /* 3031 */
 
    XML_SCHEMAP_COS_ST_DERIVED_OK_2_2, /* 3032 */
 
    XML_SCHEMAP_S4S_ELEM_NOT_ALLOWED, /* 3033 */
 
    XML_SCHEMAP_S4S_ELEM_MISSING, /* 3034 */
 
    XML_SCHEMAP_S4S_ATTR_NOT_ALLOWED, /* 3035 */
 
    XML_SCHEMAP_S4S_ATTR_MISSING, /* 3036 */
 
    XML_SCHEMAP_S4S_ATTR_INVALID_VALUE, /* 3037 */
 
    XML_SCHEMAP_SRC_ELEMENT_1, /* 3038 */
 
    XML_SCHEMAP_SRC_ELEMENT_2_1, /* 3039 */
 
    XML_SCHEMAP_SRC_ELEMENT_2_2, /* 3040 */
 
    XML_SCHEMAP_SRC_ELEMENT_3, /* 3041 */
 
    XML_SCHEMAP_P_PROPS_CORRECT_1, /* 3042 */
 
    XML_SCHEMAP_P_PROPS_CORRECT_2_1, /* 3043 */
 
    XML_SCHEMAP_P_PROPS_CORRECT_2_2, /* 3044 */
 
    XML_SCHEMAP_E_PROPS_CORRECT_2, /* 3045 */
 
    XML_SCHEMAP_E_PROPS_CORRECT_3, /* 3046 */
 
    XML_SCHEMAP_E_PROPS_CORRECT_4, /* 3047 */
 
    XML_SCHEMAP_E_PROPS_CORRECT_5, /* 3048 */
 
    XML_SCHEMAP_E_PROPS_CORRECT_6, /* 3049 */
 
    XML_SCHEMAP_SRC_INCLUDE, /* 3050 */
 
    XML_SCHEMAP_SRC_ATTRIBUTE_1, /* 3051 */
 
    XML_SCHEMAP_SRC_ATTRIBUTE_2, /* 3052 */
 
    XML_SCHEMAP_SRC_ATTRIBUTE_3_1, /* 3053 */
 
    XML_SCHEMAP_SRC_ATTRIBUTE_3_2, /* 3054 */
 
    XML_SCHEMAP_SRC_ATTRIBUTE_4, /* 3055 */
 
    XML_SCHEMAP_NO_XMLNS, /* 3056 */
 
    XML_SCHEMAP_NO_XSI, /* 3057 */
 
    XML_SCHEMAP_COS_VALID_DEFAULT_1, /* 3058 */
 
    XML_SCHEMAP_COS_VALID_DEFAULT_2_1, /* 3059 */
 
    XML_SCHEMAP_COS_VALID_DEFAULT_2_2_1, /* 3060 */
 
    XML_SCHEMAP_COS_VALID_DEFAULT_2_2_2, /* 3061 */
 
    XML_SCHEMAP_CVC_SIMPLE_TYPE, /* 3062 */
 
    XML_SCHEMAP_COS_CT_EXTENDS_1_1, /* 3063 */
 
    XML_SCHEMAP_SRC_IMPORT_1_1, /* 3064 */
 
    XML_SCHEMAP_SRC_IMPORT_1_2, /* 3065 */
 
    XML_SCHEMAP_SRC_IMPORT_2, /* 3066 */
 
    XML_SCHEMAP_SRC_IMPORT_2_1, /* 3067 */
 
    XML_SCHEMAP_SRC_IMPORT_2_2, /* 3068 */
 
    XML_SCHEMAP_INTERNAL, /* 3069 non-W3C */
 
    XML_SCHEMAP_NOT_DETERMINISTIC, /* 3070 non-W3C */
 
    XML_SCHEMAP_SRC_ATTRIBUTE_GROUP_1, /* 3071 */
 
    XML_SCHEMAP_SRC_ATTRIBUTE_GROUP_2, /* 3072 */
 
    XML_SCHEMAP_SRC_ATTRIBUTE_GROUP_3, /* 3073 */
 
    XML_SCHEMAP_MG_PROPS_CORRECT_1, /* 3074 */
 
    XML_SCHEMAP_MG_PROPS_CORRECT_2, /* 3075 */
 
    XML_SCHEMAP_SRC_CT_1, /* 3076 */
 
    XML_SCHEMAP_DERIVATION_OK_RESTRICTION_2_1_3, /* 3077 */
 
    XML_SCHEMAP_AU_PROPS_CORRECT_2, /* 3078 */
 
    XML_SCHEMAP_A_PROPS_CORRECT_2, /* 3079 */
 
    XML_SCHEMAP_C_PROPS_CORRECT, /* 3080 */
 
    XML_SCHEMAP_SRC_REDEFINE, /* 3081 */
 
    XML_SCHEMAP_SRC_IMPORT, /* 3082 */
 
    XML_SCHEMAP_WARN_SKIP_SCHEMA, /* 3083 */
 
    XML_SCHEMAP_WARN_UNLOCATED_SCHEMA, /* 3084 */
 
    XML_SCHEMAP_WARN_ATTR_REDECL_PROH, /* 3085 */
 
    XML_SCHEMAP_WARN_ATTR_POINTLESS_PROH, /* 3085 */
 
    XML_SCHEMAP_AG_PROPS_CORRECT, /* 3086 */
 
    XML_SCHEMAP_COS_CT_EXTENDS_1_2, /* 3087 */
 
    XML_SCHEMAP_AU_PROPS_CORRECT, /* 3088 */
 
    XML_SCHEMAP_A_PROPS_CORRECT_3, /* 3089 */
 
    XML_SCHEMAP_COS_ALL_LIMITED, /* 3090 */
 
    XML_SCHEMATRONV_ASSERT = 4000, /* 4000 */
 
    XML_SCHEMATRONV_REPORT,
 
    XML_MODULE_OPEN = 4900, /* 4900 */
 
    XML_MODULE_CLOSE, /* 4901 */
 
    XML_CHECK_FOUND_ELEMENT = 5000,
 
    XML_CHECK_FOUND_ATTRIBUTE, /* 5001 */
 
    XML_CHECK_FOUND_TEXT, /* 5002 */
 
    XML_CHECK_FOUND_CDATA, /* 5003 */
 
    XML_CHECK_FOUND_ENTITYREF, /* 5004 */
 
    XML_CHECK_FOUND_ENTITY, /* 5005 */
 
    XML_CHECK_FOUND_PI, /* 5006 */
 
    XML_CHECK_FOUND_COMMENT, /* 5007 */
 
    XML_CHECK_FOUND_DOCTYPE, /* 5008 */
 
    XML_CHECK_FOUND_FRAGMENT, /* 5009 */
 
    XML_CHECK_FOUND_NOTATION, /* 5010 */
 
    XML_CHECK_UNKNOWN_NODE, /* 5011 */
 
    XML_CHECK_ENTITY_TYPE, /* 5012 */
 
    XML_CHECK_NO_PARENT, /* 5013 */
 
    XML_CHECK_NO_DOC, /* 5014 */
 
    XML_CHECK_NO_NAME, /* 5015 */
 
    XML_CHECK_NO_ELEM, /* 5016 */
 
    XML_CHECK_WRONG_DOC, /* 5017 */
 
    XML_CHECK_NO_PREV, /* 5018 */
 
    XML_CHECK_WRONG_PREV, /* 5019 */
 
    XML_CHECK_NO_NEXT, /* 5020 */
 
    XML_CHECK_WRONG_NEXT, /* 5021 */
 
    XML_CHECK_NOT_DTD, /* 5022 */
 
    XML_CHECK_NOT_ATTR, /* 5023 */
 
    XML_CHECK_NOT_ATTR_DECL, /* 5024 */
 
    XML_CHECK_NOT_ELEM_DECL, /* 5025 */
 
    XML_CHECK_NOT_ENTITY_DECL, /* 5026 */
 
    XML_CHECK_NOT_NS_DECL, /* 5027 */
 
    XML_CHECK_NO_HREF, /* 5028 */
 
    XML_CHECK_WRONG_PARENT,/* 5029 */
 
    XML_CHECK_NS_SCOPE, /* 5030 */
 
    XML_CHECK_NS_ANCESTOR, /* 5031 */
 
    XML_CHECK_NOT_UTF8, /* 5032 */
 
    XML_CHECK_NO_DICT, /* 5033 */
 
    XML_CHECK_NOT_NCNAME, /* 5034 */
 
    XML_CHECK_OUTSIDE_DICT, /* 5035 */
 
    XML_CHECK_WRONG_NAME, /* 5036 */
 
    XML_CHECK_NAME_NOT_NULL, /* 5037 */
 
    XML_I18N_NO_NAME = 6000,
 
    XML_I18N_NO_HANDLER, /* 6001 */
 
    XML_I18N_EXCESS_HANDLER, /* 6002 */
 
    XML_I18N_CONV_FAILED, /* 6003 */
 
    XML_I18N_NO_OUTPUT /* 6004 */
 
#if 0
 
    XML_CHECK_, /* 5033 */
 
    XML_CHECK_X /* 503 */
 
#endif
 
} xmlParserErrors;
 

	
 
/**
 
 * xmlGenericErrorFunc:
 
 * @ctx:  a parsing context
 
 * @msg:  the message
 
 * @...:  the extra arguments of the varags to format the message
 
 *
 
 * Signature of the function to use when there is an error and
 
 * no parsing or validity context available .
 
 */
 
typedef void (XMLCDECL *xmlGenericErrorFunc) (void *ctx,
 
				 const char *msg,
 
				 ...) LIBXML_ATTR_FORMAT(2,3);
 
/**
 
 * xmlStructuredErrorFunc:
 
 * @userData:  user provided data for the error callback
 
 * @error:  the error being raised.
 
 *
 
 * Signature of the function to use when there is an error and
 
 * the module handles the new error reporting mechanism.
 
 */
 
typedef void (XMLCALL *xmlStructuredErrorFunc) (void *userData, xmlErrorPtr error);
 

	
 
/*
 
 * Use the following function to reset the two global variables
 
 * xmlGenericError and xmlGenericErrorContext.
 
 */
 
XMLPUBFUN void XMLCALL
 
    xmlSetGenericErrorFunc	(void *ctx,
 
				 xmlGenericErrorFunc handler);
 
XMLPUBFUN void XMLCALL
 
    initGenericErrorDefaultFunc	(xmlGenericErrorFunc *handler);
 

	
 
XMLPUBFUN void XMLCALL
 
    xmlSetStructuredErrorFunc	(void *ctx,
 
				 xmlStructuredErrorFunc handler);
 
/*
 
 * Default message routines used by SAX and Valid context for error
 
 * and warning reporting.
 
 */
 
XMLPUBFUN void XMLCDECL
 
    xmlParserError		(void *ctx,
 
				 const char *msg,
 
				 ...) LIBXML_ATTR_FORMAT(2,3);
 
XMLPUBFUN void XMLCDECL
 
    xmlParserWarning		(void *ctx,
 
				 const char *msg,
 
				 ...) LIBXML_ATTR_FORMAT(2,3);
 
XMLPUBFUN void XMLCDECL
 
    xmlParserValidityError	(void *ctx,
 
				 const char *msg,
 
				 ...) LIBXML_ATTR_FORMAT(2,3);
 
XMLPUBFUN void XMLCDECL
 
    xmlParserValidityWarning	(void *ctx,
 
				 const char *msg,
 
				 ...) LIBXML_ATTR_FORMAT(2,3);
 
XMLPUBFUN void XMLCALL
 
    xmlParserPrintFileInfo	(xmlParserInputPtr input);
 
XMLPUBFUN void XMLCALL
 
    xmlParserPrintFileContext	(xmlParserInputPtr input);
 

	
 
/*
 
 * Extended error information routines
 
 */
 
XMLPUBFUN xmlErrorPtr XMLCALL
 
    xmlGetLastError		(void);
 
XMLPUBFUN void XMLCALL
 
    xmlResetLastError		(void);
 
XMLPUBFUN xmlErrorPtr XMLCALL
 
    xmlCtxtGetLastError		(void *ctx);
 
XMLPUBFUN void XMLCALL
 
    xmlCtxtResetLastError	(void *ctx);
 
XMLPUBFUN void XMLCALL
 
    xmlResetError		(xmlErrorPtr err);
 
XMLPUBFUN int XMLCALL
 
    xmlCopyError		(xmlErrorPtr from,
 
				 xmlErrorPtr to);
 

	
 
#ifdef IN_LIBXML
 
/*
 
 * Internal callback reporting routine
 
 */
 
XMLPUBFUN void XMLCALL
 
    __xmlRaiseError		(xmlStructuredErrorFunc schannel,
 
				 xmlGenericErrorFunc channel,
 
				 void *data,
 
                                 void *ctx,
 
				 void *node,
 
				 int domain,
 
				 int code,
 
				 xmlErrorLevel level,
 
				 const char *file,
 
				 int line,
 
				 const char *str1,
 
				 const char *str2,
 
				 const char *str3,
 
				 int int1,
 
				 int col,
 
				 const char *msg,
 
				 ...) LIBXML_ATTR_FORMAT(16,17);
 
XMLPUBFUN void XMLCALL
 
    __xmlSimpleError		(int domain,
 
				 int code,
 
				 xmlNodePtr node,
 
				 const char *msg,
 
				 const char *extra);
 
#endif
 
#ifdef __cplusplus
 
}
 
#endif
 
#endif /* __XML_ERROR_H__ */
lib/libxml2/include/libxml/xmlexports.h
Show inline comments
 
new file 100755
 
/*
 
 * Summary: macros for marking symbols as exportable/importable.
 
 * Description: macros for marking symbols as exportable/importable.
 
 *
 
 * Copy: See Copyright for the status of this software.
 
 *
 
 * Author: Igor Zlatovic <igor@zlatkovic.com>
 
 */
 

	
 
#ifndef __XML_EXPORTS_H__
 
#define __XML_EXPORTS_H__
 

	
 
/**
 
 * XMLPUBFUN, XMLPUBVAR, XMLCALL
 
 *
 
 * Macros which declare an exportable function, an exportable variable and
 
 * the calling convention used for functions.
 
 *
 
 * Please use an extra block for every platform/compiler combination when
 
 * modifying this, rather than overlong #ifdef lines. This helps
 
 * readability as well as the fact that different compilers on the same
 
 * platform might need different definitions.
 
 */
 

	
 
/**
 
 * XMLPUBFUN:
 
 *
 
 * Macros which declare an exportable function
 
 */
 
#define XMLPUBFUN
 
/**
 
 * XMLPUBVAR:
 
 *
 
 * Macros which declare an exportable variable
 
 */
 
#define XMLPUBVAR extern
 
/**
 
 * XMLCALL:
 
 *
 
 * Macros which declare the called convention for exported functions
 
 */
 
#define XMLCALL
 
/**
 
 * XMLCDECL:
 
 *
 
 * Macro which declares the calling convention for exported functions that 
 
 * use '...'.
 
 */
 
#define XMLCDECL
 

	
 
/** DOC_DISABLE */
 

	
 
/* Windows platform with MS compiler */
 
#if defined(_WIN32) && defined(_MSC_VER)
 
  #undef XMLPUBFUN
 
  #undef XMLPUBVAR
 
  #undef XMLCALL
 
  #undef XMLCDECL
 
  #if defined(IN_LIBXML) && !defined(LIBXML_STATIC)
 
    #define XMLPUBFUN __declspec(dllexport)
 
    #define XMLPUBVAR __declspec(dllexport)
 
  #else
 
    #define XMLPUBFUN
 
    #if !defined(LIBXML_STATIC)
 
      #define XMLPUBVAR __declspec(dllimport) extern
 
    #else
 
      #define XMLPUBVAR extern
 
    #endif
 
  #endif
 
  #if defined(LIBXML_FASTCALL)
 
    #define XMLCALL __fastcall
 
  #else
 
    #define XMLCALL __cdecl
 
  #endif
 
  #define XMLCDECL __cdecl
 
  #if !defined _REENTRANT
 
    #define _REENTRANT
 
  #endif
 
#endif
 

	
 
/* Windows platform with Borland compiler */
 
#if defined(_WIN32) && defined(__BORLANDC__)
 
  #undef XMLPUBFUN
 
  #undef XMLPUBVAR
 
  #undef XMLCALL
 
  #undef XMLCDECL
 
  #if defined(IN_LIBXML) && !defined(LIBXML_STATIC)
 
    #define XMLPUBFUN __declspec(dllexport)
 
    #define XMLPUBVAR __declspec(dllexport) extern
 
  #else
 
    #define XMLPUBFUN
 
    #if !defined(LIBXML_STATIC)
 
      #define XMLPUBVAR __declspec(dllimport) extern
 
    #else
 
      #define XMLPUBVAR extern
 
    #endif
 
  #endif
 
  #define XMLCALL __cdecl
 
  #define XMLCDECL __cdecl
 
  #if !defined _REENTRANT
 
    #define _REENTRANT
 
  #endif
 
#endif
 

	
 
/* Windows platform with GNU compiler (Mingw) */
 

	
 
/* https://bugzilla.gnome.org/show_bug.cgi?id=561340 */
 
/* http://osdir.com/ml/gnome.lib.xml.general/2004-02/msg00007.html*/
 

	
 

	
 
#if defined(_WIN32) && defined(__MINGW32__)
 
  #undef XMLPUBFUN
 
  #undef XMLPUBVAR
 
  #undef XMLCALL
 
  #undef XMLCDECL
 
  /*
 
   * if defined(IN_LIBXML) this raises problems on mingw with msys
 
   * _imp__xmlFree listed as missing. Try to workaround the problem
 
   * by also making that declaration when compiling client code.
 
   */
 
  /* #if defined(IN_LIBXML) && !defined(LIBXML_STATIC)*/
 
  #if !defined(LIBXML_STATIC)
 
    #define XMLPUBFUN __declspec(dllexport)
 
    #define XMLPUBVAR __declspec(dllexport)
 
  #else
 
    #define XMLPUBFUN
 
    #if !defined(LIBXML_STATIC)
 
      #define XMLPUBVAR __declspec(dllimport) extern
 
    #else
 
      #define XMLPUBVAR extern
 
    #endif
 
  #endif
 
  #define XMLCALL __cdecl
 
  #define XMLCDECL __cdecl
 
  #if !defined _REENTRANT
 
    #define _REENTRANT
 
  #endif
 
#endif
 

	
 

	
 
/* Cygwin platform, GNU compiler */
 
#if defined(_WIN32) && defined(__CYGWIN__)
 
  #undef XMLPUBFUN
 
  #undef XMLPUBVAR
 
  #undef XMLCALL
 
  #undef XMLCDECL
 
  #if defined(IN_LIBXML) && !defined(LIBXML_STATIC)
 
    #define XMLPUBFUN __declspec(dllexport)
 
    #define XMLPUBVAR __declspec(dllexport)
 
  #else
 
    #define XMLPUBFUN
 
    #if !defined(LIBXML_STATIC)
 
      #define XMLPUBVAR __declspec(dllimport) extern
 
    #else
 
      #define XMLPUBVAR
 
    #endif
 
  #endif
 
  #define XMLCALL __cdecl
 
  #define XMLCDECL __cdecl
 
#endif
 

	
 
/* Compatibility */
 
#if !defined(LIBXML_DLL_IMPORT)
 
#define LIBXML_DLL_IMPORT XMLPUBVAR
 
#endif
 

	
 
#endif /* __XML_EXPORTS_H__ */
 

	
 

	
lib/libxml2/include/libxml/xmlmemory.h
Show inline comments
 
new file 100755
 
/*
 
 * Summary: interface for the memory allocator
 
 * Description: provides interfaces for the memory allocator,
 
 *              including debugging capabilities.
 
 *
 
 * Copy: See Copyright for the status of this software.
 
 *
 
 * Author: Daniel Veillard
 
 */
 

	
 

	
 
#ifndef __DEBUG_MEMORY_ALLOC__
 
#define __DEBUG_MEMORY_ALLOC__
 

	
 
#include <stdio.h>
 
#include <libxml/xmlversion.h>
 

	
 
/**
 
 * DEBUG_MEMORY:
 
 *
 
 * DEBUG_MEMORY replaces the allocator with a collect and debug
 
 * shell to the libc allocator.
 
 * DEBUG_MEMORY should only be activated when debugging
 
 * libxml i.e. if libxml has been configured with --with-debug-mem too.
 
 */
 
/* #define DEBUG_MEMORY_FREED */
 
/* #define DEBUG_MEMORY_LOCATION */
 

	
 
#ifdef DEBUG
 
#ifndef DEBUG_MEMORY
 
#define DEBUG_MEMORY
 
#endif
 
#endif
 

	
 
/**
 
 * DEBUG_MEMORY_LOCATION:
 
 *
 
 * DEBUG_MEMORY_LOCATION should be activated only when debugging
 
 * libxml i.e. if libxml has been configured with --with-debug-mem too.
 
 */
 
#ifdef DEBUG_MEMORY_LOCATION
 
#endif
 

	
 
#ifdef __cplusplus
 
extern "C" {
 
#endif
 

	
 
/*
 
 * The XML memory wrapper support 4 basic overloadable functions.
 
 */
 
/**
 
 * xmlFreeFunc:
 
 * @mem: an already allocated block of memory
 
 *
 
 * Signature for a free() implementation.
 
 */
 
typedef void (XMLCALL *xmlFreeFunc)(void *mem);
 
/**
 
 * xmlMallocFunc:
 
 * @size:  the size requested in bytes
 
 *
 
 * Signature for a malloc() implementation.
 
 *
 
 * Returns a pointer to the newly allocated block or NULL in case of error.
 
 */
 
typedef void *(LIBXML_ATTR_ALLOC_SIZE(1) XMLCALL *xmlMallocFunc)(size_t size);
 

	
 
/**
 
 * xmlReallocFunc:
 
 * @mem: an already allocated block of memory
 
 * @size:  the new size requested in bytes
 
 *
 
 * Signature for a realloc() implementation.
 
 *
 
 * Returns a pointer to the newly reallocated block or NULL in case of error.
 
 */
 
typedef void *(XMLCALL *xmlReallocFunc)(void *mem, size_t size);
 

	
 
/**
 
 * xmlStrdupFunc:
 
 * @str: a zero terminated string
 
 *
 
 * Signature for an strdup() implementation.
 
 *
 
 * Returns the copy of the string or NULL in case of error.
 
 */
 
typedef char *(XMLCALL *xmlStrdupFunc)(const char *str);
 

	
 
/*
 
 * The 4 interfaces used for all memory handling within libxml.
 
LIBXML_DLL_IMPORT xmlFreeFunc xmlFree;
 
LIBXML_DLL_IMPORT xmlMallocFunc xmlMalloc;
 
LIBXML_DLL_IMPORT xmlMallocFunc xmlMallocAtomic;
 
LIBXML_DLL_IMPORT xmlReallocFunc xmlRealloc;
 
LIBXML_DLL_IMPORT xmlStrdupFunc xmlMemStrdup;
 
 */
 

	
 
/*
 
 * The way to overload the existing functions.
 
 * The xmlGc function have an extra entry for atomic block
 
 * allocations useful for garbage collected memory allocators
 
 */
 
XMLPUBFUN int XMLCALL
 
	xmlMemSetup	(xmlFreeFunc freeFunc,
 
			 xmlMallocFunc mallocFunc,
 
			 xmlReallocFunc reallocFunc,
 
			 xmlStrdupFunc strdupFunc);
 
XMLPUBFUN int XMLCALL
 
	xmlMemGet	(xmlFreeFunc *freeFunc,
 
			 xmlMallocFunc *mallocFunc,
 
			 xmlReallocFunc *reallocFunc,
 
			 xmlStrdupFunc *strdupFunc);
 
XMLPUBFUN int XMLCALL
 
	xmlGcMemSetup	(xmlFreeFunc freeFunc,
 
			 xmlMallocFunc mallocFunc,
 
			 xmlMallocFunc mallocAtomicFunc,
 
			 xmlReallocFunc reallocFunc,
 
			 xmlStrdupFunc strdupFunc);
 
XMLPUBFUN int XMLCALL
 
	xmlGcMemGet	(xmlFreeFunc *freeFunc,
 
			 xmlMallocFunc *mallocFunc,
 
			 xmlMallocFunc *mallocAtomicFunc,
 
			 xmlReallocFunc *reallocFunc,
 
			 xmlStrdupFunc *strdupFunc);
 

	
 
/*
 
 * Initialization of the memory layer.
 
 */
 
XMLPUBFUN int XMLCALL
 
	xmlInitMemory	(void);
 

	
 
/*
 
 * Cleanup of the memory layer.
 
 */
 
XMLPUBFUN void XMLCALL
 
                xmlCleanupMemory        (void);
 
/*
 
 * These are specific to the XML debug memory wrapper.
 
 */
 
XMLPUBFUN int XMLCALL
 
	xmlMemUsed	(void);
 
XMLPUBFUN int XMLCALL
 
	xmlMemBlocks	(void);
 
XMLPUBFUN void XMLCALL
 
	xmlMemDisplay	(FILE *fp);
 
XMLPUBFUN void XMLCALL
 
	xmlMemDisplayLast(FILE *fp, long nbBytes);
 
XMLPUBFUN void XMLCALL
 
	xmlMemShow	(FILE *fp, int nr);
 
XMLPUBFUN void XMLCALL
 
	xmlMemoryDump	(void);
 
XMLPUBFUN void * XMLCALL
 
	xmlMemMalloc	(size_t size) LIBXML_ATTR_ALLOC_SIZE(1);
 
XMLPUBFUN void * XMLCALL
 
	xmlMemRealloc	(void *ptr,size_t size);
 
XMLPUBFUN void XMLCALL
 
	xmlMemFree	(void *ptr);
 
XMLPUBFUN char * XMLCALL
 
	xmlMemoryStrdup	(const char *str);
 
XMLPUBFUN void * XMLCALL
 
	xmlMallocLoc	(size_t size, const char *file, int line) LIBXML_ATTR_ALLOC_SIZE(1);
 
XMLPUBFUN void * XMLCALL
 
	xmlReallocLoc	(void *ptr, size_t size, const char *file, int line);
 
XMLPUBFUN void * XMLCALL
 
	xmlMallocAtomicLoc (size_t size, const char *file, int line) LIBXML_ATTR_ALLOC_SIZE(1);
 
XMLPUBFUN char * XMLCALL
 
	xmlMemStrdupLoc	(const char *str, const char *file, int line);
 

	
 

	
 
#ifdef DEBUG_MEMORY_LOCATION
 
/**
 
 * xmlMalloc:
 
 * @size:  number of bytes to allocate
 
 *
 
 * Wrapper for the malloc() function used in the XML library.
 
 *
 
 * Returns the pointer to the allocated area or NULL in case of error.
 
 */
 
#define xmlMalloc(size) xmlMallocLoc((size), __FILE__, __LINE__)
 
/**
 
 * xmlMallocAtomic:
 
 * @size:  number of bytes to allocate
 
 *
 
 * Wrapper for the malloc() function used in the XML library for allocation
 
 * of block not containing pointers to other areas.
 
 *
 
 * Returns the pointer to the allocated area or NULL in case of error.
 
 */
 
#define xmlMallocAtomic(size) xmlMallocAtomicLoc((size), __FILE__, __LINE__)
 
/**
 
 * xmlRealloc:
 
 * @ptr:  pointer to the existing allocated area
 
 * @size:  number of bytes to allocate
 
 *
 
 * Wrapper for the realloc() function used in the XML library.
 
 *
 
 * Returns the pointer to the allocated area or NULL in case of error.
 
 */
 
#define xmlRealloc(ptr, size) xmlReallocLoc((ptr), (size), __FILE__, __LINE__)
 
/**
 
 * xmlMemStrdup:
 
 * @str:  pointer to the existing string
 
 *
 
 * Wrapper for the strdup() function, xmlStrdup() is usually preferred.
 
 *
 
 * Returns the pointer to the allocated area or NULL in case of error.
 
 */
 
#define xmlMemStrdup(str) xmlMemStrdupLoc((str), __FILE__, __LINE__)
 

	
 
#endif /* DEBUG_MEMORY_LOCATION */
 

	
 
#ifdef __cplusplus
 
}
 
#endif /* __cplusplus */
 

	
 
#ifndef __XML_GLOBALS_H
 
#ifndef __XML_THREADS_H__
 
#include <libxml/threads.h>
 
#include <libxml/globals.h>
 
#endif
 
#endif
 

	
 
#endif  /* __DEBUG_MEMORY_ALLOC__ */
 

	
lib/libxml2/include/libxml/xmlmodule.h
Show inline comments
 
new file 100755
 
/*
 
 * Summary: dynamic module loading
 
 * Description: basic API for dynamic module loading, used by
 
 *              libexslt added in 2.6.17
 
 *
 
 * Copy: See Copyright for the status of this software.
 
 *
 
 * Author: Joel W. Reed
 
 */
 

	
 
#ifndef __XML_MODULE_H__
 
#define __XML_MODULE_H__
 

	
 
#include <libxml/xmlversion.h>
 

	
 
#ifdef LIBXML_MODULES_ENABLED
 

	
 
#ifdef __cplusplus
 
extern "C" {
 
#endif
 

	
 
/**
 
 * xmlModulePtr:
 
 *
 
 * A handle to a dynamically loaded module
 
 */
 
typedef struct _xmlModule xmlModule;
 
typedef xmlModule *xmlModulePtr;
 

	
 
/**
 
 * xmlModuleOption:
 
 *
 
 * enumeration of options that can be passed down to xmlModuleOpen()
 
 */
 
typedef enum {
 
    XML_MODULE_LAZY = 1,	/* lazy binding */
 
    XML_MODULE_LOCAL= 2		/* local binding */
 
} xmlModuleOption;
 

	
 
XMLPUBFUN xmlModulePtr XMLCALL xmlModuleOpen	(const char *filename,
 
						 int options);
 

	
 
XMLPUBFUN int XMLCALL xmlModuleSymbol		(xmlModulePtr module,
 
						 const char* name,
 
						 void **result);
 

	
 
XMLPUBFUN int XMLCALL xmlModuleClose		(xmlModulePtr module);
 

	
 
XMLPUBFUN int XMLCALL xmlModuleFree		(xmlModulePtr module);
 

	
 
#ifdef __cplusplus
 
}
 
#endif 
 

	
 
#endif /* LIBXML_MODULES_ENABLED */
 

	
 
#endif /*__XML_MODULE_H__ */
lib/libxml2/include/libxml/xmlreader.h
Show inline comments
 
new file 100755
 
/*
 
 * Summary: the XMLReader implementation
 
 * Description: API of the XML streaming API based on C# interfaces.
 
 *
 
 * Copy: See Copyright for the status of this software.
 
 *
 
 * Author: Daniel Veillard
 
 */
 

	
 
#ifndef __XML_XMLREADER_H__
 
#define __XML_XMLREADER_H__
 

	
 
#include <libxml/xmlversion.h>
 
#include <libxml/tree.h>
 
#include <libxml/xmlIO.h>
 
#ifdef LIBXML_SCHEMAS_ENABLED
 
#include <libxml/relaxng.h>
 
#include <libxml/xmlschemas.h>
 
#endif
 

	
 
#ifdef __cplusplus
 
extern "C" {
 
#endif
 

	
 
/**
 
 * xmlParserSeverities:
 
 *
 
 * How severe an error callback is when the per-reader error callback API
 
 * is used.
 
 */
 
typedef enum {
 
    XML_PARSER_SEVERITY_VALIDITY_WARNING = 1,
 
    XML_PARSER_SEVERITY_VALIDITY_ERROR = 2,
 
    XML_PARSER_SEVERITY_WARNING = 3,
 
    XML_PARSER_SEVERITY_ERROR = 4
 
} xmlParserSeverities;
 

	
 
#ifdef LIBXML_READER_ENABLED
 

	
 
/**
 
 * xmlTextReaderMode:
 
 *
 
 * Internal state values for the reader.
 
 */
 
typedef enum {
 
    XML_TEXTREADER_MODE_INITIAL = 0,
 
    XML_TEXTREADER_MODE_INTERACTIVE = 1,
 
    XML_TEXTREADER_MODE_ERROR = 2,
 
    XML_TEXTREADER_MODE_EOF =3,
 
    XML_TEXTREADER_MODE_CLOSED = 4,
 
    XML_TEXTREADER_MODE_READING = 5
 
} xmlTextReaderMode;
 

	
 
/**
 
 * xmlParserProperties:
 
 *
 
 * Some common options to use with xmlTextReaderSetParserProp, but it
 
 * is better to use xmlParserOption and the xmlReaderNewxxx and
 
 * xmlReaderForxxx APIs now.
 
 */
 
typedef enum {
 
    XML_PARSER_LOADDTD = 1,
 
    XML_PARSER_DEFAULTATTRS = 2,
 
    XML_PARSER_VALIDATE = 3,
 
    XML_PARSER_SUBST_ENTITIES = 4
 
} xmlParserProperties;
 

	
 
/**
 
 * xmlReaderTypes:
 
 *
 
 * Predefined constants for the different types of nodes.
 
 */
 
typedef enum {
 
    XML_READER_TYPE_NONE = 0,
 
    XML_READER_TYPE_ELEMENT = 1,
 
    XML_READER_TYPE_ATTRIBUTE = 2,
 
    XML_READER_TYPE_TEXT = 3,
 
    XML_READER_TYPE_CDATA = 4,
 
    XML_READER_TYPE_ENTITY_REFERENCE = 5,
 
    XML_READER_TYPE_ENTITY = 6,
 
    XML_READER_TYPE_PROCESSING_INSTRUCTION = 7,
 
    XML_READER_TYPE_COMMENT = 8,
 
    XML_READER_TYPE_DOCUMENT = 9,
 
    XML_READER_TYPE_DOCUMENT_TYPE = 10,
 
    XML_READER_TYPE_DOCUMENT_FRAGMENT = 11,
 
    XML_READER_TYPE_NOTATION = 12,
 
    XML_READER_TYPE_WHITESPACE = 13,
 
    XML_READER_TYPE_SIGNIFICANT_WHITESPACE = 14,
 
    XML_READER_TYPE_END_ELEMENT = 15,
 
    XML_READER_TYPE_END_ENTITY = 16,
 
    XML_READER_TYPE_XML_DECLARATION = 17
 
} xmlReaderTypes;
 

	
 
/**
 
 * xmlTextReader:
 
 *
 
 * Structure for an xmlReader context.
 
 */
 
typedef struct _xmlTextReader xmlTextReader;
 

	
 
/**
 
 * xmlTextReaderPtr:
 
 *
 
 * Pointer to an xmlReader context.
 
 */
 
typedef xmlTextReader *xmlTextReaderPtr;
 

	
 
/*
 
 * Constructors & Destructor
 
 */
 
XMLPUBFUN xmlTextReaderPtr XMLCALL
 
			xmlNewTextReader	(xmlParserInputBufferPtr input,
 
	                                         const char *URI);
 
XMLPUBFUN xmlTextReaderPtr XMLCALL
 
			xmlNewTextReaderFilename(const char *URI);
 

	
 
XMLPUBFUN void XMLCALL
 
			xmlFreeTextReader	(xmlTextReaderPtr reader);
 

	
 
XMLPUBFUN int XMLCALL
 
            xmlTextReaderSetup(xmlTextReaderPtr reader,
 
                   xmlParserInputBufferPtr input, const char *URL,
 
                   const char *encoding, int options);
 

	
 
/*
 
 * Iterators
 
 */
 
XMLPUBFUN int XMLCALL
 
			xmlTextReaderRead	(xmlTextReaderPtr reader);
 

	
 
#ifdef LIBXML_WRITER_ENABLED
 
XMLPUBFUN xmlChar * XMLCALL
 
			xmlTextReaderReadInnerXml	(xmlTextReaderPtr reader);
 

	
 
XMLPUBFUN xmlChar * XMLCALL
 
			xmlTextReaderReadOuterXml	(xmlTextReaderPtr reader);
 
#endif
 

	
 
XMLPUBFUN xmlChar * XMLCALL
 
			xmlTextReaderReadString		(xmlTextReaderPtr reader);
 
XMLPUBFUN int XMLCALL
 
			xmlTextReaderReadAttributeValue	(xmlTextReaderPtr reader);
 

	
 
/*
 
 * Attributes of the node
 
 */
 
XMLPUBFUN int XMLCALL
 
			xmlTextReaderAttributeCount(xmlTextReaderPtr reader);
 
XMLPUBFUN int XMLCALL
 
			xmlTextReaderDepth	(xmlTextReaderPtr reader);
 
XMLPUBFUN int XMLCALL
 
			xmlTextReaderHasAttributes(xmlTextReaderPtr reader);
 
XMLPUBFUN int XMLCALL
 
			xmlTextReaderHasValue(xmlTextReaderPtr reader);
 
XMLPUBFUN int XMLCALL
 
			xmlTextReaderIsDefault	(xmlTextReaderPtr reader);
 
XMLPUBFUN int XMLCALL
 
			xmlTextReaderIsEmptyElement(xmlTextReaderPtr reader);
 
XMLPUBFUN int XMLCALL
 
			xmlTextReaderNodeType	(xmlTextReaderPtr reader);
 
XMLPUBFUN int XMLCALL
 
			xmlTextReaderQuoteChar	(xmlTextReaderPtr reader);
 
XMLPUBFUN int XMLCALL
 
			xmlTextReaderReadState	(xmlTextReaderPtr reader);
 
XMLPUBFUN int XMLCALL
 
                        xmlTextReaderIsNamespaceDecl(xmlTextReaderPtr reader);
 

	
 
XMLPUBFUN const xmlChar * XMLCALL
 
		    xmlTextReaderConstBaseUri	(xmlTextReaderPtr reader);
 
XMLPUBFUN const xmlChar * XMLCALL
 
		    xmlTextReaderConstLocalName	(xmlTextReaderPtr reader);
 
XMLPUBFUN const xmlChar * XMLCALL
 
		    xmlTextReaderConstName	(xmlTextReaderPtr reader);
 
XMLPUBFUN const xmlChar * XMLCALL
 
		    xmlTextReaderConstNamespaceUri(xmlTextReaderPtr reader);
 
XMLPUBFUN const xmlChar * XMLCALL
 
		    xmlTextReaderConstPrefix	(xmlTextReaderPtr reader);
 
XMLPUBFUN const xmlChar * XMLCALL
 
		    xmlTextReaderConstXmlLang	(xmlTextReaderPtr reader);
 
XMLPUBFUN const xmlChar * XMLCALL
 
		    xmlTextReaderConstString	(xmlTextReaderPtr reader,
 
						 const xmlChar *str);
 
XMLPUBFUN const xmlChar * XMLCALL
 
		    xmlTextReaderConstValue	(xmlTextReaderPtr reader);
 

	
 
/*
 
 * use the Const version of the routine for
 
 * better performance and simpler code
 
 */
 
XMLPUBFUN xmlChar * XMLCALL
 
			xmlTextReaderBaseUri	(xmlTextReaderPtr reader);
 
XMLPUBFUN xmlChar * XMLCALL
 
			xmlTextReaderLocalName	(xmlTextReaderPtr reader);
 
XMLPUBFUN xmlChar * XMLCALL
 
			xmlTextReaderName	(xmlTextReaderPtr reader);
 
XMLPUBFUN xmlChar * XMLCALL
 
			xmlTextReaderNamespaceUri(xmlTextReaderPtr reader);
 
XMLPUBFUN xmlChar * XMLCALL
 
			xmlTextReaderPrefix	(xmlTextReaderPtr reader);
 
XMLPUBFUN xmlChar * XMLCALL
 
			xmlTextReaderXmlLang	(xmlTextReaderPtr reader);
 
XMLPUBFUN xmlChar * XMLCALL
 
			xmlTextReaderValue	(xmlTextReaderPtr reader);
 

	
 
/*
 
 * Methods of the XmlTextReader
 
 */
 
XMLPUBFUN int XMLCALL
 
		    xmlTextReaderClose		(xmlTextReaderPtr reader);
 
XMLPUBFUN xmlChar * XMLCALL
 
		    xmlTextReaderGetAttributeNo	(xmlTextReaderPtr reader,
 
						 int no);
 
XMLPUBFUN xmlChar * XMLCALL
 
		    xmlTextReaderGetAttribute	(xmlTextReaderPtr reader,
 
						 const xmlChar *name);
 
XMLPUBFUN xmlChar * XMLCALL
 
		    xmlTextReaderGetAttributeNs	(xmlTextReaderPtr reader,
 
						 const xmlChar *localName,
 
						 const xmlChar *namespaceURI);
 
XMLPUBFUN xmlParserInputBufferPtr XMLCALL
 
		    xmlTextReaderGetRemainder	(xmlTextReaderPtr reader);
 
XMLPUBFUN xmlChar * XMLCALL
 
		    xmlTextReaderLookupNamespace(xmlTextReaderPtr reader,
 
						 const xmlChar *prefix);
 
XMLPUBFUN int XMLCALL
 
		    xmlTextReaderMoveToAttributeNo(xmlTextReaderPtr reader,
 
						 int no);
 
XMLPUBFUN int XMLCALL
 
		    xmlTextReaderMoveToAttribute(xmlTextReaderPtr reader,
 
						 const xmlChar *name);
 
XMLPUBFUN int XMLCALL
 
		    xmlTextReaderMoveToAttributeNs(xmlTextReaderPtr reader,
 
						 const xmlChar *localName,
 
						 const xmlChar *namespaceURI);
 
XMLPUBFUN int XMLCALL
 
		    xmlTextReaderMoveToFirstAttribute(xmlTextReaderPtr reader);
 
XMLPUBFUN int XMLCALL
 
		    xmlTextReaderMoveToNextAttribute(xmlTextReaderPtr reader);
 
XMLPUBFUN int XMLCALL
 
		    xmlTextReaderMoveToElement	(xmlTextReaderPtr reader);
 
XMLPUBFUN int XMLCALL
 
		    xmlTextReaderNormalization	(xmlTextReaderPtr reader);
 
XMLPUBFUN const xmlChar * XMLCALL
 
		    xmlTextReaderConstEncoding  (xmlTextReaderPtr reader);
 

	
 
/*
 
 * Extensions
 
 */
 
XMLPUBFUN int XMLCALL
 
		    xmlTextReaderSetParserProp	(xmlTextReaderPtr reader,
 
						 int prop,
 
						 int value);
 
XMLPUBFUN int XMLCALL
 
		    xmlTextReaderGetParserProp	(xmlTextReaderPtr reader,
 
						 int prop);
 
XMLPUBFUN xmlNodePtr XMLCALL
 
		    xmlTextReaderCurrentNode	(xmlTextReaderPtr reader);
 

	
 
XMLPUBFUN int XMLCALL
 
            xmlTextReaderGetParserLineNumber(xmlTextReaderPtr reader);
 

	
 
XMLPUBFUN int XMLCALL
 
            xmlTextReaderGetParserColumnNumber(xmlTextReaderPtr reader);
 

	
 
XMLPUBFUN xmlNodePtr XMLCALL
 
		    xmlTextReaderPreserve	(xmlTextReaderPtr reader);
 
#ifdef LIBXML_PATTERN_ENABLED
 
XMLPUBFUN int XMLCALL
 
		    xmlTextReaderPreservePattern(xmlTextReaderPtr reader,
 
						 const xmlChar *pattern,
 
						 const xmlChar **namespaces);
 
#endif /* LIBXML_PATTERN_ENABLED */
 
XMLPUBFUN xmlDocPtr XMLCALL
 
		    xmlTextReaderCurrentDoc	(xmlTextReaderPtr reader);
 
XMLPUBFUN xmlNodePtr XMLCALL
 
		    xmlTextReaderExpand		(xmlTextReaderPtr reader);
 
XMLPUBFUN int XMLCALL
 
		    xmlTextReaderNext		(xmlTextReaderPtr reader);
 
XMLPUBFUN int XMLCALL
 
		    xmlTextReaderNextSibling	(xmlTextReaderPtr reader);
 
XMLPUBFUN int XMLCALL
 
		    xmlTextReaderIsValid	(xmlTextReaderPtr reader);
 
#ifdef LIBXML_SCHEMAS_ENABLED
 
XMLPUBFUN int XMLCALL
 
		    xmlTextReaderRelaxNGValidate(xmlTextReaderPtr reader,
 
						 const char *rng);
 
XMLPUBFUN int XMLCALL
 
		    xmlTextReaderRelaxNGSetSchema(xmlTextReaderPtr reader,
 
						 xmlRelaxNGPtr schema);
 
XMLPUBFUN int XMLCALL
 
		    xmlTextReaderSchemaValidate	(xmlTextReaderPtr reader,
 
						 const char *xsd);
 
XMLPUBFUN int XMLCALL
 
		    xmlTextReaderSchemaValidateCtxt(xmlTextReaderPtr reader,
 
						 xmlSchemaValidCtxtPtr ctxt,
 
						 int options);
 
XMLPUBFUN int XMLCALL
 
		    xmlTextReaderSetSchema	(xmlTextReaderPtr reader,
 
						 xmlSchemaPtr schema);
 
#endif
 
XMLPUBFUN const xmlChar * XMLCALL
 
		    xmlTextReaderConstXmlVersion(xmlTextReaderPtr reader);
 
XMLPUBFUN int XMLCALL
 
		    xmlTextReaderStandalone     (xmlTextReaderPtr reader);
 

	
 

	
 
/*
 
 * Index lookup
 
 */
 
XMLPUBFUN long XMLCALL
 
		xmlTextReaderByteConsumed	(xmlTextReaderPtr reader);
 

	
 
/*
 
 * New more complete APIs for simpler creation and reuse of readers
 
 */
 
XMLPUBFUN xmlTextReaderPtr XMLCALL
 
		xmlReaderWalker		(xmlDocPtr doc);
 
XMLPUBFUN xmlTextReaderPtr XMLCALL
 
		xmlReaderForDoc		(const xmlChar * cur,
 
					 const char *URL,
 
					 const char *encoding,
 
					 int options);
 
XMLPUBFUN xmlTextReaderPtr XMLCALL
 
		xmlReaderForFile	(const char *filename,
 
					 const char *encoding,
 
					 int options);
 
XMLPUBFUN xmlTextReaderPtr XMLCALL
 
		xmlReaderForMemory	(const char *buffer,
 
					 int size,
 
					 const char *URL,
 
					 const char *encoding,
 
					 int options);
 
XMLPUBFUN xmlTextReaderPtr XMLCALL
 
		xmlReaderForFd		(int fd,
 
					 const char *URL,
 
					 const char *encoding,
 
					 int options);
 
XMLPUBFUN xmlTextReaderPtr XMLCALL
 
		xmlReaderForIO		(xmlInputReadCallback ioread,
 
					 xmlInputCloseCallback ioclose,
 
					 void *ioctx,
 
					 const char *URL,
 
					 const char *encoding,
 
					 int options);
 

	
 
XMLPUBFUN int XMLCALL
 
		xmlReaderNewWalker	(xmlTextReaderPtr reader,
 
					 xmlDocPtr doc);
 
XMLPUBFUN int XMLCALL
 
		xmlReaderNewDoc		(xmlTextReaderPtr reader,
 
					 const xmlChar * cur,
 
					 const char *URL,
 
					 const char *encoding,
 
					 int options);
 
XMLPUBFUN int XMLCALL
 
		xmlReaderNewFile	(xmlTextReaderPtr reader,
 
					 const char *filename,
 
					 const char *encoding,
 
					 int options);
 
XMLPUBFUN int XMLCALL
 
		xmlReaderNewMemory	(xmlTextReaderPtr reader,
 
					 const char *buffer,
 
					 int size,
 
					 const char *URL,
 
					 const char *encoding,
 
					 int options);
 
XMLPUBFUN int XMLCALL
 
		xmlReaderNewFd		(xmlTextReaderPtr reader,
 
					 int fd,
 
					 const char *URL,
 
					 const char *encoding,
 
					 int options);
 
XMLPUBFUN int XMLCALL
 
		xmlReaderNewIO		(xmlTextReaderPtr reader,
 
					 xmlInputReadCallback ioread,
 
					 xmlInputCloseCallback ioclose,
 
					 void *ioctx,
 
					 const char *URL,
 
					 const char *encoding,
 
					 int options);
 
/*
 
 * Error handling extensions
 
 */
 
typedef void *  xmlTextReaderLocatorPtr;
 

	
 
/**
 
 * xmlTextReaderErrorFunc:
 
 * @arg: the user argument
 
 * @msg: the message
 
 * @severity: the severity of the error
 
 * @locator: a locator indicating where the error occured
 
 *
 
 * Signature of an error callback from a reader parser
 
 */
 
typedef void   (XMLCALL *xmlTextReaderErrorFunc)(void *arg,
 
						 const char *msg,
 
						 xmlParserSeverities severity,
 
						 xmlTextReaderLocatorPtr locator);
 
XMLPUBFUN int XMLCALL
 
		    xmlTextReaderLocatorLineNumber(xmlTextReaderLocatorPtr locator);
 
/*int             xmlTextReaderLocatorLinePosition(xmlTextReaderLocatorPtr locator);*/
 
XMLPUBFUN xmlChar * XMLCALL
 
		    xmlTextReaderLocatorBaseURI (xmlTextReaderLocatorPtr locator);
 
XMLPUBFUN void XMLCALL
 
		    xmlTextReaderSetErrorHandler(xmlTextReaderPtr reader,
 
						 xmlTextReaderErrorFunc f,
 
						 void *arg);
 
XMLPUBFUN void XMLCALL
 
		    xmlTextReaderSetStructuredErrorHandler(xmlTextReaderPtr reader,
 
							   xmlStructuredErrorFunc f,
 
							   void *arg);
 
XMLPUBFUN void XMLCALL
 
		    xmlTextReaderGetErrorHandler(xmlTextReaderPtr reader,
 
						 xmlTextReaderErrorFunc *f,
 
						 void **arg);
 

	
 
#endif /* LIBXML_READER_ENABLED */
 

	
 
#ifdef __cplusplus
 
}
 
#endif
 

	
 
#endif /* __XML_XMLREADER_H__ */
 

	
lib/libxml2/include/libxml/xmlregexp.h
Show inline comments
 
new file 100755
 
/*
 
 * Summary: regular expressions handling
 
 * Description: basic API for libxml regular expressions handling used
 
 *              for XML Schemas and validation.
 
 *
 
 * Copy: See Copyright for the status of this software.
 
 *
 
 * Author: Daniel Veillard
 
 */
 

	
 
#ifndef __XML_REGEXP_H__
 
#define __XML_REGEXP_H__
 

	
 
#include <libxml/xmlversion.h>
 

	
 
#ifdef LIBXML_REGEXP_ENABLED
 

	
 
#ifdef __cplusplus
 
extern "C" {
 
#endif
 

	
 
/**
 
 * xmlRegexpPtr:
 
 *
 
 * A libxml regular expression, they can actually be far more complex
 
 * thank the POSIX regex expressions.
 
 */
 
typedef struct _xmlRegexp xmlRegexp;
 
typedef xmlRegexp *xmlRegexpPtr;
 

	
 
/**
 
 * xmlRegExecCtxtPtr:
 
 *
 
 * A libxml progressive regular expression evaluation context
 
 */
 
typedef struct _xmlRegExecCtxt xmlRegExecCtxt;
 
typedef xmlRegExecCtxt *xmlRegExecCtxtPtr;
 

	
 
#ifdef __cplusplus
 
}
 
#endif
 
#include <libxml/tree.h>
 
#include <libxml/dict.h>
 
#ifdef __cplusplus
 
extern "C" {
 
#endif
 

	
 
/*
 
 * The POSIX like API
 
 */
 
XMLPUBFUN xmlRegexpPtr XMLCALL
 
		    xmlRegexpCompile	(const xmlChar *regexp);
 
XMLPUBFUN void XMLCALL			 xmlRegFreeRegexp(xmlRegexpPtr regexp);
 
XMLPUBFUN int XMLCALL
 
		    xmlRegexpExec	(xmlRegexpPtr comp,
 
					 const xmlChar *value);
 
XMLPUBFUN void XMLCALL
 
		    xmlRegexpPrint	(FILE *output,
 
					 xmlRegexpPtr regexp);
 
XMLPUBFUN int XMLCALL
 
		    xmlRegexpIsDeterminist(xmlRegexpPtr comp);
 

	
 
/**
 
 * xmlRegExecCallbacks:
 
 * @exec: the regular expression context
 
 * @token: the current token string
 
 * @transdata: transition data
 
 * @inputdata: input data
 
 *
 
 * Callback function when doing a transition in the automata
 
 */
 
typedef void (*xmlRegExecCallbacks) (xmlRegExecCtxtPtr exec,
 
	                             const xmlChar *token,
 
				     void *transdata,
 
				     void *inputdata);
 

	
 
/*
 
 * The progressive API
 
 */
 
XMLPUBFUN xmlRegExecCtxtPtr XMLCALL
 
		    xmlRegNewExecCtxt	(xmlRegexpPtr comp,
 
					 xmlRegExecCallbacks callback,
 
					 void *data);
 
XMLPUBFUN void XMLCALL
 
		    xmlRegFreeExecCtxt	(xmlRegExecCtxtPtr exec);
 
XMLPUBFUN int XMLCALL
 
		    xmlRegExecPushString(xmlRegExecCtxtPtr exec,
 
					 const xmlChar *value,
 
					 void *data);
 
XMLPUBFUN int XMLCALL
 
		    xmlRegExecPushString2(xmlRegExecCtxtPtr exec,
 
					 const xmlChar *value,
 
					 const xmlChar *value2,
 
					 void *data);
 

	
 
XMLPUBFUN int XMLCALL
 
		    xmlRegExecNextValues(xmlRegExecCtxtPtr exec,
 
					 int *nbval,
 
					 int *nbneg,
 
					 xmlChar **values,
 
					 int *terminal);
 
XMLPUBFUN int XMLCALL
 
		    xmlRegExecErrInfo	(xmlRegExecCtxtPtr exec,
 
					 const xmlChar **string,
 
					 int *nbval,
 
					 int *nbneg,
 
					 xmlChar **values,
 
					 int *terminal);
 
#ifdef LIBXML_EXPR_ENABLED
 
/*
 
 * Formal regular expression handling
 
 * Its goal is to do some formal work on content models
 
 */
 

	
 
/* expressions are used within a context */
 
typedef struct _xmlExpCtxt xmlExpCtxt;
 
typedef xmlExpCtxt *xmlExpCtxtPtr;
 

	
 
XMLPUBFUN void XMLCALL
 
			xmlExpFreeCtxt	(xmlExpCtxtPtr ctxt);
 
XMLPUBFUN xmlExpCtxtPtr XMLCALL
 
			xmlExpNewCtxt	(int maxNodes,
 
					 xmlDictPtr dict);
 

	
 
XMLPUBFUN int XMLCALL
 
			xmlExpCtxtNbNodes(xmlExpCtxtPtr ctxt);
 
XMLPUBFUN int XMLCALL
 
			xmlExpCtxtNbCons(xmlExpCtxtPtr ctxt);
 

	
 
/* Expressions are trees but the tree is opaque */
 
typedef struct _xmlExpNode xmlExpNode;
 
typedef xmlExpNode *xmlExpNodePtr;
 

	
 
typedef enum {
 
    XML_EXP_EMPTY = 0,
 
    XML_EXP_FORBID = 1,
 
    XML_EXP_ATOM = 2,
 
    XML_EXP_SEQ = 3,
 
    XML_EXP_OR = 4,
 
    XML_EXP_COUNT = 5
 
} xmlExpNodeType;
 

	
 
/*
 
 * 2 core expressions shared by all for the empty language set
 
 * and for the set with just the empty token
 
 */
 
XMLPUBVAR xmlExpNodePtr forbiddenExp;
 
XMLPUBVAR xmlExpNodePtr emptyExp;
 

	
 
/*
 
 * Expressions are reference counted internally
 
 */
 
XMLPUBFUN void XMLCALL
 
			xmlExpFree	(xmlExpCtxtPtr ctxt,
 
					 xmlExpNodePtr expr);
 
XMLPUBFUN void XMLCALL
 
			xmlExpRef	(xmlExpNodePtr expr);
 

	
 
/*
 
 * constructors can be either manual or from a string
 
 */
 
XMLPUBFUN xmlExpNodePtr XMLCALL
 
			xmlExpParse	(xmlExpCtxtPtr ctxt,
 
					 const char *expr);
 
XMLPUBFUN xmlExpNodePtr XMLCALL
 
			xmlExpNewAtom	(xmlExpCtxtPtr ctxt,
 
					 const xmlChar *name,
 
					 int len);
 
XMLPUBFUN xmlExpNodePtr XMLCALL
 
			xmlExpNewOr	(xmlExpCtxtPtr ctxt,
 
					 xmlExpNodePtr left,
 
					 xmlExpNodePtr right);
 
XMLPUBFUN xmlExpNodePtr XMLCALL
 
			xmlExpNewSeq	(xmlExpCtxtPtr ctxt,
 
					 xmlExpNodePtr left,
 
					 xmlExpNodePtr right);
 
XMLPUBFUN xmlExpNodePtr XMLCALL
 
			xmlExpNewRange	(xmlExpCtxtPtr ctxt,
 
					 xmlExpNodePtr subset,
 
					 int min,
 
					 int max);
 
/*
 
 * The really interesting APIs
 
 */
 
XMLPUBFUN int XMLCALL
 
			xmlExpIsNillable(xmlExpNodePtr expr);
 
XMLPUBFUN int XMLCALL
 
			xmlExpMaxToken	(xmlExpNodePtr expr);
 
XMLPUBFUN int XMLCALL
 
			xmlExpGetLanguage(xmlExpCtxtPtr ctxt,
 
					 xmlExpNodePtr expr,
 
					 const xmlChar**langList,
 
					 int len);
 
XMLPUBFUN int XMLCALL
 
			xmlExpGetStart	(xmlExpCtxtPtr ctxt,
 
					 xmlExpNodePtr expr,
 
					 const xmlChar**tokList,
 
					 int len);
 
XMLPUBFUN xmlExpNodePtr XMLCALL
 
			xmlExpStringDerive(xmlExpCtxtPtr ctxt,
 
					 xmlExpNodePtr expr,
 
					 const xmlChar *str,
 
					 int len);
 
XMLPUBFUN xmlExpNodePtr XMLCALL
 
			xmlExpExpDerive	(xmlExpCtxtPtr ctxt,
 
					 xmlExpNodePtr expr,
 
					 xmlExpNodePtr sub);
 
XMLPUBFUN int XMLCALL
 
			xmlExpSubsume	(xmlExpCtxtPtr ctxt,
 
					 xmlExpNodePtr expr,
 
					 xmlExpNodePtr sub);
 
XMLPUBFUN void XMLCALL
 
			xmlExpDump	(xmlBufferPtr buf,
 
					 xmlExpNodePtr expr);
 
#endif /* LIBXML_EXPR_ENABLED */
 
#ifdef __cplusplus
 
}
 
#endif
 

	
 
#endif /* LIBXML_REGEXP_ENABLED */
 

	
 
#endif /*__XML_REGEXP_H__ */
lib/libxml2/include/libxml/xmlsave.h
Show inline comments
 
new file 100755
 
/*
 
 * Summary: the XML document serializer
 
 * Description: API to save document or subtree of document
 
 *
 
 * Copy: See Copyright for the status of this software.
 
 *
 
 * Author: Daniel Veillard
 
 */
 

	
 
#ifndef __XML_XMLSAVE_H__
 
#define __XML_XMLSAVE_H__
 

	
 
#include <libxml/xmlversion.h>
 
#include <libxml/tree.h>
 
#include <libxml/encoding.h>
 
#include <libxml/xmlIO.h>
 

	
 
#ifdef LIBXML_OUTPUT_ENABLED
 
#ifdef __cplusplus
 
extern "C" {
 
#endif
 

	
 
/**
 
 * xmlSaveOption:
 
 *
 
 * This is the set of XML save options that can be passed down
 
 * to the xmlSaveToFd() and similar calls.
 
 */
 
typedef enum {
 
    XML_SAVE_FORMAT     = 1<<0,	/* format save output */
 
    XML_SAVE_NO_DECL    = 1<<1,	/* drop the xml declaration */
 
    XML_SAVE_NO_EMPTY	= 1<<2, /* no empty tags */
 
    XML_SAVE_NO_XHTML	= 1<<3, /* disable XHTML1 specific rules */
 
    XML_SAVE_XHTML	= 1<<4, /* force XHTML1 specific rules */
 
    XML_SAVE_AS_XML     = 1<<5, /* force XML serialization on HTML doc */
 
    XML_SAVE_AS_HTML    = 1<<6  /* force HTML serialization on XML doc */
 
} xmlSaveOption;
 

	
 

	
 
typedef struct _xmlSaveCtxt xmlSaveCtxt;
 
typedef xmlSaveCtxt *xmlSaveCtxtPtr;
 

	
 
XMLPUBFUN xmlSaveCtxtPtr XMLCALL
 
		xmlSaveToFd		(int fd,
 
					 const char *encoding,
 
					 int options);
 
XMLPUBFUN xmlSaveCtxtPtr XMLCALL
 
		xmlSaveToFilename	(const char *filename,
 
					 const char *encoding,
 
					 int options);
 

	
 
XMLPUBFUN xmlSaveCtxtPtr XMLCALL
 
		xmlSaveToBuffer		(xmlBufferPtr buffer,
 
					 const char *encoding,
 
					 int options);
 

	
 
XMLPUBFUN xmlSaveCtxtPtr XMLCALL
 
		xmlSaveToIO		(xmlOutputWriteCallback iowrite,
 
					 xmlOutputCloseCallback ioclose,
 
					 void *ioctx,
 
					 const char *encoding,
 
					 int options);
 

	
 
XMLPUBFUN long XMLCALL
 
		xmlSaveDoc		(xmlSaveCtxtPtr ctxt,
 
					 xmlDocPtr doc);
 
XMLPUBFUN long XMLCALL
 
		xmlSaveTree		(xmlSaveCtxtPtr ctxt,
 
					 xmlNodePtr node);
 

	
 
XMLPUBFUN int XMLCALL
 
		xmlSaveFlush		(xmlSaveCtxtPtr ctxt);
 
XMLPUBFUN int XMLCALL
 
		xmlSaveClose		(xmlSaveCtxtPtr ctxt);
 
XMLPUBFUN int XMLCALL
 
		xmlSaveSetEscape	(xmlSaveCtxtPtr ctxt,
 
					 xmlCharEncodingOutputFunc escape);
 
XMLPUBFUN int XMLCALL
 
		xmlSaveSetAttrEscape	(xmlSaveCtxtPtr ctxt,
 
					 xmlCharEncodingOutputFunc escape);
 
#ifdef __cplusplus
 
}
 
#endif
 
#endif /* LIBXML_OUTPUT_ENABLED */
 
#endif /* __XML_XMLSAVE_H__ */
 

	
 

	
lib/libxml2/include/libxml/xmlschemas.h
Show inline comments
 
new file 100755
 
/*
 
 * Summary: incomplete XML Schemas structure implementation
 
 * Description: interface to the XML Schemas handling and schema validity
 
 *              checking, it is incomplete right now.
 
 *
 
 * Copy: See Copyright for the status of this software.
 
 *
 
 * Author: Daniel Veillard
 
 */
 

	
 

	
 
#ifndef __XML_SCHEMA_H__
 
#define __XML_SCHEMA_H__
 

	
 
#include <libxml/xmlversion.h>
 

	
 
#ifdef LIBXML_SCHEMAS_ENABLED
 

	
 
#include <libxml/tree.h>
 

	
 
#ifdef __cplusplus
 
extern "C" {
 
#endif
 

	
 
/**
 
 * This error codes are obsolete; not used any more.
 
 */
 
typedef enum {
 
    XML_SCHEMAS_ERR_OK		= 0,
 
    XML_SCHEMAS_ERR_NOROOT	= 1,
 
    XML_SCHEMAS_ERR_UNDECLAREDELEM,
 
    XML_SCHEMAS_ERR_NOTTOPLEVEL,
 
    XML_SCHEMAS_ERR_MISSING,
 
    XML_SCHEMAS_ERR_WRONGELEM,
 
    XML_SCHEMAS_ERR_NOTYPE,
 
    XML_SCHEMAS_ERR_NOROLLBACK,
 
    XML_SCHEMAS_ERR_ISABSTRACT,
 
    XML_SCHEMAS_ERR_NOTEMPTY,
 
    XML_SCHEMAS_ERR_ELEMCONT,
 
    XML_SCHEMAS_ERR_HAVEDEFAULT,
 
    XML_SCHEMAS_ERR_NOTNILLABLE,
 
    XML_SCHEMAS_ERR_EXTRACONTENT,
 
    XML_SCHEMAS_ERR_INVALIDATTR,
 
    XML_SCHEMAS_ERR_INVALIDELEM,
 
    XML_SCHEMAS_ERR_NOTDETERMINIST,
 
    XML_SCHEMAS_ERR_CONSTRUCT,
 
    XML_SCHEMAS_ERR_INTERNAL,
 
    XML_SCHEMAS_ERR_NOTSIMPLE,
 
    XML_SCHEMAS_ERR_ATTRUNKNOWN,
 
    XML_SCHEMAS_ERR_ATTRINVALID,
 
    XML_SCHEMAS_ERR_VALUE,
 
    XML_SCHEMAS_ERR_FACET,
 
    XML_SCHEMAS_ERR_,
 
    XML_SCHEMAS_ERR_XXX
 
} xmlSchemaValidError;
 

	
 
/*
 
* ATTENTION: Change xmlSchemaSetValidOptions's check
 
* for invalid values, if adding to the validation
 
* options below.
 
*/
 
/**
 
 * xmlSchemaValidOption:
 
 *
 
 * This is the set of XML Schema validation options.
 
 */
 
typedef enum {
 
    XML_SCHEMA_VAL_VC_I_CREATE			= 1<<0
 
	/* Default/fixed: create an attribute node
 
	* or an element's text node on the instance.
 
	*/
 
} xmlSchemaValidOption;
 

	
 
/*
 
    XML_SCHEMA_VAL_XSI_ASSEMBLE			= 1<<1,
 
	* assemble schemata using
 
	* xsi:schemaLocation and
 
	* xsi:noNamespaceSchemaLocation
 
*/
 

	
 
/**
 
 * The schemas related types are kept internal
 
 */
 
typedef struct _xmlSchema xmlSchema;
 
typedef xmlSchema *xmlSchemaPtr;
 

	
 
/**
 
 * xmlSchemaValidityErrorFunc:
 
 * @ctx: the validation context
 
 * @msg: the message
 
 * @...: extra arguments
 
 *
 
 * Signature of an error callback from an XSD validation
 
 */
 
typedef void (XMLCDECL *xmlSchemaValidityErrorFunc) (void *ctx, const char *msg, ...) LIBXML_ATTR_FORMAT(2,3);
 

	
 
/**
 
 * xmlSchemaValidityWarningFunc:
 
 * @ctx: the validation context
 
 * @msg: the message
 
 * @...: extra arguments
 
 *
 
 * Signature of a warning callback from an XSD validation
 
 */
 
typedef void (XMLCDECL *xmlSchemaValidityWarningFunc) (void *ctx, const char *msg, ...) LIBXML_ATTR_FORMAT(2,3);
 

	
 
/**
 
 * A schemas validation context
 
 */
 
typedef struct _xmlSchemaParserCtxt xmlSchemaParserCtxt;
 
typedef xmlSchemaParserCtxt *xmlSchemaParserCtxtPtr;
 

	
 
typedef struct _xmlSchemaValidCtxt xmlSchemaValidCtxt;
 
typedef xmlSchemaValidCtxt *xmlSchemaValidCtxtPtr;
 

	
 
/*
 
 * Interfaces for parsing.
 
 */
 
XMLPUBFUN xmlSchemaParserCtxtPtr XMLCALL
 
	    xmlSchemaNewParserCtxt	(const char *URL);
 
XMLPUBFUN xmlSchemaParserCtxtPtr XMLCALL
 
	    xmlSchemaNewMemParserCtxt	(const char *buffer,
 
					 int size);
 
XMLPUBFUN xmlSchemaParserCtxtPtr XMLCALL
 
	    xmlSchemaNewDocParserCtxt	(xmlDocPtr doc);
 
XMLPUBFUN void XMLCALL
 
	    xmlSchemaFreeParserCtxt	(xmlSchemaParserCtxtPtr ctxt);
 
XMLPUBFUN void XMLCALL
 
	    xmlSchemaSetParserErrors	(xmlSchemaParserCtxtPtr ctxt,
 
					 xmlSchemaValidityErrorFunc err,
 
					 xmlSchemaValidityWarningFunc warn,
 
					 void *ctx);
 
XMLPUBFUN void XMLCALL
 
	    xmlSchemaSetParserStructuredErrors(xmlSchemaParserCtxtPtr ctxt,
 
					 xmlStructuredErrorFunc serror,
 
					 void *ctx);
 
XMLPUBFUN int XMLCALL
 
		xmlSchemaGetParserErrors(xmlSchemaParserCtxtPtr ctxt,
 
					xmlSchemaValidityErrorFunc * err,
 
					xmlSchemaValidityWarningFunc * warn,
 
					void **ctx);
 
XMLPUBFUN int XMLCALL
 
		xmlSchemaIsValid	(xmlSchemaValidCtxtPtr ctxt);
 

	
 
XMLPUBFUN xmlSchemaPtr XMLCALL
 
	    xmlSchemaParse		(xmlSchemaParserCtxtPtr ctxt);
 
XMLPUBFUN void XMLCALL
 
	    xmlSchemaFree		(xmlSchemaPtr schema);
 
#ifdef LIBXML_OUTPUT_ENABLED
 
XMLPUBFUN void XMLCALL
 
	    xmlSchemaDump		(FILE *output,
 
					 xmlSchemaPtr schema);
 
#endif /* LIBXML_OUTPUT_ENABLED */
 
/*
 
 * Interfaces for validating
 
 */
 
XMLPUBFUN void XMLCALL
 
	    xmlSchemaSetValidErrors	(xmlSchemaValidCtxtPtr ctxt,
 
					 xmlSchemaValidityErrorFunc err,
 
					 xmlSchemaValidityWarningFunc warn,
 
					 void *ctx);
 
XMLPUBFUN void XMLCALL
 
	    xmlSchemaSetValidStructuredErrors(xmlSchemaValidCtxtPtr ctxt,
 
					 xmlStructuredErrorFunc serror,
 
					 void *ctx);
 
XMLPUBFUN int XMLCALL
 
	    xmlSchemaGetValidErrors	(xmlSchemaValidCtxtPtr ctxt,
 
					 xmlSchemaValidityErrorFunc *err,
 
					 xmlSchemaValidityWarningFunc *warn,
 
					 void **ctx);
 
XMLPUBFUN int XMLCALL
 
	    xmlSchemaSetValidOptions	(xmlSchemaValidCtxtPtr ctxt,
 
					 int options);
 
XMLPUBFUN int XMLCALL
 
	    xmlSchemaValidCtxtGetOptions(xmlSchemaValidCtxtPtr ctxt);
 

	
 
XMLPUBFUN xmlSchemaValidCtxtPtr XMLCALL
 
	    xmlSchemaNewValidCtxt	(xmlSchemaPtr schema);
 
XMLPUBFUN void XMLCALL
 
	    xmlSchemaFreeValidCtxt	(xmlSchemaValidCtxtPtr ctxt);
 
XMLPUBFUN int XMLCALL
 
	    xmlSchemaValidateDoc	(xmlSchemaValidCtxtPtr ctxt,
 
					 xmlDocPtr instance);
 
XMLPUBFUN int XMLCALL
 
            xmlSchemaValidateOneElement (xmlSchemaValidCtxtPtr ctxt,
 
			                 xmlNodePtr elem);
 
XMLPUBFUN int XMLCALL
 
	    xmlSchemaValidateStream	(xmlSchemaValidCtxtPtr ctxt,
 
					 xmlParserInputBufferPtr input,
 
					 xmlCharEncoding enc,
 
					 xmlSAXHandlerPtr sax,
 
					 void *user_data);
 
XMLPUBFUN int XMLCALL
 
	    xmlSchemaValidateFile	(xmlSchemaValidCtxtPtr ctxt,
 
					 const char * filename,
 
					 int options);
 

	
 
XMLPUBFUN xmlParserCtxtPtr XMLCALL
 
	    xmlSchemaValidCtxtGetParserCtxt(xmlSchemaValidCtxtPtr ctxt);
 

	
 
/*
 
 * Interface to insert Schemas SAX validation in a SAX stream
 
 */
 
typedef struct _xmlSchemaSAXPlug xmlSchemaSAXPlugStruct;
 
typedef xmlSchemaSAXPlugStruct *xmlSchemaSAXPlugPtr;
 

	
 
XMLPUBFUN xmlSchemaSAXPlugPtr XMLCALL
 
            xmlSchemaSAXPlug		(xmlSchemaValidCtxtPtr ctxt,
 
					 xmlSAXHandlerPtr *sax,
 
					 void **user_data);
 
XMLPUBFUN int XMLCALL
 
            xmlSchemaSAXUnplug		(xmlSchemaSAXPlugPtr plug);
 
#ifdef __cplusplus
 
}
 
#endif
 

	
 
#endif /* LIBXML_SCHEMAS_ENABLED */
 
#endif /* __XML_SCHEMA_H__ */
lib/libxml2/include/libxml/xmlschemastypes.h
Show inline comments
 
new file 100755
 
/*
 
 * Summary: implementation of XML Schema Datatypes
 
 * Description: module providing the XML Schema Datatypes implementation
 
 *              both definition and validity checking
 
 *
 
 * Copy: See Copyright for the status of this software.
 
 *
 
 * Author: Daniel Veillard
 
 */
 

	
 

	
 
#ifndef __XML_SCHEMA_TYPES_H__
 
#define __XML_SCHEMA_TYPES_H__
 

	
 
#include <libxml/xmlversion.h>
 

	
 
#ifdef LIBXML_SCHEMAS_ENABLED
 

	
 
#include <libxml/schemasInternals.h>
 
#include <libxml/xmlschemas.h>
 

	
 
#ifdef __cplusplus
 
extern "C" {
 
#endif
 

	
 
typedef enum {
 
    XML_SCHEMA_WHITESPACE_UNKNOWN = 0,
 
    XML_SCHEMA_WHITESPACE_PRESERVE = 1,
 
    XML_SCHEMA_WHITESPACE_REPLACE = 2,
 
    XML_SCHEMA_WHITESPACE_COLLAPSE = 3
 
} xmlSchemaWhitespaceValueType;
 

	
 
XMLPUBFUN void XMLCALL		
 
    		xmlSchemaInitTypes		(void);
 
XMLPUBFUN void XMLCALL		
 
		xmlSchemaCleanupTypes		(void);
 
XMLPUBFUN xmlSchemaTypePtr XMLCALL 
 
		xmlSchemaGetPredefinedType	(const xmlChar *name,
 
						 const xmlChar *ns);
 
XMLPUBFUN int XMLCALL		
 
		xmlSchemaValidatePredefinedType	(xmlSchemaTypePtr type,
 
						 const xmlChar *value,
 
						 xmlSchemaValPtr *val);
 
XMLPUBFUN int XMLCALL		
 
		xmlSchemaValPredefTypeNode	(xmlSchemaTypePtr type,
 
						 const xmlChar *value,
 
						 xmlSchemaValPtr *val,
 
						 xmlNodePtr node);
 
XMLPUBFUN int XMLCALL		
 
		xmlSchemaValidateFacet		(xmlSchemaTypePtr base,
 
						 xmlSchemaFacetPtr facet,
 
						 const xmlChar *value,
 
						 xmlSchemaValPtr val);
 
XMLPUBFUN int XMLCALL
 
		xmlSchemaValidateFacetWhtsp	(xmlSchemaFacetPtr facet,
 
						 xmlSchemaWhitespaceValueType fws,
 
						 xmlSchemaValType valType,						 
 
						 const xmlChar *value,
 
						 xmlSchemaValPtr val,
 
						 xmlSchemaWhitespaceValueType ws);
 
XMLPUBFUN void XMLCALL		
 
		xmlSchemaFreeValue		(xmlSchemaValPtr val);
 
XMLPUBFUN xmlSchemaFacetPtr XMLCALL 
 
		xmlSchemaNewFacet		(void);
 
XMLPUBFUN int XMLCALL		
 
		xmlSchemaCheckFacet		(xmlSchemaFacetPtr facet,
 
						 xmlSchemaTypePtr typeDecl,
 
						 xmlSchemaParserCtxtPtr ctxt,
 
						 const xmlChar *name);
 
XMLPUBFUN void XMLCALL		
 
		xmlSchemaFreeFacet		(xmlSchemaFacetPtr facet);
 
XMLPUBFUN int XMLCALL		
 
		xmlSchemaCompareValues		(xmlSchemaValPtr x,
 
						 xmlSchemaValPtr y);
 
XMLPUBFUN xmlSchemaTypePtr XMLCALL		
 
    xmlSchemaGetBuiltInListSimpleTypeItemType	(xmlSchemaTypePtr type);
 
XMLPUBFUN int XMLCALL
 
    xmlSchemaValidateListSimpleTypeFacet	(xmlSchemaFacetPtr facet,
 
						 const xmlChar *value,
 
						 unsigned long actualLen,
 
						 unsigned long *expectedLen);
 
XMLPUBFUN xmlSchemaTypePtr XMLCALL
 
		xmlSchemaGetBuiltInType		(xmlSchemaValType type);
 
XMLPUBFUN int XMLCALL
 
		xmlSchemaIsBuiltInTypeFacet	(xmlSchemaTypePtr type, 
 
						 int facetType);
 
XMLPUBFUN xmlChar * XMLCALL
 
		xmlSchemaCollapseString		(const xmlChar *value);
 
XMLPUBFUN xmlChar * XMLCALL
 
		xmlSchemaWhiteSpaceReplace	(const xmlChar *value);
 
XMLPUBFUN unsigned long  XMLCALL
 
		xmlSchemaGetFacetValueAsULong	(xmlSchemaFacetPtr facet);
 
XMLPUBFUN int XMLCALL
 
		xmlSchemaValidateLengthFacet	(xmlSchemaTypePtr type, 
 
						 xmlSchemaFacetPtr facet,
 
						 const xmlChar *value,
 
						 xmlSchemaValPtr val,
 
						 unsigned long *length);
 
XMLPUBFUN int XMLCALL
 
		xmlSchemaValidateLengthFacetWhtsp(xmlSchemaFacetPtr facet,
 
						  xmlSchemaValType valType,
 
						  const xmlChar *value,
 
						  xmlSchemaValPtr val,						  
 
						  unsigned long *length,
 
						  xmlSchemaWhitespaceValueType ws);
 
XMLPUBFUN int XMLCALL
 
		xmlSchemaValPredefTypeNodeNoNorm(xmlSchemaTypePtr type, 
 
						 const xmlChar *value,
 
						 xmlSchemaValPtr *val, 
 
						 xmlNodePtr node);
 
XMLPUBFUN int XMLCALL
 
		xmlSchemaGetCanonValue		(xmlSchemaValPtr val,
 
						 const xmlChar **retValue);
 
XMLPUBFUN int XMLCALL
 
		xmlSchemaGetCanonValueWhtsp	(xmlSchemaValPtr val,						 
 
						 const xmlChar **retValue,
 
						 xmlSchemaWhitespaceValueType ws);
 
XMLPUBFUN int XMLCALL
 
		xmlSchemaValueAppend		(xmlSchemaValPtr prev,
 
						 xmlSchemaValPtr cur);
 
XMLPUBFUN xmlSchemaValPtr XMLCALL
 
		xmlSchemaValueGetNext		(xmlSchemaValPtr cur);
 
XMLPUBFUN const xmlChar * XMLCALL
 
		xmlSchemaValueGetAsString	(xmlSchemaValPtr val);
 
XMLPUBFUN int XMLCALL
 
		xmlSchemaValueGetAsBoolean	(xmlSchemaValPtr val);
 
XMLPUBFUN xmlSchemaValPtr XMLCALL
 
		xmlSchemaNewStringValue		(xmlSchemaValType type,
 
						 const xmlChar *value);
 
XMLPUBFUN xmlSchemaValPtr XMLCALL
 
		xmlSchemaNewNOTATIONValue	(const xmlChar *name,
 
						 const xmlChar *ns);
 
XMLPUBFUN xmlSchemaValPtr XMLCALL
 
		xmlSchemaNewQNameValue		(const xmlChar *namespaceName,
 
						 const xmlChar *localName);
 
XMLPUBFUN int XMLCALL
 
		xmlSchemaCompareValuesWhtsp	(xmlSchemaValPtr x,
 
						 xmlSchemaWhitespaceValueType xws,
 
						 xmlSchemaValPtr y,
 
						 xmlSchemaWhitespaceValueType yws);
 
XMLPUBFUN xmlSchemaValPtr XMLCALL
 
		xmlSchemaCopyValue		(xmlSchemaValPtr val);
 
XMLPUBFUN xmlSchemaValType XMLCALL
 
		xmlSchemaGetValType		(xmlSchemaValPtr val);
 

	
 
#ifdef __cplusplus
 
}
 
#endif
 

	
 
#endif /* LIBXML_SCHEMAS_ENABLED */
 
#endif /* __XML_SCHEMA_TYPES_H__ */
lib/libxml2/include/libxml/xmlstring.h
Show inline comments
 
new file 100755
 
/*
 
 * Summary: set of routines to process strings
 
 * Description: type and interfaces needed for the internal string handling
 
 *              of the library, especially UTF8 processing.
 
 *
 
 * Copy: See Copyright for the status of this software.
 
 *
 
 * Author: Daniel Veillard
 
 */
 

	
 
#ifndef __XML_STRING_H__
 
#define __XML_STRING_H__
 

	
 
#include <stdarg.h>
 
#include <libxml/xmlversion.h>
 

	
 
#ifdef __cplusplus
 
extern "C" {
 
#endif
 

	
 
/**
 
 * xmlChar:
 
 *
 
 * This is a basic byte in an UTF-8 encoded string.
 
 * It's unsigned allowing to pinpoint case where char * are assigned
 
 * to xmlChar * (possibly making serialization back impossible).
 
 */
 
typedef unsigned char xmlChar;
 

	
 
/**
 
 * BAD_CAST:
 
 *
 
 * Macro to cast a string to an xmlChar * when one know its safe.
 
 */
 
#define BAD_CAST (xmlChar *)
 

	
 
/*
 
 * xmlChar handling
 
 */
 
XMLPUBFUN xmlChar * XMLCALL
 
                xmlStrdup                (const xmlChar *cur);
 
XMLPUBFUN xmlChar * XMLCALL
 
                xmlStrndup               (const xmlChar *cur,
 
                                         int len);
 
XMLPUBFUN xmlChar * XMLCALL
 
                xmlCharStrndup           (const char *cur,
 
                                         int len);
 
XMLPUBFUN xmlChar * XMLCALL
 
                xmlCharStrdup            (const char *cur);
 
XMLPUBFUN xmlChar * XMLCALL
 
                xmlStrsub                (const xmlChar *str,
 
                                         int start,
 
                                         int len);
 
XMLPUBFUN const xmlChar * XMLCALL
 
                xmlStrchr                (const xmlChar *str,
 
                                         xmlChar val);
 
XMLPUBFUN const xmlChar * XMLCALL
 
                xmlStrstr                (const xmlChar *str,
 
                                         const xmlChar *val);
 
XMLPUBFUN const xmlChar * XMLCALL
 
                xmlStrcasestr            (const xmlChar *str,
 
                                         const xmlChar *val);
 
XMLPUBFUN int XMLCALL
 
                xmlStrcmp                (const xmlChar *str1,
 
                                         const xmlChar *str2);
 
XMLPUBFUN int XMLCALL
 
                xmlStrncmp               (const xmlChar *str1,
 
                                         const xmlChar *str2,
 
                                         int len);
 
XMLPUBFUN int XMLCALL
 
                xmlStrcasecmp            (const xmlChar *str1,
 
                                         const xmlChar *str2);
 
XMLPUBFUN int XMLCALL
 
                xmlStrncasecmp           (const xmlChar *str1,
 
                                         const xmlChar *str2,
 
                                         int len);
 
XMLPUBFUN int XMLCALL
 
                xmlStrEqual              (const xmlChar *str1,
 
                                         const xmlChar *str2);
 
XMLPUBFUN int XMLCALL
 
                xmlStrQEqual             (const xmlChar *pref,
 
                                         const xmlChar *name,
 
                                         const xmlChar *str);
 
XMLPUBFUN int XMLCALL
 
                xmlStrlen                (const xmlChar *str);
 
XMLPUBFUN xmlChar * XMLCALL
 
                xmlStrcat                (xmlChar *cur,
 
                                         const xmlChar *add);
 
XMLPUBFUN xmlChar * XMLCALL
 
                xmlStrncat               (xmlChar *cur,
 
                                         const xmlChar *add,
 
                                         int len);
 
XMLPUBFUN xmlChar * XMLCALL
 
                xmlStrncatNew            (const xmlChar *str1,
 
                                         const xmlChar *str2,
 
                                         int len);
 
XMLPUBFUN int XMLCALL
 
                xmlStrPrintf             (xmlChar *buf,
 
                                         int len,
 
                                         const xmlChar *msg,
 
                                         ...);
 
XMLPUBFUN int XMLCALL
 
                xmlStrVPrintf                (xmlChar *buf,
 
                                         int len,
 
                                         const xmlChar *msg,
 
                                         va_list ap);
 

	
 
XMLPUBFUN int XMLCALL
 
        xmlGetUTF8Char                   (const unsigned char *utf,
 
                                         int *len);
 
XMLPUBFUN int XMLCALL
 
        xmlCheckUTF8                     (const unsigned char *utf);
 
XMLPUBFUN int XMLCALL
 
        xmlUTF8Strsize                   (const xmlChar *utf,
 
                                         int len);
 
XMLPUBFUN xmlChar * XMLCALL 
 
        xmlUTF8Strndup                   (const xmlChar *utf,
 
                                         int len);
 
XMLPUBFUN const xmlChar * XMLCALL 
 
        xmlUTF8Strpos                    (const xmlChar *utf,
 
                                         int pos);
 
XMLPUBFUN int XMLCALL
 
        xmlUTF8Strloc                    (const xmlChar *utf,
 
                                         const xmlChar *utfchar);
 
XMLPUBFUN xmlChar * XMLCALL 
 
        xmlUTF8Strsub                    (const xmlChar *utf,
 
                                         int start,
 
                                         int len);
 
XMLPUBFUN int XMLCALL
 
        xmlUTF8Strlen                    (const xmlChar *utf);
 
XMLPUBFUN int XMLCALL
 
        xmlUTF8Size                      (const xmlChar *utf);
 
XMLPUBFUN int XMLCALL
 
        xmlUTF8Charcmp                   (const xmlChar *utf1,
 
                                         const xmlChar *utf2);
 

	
 
#ifdef __cplusplus
 
}
 
#endif
 
#endif /* __XML_STRING_H__ */
lib/libxml2/include/libxml/xmlunicode.h
Show inline comments
 
new file 100755
 
/*
 
 * Summary: Unicode character APIs
 
 * Description: API for the Unicode character APIs
 
 *
 
 * This file is automatically generated from the
 
 * UCS description files of the Unicode Character Database
 
 * http://www.unicode.org/Public/4.0-Update1/UCD-4.0.1.html
 
 * using the genUnicode.py Python script.
 
 *
 
 * Generation date: Mon Mar 27 11:09:52 2006
 
 * Sources: Blocks-4.0.1.txt UnicodeData-4.0.1.txt
 
 * Author: Daniel Veillard
 
 */
 

	
 
#ifndef __XML_UNICODE_H__
 
#define __XML_UNICODE_H__
 

	
 
#include <libxml/xmlversion.h>
 

	
 
#ifdef LIBXML_UNICODE_ENABLED
 

	
 
#ifdef __cplusplus
 
extern "C" {
 
#endif
 

	
 
XMLPUBFUN int XMLCALL xmlUCSIsAegeanNumbers	(int code);
 
XMLPUBFUN int XMLCALL xmlUCSIsAlphabeticPresentationForms	(int code);
 
XMLPUBFUN int XMLCALL xmlUCSIsArabic	(int code);
 
XMLPUBFUN int XMLCALL xmlUCSIsArabicPresentationFormsA	(int code);
 
XMLPUBFUN int XMLCALL xmlUCSIsArabicPresentationFormsB	(int code);
 
XMLPUBFUN int XMLCALL xmlUCSIsArmenian	(int code);
 
XMLPUBFUN int XMLCALL xmlUCSIsArrows	(int code);
 
XMLPUBFUN int XMLCALL xmlUCSIsBasicLatin	(int code);
 
XMLPUBFUN int XMLCALL xmlUCSIsBengali	(int code);
 
XMLPUBFUN int XMLCALL xmlUCSIsBlockElements	(int code);
 
XMLPUBFUN int XMLCALL xmlUCSIsBopomofo	(int code);
 
XMLPUBFUN int XMLCALL xmlUCSIsBopomofoExtended	(int code);
 
XMLPUBFUN int XMLCALL xmlUCSIsBoxDrawing	(int code);
 
XMLPUBFUN int XMLCALL xmlUCSIsBraillePatterns	(int code);
 
XMLPUBFUN int XMLCALL xmlUCSIsBuhid	(int code);
 
XMLPUBFUN int XMLCALL xmlUCSIsByzantineMusicalSymbols	(int code);
 
XMLPUBFUN int XMLCALL xmlUCSIsCJKCompatibility	(int code);
 
XMLPUBFUN int XMLCALL xmlUCSIsCJKCompatibilityForms	(int code);
 
XMLPUBFUN int XMLCALL xmlUCSIsCJKCompatibilityIdeographs	(int code);
 
XMLPUBFUN int XMLCALL xmlUCSIsCJKCompatibilityIdeographsSupplement	(int code);
 
XMLPUBFUN int XMLCALL xmlUCSIsCJKRadicalsSupplement	(int code);
 
XMLPUBFUN int XMLCALL xmlUCSIsCJKSymbolsandPunctuation	(int code);
 
XMLPUBFUN int XMLCALL xmlUCSIsCJKUnifiedIdeographs	(int code);
 
XMLPUBFUN int XMLCALL xmlUCSIsCJKUnifiedIdeographsExtensionA	(int code);
 
XMLPUBFUN int XMLCALL xmlUCSIsCJKUnifiedIdeographsExtensionB	(int code);
 
XMLPUBFUN int XMLCALL xmlUCSIsCherokee	(int code);
 
XMLPUBFUN int XMLCALL xmlUCSIsCombiningDiacriticalMarks	(int code);
 
XMLPUBFUN int XMLCALL xmlUCSIsCombiningDiacriticalMarksforSymbols	(int code);
 
XMLPUBFUN int XMLCALL xmlUCSIsCombiningHalfMarks	(int code);
 
XMLPUBFUN int XMLCALL xmlUCSIsCombiningMarksforSymbols	(int code);
 
XMLPUBFUN int XMLCALL xmlUCSIsControlPictures	(int code);
 
XMLPUBFUN int XMLCALL xmlUCSIsCurrencySymbols	(int code);
 
XMLPUBFUN int XMLCALL xmlUCSIsCypriotSyllabary	(int code);
 
XMLPUBFUN int XMLCALL xmlUCSIsCyrillic	(int code);
 
XMLPUBFUN int XMLCALL xmlUCSIsCyrillicSupplement	(int code);
 
XMLPUBFUN int XMLCALL xmlUCSIsDeseret	(int code);
 
XMLPUBFUN int XMLCALL xmlUCSIsDevanagari	(int code);
 
XMLPUBFUN int XMLCALL xmlUCSIsDingbats	(int code);
 
XMLPUBFUN int XMLCALL xmlUCSIsEnclosedAlphanumerics	(int code);
 
XMLPUBFUN int XMLCALL xmlUCSIsEnclosedCJKLettersandMonths	(int code);
 
XMLPUBFUN int XMLCALL xmlUCSIsEthiopic	(int code);
 
XMLPUBFUN int XMLCALL xmlUCSIsGeneralPunctuation	(int code);
 
XMLPUBFUN int XMLCALL xmlUCSIsGeometricShapes	(int code);
 
XMLPUBFUN int XMLCALL xmlUCSIsGeorgian	(int code);
 
XMLPUBFUN int XMLCALL xmlUCSIsGothic	(int code);
 
XMLPUBFUN int XMLCALL xmlUCSIsGreek	(int code);
 
XMLPUBFUN int XMLCALL xmlUCSIsGreekExtended	(int code);
 
XMLPUBFUN int XMLCALL xmlUCSIsGreekandCoptic	(int code);
 
XMLPUBFUN int XMLCALL xmlUCSIsGujarati	(int code);
 
XMLPUBFUN int XMLCALL xmlUCSIsGurmukhi	(int code);
 
XMLPUBFUN int XMLCALL xmlUCSIsHalfwidthandFullwidthForms	(int code);
 
XMLPUBFUN int XMLCALL xmlUCSIsHangulCompatibilityJamo	(int code);
 
XMLPUBFUN int XMLCALL xmlUCSIsHangulJamo	(int code);
 
XMLPUBFUN int XMLCALL xmlUCSIsHangulSyllables	(int code);
 
XMLPUBFUN int XMLCALL xmlUCSIsHanunoo	(int code);
 
XMLPUBFUN int XMLCALL xmlUCSIsHebrew	(int code);
 
XMLPUBFUN int XMLCALL xmlUCSIsHighPrivateUseSurrogates	(int code);
 
XMLPUBFUN int XMLCALL xmlUCSIsHighSurrogates	(int code);
 
XMLPUBFUN int XMLCALL xmlUCSIsHiragana	(int code);
 
XMLPUBFUN int XMLCALL xmlUCSIsIPAExtensions	(int code);
 
XMLPUBFUN int XMLCALL xmlUCSIsIdeographicDescriptionCharacters	(int code);
 
XMLPUBFUN int XMLCALL xmlUCSIsKanbun	(int code);
 
XMLPUBFUN int XMLCALL xmlUCSIsKangxiRadicals	(int code);
 
XMLPUBFUN int XMLCALL xmlUCSIsKannada	(int code);
 
XMLPUBFUN int XMLCALL xmlUCSIsKatakana	(int code);
 
XMLPUBFUN int XMLCALL xmlUCSIsKatakanaPhoneticExtensions	(int code);
 
XMLPUBFUN int XMLCALL xmlUCSIsKhmer	(int code);
 
XMLPUBFUN int XMLCALL xmlUCSIsKhmerSymbols	(int code);
 
XMLPUBFUN int XMLCALL xmlUCSIsLao	(int code);
 
XMLPUBFUN int XMLCALL xmlUCSIsLatin1Supplement	(int code);
 
XMLPUBFUN int XMLCALL xmlUCSIsLatinExtendedA	(int code);
 
XMLPUBFUN int XMLCALL xmlUCSIsLatinExtendedB	(int code);
 
XMLPUBFUN int XMLCALL xmlUCSIsLatinExtendedAdditional	(int code);
 
XMLPUBFUN int XMLCALL xmlUCSIsLetterlikeSymbols	(int code);
 
XMLPUBFUN int XMLCALL xmlUCSIsLimbu	(int code);
 
XMLPUBFUN int XMLCALL xmlUCSIsLinearBIdeograms	(int code);
 
XMLPUBFUN int XMLCALL xmlUCSIsLinearBSyllabary	(int code);
 
XMLPUBFUN int XMLCALL xmlUCSIsLowSurrogates	(int code);
 
XMLPUBFUN int XMLCALL xmlUCSIsMalayalam	(int code);
 
XMLPUBFUN int XMLCALL xmlUCSIsMathematicalAlphanumericSymbols	(int code);
 
XMLPUBFUN int XMLCALL xmlUCSIsMathematicalOperators	(int code);
 
XMLPUBFUN int XMLCALL xmlUCSIsMiscellaneousMathematicalSymbolsA	(int code);
 
XMLPUBFUN int XMLCALL xmlUCSIsMiscellaneousMathematicalSymbolsB	(int code);
 
XMLPUBFUN int XMLCALL xmlUCSIsMiscellaneousSymbols	(int code);
 
XMLPUBFUN int XMLCALL xmlUCSIsMiscellaneousSymbolsandArrows	(int code);
 
XMLPUBFUN int XMLCALL xmlUCSIsMiscellaneousTechnical	(int code);
 
XMLPUBFUN int XMLCALL xmlUCSIsMongolian	(int code);
 
XMLPUBFUN int XMLCALL xmlUCSIsMusicalSymbols	(int code);
 
XMLPUBFUN int XMLCALL xmlUCSIsMyanmar	(int code);
 
XMLPUBFUN int XMLCALL xmlUCSIsNumberForms	(int code);
 
XMLPUBFUN int XMLCALL xmlUCSIsOgham	(int code);
 
XMLPUBFUN int XMLCALL xmlUCSIsOldItalic	(int code);
 
XMLPUBFUN int XMLCALL xmlUCSIsOpticalCharacterRecognition	(int code);
 
XMLPUBFUN int XMLCALL xmlUCSIsOriya	(int code);
 
XMLPUBFUN int XMLCALL xmlUCSIsOsmanya	(int code);
 
XMLPUBFUN int XMLCALL xmlUCSIsPhoneticExtensions	(int code);
 
XMLPUBFUN int XMLCALL xmlUCSIsPrivateUse	(int code);
 
XMLPUBFUN int XMLCALL xmlUCSIsPrivateUseArea	(int code);
 
XMLPUBFUN int XMLCALL xmlUCSIsRunic	(int code);
 
XMLPUBFUN int XMLCALL xmlUCSIsShavian	(int code);
 
XMLPUBFUN int XMLCALL xmlUCSIsSinhala	(int code);
 
XMLPUBFUN int XMLCALL xmlUCSIsSmallFormVariants	(int code);
 
XMLPUBFUN int XMLCALL xmlUCSIsSpacingModifierLetters	(int code);
 
XMLPUBFUN int XMLCALL xmlUCSIsSpecials	(int code);
 
XMLPUBFUN int XMLCALL xmlUCSIsSuperscriptsandSubscripts	(int code);
 
XMLPUBFUN int XMLCALL xmlUCSIsSupplementalArrowsA	(int code);
 
XMLPUBFUN int XMLCALL xmlUCSIsSupplementalArrowsB	(int code);
 
XMLPUBFUN int XMLCALL xmlUCSIsSupplementalMathematicalOperators	(int code);
 
XMLPUBFUN int XMLCALL xmlUCSIsSupplementaryPrivateUseAreaA	(int code);
 
XMLPUBFUN int XMLCALL xmlUCSIsSupplementaryPrivateUseAreaB	(int code);
 
XMLPUBFUN int XMLCALL xmlUCSIsSyriac	(int code);
 
XMLPUBFUN int XMLCALL xmlUCSIsTagalog	(int code);
 
XMLPUBFUN int XMLCALL xmlUCSIsTagbanwa	(int code);
 
XMLPUBFUN int XMLCALL xmlUCSIsTags	(int code);
 
XMLPUBFUN int XMLCALL xmlUCSIsTaiLe	(int code);
 
XMLPUBFUN int XMLCALL xmlUCSIsTaiXuanJingSymbols	(int code);
 
XMLPUBFUN int XMLCALL xmlUCSIsTamil	(int code);
 
XMLPUBFUN int XMLCALL xmlUCSIsTelugu	(int code);
 
XMLPUBFUN int XMLCALL xmlUCSIsThaana	(int code);
 
XMLPUBFUN int XMLCALL xmlUCSIsThai	(int code);
 
XMLPUBFUN int XMLCALL xmlUCSIsTibetan	(int code);
 
XMLPUBFUN int XMLCALL xmlUCSIsUgaritic	(int code);
 
XMLPUBFUN int XMLCALL xmlUCSIsUnifiedCanadianAboriginalSyllabics	(int code);
 
XMLPUBFUN int XMLCALL xmlUCSIsVariationSelectors	(int code);
 
XMLPUBFUN int XMLCALL xmlUCSIsVariationSelectorsSupplement	(int code);
 
XMLPUBFUN int XMLCALL xmlUCSIsYiRadicals	(int code);
 
XMLPUBFUN int XMLCALL xmlUCSIsYiSyllables	(int code);
 
XMLPUBFUN int XMLCALL xmlUCSIsYijingHexagramSymbols	(int code);
 

	
 
XMLPUBFUN int XMLCALL xmlUCSIsBlock	(int code, const char *block);
 

	
 
XMLPUBFUN int XMLCALL xmlUCSIsCatC	(int code);
 
XMLPUBFUN int XMLCALL xmlUCSIsCatCc	(int code);
 
XMLPUBFUN int XMLCALL xmlUCSIsCatCf	(int code);
 
XMLPUBFUN int XMLCALL xmlUCSIsCatCo	(int code);
 
XMLPUBFUN int XMLCALL xmlUCSIsCatCs	(int code);
 
XMLPUBFUN int XMLCALL xmlUCSIsCatL	(int code);
 
XMLPUBFUN int XMLCALL xmlUCSIsCatLl	(int code);
 
XMLPUBFUN int XMLCALL xmlUCSIsCatLm	(int code);
 
XMLPUBFUN int XMLCALL xmlUCSIsCatLo	(int code);
 
XMLPUBFUN int XMLCALL xmlUCSIsCatLt	(int code);
 
XMLPUBFUN int XMLCALL xmlUCSIsCatLu	(int code);
 
XMLPUBFUN int XMLCALL xmlUCSIsCatM	(int code);
 
XMLPUBFUN int XMLCALL xmlUCSIsCatMc	(int code);
 
XMLPUBFUN int XMLCALL xmlUCSIsCatMe	(int code);
 
XMLPUBFUN int XMLCALL xmlUCSIsCatMn	(int code);
 
XMLPUBFUN int XMLCALL xmlUCSIsCatN	(int code);
 
XMLPUBFUN int XMLCALL xmlUCSIsCatNd	(int code);
 
XMLPUBFUN int XMLCALL xmlUCSIsCatNl	(int code);
 
XMLPUBFUN int XMLCALL xmlUCSIsCatNo	(int code);
 
XMLPUBFUN int XMLCALL xmlUCSIsCatP	(int code);
 
XMLPUBFUN int XMLCALL xmlUCSIsCatPc	(int code);
 
XMLPUBFUN int XMLCALL xmlUCSIsCatPd	(int code);
 
XMLPUBFUN int XMLCALL xmlUCSIsCatPe	(int code);
 
XMLPUBFUN int XMLCALL xmlUCSIsCatPf	(int code);
 
XMLPUBFUN int XMLCALL xmlUCSIsCatPi	(int code);
 
XMLPUBFUN int XMLCALL xmlUCSIsCatPo	(int code);
 
XMLPUBFUN int XMLCALL xmlUCSIsCatPs	(int code);
 
XMLPUBFUN int XMLCALL xmlUCSIsCatS	(int code);
 
XMLPUBFUN int XMLCALL xmlUCSIsCatSc	(int code);
 
XMLPUBFUN int XMLCALL xmlUCSIsCatSk	(int code);
 
XMLPUBFUN int XMLCALL xmlUCSIsCatSm	(int code);
 
XMLPUBFUN int XMLCALL xmlUCSIsCatSo	(int code);
 
XMLPUBFUN int XMLCALL xmlUCSIsCatZ	(int code);
 
XMLPUBFUN int XMLCALL xmlUCSIsCatZl	(int code);
 
XMLPUBFUN int XMLCALL xmlUCSIsCatZp	(int code);
 
XMLPUBFUN int XMLCALL xmlUCSIsCatZs	(int code);
 

	
 
XMLPUBFUN int XMLCALL xmlUCSIsCat	(int code, const char *cat);
 

	
 
#ifdef __cplusplus
 
}
 
#endif
 

	
 
#endif /* LIBXML_UNICODE_ENABLED */
 

	
 
#endif /* __XML_UNICODE_H__ */
lib/libxml2/include/libxml/xmlversion.h
Show inline comments
 
new file 100755
 
/*
 
 * Summary: compile-time version informations
 
 * Description: compile-time version informations for the XML library
 
 *
 
 * Copy: See Copyright for the status of this software.
 
 *
 
 * Author: Daniel Veillard
 
 */
 
 
#ifndef __XML_VERSION_H__
 
#define __XML_VERSION_H__
 
 
#include <libxml/xmlexports.h>
 
 
#ifdef __cplusplus
 
extern "C" {
 
#endif
 
 
/*
 
 * use those to be sure nothing nasty will happen if
 
 * your library and includes mismatch
 
 */
 
#ifndef LIBXML2_COMPILING_MSCCDEF
 
XMLPUBFUN void XMLCALL xmlCheckVersion(int version);
 
#endif /* LIBXML2_COMPILING_MSCCDEF */
 
 
/**
 
 * LIBXML_DOTTED_VERSION:
 
 *
 
 * the version string like "1.2.3"
 
 */
 
#define LIBXML_DOTTED_VERSION "2.7.7"
 
 
/**
 
 * LIBXML_VERSION:
 
 *
 
 * the version number: 1.2.3 value is 10203
 
 */
 
#define LIBXML_VERSION 20707
 
 
/**
 
 * LIBXML_VERSION_STRING:
 
 *
 
 * the version number string, 1.2.3 value is "10203"
 
 */
 
#define LIBXML_VERSION_STRING "20707"
 
 
/**
 
 * LIBXML_VERSION_EXTRA:
 
 *
 
 * extra version information, used to show a CVS compilation
 
 */
 
#define LIBXML_VERSION_EXTRA ""
 
 
/**
 
 * LIBXML_TEST_VERSION:
 
 *
 
 * Macro to check that the libxml version in use is compatible with
 
 * the version the software has been compiled against
 
 */
 
#define LIBXML_TEST_VERSION xmlCheckVersion(20707);
 
 
#ifndef VMS
 
#if 0
 
/**
 
 * WITH_TRIO:
 
 *
 
 * defined if the trio support need to be configured in
 
 */
 
#define WITH_TRIO
 
#else
 
/**
 
 * WITHOUT_TRIO:
 
 *
 
 * defined if the trio support should not be configured in
 
 */
 
#define WITHOUT_TRIO
 
#endif
 
#else /* VMS */
 
/**
 
 * WITH_TRIO:
 
 *
 
 * defined if the trio support need to be configured in
 
 */
 
#define WITH_TRIO 1
 
#endif /* VMS */
 
 
/**
 
 * LIBXML_THREAD_ENABLED:
 
 *
 
 * Whether the thread support is configured in
 
 */
 
#if 1
 
#if defined(_REENTRANT) || defined(__MT__) || \
 
    (defined(_POSIX_C_SOURCE) && (_POSIX_C_SOURCE - 0 >= 199506L))
 
#define LIBXML_THREAD_ENABLED
 
#endif
 
#endif
 
 
/**
 
 * LIBXML_TREE_ENABLED:
 
 *
 
 * Whether the DOM like tree manipulation API support is configured in
 
 */
 
#if 1
 
#define LIBXML_TREE_ENABLED
 
#endif
 
 
/**
 
 * LIBXML_OUTPUT_ENABLED:
 
 *
 
 * Whether the serialization/saving support is configured in
 
 */
 
#if 1
 
#define LIBXML_OUTPUT_ENABLED
 
#endif
 
 
/**
 
 * LIBXML_PUSH_ENABLED:
 
 *
 
 * Whether the push parsing interfaces are configured in
 
 */
 
#if 1
 
#define LIBXML_PUSH_ENABLED
 
#endif
 
 
/**
 
 * LIBXML_READER_ENABLED:
 
 *
 
 * Whether the xmlReader parsing interface is configured in
 
 */
 
#if 1
 
#define LIBXML_READER_ENABLED
 
#endif
 
 
/**
 
 * LIBXML_PATTERN_ENABLED:
 
 *
 
 * Whether the xmlPattern node selection interface is configured in
 
 */
 
#if 1
 
#define LIBXML_PATTERN_ENABLED
 
#endif
 
 
/**
 
 * LIBXML_WRITER_ENABLED:
 
 *
 
 * Whether the xmlWriter saving interface is configured in
 
 */
 
#if 1
 
#define LIBXML_WRITER_ENABLED
 
#endif
 
 
/**
 
 * LIBXML_SAX1_ENABLED:
 
 *
 
 * Whether the older SAX1 interface is configured in
 
 */
 
#if 1
 
#define LIBXML_SAX1_ENABLED
 
#endif
 
 
/**
 
 * LIBXML_FTP_ENABLED:
 
 *
 
 * Whether the FTP support is configured in
 
 */
 
#if 1
 
#define LIBXML_FTP_ENABLED
 
#endif
 
 
/**
 
 * LIBXML_HTTP_ENABLED:
 
 *
 
 * Whether the HTTP support is configured in
 
 */
 
#if 1
 
#define LIBXML_HTTP_ENABLED
 
#endif
 
 
/**
 
 * LIBXML_VALID_ENABLED:
 
 *
 
 * Whether the DTD validation support is configured in
 
 */
 
#if 1
 
#define LIBXML_VALID_ENABLED
 
#endif
 
 
/**
 
 * LIBXML_HTML_ENABLED:
 
 *
 
 * Whether the HTML support is configured in
 
 */
 
#if 1
 
#define LIBXML_HTML_ENABLED
 
#endif
 
 
/**
 
 * LIBXML_LEGACY_ENABLED:
 
 *
 
 * Whether the deprecated APIs are compiled in for compatibility
 
 */
 
#if 1
 
#define LIBXML_LEGACY_ENABLED
 
#endif
 
 
/**
 
 * LIBXML_C14N_ENABLED:
 
 *
 
 * Whether the Canonicalization support is configured in
 
 */
 
#if 1
 
#define LIBXML_C14N_ENABLED
 
#endif
 
 
/**
 
 * LIBXML_CATALOG_ENABLED:
 
 *
 
 * Whether the Catalog support is configured in
 
 */
 
#if 1
 
#define LIBXML_CATALOG_ENABLED
 
#endif
 
 
/**
 
 * LIBXML_DOCB_ENABLED:
 
 *
 
 * Whether the SGML Docbook support is configured in
 
 */
 
#if 1
 
#define LIBXML_DOCB_ENABLED
 
#endif
 
 
/**
 
 * LIBXML_XPATH_ENABLED:
 
 *
 
 * Whether XPath is configured in
 
 */
 
#if 1
 
#define LIBXML_XPATH_ENABLED
 
#endif
 
 
/**
 
 * LIBXML_XPTR_ENABLED:
 
 *
 
 * Whether XPointer is configured in
 
 */
 
#if 1
 
#define LIBXML_XPTR_ENABLED
 
#endif
 
 
/**
 
 * LIBXML_XINCLUDE_ENABLED:
 
 *
 
 * Whether XInclude is configured in
 
 */
 
#if 1
 
#define LIBXML_XINCLUDE_ENABLED
 
#endif
 
 
/**
 
 * LIBXML_ICONV_ENABLED:
 
 *
 
 * Whether iconv support is available
 
 */
 
#if 1
 
#define LIBXML_ICONV_ENABLED
 
#endif
 
 
/**
 
 * LIBXML_ISO8859X_ENABLED:
 
 *
 
 * Whether ISO-8859-* support is made available in case iconv is not
 
 */
 
#if 0
 
#define LIBXML_ISO8859X_ENABLED
 
#endif
 
 
/**
 
 * LIBXML_DEBUG_ENABLED:
 
 *
 
 * Whether Debugging module is configured in
 
 */
 
#if 1
 
#define LIBXML_DEBUG_ENABLED
 
#endif
 
 
/**
 
 * DEBUG_MEMORY_LOCATION:
 
 *
 
 * Whether the memory debugging is configured in
 
 */
 
#if 0
 
#define DEBUG_MEMORY_LOCATION
 
#endif
 
 
/**
 
 * LIBXML_DEBUG_RUNTIME:
 
 *
 
 * Whether the runtime debugging is configured in
 
 */
 
#if 0
 
#define LIBXML_DEBUG_RUNTIME
 
#endif
 
 
/**
 
 * LIBXML_UNICODE_ENABLED:
 
 *
 
 * Whether the Unicode related interfaces are compiled in
 
 */
 
#if 1
 
#define LIBXML_UNICODE_ENABLED
 
#endif
 
 
/**
 
 * LIBXML_REGEXP_ENABLED:
 
 *
 
 * Whether the regular expressions interfaces are compiled in
 
 */
 
#if 1
 
#define LIBXML_REGEXP_ENABLED
 
#endif
 
 
/**
 
 * LIBXML_AUTOMATA_ENABLED:
 
 *
 
 * Whether the automata interfaces are compiled in
 
 */
 
#if 1
 
#define LIBXML_AUTOMATA_ENABLED
 
#endif
 
 
/**
 
 * LIBXML_EXPR_ENABLED:
 
 *
 
 * Whether the formal expressions interfaces are compiled in
 
 */
 
#if 1
 
#define LIBXML_EXPR_ENABLED
 
#endif
 
 
/**
 
 * LIBXML_SCHEMAS_ENABLED:
 
 *
 
 * Whether the Schemas validation interfaces are compiled in
 
 */
 
#if 1
 
#define LIBXML_SCHEMAS_ENABLED
 
#endif
 
 
/**
 
 * LIBXML_SCHEMATRON_ENABLED:
 
 *
 
 * Whether the Schematron validation interfaces are compiled in
 
 */
 
#if 1
 
#define LIBXML_SCHEMATRON_ENABLED
 
#endif
 
 
/**
 
 * LIBXML_MODULES_ENABLED:
 
 *
 
 * Whether the module interfaces are compiled in
 
 */
 
#if 1
 
#define LIBXML_MODULES_ENABLED
 
/**
 
 * LIBXML_MODULE_EXTENSION:
 
 *
 
 * the string suffix used by dynamic modules (usually shared libraries)
 
 */
 
#define LIBXML_MODULE_EXTENSION ".dll" 
 
#endif
 
 
/**
 
 * LIBXML_ZLIB_ENABLED:
 
 *
 
 * Whether the Zlib support is compiled in
 
 */
 
#if 0
 
#define LIBXML_ZLIB_ENABLED
 
#endif
 
 
#ifdef __GNUC__
 
#ifdef HAVE_ANSIDECL_H
 
#include <ansidecl.h>
 
#endif
 
 
/**
 
 * ATTRIBUTE_UNUSED:
 
 *
 
 * Macro used to signal to GCC unused function parameters
 
 */
 
 
#ifndef ATTRIBUTE_UNUSED
 
#define ATTRIBUTE_UNUSED __attribute__((unused))
 
#endif
 
 
/**
 
 * LIBXML_ATTR_ALLOC_SIZE:
 
 *
 
 * Macro used to indicate to GCC this is an allocator function
 
 */
 
 
#ifndef LIBXML_ATTR_ALLOC_SIZE
 
# if ((__GNUC__ > 4) || ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 3)))
 
#  define LIBXML_ATTR_ALLOC_SIZE(x) __attribute__((alloc_size(x)))
 
# else
 
#  define LIBXML_ATTR_ALLOC_SIZE(x)
 
# endif
 
#else
 
# define LIBXML_ATTR_ALLOC_SIZE(x)
 
#endif
 
 
/**
 
 * LIBXML_ATTR_FORMAT:
 
 *
 
 * Macro used to indicate to GCC the parameter are printf like
 
 */
 
 
#ifndef LIBXML_ATTR_FORMAT
 
# if ((__GNUC__ > 3) || ((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)))
 
#  define LIBXML_ATTR_FORMAT(fmt,args) __attribute__((__format__(__printf__,fmt,args)))
 
# else
 
#  define LIBXML_ATTR_FORMAT(fmt,args)
 
# endif
 
#else
 
# define LIBXML_ATTR_FORMAT(fmt,args)
 
#endif
 
 
#else /* ! __GNUC__ */
 
/**
 
 * ATTRIBUTE_UNUSED:
 
 *
 
 * Macro used to signal to GCC unused function parameters
 
 */
 
#define ATTRIBUTE_UNUSED
 
/**
 
 * LIBXML_ATTR_ALLOC_SIZE:
 
 *
 
 * Macro used to indicate to GCC this is an allocator function
 
 */
 
#define LIBXML_ATTR_ALLOC_SIZE(x)
 
/**
 
 * LIBXML_ATTR_FORMAT:
 
 *
 
 * Macro used to indicate to GCC the parameter are printf like
 
 */
 
#define LIBXML_ATTR_FORMAT(fmt,args)
 
#endif /* __GNUC__ */
 
 
#ifdef __cplusplus
 
}
 
#endif /* __cplusplus */
 
#endif
 
 
lib/libxml2/include/libxml/xmlwin32version.h
Show inline comments
 
new file 100755
 
/*
 
 * Summary: compile-time version informations on Windows
 
 * Description: compile-time version informations for the XML library
 
 *              when compiled on the Windows platform
 
 *
 
 * Copy: See Copyright for the status of this software.
 
 *
 
 * Author: Daniel Veillard
 
 */
 

	
 
#ifndef __XML_VERSION_H__
 
#define __XML_VERSION_H__
 

	
 
#ifdef __cplusplus
 
extern "C" {
 
#endif
 

	
 
/*
 
 * use those to be sure nothing nasty will happen if
 
 * your library and includes mismatch
 
 */
 
#ifndef LIBXML2_COMPILING_MSCCDEF
 
extern void xmlCheckVersion(int version);
 
#endif /* LIBXML2_COMPILING_MSCCDEF */
 

	
 
/**
 
 * LIBXML_DOTTED_VERSION:
 
 *
 
 * the version string like "1.2.3"
 
 */
 
#define LIBXML_DOTTED_VERSION "2.4.26"
 

	
 
/**
 
 * LIBXML_VERSION:
 
 *
 
 * the version number: 1.2.3 value is 1002003
 
 */
 
#define LIBXML_VERSION 20426
 

	
 
/**
 
 * LIBXML_VERSION_STRING:
 
 *
 
 * the version number string, 1.2.3 value is "1002003"
 
 */
 
#define LIBXML_VERSION_STRING "20426"
 

	
 
/**
 
 * LIBXML_TEST_VERSION:
 
 *
 
 * Macro to check that the libxml version in use is compatible with
 
 * the version the software has been compiled against
 
 */
 
#define LIBXML_TEST_VERSION xmlCheckVersion(20426);
 

	
 
#if 0
 
/**
 
 * WITH_TRIO:
 
 *
 
 * defined if the trio support need to be configured in
 
 */
 
#define WITH_TRIO
 
#else
 
/**
 
 * WITHOUT_TRIO:
 
 *
 
 * defined if the trio support should not be configured in
 
 */
 
#define WITHOUT_TRIO
 
#endif
 

	
 
/**
 
 * LIBXML_THREAD_ENABLED:
 
 *
 
 * Whether the thread support is configured in
 
 */
 
#if 0
 
#define LIBXML_THREAD_ENABLED
 
#endif
 

	
 
/**
 
 * LIBXML_FTP_ENABLED:
 
 *
 
 * Whether the FTP support is configured in
 
 */
 
#if 1
 
#define LIBXML_FTP_ENABLED
 
#endif
 

	
 
/**
 
 * LIBXML_HTTP_ENABLED:
 
 *
 
 * Whether the HTTP support is configured in
 
 */
 
#if 1
 
#define LIBXML_HTTP_ENABLED
 
#endif
 

	
 
/**
 
 * LIBXML_HTML_ENABLED:
 
 *
 
 * Whether the HTML support is configured in
 
 */
 
#if 1
 
#define LIBXML_HTML_ENABLED
 
#endif
 

	
 
/**
 
 * LIBXML_CATALOG_ENABLED:
 
 *
 
 * Whether the Catalog support is configured in
 
 */
 
#if 1
 
#define LIBXML_CATALOG_ENABLED
 
#endif
 

	
 
/**
 
 * LIBXML_DOCB_ENABLED:
 
 *
 
 * Whether the SGML Docbook support is configured in
 
 */
 
#if 1
 
#define LIBXML_DOCB_ENABLED
 
#endif
 

	
 
/**
 
 * LIBXML_XPATH_ENABLED:
 
 *
 
 * Whether XPath is configured in
 
 */
 
#if 1
 
#define LIBXML_XPATH_ENABLED
 
#endif
 

	
 
/**
 
 * LIBXML_XPTR_ENABLED:
 
 *
 
 * Whether XPointer is configured in
 
 */
 
#if 1
 
#define LIBXML_XPTR_ENABLED
 
#endif
 

	
 
/**
 
 * LIBXML_C14N_ENABLED:
 
 *
 
 * Whether the Canonicalization support is configured in
 
 */
 
#if 0
 
#define LIBXML_C14N_ENABLED
 
#endif
 

	
 
/**
 
 * LIBXML_XINCLUDE_ENABLED:
 
 *
 
 * Whether XInclude is configured in
 
 */
 
#if 1
 
#define LIBXML_XINCLUDE_ENABLED
 
#endif
 

	
 
/**
 
 * LIBXML_ICONV_ENABLED:
 
 *
 
 * Whether iconv support is available
 
 */
 
#if 0
 
#define LIBXML_ICONV_ENABLED
 
#endif
 

	
 
/**
 
 * LIBXML_DEBUG_ENABLED:
 
 *
 
 * Whether Debugging module is configured in
 
 */
 
#if 1
 
#define LIBXML_DEBUG_ENABLED
 
#endif
 

	
 
/**
 
 * DEBUG_MEMORY_LOCATION:
 
 *
 
 * Whether the memory debugging is configured in
 
 */
 
#if 0
 
#define DEBUG_MEMORY_LOCATION
 
#endif
 

	
 
/**
 
 * LIBXML_DLL_IMPORT:
 
 *
 
 * Used on Windows (MS C compiler only) to declare a variable as 
 
 * imported from the library. This macro should be empty when compiling
 
 * libxml itself. It should expand to __declspec(dllimport)
 
 * when the client code includes this header, and that only if the client
 
 * links dynamically against libxml.
 
 * For this to work, we need three macros. One tells us which compiler is
 
 * being used and luckily the compiler defines such a thing: _MSC_VER. The
 
 * second macro tells us if we are compiling libxml or the client code and
 
 * we define the macro IN_LIBXML on the compiler's command line for this 
 
 * purpose. The third macro, LIBXML_STATIC, must be defined by any client 
 
 * code which links against libxml statically. 
 
 */
 
#ifndef LIBXML_DLL_IMPORT
 
#if defined(_MSC_VER) && !defined(IN_LIBXML) && !defined(LIBXML_STATIC)
 
#define LIBXML_DLL_IMPORT __declspec(dllimport)
 
#else
 
#define LIBXML_DLL_IMPORT
 
#endif
 
#endif
 

	
 
/**
 
 * ATTRIBUTE_UNUSED:
 
 *
 
 * Macro used to signal to GCC unused function parameters
 
 */
 
#ifdef __GNUC__
 
#ifdef HAVE_ANSIDECL_H
 
#include <ansidecl.h>
 
#endif
 
#ifndef ATTRIBUTE_UNUSED
 
#define ATTRIBUTE_UNUSED
 
#endif
 
#else
 
#define ATTRIBUTE_UNUSED
 
#endif
 

	
 
/*
 
 * #pragma comment(lib, "iconv.lib")
 
 *
 
 * pragma understood my MS compiler which enables a conditional link with
 
 * iconv.
 
 */
 
#ifdef _MSC_VER
 
#if defined LIBXML_ICONV_ENABLED && !defined LIBXML2_COMPILING_MSCCDEF
 
#pragma comment(lib, "iconv.lib")
 
#endif
 
#endif
 

	
 
#ifdef __cplusplus
 
}
 
#endif /* __cplusplus */
 
#endif
lib/libxml2/include/libxml/xmlwriter.h
Show inline comments
 
new file 100755
 

	
 
/*
 
 * Summary: text writing API for XML
 
 * Description: text writing API for XML
 
 *
 
 * Copy: See Copyright for the status of this software.
 
 *
 
 * Author: Alfred Mickautsch <alfred@mickautsch.de>
 
 */
 

	
 
#ifndef __XML_XMLWRITER_H__
 
#define __XML_XMLWRITER_H__
 

	
 
#include <libxml/xmlversion.h>
 

	
 
#ifdef LIBXML_WRITER_ENABLED
 

	
 
#include <stdarg.h>
 
#include <libxml/xmlIO.h>
 
#include <libxml/list.h>
 
#include <libxml/xmlstring.h>
 

	
 
#ifdef __cplusplus
 
extern "C" {
 
#endif
 

	
 
    typedef struct _xmlTextWriter xmlTextWriter;
 
    typedef xmlTextWriter *xmlTextWriterPtr;
 

	
 
/*
 
 * Constructors & Destructor
 
 */
 
    XMLPUBFUN xmlTextWriterPtr XMLCALL
 
        xmlNewTextWriter(xmlOutputBufferPtr out);
 
    XMLPUBFUN xmlTextWriterPtr XMLCALL
 
        xmlNewTextWriterFilename(const char *uri, int compression);
 
    XMLPUBFUN xmlTextWriterPtr XMLCALL
 
        xmlNewTextWriterMemory(xmlBufferPtr buf, int compression);
 
    XMLPUBFUN xmlTextWriterPtr XMLCALL
 
        xmlNewTextWriterPushParser(xmlParserCtxtPtr ctxt, int compression);
 
    XMLPUBFUN xmlTextWriterPtr XMLCALL
 
        xmlNewTextWriterDoc(xmlDocPtr * doc, int compression);
 
    XMLPUBFUN xmlTextWriterPtr XMLCALL
 
        xmlNewTextWriterTree(xmlDocPtr doc, xmlNodePtr node,
 
                             int compression);
 
    XMLPUBFUN void XMLCALL xmlFreeTextWriter(xmlTextWriterPtr writer);
 

	
 
/*
 
 * Functions
 
 */
 

	
 

	
 
/*
 
 * Document
 
 */
 
    XMLPUBFUN int XMLCALL
 
        xmlTextWriterStartDocument(xmlTextWriterPtr writer,
 
                                   const char *version,
 
                                   const char *encoding,
 
                                   const char *standalone);
 
    XMLPUBFUN int XMLCALL xmlTextWriterEndDocument(xmlTextWriterPtr
 
                                                   writer);
 

	
 
/*
 
 * Comments
 
 */
 
    XMLPUBFUN int XMLCALL xmlTextWriterStartComment(xmlTextWriterPtr
 
                                                    writer);
 
    XMLPUBFUN int XMLCALL xmlTextWriterEndComment(xmlTextWriterPtr writer);
 
    XMLPUBFUN int XMLCALL
 
        xmlTextWriterWriteFormatComment(xmlTextWriterPtr writer,
 
                                        const char *format, ...)
 
					LIBXML_ATTR_FORMAT(2,3);
 
    XMLPUBFUN int XMLCALL
 
        xmlTextWriterWriteVFormatComment(xmlTextWriterPtr writer,
 
                                         const char *format,
 
                                         va_list argptr)
 
					 LIBXML_ATTR_FORMAT(2,0);
 
    XMLPUBFUN int XMLCALL xmlTextWriterWriteComment(xmlTextWriterPtr
 
                                                    writer,
 
                                                    const xmlChar *
 
                                                    content);
 

	
 
/*
 
 * Elements
 
 */
 
    XMLPUBFUN int XMLCALL
 
        xmlTextWriterStartElement(xmlTextWriterPtr writer,
 
                                  const xmlChar * name);
 
    XMLPUBFUN int XMLCALL xmlTextWriterStartElementNS(xmlTextWriterPtr
 
                                                      writer,
 
                                                      const xmlChar *
 
                                                      prefix,
 
                                                      const xmlChar * name,
 
                                                      const xmlChar *
 
                                                      namespaceURI);
 
    XMLPUBFUN int XMLCALL xmlTextWriterEndElement(xmlTextWriterPtr writer);
 
    XMLPUBFUN int XMLCALL xmlTextWriterFullEndElement(xmlTextWriterPtr
 
                                                      writer);
 

	
 
/*
 
 * Elements conveniency functions
 
 */
 
    XMLPUBFUN int XMLCALL
 
        xmlTextWriterWriteFormatElement(xmlTextWriterPtr writer,
 
                                        const xmlChar * name,
 
                                        const char *format, ...)
 
					LIBXML_ATTR_FORMAT(3,4);
 
    XMLPUBFUN int XMLCALL
 
        xmlTextWriterWriteVFormatElement(xmlTextWriterPtr writer,
 
                                         const xmlChar * name,
 
                                         const char *format,
 
                                         va_list argptr)
 
					 LIBXML_ATTR_FORMAT(3,0);
 
    XMLPUBFUN int XMLCALL xmlTextWriterWriteElement(xmlTextWriterPtr
 
                                                    writer,
 
                                                    const xmlChar * name,
 
                                                    const xmlChar *
 
                                                    content);
 
    XMLPUBFUN int XMLCALL
 
        xmlTextWriterWriteFormatElementNS(xmlTextWriterPtr writer,
 
                                          const xmlChar * prefix,
 
                                          const xmlChar * name,
 
                                          const xmlChar * namespaceURI,
 
                                          const char *format, ...)
 
					  LIBXML_ATTR_FORMAT(5,6);
 
    XMLPUBFUN int XMLCALL
 
        xmlTextWriterWriteVFormatElementNS(xmlTextWriterPtr writer,
 
                                           const xmlChar * prefix,
 
                                           const xmlChar * name,
 
                                           const xmlChar * namespaceURI,
 
                                           const char *format,
 
                                           va_list argptr)
 
					   LIBXML_ATTR_FORMAT(5,0);
 
    XMLPUBFUN int XMLCALL xmlTextWriterWriteElementNS(xmlTextWriterPtr
 
                                                      writer,
 
                                                      const xmlChar *
 
                                                      prefix,
 
                                                      const xmlChar * name,
 
                                                      const xmlChar *
 
                                                      namespaceURI,
 
                                                      const xmlChar *
 
                                                      content);
 

	
 
/*
 
 * Text
 
 */
 
    XMLPUBFUN int XMLCALL
 
        xmlTextWriterWriteFormatRaw(xmlTextWriterPtr writer,
 
                                    const char *format, ...)
 
				    LIBXML_ATTR_FORMAT(2,3);
 
    XMLPUBFUN int XMLCALL
 
        xmlTextWriterWriteVFormatRaw(xmlTextWriterPtr writer,
 
                                     const char *format, va_list argptr)
 
				     LIBXML_ATTR_FORMAT(2,0);
 
    XMLPUBFUN int XMLCALL
 
        xmlTextWriterWriteRawLen(xmlTextWriterPtr writer,
 
                                 const xmlChar * content, int len);
 
    XMLPUBFUN int XMLCALL
 
        xmlTextWriterWriteRaw(xmlTextWriterPtr writer,
 
                              const xmlChar * content);
 
    XMLPUBFUN int XMLCALL xmlTextWriterWriteFormatString(xmlTextWriterPtr
 
                                                         writer,
 
                                                         const char
 
                                                         *format, ...)
 
							 LIBXML_ATTR_FORMAT(2,3);
 
    XMLPUBFUN int XMLCALL xmlTextWriterWriteVFormatString(xmlTextWriterPtr
 
                                                          writer,
 
                                                          const char
 
                                                          *format,
 
                                                          va_list argptr)
 
							  LIBXML_ATTR_FORMAT(2,0);
 
    XMLPUBFUN int XMLCALL xmlTextWriterWriteString(xmlTextWriterPtr writer,
 
                                                   const xmlChar *
 
                                                   content);
 
    XMLPUBFUN int XMLCALL xmlTextWriterWriteBase64(xmlTextWriterPtr writer,
 
                                                   const char *data,
 
                                                   int start, int len);
 
    XMLPUBFUN int XMLCALL xmlTextWriterWriteBinHex(xmlTextWriterPtr writer,
 
                                                   const char *data,
 
                                                   int start, int len);
 

	
 
/*
 
 * Attributes
 
 */
 
    XMLPUBFUN int XMLCALL
 
        xmlTextWriterStartAttribute(xmlTextWriterPtr writer,
 
                                    const xmlChar * name);
 
    XMLPUBFUN int XMLCALL xmlTextWriterStartAttributeNS(xmlTextWriterPtr
 
                                                        writer,
 
                                                        const xmlChar *
 
                                                        prefix,
 
                                                        const xmlChar *
 
                                                        name,
 
                                                        const xmlChar *
 
                                                        namespaceURI);
 
    XMLPUBFUN int XMLCALL xmlTextWriterEndAttribute(xmlTextWriterPtr
 
                                                    writer);
 

	
 
/*
 
 * Attributes conveniency functions
 
 */
 
    XMLPUBFUN int XMLCALL
 
        xmlTextWriterWriteFormatAttribute(xmlTextWriterPtr writer,
 
                                          const xmlChar * name,
 
                                          const char *format, ...)
 
					  LIBXML_ATTR_FORMAT(3,4);
 
    XMLPUBFUN int XMLCALL
 
        xmlTextWriterWriteVFormatAttribute(xmlTextWriterPtr writer,
 
                                           const xmlChar * name,
 
                                           const char *format,
 
                                           va_list argptr)
 
					   LIBXML_ATTR_FORMAT(3,0);
 
    XMLPUBFUN int XMLCALL xmlTextWriterWriteAttribute(xmlTextWriterPtr
 
                                                      writer,
 
                                                      const xmlChar * name,
 
                                                      const xmlChar *
 
                                                      content);
 
    XMLPUBFUN int XMLCALL
 
        xmlTextWriterWriteFormatAttributeNS(xmlTextWriterPtr writer,
 
                                            const xmlChar * prefix,
 
                                            const xmlChar * name,
 
                                            const xmlChar * namespaceURI,
 
                                            const char *format, ...)
 
					    LIBXML_ATTR_FORMAT(5,6);
 
    XMLPUBFUN int XMLCALL
 
        xmlTextWriterWriteVFormatAttributeNS(xmlTextWriterPtr writer,
 
                                             const xmlChar * prefix,
 
                                             const xmlChar * name,
 
                                             const xmlChar * namespaceURI,
 
                                             const char *format,
 
                                             va_list argptr)
 
					     LIBXML_ATTR_FORMAT(5,0);
 
    XMLPUBFUN int XMLCALL xmlTextWriterWriteAttributeNS(xmlTextWriterPtr
 
                                                        writer,
 
                                                        const xmlChar *
 
                                                        prefix,
 
                                                        const xmlChar *
 
                                                        name,
 
                                                        const xmlChar *
 
                                                        namespaceURI,
 
                                                        const xmlChar *
 
                                                        content);
 

	
 
/*
 
 * PI's
 
 */
 
    XMLPUBFUN int XMLCALL
 
        xmlTextWriterStartPI(xmlTextWriterPtr writer,
 
                             const xmlChar * target);
 
    XMLPUBFUN int XMLCALL xmlTextWriterEndPI(xmlTextWriterPtr writer);
 

	
 
/*
 
 * PI conveniency functions
 
 */
 
    XMLPUBFUN int XMLCALL
 
        xmlTextWriterWriteFormatPI(xmlTextWriterPtr writer,
 
                                   const xmlChar * target,
 
                                   const char *format, ...)
 
				   LIBXML_ATTR_FORMAT(3,4);
 
    XMLPUBFUN int XMLCALL
 
        xmlTextWriterWriteVFormatPI(xmlTextWriterPtr writer,
 
                                    const xmlChar * target,
 
                                    const char *format, va_list argptr)
 
				    LIBXML_ATTR_FORMAT(3,0);
 
    XMLPUBFUN int XMLCALL
 
        xmlTextWriterWritePI(xmlTextWriterPtr writer,
 
                             const xmlChar * target,
 
                             const xmlChar * content);
 

	
 
/**
 
 * xmlTextWriterWriteProcessingInstruction:
 
 *
 
 * This macro maps to xmlTextWriterWritePI
 
 */
 
#define xmlTextWriterWriteProcessingInstruction xmlTextWriterWritePI
 

	
 
/*
 
 * CDATA
 
 */
 
    XMLPUBFUN int XMLCALL xmlTextWriterStartCDATA(xmlTextWriterPtr writer);
 
    XMLPUBFUN int XMLCALL xmlTextWriterEndCDATA(xmlTextWriterPtr writer);
 

	
 
/*
 
 * CDATA conveniency functions
 
 */
 
    XMLPUBFUN int XMLCALL
 
        xmlTextWriterWriteFormatCDATA(xmlTextWriterPtr writer,
 
                                      const char *format, ...)
 
				      LIBXML_ATTR_FORMAT(2,3);
 
    XMLPUBFUN int XMLCALL
 
        xmlTextWriterWriteVFormatCDATA(xmlTextWriterPtr writer,
 
                                       const char *format, va_list argptr)
 
				       LIBXML_ATTR_FORMAT(2,0);
 
    XMLPUBFUN int XMLCALL
 
        xmlTextWriterWriteCDATA(xmlTextWriterPtr writer,
 
                                const xmlChar * content);
 

	
 
/*
 
 * DTD
 
 */
 
    XMLPUBFUN int XMLCALL
 
        xmlTextWriterStartDTD(xmlTextWriterPtr writer,
 
                              const xmlChar * name,
 
                              const xmlChar * pubid,
 
                              const xmlChar * sysid);
 
    XMLPUBFUN int XMLCALL xmlTextWriterEndDTD(xmlTextWriterPtr writer);
 

	
 
/*
 
 * DTD conveniency functions
 
 */
 
    XMLPUBFUN int XMLCALL
 
        xmlTextWriterWriteFormatDTD(xmlTextWriterPtr writer,
 
                                    const xmlChar * name,
 
                                    const xmlChar * pubid,
 
                                    const xmlChar * sysid,
 
                                    const char *format, ...)
 
				    LIBXML_ATTR_FORMAT(5,6);
 
    XMLPUBFUN int XMLCALL
 
        xmlTextWriterWriteVFormatDTD(xmlTextWriterPtr writer,
 
                                     const xmlChar * name,
 
                                     const xmlChar * pubid,
 
                                     const xmlChar * sysid,
 
                                     const char *format, va_list argptr)
 
				     LIBXML_ATTR_FORMAT(5,0);
 
    XMLPUBFUN int XMLCALL
 
        xmlTextWriterWriteDTD(xmlTextWriterPtr writer,
 
                              const xmlChar * name,
 
                              const xmlChar * pubid,
 
                              const xmlChar * sysid,
 
                              const xmlChar * subset);
 

	
 
/**
 
 * xmlTextWriterWriteDocType:
 
 *
 
 * this macro maps to xmlTextWriterWriteDTD
 
 */
 
#define xmlTextWriterWriteDocType xmlTextWriterWriteDTD
 

	
 
/*
 
 * DTD element definition
 
 */
 
    XMLPUBFUN int XMLCALL
 
        xmlTextWriterStartDTDElement(xmlTextWriterPtr writer,
 
                                     const xmlChar * name);
 
    XMLPUBFUN int XMLCALL xmlTextWriterEndDTDElement(xmlTextWriterPtr
 
                                                     writer);
 

	
 
/*
 
 * DTD element definition conveniency functions
 
 */
 
    XMLPUBFUN int XMLCALL
 
        xmlTextWriterWriteFormatDTDElement(xmlTextWriterPtr writer,
 
                                           const xmlChar * name,
 
                                           const char *format, ...)
 
					   LIBXML_ATTR_FORMAT(3,4);
 
    XMLPUBFUN int XMLCALL
 
        xmlTextWriterWriteVFormatDTDElement(xmlTextWriterPtr writer,
 
                                            const xmlChar * name,
 
                                            const char *format,
 
                                            va_list argptr)
 
					    LIBXML_ATTR_FORMAT(3,0);
 
    XMLPUBFUN int XMLCALL xmlTextWriterWriteDTDElement(xmlTextWriterPtr
 
                                                       writer,
 
                                                       const xmlChar *
 
                                                       name,
 
                                                       const xmlChar *
 
                                                       content);
 

	
 
/*
 
 * DTD attribute list definition
 
 */
 
    XMLPUBFUN int XMLCALL
 
        xmlTextWriterStartDTDAttlist(xmlTextWriterPtr writer,
 
                                     const xmlChar * name);
 
    XMLPUBFUN int XMLCALL xmlTextWriterEndDTDAttlist(xmlTextWriterPtr
 
                                                     writer);
 

	
 
/*
 
 * DTD attribute list definition conveniency functions
 
 */
 
    XMLPUBFUN int XMLCALL
 
        xmlTextWriterWriteFormatDTDAttlist(xmlTextWriterPtr writer,
 
                                           const xmlChar * name,
 
                                           const char *format, ...)
 
					   LIBXML_ATTR_FORMAT(3,4);
 
    XMLPUBFUN int XMLCALL
 
        xmlTextWriterWriteVFormatDTDAttlist(xmlTextWriterPtr writer,
 
                                            const xmlChar * name,
 
                                            const char *format,
 
                                            va_list argptr)
 
					    LIBXML_ATTR_FORMAT(3,0);
 
    XMLPUBFUN int XMLCALL xmlTextWriterWriteDTDAttlist(xmlTextWriterPtr
 
                                                       writer,
 
                                                       const xmlChar *
 
                                                       name,
 
                                                       const xmlChar *
 
                                                       content);
 

	
 
/*
 
 * DTD entity definition
 
 */
 
    XMLPUBFUN int XMLCALL
 
        xmlTextWriterStartDTDEntity(xmlTextWriterPtr writer,
 
                                    int pe, const xmlChar * name);
 
    XMLPUBFUN int XMLCALL xmlTextWriterEndDTDEntity(xmlTextWriterPtr
 
                                                    writer);
 

	
 
/*
 
 * DTD entity definition conveniency functions
 
 */
 
    XMLPUBFUN int XMLCALL
 
        xmlTextWriterWriteFormatDTDInternalEntity(xmlTextWriterPtr writer,
 
                                                  int pe,
 
                                                  const xmlChar * name,
 
                                                  const char *format, ...)
 
						  LIBXML_ATTR_FORMAT(4,5);
 
    XMLPUBFUN int XMLCALL
 
        xmlTextWriterWriteVFormatDTDInternalEntity(xmlTextWriterPtr writer,
 
                                                   int pe,
 
                                                   const xmlChar * name,
 
                                                   const char *format,
 
                                                   va_list argptr)
 
						   LIBXML_ATTR_FORMAT(4,0);
 
    XMLPUBFUN int XMLCALL
 
        xmlTextWriterWriteDTDInternalEntity(xmlTextWriterPtr writer,
 
                                            int pe,
 
                                            const xmlChar * name,
 
                                            const xmlChar * content);
 
    XMLPUBFUN int XMLCALL
 
        xmlTextWriterWriteDTDExternalEntity(xmlTextWriterPtr writer,
 
                                            int pe,
 
                                            const xmlChar * name,
 
                                            const xmlChar * pubid,
 
                                            const xmlChar * sysid,
 
                                            const xmlChar * ndataid);
 
    XMLPUBFUN int XMLCALL
 
        xmlTextWriterWriteDTDExternalEntityContents(xmlTextWriterPtr
 
                                                    writer,
 
                                                    const xmlChar * pubid,
 
                                                    const xmlChar * sysid,
 
                                                    const xmlChar *
 
                                                    ndataid);
 
    XMLPUBFUN int XMLCALL xmlTextWriterWriteDTDEntity(xmlTextWriterPtr
 
                                                      writer, int pe,
 
                                                      const xmlChar * name,
 
                                                      const xmlChar *
 
                                                      pubid,
 
                                                      const xmlChar *
 
                                                      sysid,
 
                                                      const xmlChar *
 
                                                      ndataid,
 
                                                      const xmlChar *
 
                                                      content);
 

	
 
/*
 
 * DTD notation definition
 
 */
 
    XMLPUBFUN int XMLCALL
 
        xmlTextWriterWriteDTDNotation(xmlTextWriterPtr writer,
 
                                      const xmlChar * name,
 
                                      const xmlChar * pubid,
 
                                      const xmlChar * sysid);
 

	
 
/*
 
 * Indentation
 
 */
 
    XMLPUBFUN int XMLCALL
 
        xmlTextWriterSetIndent(xmlTextWriterPtr writer, int indent);
 
    XMLPUBFUN int XMLCALL
 
        xmlTextWriterSetIndentString(xmlTextWriterPtr writer,
 
                                     const xmlChar * str);
 

	
 
/*
 
 * misc
 
 */
 
    XMLPUBFUN int XMLCALL xmlTextWriterFlush(xmlTextWriterPtr writer);
 

	
 
#ifdef __cplusplus
 
}
 
#endif
 

	
 
#endif /* LIBXML_WRITER_ENABLED */
 

	
 
#endif                          /* __XML_XMLWRITER_H__ */
lib/libxml2/include/libxml/xpath.h
Show inline comments
 
new file 100755
 
/*
 
 * Summary: XML Path Language implementation
 
 * Description: API for the XML Path Language implementation
 
 *
 
 * XML Path Language implementation
 
 * XPath is a language for addressing parts of an XML document,
 
 * designed to be used by both XSLT and XPointer
 
 *     http://www.w3.org/TR/xpath
 
 *
 
 * Implements
 
 * W3C Recommendation 16 November 1999
 
 *     http://www.w3.org/TR/1999/REC-xpath-19991116
 
 *
 
 * Copy: See Copyright for the status of this software.
 
 *
 
 * Author: Daniel Veillard
 
 */
 

	
 
#ifndef __XML_XPATH_H__
 
#define __XML_XPATH_H__
 

	
 
#include <libxml/xmlversion.h>
 

	
 
#ifdef LIBXML_XPATH_ENABLED
 

	
 
#include <libxml/xmlerror.h>
 
#include <libxml/tree.h>
 
#include <libxml/hash.h>
 
#endif /* LIBXML_XPATH_ENABLED */
 

	
 
#if defined(LIBXML_XPATH_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED)
 
#ifdef __cplusplus
 
extern "C" {
 
#endif
 
#endif /* LIBXML_XPATH_ENABLED or LIBXML_SCHEMAS_ENABLED */
 
	
 
#ifdef LIBXML_XPATH_ENABLED
 

	
 
typedef struct _xmlXPathContext xmlXPathContext;
 
typedef xmlXPathContext *xmlXPathContextPtr;
 
typedef struct _xmlXPathParserContext xmlXPathParserContext;
 
typedef xmlXPathParserContext *xmlXPathParserContextPtr;
 

	
 
/**
 
 * The set of XPath error codes.
 
 */
 

	
 
typedef enum {
 
    XPATH_EXPRESSION_OK = 0,
 
    XPATH_NUMBER_ERROR,
 
    XPATH_UNFINISHED_LITERAL_ERROR,
 
    XPATH_START_LITERAL_ERROR,
 
    XPATH_VARIABLE_REF_ERROR,
 
    XPATH_UNDEF_VARIABLE_ERROR,
 
    XPATH_INVALID_PREDICATE_ERROR,
 
    XPATH_EXPR_ERROR,
 
    XPATH_UNCLOSED_ERROR,
 
    XPATH_UNKNOWN_FUNC_ERROR,
 
    XPATH_INVALID_OPERAND,
 
    XPATH_INVALID_TYPE,
 
    XPATH_INVALID_ARITY,
 
    XPATH_INVALID_CTXT_SIZE,
 
    XPATH_INVALID_CTXT_POSITION,
 
    XPATH_MEMORY_ERROR,
 
    XPTR_SYNTAX_ERROR,
 
    XPTR_RESOURCE_ERROR,
 
    XPTR_SUB_RESOURCE_ERROR,
 
    XPATH_UNDEF_PREFIX_ERROR,
 
    XPATH_ENCODING_ERROR,
 
    XPATH_INVALID_CHAR_ERROR,
 
    XPATH_INVALID_CTXT
 
} xmlXPathError;
 

	
 
/*
 
 * A node-set (an unordered collection of nodes without duplicates).
 
 */
 
typedef struct _xmlNodeSet xmlNodeSet;
 
typedef xmlNodeSet *xmlNodeSetPtr;
 
struct _xmlNodeSet {
 
    int nodeNr;			/* number of nodes in the set */
 
    int nodeMax;		/* size of the array as allocated */
 
    xmlNodePtr *nodeTab;	/* array of nodes in no particular order */
 
    /* @@ with_ns to check wether namespace nodes should be looked at @@ */
 
};
 

	
 
/*
 
 * An expression is evaluated to yield an object, which
 
 * has one of the following four basic types:
 
 *   - node-set
 
 *   - boolean
 
 *   - number
 
 *   - string
 
 *
 
 * @@ XPointer will add more types !
 
 */
 

	
 
typedef enum {
 
    XPATH_UNDEFINED = 0,
 
    XPATH_NODESET = 1,
 
    XPATH_BOOLEAN = 2,
 
    XPATH_NUMBER = 3,
 
    XPATH_STRING = 4,
 
    XPATH_POINT = 5,
 
    XPATH_RANGE = 6,
 
    XPATH_LOCATIONSET = 7,
 
    XPATH_USERS = 8,
 
    XPATH_XSLT_TREE = 9  /* An XSLT value tree, non modifiable */
 
} xmlXPathObjectType;
 

	
 
typedef struct _xmlXPathObject xmlXPathObject;
 
typedef xmlXPathObject *xmlXPathObjectPtr;
 
struct _xmlXPathObject {
 
    xmlXPathObjectType type;
 
    xmlNodeSetPtr nodesetval;
 
    int boolval;
 
    double floatval;
 
    xmlChar *stringval;
 
    void *user;
 
    int index;
 
    void *user2;
 
    int index2;
 
};
 

	
 
/**
 
 * xmlXPathConvertFunc:
 
 * @obj:  an XPath object
 
 * @type:  the number of the target type
 
 *
 
 * A conversion function is associated to a type and used to cast
 
 * the new type to primitive values.
 
 *
 
 * Returns -1 in case of error, 0 otherwise
 
 */
 
typedef int (*xmlXPathConvertFunc) (xmlXPathObjectPtr obj, int type);
 

	
 
/*
 
 * Extra type: a name and a conversion function.
 
 */
 

	
 
typedef struct _xmlXPathType xmlXPathType;
 
typedef xmlXPathType *xmlXPathTypePtr;
 
struct _xmlXPathType {
 
    const xmlChar         *name;		/* the type name */
 
    xmlXPathConvertFunc func;		/* the conversion function */
 
};
 

	
 
/*
 
 * Extra variable: a name and a value.
 
 */
 

	
 
typedef struct _xmlXPathVariable xmlXPathVariable;
 
typedef xmlXPathVariable *xmlXPathVariablePtr;
 
struct _xmlXPathVariable {
 
    const xmlChar       *name;		/* the variable name */
 
    xmlXPathObjectPtr value;		/* the value */
 
};
 

	
 
/**
 
 * xmlXPathEvalFunc:
 
 * @ctxt: an XPath parser context
 
 * @nargs: the number of arguments passed to the function
 
 *
 
 * An XPath evaluation function, the parameters are on the XPath context stack.
 
 */
 

	
 
typedef void (*xmlXPathEvalFunc)(xmlXPathParserContextPtr ctxt,
 
	                         int nargs);
 

	
 
/*
 
 * Extra function: a name and a evaluation function.
 
 */
 

	
 
typedef struct _xmlXPathFunct xmlXPathFunct;
 
typedef xmlXPathFunct *xmlXPathFuncPtr;
 
struct _xmlXPathFunct {
 
    const xmlChar      *name;		/* the function name */
 
    xmlXPathEvalFunc func;		/* the evaluation function */
 
};
 

	
 
/**
 
 * xmlXPathAxisFunc:
 
 * @ctxt:  the XPath interpreter context
 
 * @cur:  the previous node being explored on that axis
 
 *
 
 * An axis traversal function. To traverse an axis, the engine calls
 
 * the first time with cur == NULL and repeat until the function returns
 
 * NULL indicating the end of the axis traversal.
 
 *
 
 * Returns the next node in that axis or NULL if at the end of the axis.
 
 */
 

	
 
typedef xmlXPathObjectPtr (*xmlXPathAxisFunc) (xmlXPathParserContextPtr ctxt,
 
				 xmlXPathObjectPtr cur);
 

	
 
/*
 
 * Extra axis: a name and an axis function.
 
 */
 

	
 
typedef struct _xmlXPathAxis xmlXPathAxis;
 
typedef xmlXPathAxis *xmlXPathAxisPtr;
 
struct _xmlXPathAxis {
 
    const xmlChar      *name;		/* the axis name */
 
    xmlXPathAxisFunc func;		/* the search function */
 
};
 

	
 
/**
 
 * xmlXPathFunction:
 
 * @ctxt:  the XPath interprestation context
 
 * @nargs:  the number of arguments
 
 *
 
 * An XPath function.
 
 * The arguments (if any) are popped out from the context stack
 
 * and the result is pushed on the stack.
 
 */
 

	
 
typedef void (*xmlXPathFunction) (xmlXPathParserContextPtr ctxt, int nargs);
 

	
 
/*
 
 * Function and Variable Lookup.
 
 */
 

	
 
/**
 
 * xmlXPathVariableLookupFunc:
 
 * @ctxt:  an XPath context
 
 * @name:  name of the variable
 
 * @ns_uri:  the namespace name hosting this variable
 
 *
 
 * Prototype for callbacks used to plug variable lookup in the XPath
 
 * engine.
 
 *
 
 * Returns the XPath object value or NULL if not found.
 
 */
 
typedef xmlXPathObjectPtr (*xmlXPathVariableLookupFunc) (void *ctxt,
 
                                         const xmlChar *name,
 
                                         const xmlChar *ns_uri);
 

	
 
/**
 
 * xmlXPathFuncLookupFunc:
 
 * @ctxt:  an XPath context
 
 * @name:  name of the function
 
 * @ns_uri:  the namespace name hosting this function
 
 *
 
 * Prototype for callbacks used to plug function lookup in the XPath
 
 * engine.
 
 *
 
 * Returns the XPath function or NULL if not found.
 
 */
 
typedef xmlXPathFunction (*xmlXPathFuncLookupFunc) (void *ctxt,
 
					 const xmlChar *name,
 
					 const xmlChar *ns_uri);
 

	
 
/**
 
 * xmlXPathFlags:
 
 * Flags for XPath engine compilation and runtime
 
 */
 
/**
 
 * XML_XPATH_CHECKNS:
 
 *
 
 * check namespaces at compilation
 
 */
 
#define XML_XPATH_CHECKNS (1<<0)
 
/**
 
 * XML_XPATH_NOVAR:
 
 *
 
 * forbid variables in expression
 
 */
 
#define XML_XPATH_NOVAR	  (1<<1)
 

	
 
/**
 
 * xmlXPathContext:
 
 *
 
 * Expression evaluation occurs with respect to a context.
 
 * he context consists of:
 
 *    - a node (the context node) 
 
 *    - a node list (the context node list) 
 
 *    - a set of variable bindings 
 
 *    - a function library 
 
 *    - the set of namespace declarations in scope for the expression 
 
 * Following the switch to hash tables, this need to be trimmed up at
 
 * the next binary incompatible release.
 
 * The node may be modified when the context is passed to libxml2
 
 * for an XPath evaluation so you may need to initialize it again
 
 * before the next call.
 
 */
 

	
 
struct _xmlXPathContext {
 
    xmlDocPtr doc;			/* The current document */
 
    xmlNodePtr node;			/* The current node */
 

	
 
    int nb_variables_unused;		/* unused (hash table) */
 
    int max_variables_unused;		/* unused (hash table) */
 
    xmlHashTablePtr varHash;		/* Hash table of defined variables */
 

	
 
    int nb_types;			/* number of defined types */
 
    int max_types;			/* max number of types */
 
    xmlXPathTypePtr types;		/* Array of defined types */
 

	
 
    int nb_funcs_unused;		/* unused (hash table) */
 
    int max_funcs_unused;		/* unused (hash table) */
 
    xmlHashTablePtr funcHash;		/* Hash table of defined funcs */
 

	
 
    int nb_axis;			/* number of defined axis */
 
    int max_axis;			/* max number of axis */
 
    xmlXPathAxisPtr axis;		/* Array of defined axis */
 

	
 
    /* the namespace nodes of the context node */
 
    xmlNsPtr *namespaces;		/* Array of namespaces */
 
    int nsNr;				/* number of namespace in scope */
 
    void *user;				/* function to free */
 

	
 
    /* extra variables */
 
    int contextSize;			/* the context size */
 
    int proximityPosition;		/* the proximity position */
 

	
 
    /* extra stuff for XPointer */
 
    int xptr;				/* is this an XPointer context? */
 
    xmlNodePtr here;			/* for here() */
 
    xmlNodePtr origin;			/* for origin() */
 

	
 
    /* the set of namespace declarations in scope for the expression */
 
    xmlHashTablePtr nsHash;		/* The namespaces hash table */
 
    xmlXPathVariableLookupFunc varLookupFunc;/* variable lookup func */
 
    void *varLookupData;		/* variable lookup data */
 

	
 
    /* Possibility to link in an extra item */
 
    void *extra;                        /* needed for XSLT */
 

	
 
    /* The function name and URI when calling a function */
 
    const xmlChar *function;
 
    const xmlChar *functionURI;
 

	
 
    /* function lookup function and data */
 
    xmlXPathFuncLookupFunc funcLookupFunc;/* function lookup func */
 
    void *funcLookupData;		/* function lookup data */
 

	
 
    /* temporary namespace lists kept for walking the namespace axis */
 
    xmlNsPtr *tmpNsList;		/* Array of namespaces */
 
    int tmpNsNr;			/* number of namespaces in scope */
 

	
 
    /* error reporting mechanism */
 
    void *userData;                     /* user specific data block */
 
    xmlStructuredErrorFunc error;       /* the callback in case of errors */
 
    xmlError lastError;			/* the last error */
 
    xmlNodePtr debugNode;		/* the source node XSLT */
 

	
 
    /* dictionary */
 
    xmlDictPtr dict;			/* dictionary if any */
 

	
 
    int flags;				/* flags to control compilation */
 

	
 
    /* Cache for reusal of XPath objects */
 
    void *cache;
 
};
 

	
 
/*
 
 * The structure of a compiled expression form is not public.
 
 */
 

	
 
typedef struct _xmlXPathCompExpr xmlXPathCompExpr;
 
typedef xmlXPathCompExpr *xmlXPathCompExprPtr;
 

	
 
/**
 
 * xmlXPathParserContext:
 
 *
 
 * An XPath parser context. It contains pure parsing informations,
 
 * an xmlXPathContext, and the stack of objects.
 
 */
 
struct _xmlXPathParserContext {
 
    const xmlChar *cur;			/* the current char being parsed */
 
    const xmlChar *base;			/* the full expression */
 

	
 
    int error;				/* error code */
 

	
 
    xmlXPathContextPtr  context;	/* the evaluation context */
 
    xmlXPathObjectPtr     value;	/* the current value */
 
    int                 valueNr;	/* number of values stacked */
 
    int                valueMax;	/* max number of values stacked */
 
    xmlXPathObjectPtr *valueTab;	/* stack of values */
 

	
 
    xmlXPathCompExprPtr comp;		/* the precompiled expression */
 
    int xptr;				/* it this an XPointer expression */
 
    xmlNodePtr         ancestor;	/* used for walking preceding axis */
 
};
 

	
 
/************************************************************************
 
 *									*
 
 *			Public API					*
 
 *									*
 
 ************************************************************************/
 

	
 
/**
 
 * Objects and Nodesets handling
 
 */
 

	
 
XMLPUBVAR double xmlXPathNAN;
 
XMLPUBVAR double xmlXPathPINF;
 
XMLPUBVAR double xmlXPathNINF;
 

	
 
/* These macros may later turn into functions */
 
/**
 
 * xmlXPathNodeSetGetLength:
 
 * @ns:  a node-set
 
 *
 
 * Implement a functionality similar to the DOM NodeList.length.
 
 *
 
 * Returns the number of nodes in the node-set.
 
 */
 
#define xmlXPathNodeSetGetLength(ns) ((ns) ? (ns)->nodeNr : 0)
 
/**
 
 * xmlXPathNodeSetItem:
 
 * @ns:  a node-set
 
 * @index:  index of a node in the set
 
 *
 
 * Implements a functionality similar to the DOM NodeList.item().
 
 *
 
 * Returns the xmlNodePtr at the given @index in @ns or NULL if
 
 *         @index is out of range (0 to length-1)
 
 */
 
#define xmlXPathNodeSetItem(ns, index)				\
 
		((((ns) != NULL) && 				\
 
		  ((index) >= 0) && ((index) < (ns)->nodeNr)) ?	\
 
		 (ns)->nodeTab[(index)]				\
 
		 : NULL)
 
/**
 
 * xmlXPathNodeSetIsEmpty:
 
 * @ns: a node-set
 
 *
 
 * Checks whether @ns is empty or not.
 
 *
 
 * Returns %TRUE if @ns is an empty node-set.
 
 */
 
#define xmlXPathNodeSetIsEmpty(ns)                                      \
 
    (((ns) == NULL) || ((ns)->nodeNr == 0) || ((ns)->nodeTab == NULL))
 

	
 

	
 
XMLPUBFUN void XMLCALL		   
 
		    xmlXPathFreeObject		(xmlXPathObjectPtr obj);
 
XMLPUBFUN xmlNodeSetPtr XMLCALL	   
 
		    xmlXPathNodeSetCreate	(xmlNodePtr val);
 
XMLPUBFUN void XMLCALL		   
 
		    xmlXPathFreeNodeSetList	(xmlXPathObjectPtr obj);
 
XMLPUBFUN void XMLCALL		   
 
		    xmlXPathFreeNodeSet		(xmlNodeSetPtr obj);
 
XMLPUBFUN xmlXPathObjectPtr XMLCALL  
 
		    xmlXPathObjectCopy		(xmlXPathObjectPtr val);
 
XMLPUBFUN int XMLCALL		   
 
		    xmlXPathCmpNodes		(xmlNodePtr node1,
 
						 xmlNodePtr node2);
 
/**
 
 * Conversion functions to basic types.
 
 */
 
XMLPUBFUN int XMLCALL		   
 
		    xmlXPathCastNumberToBoolean	(double val);
 
XMLPUBFUN int XMLCALL		   
 
		    xmlXPathCastStringToBoolean	(const xmlChar * val);
 
XMLPUBFUN int XMLCALL		   
 
		    xmlXPathCastNodeSetToBoolean(xmlNodeSetPtr ns);
 
XMLPUBFUN int XMLCALL		   
 
		    xmlXPathCastToBoolean	(xmlXPathObjectPtr val);
 

	
 
XMLPUBFUN double XMLCALL		   
 
		    xmlXPathCastBooleanToNumber	(int val);
 
XMLPUBFUN double XMLCALL		   
 
		    xmlXPathCastStringToNumber	(const xmlChar * val);
 
XMLPUBFUN double XMLCALL		   
 
		    xmlXPathCastNodeToNumber	(xmlNodePtr node);
 
XMLPUBFUN double XMLCALL		   
 
		    xmlXPathCastNodeSetToNumber	(xmlNodeSetPtr ns);
 
XMLPUBFUN double XMLCALL		   
 
		    xmlXPathCastToNumber	(xmlXPathObjectPtr val);
 

	
 
XMLPUBFUN xmlChar * XMLCALL	   
 
		    xmlXPathCastBooleanToString	(int val);
 
XMLPUBFUN xmlChar * XMLCALL	   
 
		    xmlXPathCastNumberToString	(double val);
 
XMLPUBFUN xmlChar * XMLCALL	   
 
		    xmlXPathCastNodeToString	(xmlNodePtr node);
 
XMLPUBFUN xmlChar * XMLCALL	   
 
		    xmlXPathCastNodeSetToString	(xmlNodeSetPtr ns);
 
XMLPUBFUN xmlChar * XMLCALL	   
 
		    xmlXPathCastToString	(xmlXPathObjectPtr val);
 

	
 
XMLPUBFUN xmlXPathObjectPtr XMLCALL  
 
		    xmlXPathConvertBoolean	(xmlXPathObjectPtr val);
 
XMLPUBFUN xmlXPathObjectPtr XMLCALL  
 
		    xmlXPathConvertNumber	(xmlXPathObjectPtr val);
 
XMLPUBFUN xmlXPathObjectPtr XMLCALL  
 
		    xmlXPathConvertString	(xmlXPathObjectPtr val);
 

	
 
/**
 
 * Context handling.
 
 */
 
XMLPUBFUN xmlXPathContextPtr XMLCALL 
 
		    xmlXPathNewContext		(xmlDocPtr doc);
 
XMLPUBFUN void XMLCALL
 
		    xmlXPathFreeContext		(xmlXPathContextPtr ctxt);
 
XMLPUBFUN int XMLCALL
 
		    xmlXPathContextSetCache(xmlXPathContextPtr ctxt,
 
				            int active,
 
					    int value,
 
					    int options);
 
/**
 
 * Evaluation functions.
 
 */
 
XMLPUBFUN long XMLCALL               
 
		    xmlXPathOrderDocElems	(xmlDocPtr doc);
 
XMLPUBFUN xmlXPathObjectPtr XMLCALL  
 
		    xmlXPathEval		(const xmlChar *str,
 
						 xmlXPathContextPtr ctx);
 
XMLPUBFUN xmlXPathObjectPtr XMLCALL  
 
		    xmlXPathEvalExpression	(const xmlChar *str,
 
						 xmlXPathContextPtr ctxt);
 
XMLPUBFUN int XMLCALL                
 
		    xmlXPathEvalPredicate	(xmlXPathContextPtr ctxt,
 
						 xmlXPathObjectPtr res);
 
/**
 
 * Separate compilation/evaluation entry points.
 
 */
 
XMLPUBFUN xmlXPathCompExprPtr XMLCALL 
 
		    xmlXPathCompile		(const xmlChar *str);
 
XMLPUBFUN xmlXPathCompExprPtr XMLCALL 
 
		    xmlXPathCtxtCompile		(xmlXPathContextPtr ctxt,
 
		    				 const xmlChar *str);
 
XMLPUBFUN xmlXPathObjectPtr XMLCALL   
 
		    xmlXPathCompiledEval	(xmlXPathCompExprPtr comp,
 
						 xmlXPathContextPtr ctx);
 
XMLPUBFUN int XMLCALL   
 
		    xmlXPathCompiledEvalToBoolean(xmlXPathCompExprPtr comp,
 
						 xmlXPathContextPtr ctxt);
 
XMLPUBFUN void XMLCALL                
 
		    xmlXPathFreeCompExpr	(xmlXPathCompExprPtr comp);
 
#endif /* LIBXML_XPATH_ENABLED */
 
#if defined(LIBXML_XPATH_ENABLED) || defined(LIBXML_SCHEMAS_ENABLED)
 
XMLPUBFUN void XMLCALL		   
 
		    xmlXPathInit		(void);
 
XMLPUBFUN int XMLCALL
 
		xmlXPathIsNaN	(double val);
 
XMLPUBFUN int XMLCALL
 
		xmlXPathIsInf	(double val);
 

	
 
#ifdef __cplusplus
 
}
 
#endif
 

	
 
#endif /* LIBXML_XPATH_ENABLED or LIBXML_SCHEMAS_ENABLED*/
 
#endif /* ! __XML_XPATH_H__ */
lib/libxml2/include/libxml/xpathInternals.h
Show inline comments
 
new file 100755
 
/*
 
 * Summary: internal interfaces for XML Path Language implementation
 
 * Description: internal interfaces for XML Path Language implementation
 
 *              used to build new modules on top of XPath like XPointer and
 
 *              XSLT
 
 *
 
 * Copy: See Copyright for the status of this software.
 
 *
 
 * Author: Daniel Veillard
 
 */
 

	
 
#ifndef __XML_XPATH_INTERNALS_H__
 
#define __XML_XPATH_INTERNALS_H__
 

	
 
#include <libxml/xmlversion.h>
 
#include <libxml/xpath.h>
 

	
 
#ifdef LIBXML_XPATH_ENABLED
 

	
 
#ifdef __cplusplus
 
extern "C" {
 
#endif
 

	
 
/************************************************************************
 
 *									*
 
 *			Helpers						*
 
 *									*
 
 ************************************************************************/
 

	
 
/*
 
 * Many of these macros may later turn into functions. They
 
 * shouldn't be used in #ifdef's preprocessor instructions.
 
 */
 
/**
 
 * xmlXPathSetError:
 
 * @ctxt:  an XPath parser context
 
 * @err:  an xmlXPathError code
 
 *
 
 * Raises an error.
 
 */
 
#define xmlXPathSetError(ctxt, err)					\
 
    { xmlXPatherror((ctxt), __FILE__, __LINE__, (err));			\
 
      if ((ctxt) != NULL) (ctxt)->error = (err); }
 

	
 
/**
 
 * xmlXPathSetArityError:
 
 * @ctxt:  an XPath parser context
 
 *
 
 * Raises an XPATH_INVALID_ARITY error.
 
 */
 
#define xmlXPathSetArityError(ctxt)					\
 
    xmlXPathSetError((ctxt), XPATH_INVALID_ARITY)
 

	
 
/**
 
 * xmlXPathSetTypeError:
 
 * @ctxt:  an XPath parser context
 
 *
 
 * Raises an XPATH_INVALID_TYPE error.
 
 */
 
#define xmlXPathSetTypeError(ctxt)					\
 
    xmlXPathSetError((ctxt), XPATH_INVALID_TYPE)
 

	
 
/**
 
 * xmlXPathGetError:
 
 * @ctxt:  an XPath parser context
 
 *
 
 * Get the error code of an XPath context.
 
 *
 
 * Returns the context error.
 
 */
 
#define xmlXPathGetError(ctxt)	  ((ctxt)->error)
 

	
 
/**
 
 * xmlXPathCheckError:
 
 * @ctxt:  an XPath parser context
 
 *
 
 * Check if an XPath error was raised.
 
 *
 
 * Returns true if an error has been raised, false otherwise.
 
 */
 
#define xmlXPathCheckError(ctxt)  ((ctxt)->error != XPATH_EXPRESSION_OK)
 

	
 
/**
 
 * xmlXPathGetDocument:
 
 * @ctxt:  an XPath parser context
 
 *
 
 * Get the document of an XPath context.
 
 *
 
 * Returns the context document.
 
 */
 
#define xmlXPathGetDocument(ctxt)	((ctxt)->context->doc)
 

	
 
/**
 
 * xmlXPathGetContextNode:
 
 * @ctxt: an XPath parser context
 
 *
 
 * Get the context node of an XPath context.
 
 *
 
 * Returns the context node.
 
 */
 
#define xmlXPathGetContextNode(ctxt)	((ctxt)->context->node)
 

	
 
XMLPUBFUN int XMLCALL		
 
		xmlXPathPopBoolean	(xmlXPathParserContextPtr ctxt);
 
XMLPUBFUN double XMLCALL		
 
    		xmlXPathPopNumber	(xmlXPathParserContextPtr ctxt);
 
XMLPUBFUN xmlChar * XMLCALL	
 
    		xmlXPathPopString	(xmlXPathParserContextPtr ctxt);
 
XMLPUBFUN xmlNodeSetPtr XMLCALL	
 
    		xmlXPathPopNodeSet	(xmlXPathParserContextPtr ctxt);
 
XMLPUBFUN void * XMLCALL		
 
    		xmlXPathPopExternal	(xmlXPathParserContextPtr ctxt);
 

	
 
/**
 
 * xmlXPathReturnBoolean:
 
 * @ctxt:  an XPath parser context
 
 * @val:  a boolean
 
 *
 
 * Pushes the boolean @val on the context stack.
 
 */
 
#define xmlXPathReturnBoolean(ctxt, val)				\
 
    valuePush((ctxt), xmlXPathNewBoolean(val))
 

	
 
/**
 
 * xmlXPathReturnTrue:
 
 * @ctxt:  an XPath parser context
 
 *
 
 * Pushes true on the context stack.
 
 */
 
#define xmlXPathReturnTrue(ctxt)   xmlXPathReturnBoolean((ctxt), 1)
 

	
 
/**
 
 * xmlXPathReturnFalse:
 
 * @ctxt:  an XPath parser context
 
 *
 
 * Pushes false on the context stack.
 
 */
 
#define xmlXPathReturnFalse(ctxt)  xmlXPathReturnBoolean((ctxt), 0)
 

	
 
/**
 
 * xmlXPathReturnNumber:
 
 * @ctxt:  an XPath parser context
 
 * @val:  a double
 
 *
 
 * Pushes the double @val on the context stack.
 
 */
 
#define xmlXPathReturnNumber(ctxt, val)					\
 
    valuePush((ctxt), xmlXPathNewFloat(val))
 

	
 
/**
 
 * xmlXPathReturnString:
 
 * @ctxt:  an XPath parser context
 
 * @str:  a string
 
 *
 
 * Pushes the string @str on the context stack.
 
 */
 
#define xmlXPathReturnString(ctxt, str)					\
 
    valuePush((ctxt), xmlXPathWrapString(str))
 

	
 
/**
 
 * xmlXPathReturnEmptyString:
 
 * @ctxt:  an XPath parser context
 
 *
 
 * Pushes an empty string on the stack.
 
 */
 
#define xmlXPathReturnEmptyString(ctxt)					\
 
    valuePush((ctxt), xmlXPathNewCString(""))
 

	
 
/**
 
 * xmlXPathReturnNodeSet:
 
 * @ctxt:  an XPath parser context
 
 * @ns:  a node-set
 
 *
 
 * Pushes the node-set @ns on the context stack.
 
 */
 
#define xmlXPathReturnNodeSet(ctxt, ns)					\
 
    valuePush((ctxt), xmlXPathWrapNodeSet(ns))
 

	
 
/**
 
 * xmlXPathReturnEmptyNodeSet:
 
 * @ctxt:  an XPath parser context
 
 *
 
 * Pushes an empty node-set on the context stack.
 
 */
 
#define xmlXPathReturnEmptyNodeSet(ctxt)				\
 
    valuePush((ctxt), xmlXPathNewNodeSet(NULL))
 

	
 
/**
 
 * xmlXPathReturnExternal:
 
 * @ctxt:  an XPath parser context
 
 * @val:  user data
 
 *
 
 * Pushes user data on the context stack.
 
 */
 
#define xmlXPathReturnExternal(ctxt, val)				\
 
    valuePush((ctxt), xmlXPathWrapExternal(val))
 

	
 
/**
 
 * xmlXPathStackIsNodeSet:
 
 * @ctxt: an XPath parser context
 
 *
 
 * Check if the current value on the XPath stack is a node set or
 
 * an XSLT value tree.
 
 *
 
 * Returns true if the current object on the stack is a node-set.
 
 */
 
#define xmlXPathStackIsNodeSet(ctxt)					\
 
    (((ctxt)->value != NULL)						\
 
     && (((ctxt)->value->type == XPATH_NODESET)				\
 
         || ((ctxt)->value->type == XPATH_XSLT_TREE)))
 

	
 
/**
 
 * xmlXPathStackIsExternal:
 
 * @ctxt: an XPath parser context
 
 *
 
 * Checks if the current value on the XPath stack is an external
 
 * object.
 
 *
 
 * Returns true if the current object on the stack is an external
 
 * object.
 
 */
 
#define xmlXPathStackIsExternal(ctxt)					\
 
	((ctxt->value != NULL) && (ctxt->value->type == XPATH_USERS))
 

	
 
/**
 
 * xmlXPathEmptyNodeSet:
 
 * @ns:  a node-set
 
 *
 
 * Empties a node-set.
 
 */
 
#define xmlXPathEmptyNodeSet(ns)					\
 
    { while ((ns)->nodeNr > 0) (ns)->nodeTab[(ns)->nodeNr--] = NULL; }
 

	
 
/**
 
 * CHECK_ERROR:
 
 *
 
 * Macro to return from the function if an XPath error was detected.
 
 */
 
#define CHECK_ERROR							\
 
    if (ctxt->error != XPATH_EXPRESSION_OK) return
 

	
 
/**
 
 * CHECK_ERROR0:
 
 *
 
 * Macro to return 0 from the function if an XPath error was detected.
 
 */
 
#define CHECK_ERROR0							\
 
    if (ctxt->error != XPATH_EXPRESSION_OK) return(0)
 

	
 
/**
 
 * XP_ERROR:
 
 * @X:  the error code
 
 *
 
 * Macro to raise an XPath error and return.
 
 */
 
#define XP_ERROR(X)							\
 
    { xmlXPathErr(ctxt, X); return; }
 

	
 
/**
 
 * XP_ERROR0:
 
 * @X:  the error code
 
 *
 
 * Macro to raise an XPath error and return 0.
 
 */
 
#define XP_ERROR0(X)							\
 
    { xmlXPathErr(ctxt, X); return(0); }
 

	
 
/**
 
 * CHECK_TYPE:
 
 * @typeval:  the XPath type
 
 *
 
 * Macro to check that the value on top of the XPath stack is of a given
 
 * type.
 
 */
 
#define CHECK_TYPE(typeval)						\
 
    if ((ctxt->value == NULL) || (ctxt->value->type != typeval))	\
 
        XP_ERROR(XPATH_INVALID_TYPE)
 

	
 
/**
 
 * CHECK_TYPE0:
 
 * @typeval:  the XPath type
 
 *
 
 * Macro to check that the value on top of the XPath stack is of a given
 
 * type. Return(0) in case of failure
 
 */
 
#define CHECK_TYPE0(typeval)						\
 
    if ((ctxt->value == NULL) || (ctxt->value->type != typeval))	\
 
        XP_ERROR0(XPATH_INVALID_TYPE)
 

	
 
/**
 
 * CHECK_ARITY:
 
 * @x:  the number of expected args
 
 *
 
 * Macro to check that the number of args passed to an XPath function matches.
 
 */
 
#define CHECK_ARITY(x)							\
 
    if (ctxt == NULL) return;						\
 
    if (nargs != (x))							\
 
        XP_ERROR(XPATH_INVALID_ARITY);
 

	
 
/**
 
 * CAST_TO_STRING:
 
 *
 
 * Macro to try to cast the value on the top of the XPath stack to a string.
 
 */
 
#define CAST_TO_STRING							\
 
    if ((ctxt->value != NULL) && (ctxt->value->type != XPATH_STRING))	\
 
        xmlXPathStringFunction(ctxt, 1);
 

	
 
/**
 
 * CAST_TO_NUMBER:
 
 *
 
 * Macro to try to cast the value on the top of the XPath stack to a number.
 
 */
 
#define CAST_TO_NUMBER							\
 
    if ((ctxt->value != NULL) && (ctxt->value->type != XPATH_NUMBER))	\
 
        xmlXPathNumberFunction(ctxt, 1);
 

	
 
/**
 
 * CAST_TO_BOOLEAN:
 
 *
 
 * Macro to try to cast the value on the top of the XPath stack to a boolean.
 
 */
 
#define CAST_TO_BOOLEAN							\
 
    if ((ctxt->value != NULL) && (ctxt->value->type != XPATH_BOOLEAN))	\
 
        xmlXPathBooleanFunction(ctxt, 1);
 

	
 
/*
 
 * Variable Lookup forwarding.
 
 */
 

	
 
XMLPUBFUN void XMLCALL	
 
	xmlXPathRegisterVariableLookup	(xmlXPathContextPtr ctxt,
 
					 xmlXPathVariableLookupFunc f,
 
					 void *data);
 

	
 
/*
 
 * Function Lookup forwarding.
 
 */
 

	
 
XMLPUBFUN void XMLCALL	
 
	    xmlXPathRegisterFuncLookup	(xmlXPathContextPtr ctxt,
 
					 xmlXPathFuncLookupFunc f,
 
					 void *funcCtxt);
 

	
 
/*
 
 * Error reporting.
 
 */
 
XMLPUBFUN void XMLCALL		
 
		xmlXPatherror	(xmlXPathParserContextPtr ctxt,
 
				 const char *file,
 
				 int line,
 
				 int no);
 

	
 
XMLPUBFUN void XMLCALL
 
		xmlXPathErr	(xmlXPathParserContextPtr ctxt,
 
				 int error);
 

	
 
#ifdef LIBXML_DEBUG_ENABLED
 
XMLPUBFUN void XMLCALL		
 
		xmlXPathDebugDumpObject	(FILE *output,
 
					 xmlXPathObjectPtr cur,
 
					 int depth);
 
XMLPUBFUN void XMLCALL		
 
	    xmlXPathDebugDumpCompExpr(FILE *output,
 
					 xmlXPathCompExprPtr comp,
 
					 int depth);
 
#endif
 
/**
 
 * NodeSet handling.
 
 */
 
XMLPUBFUN int XMLCALL		
 
		xmlXPathNodeSetContains		(xmlNodeSetPtr cur,
 
						 xmlNodePtr val);
 
XMLPUBFUN xmlNodeSetPtr XMLCALL	
 
		xmlXPathDifference		(xmlNodeSetPtr nodes1,
 
						 xmlNodeSetPtr nodes2);
 
XMLPUBFUN xmlNodeSetPtr XMLCALL	
 
		xmlXPathIntersection		(xmlNodeSetPtr nodes1,
 
						 xmlNodeSetPtr nodes2);
 

	
 
XMLPUBFUN xmlNodeSetPtr XMLCALL	
 
		xmlXPathDistinctSorted		(xmlNodeSetPtr nodes);
 
XMLPUBFUN xmlNodeSetPtr XMLCALL	
 
		xmlXPathDistinct		(xmlNodeSetPtr nodes);
 

	
 
XMLPUBFUN int XMLCALL		
 
		xmlXPathHasSameNodes		(xmlNodeSetPtr nodes1,
 
						 xmlNodeSetPtr nodes2);
 

	
 
XMLPUBFUN xmlNodeSetPtr XMLCALL	
 
		xmlXPathNodeLeadingSorted	(xmlNodeSetPtr nodes,
 
						 xmlNodePtr node);
 
XMLPUBFUN xmlNodeSetPtr XMLCALL	
 
		xmlXPathLeadingSorted		(xmlNodeSetPtr nodes1,
 
						 xmlNodeSetPtr nodes2);
 
XMLPUBFUN xmlNodeSetPtr XMLCALL	
 
		xmlXPathNodeLeading		(xmlNodeSetPtr nodes,
 
						 xmlNodePtr node);
 
XMLPUBFUN xmlNodeSetPtr XMLCALL	
 
		xmlXPathLeading			(xmlNodeSetPtr nodes1,
 
						 xmlNodeSetPtr nodes2);
 

	
 
XMLPUBFUN xmlNodeSetPtr XMLCALL	
 
		xmlXPathNodeTrailingSorted	(xmlNodeSetPtr nodes,
 
						 xmlNodePtr node);
 
XMLPUBFUN xmlNodeSetPtr XMLCALL	
 
		xmlXPathTrailingSorted		(xmlNodeSetPtr nodes1,
 
						 xmlNodeSetPtr nodes2);
 
XMLPUBFUN xmlNodeSetPtr XMLCALL	
 
		xmlXPathNodeTrailing		(xmlNodeSetPtr nodes,
 
						 xmlNodePtr node);
 
XMLPUBFUN xmlNodeSetPtr XMLCALL	
 
		xmlXPathTrailing		(xmlNodeSetPtr nodes1,
 
						 xmlNodeSetPtr nodes2);
 

	
 

	
 
/**
 
 * Extending a context.
 
 */
 

	
 
XMLPUBFUN int XMLCALL		   
 
		xmlXPathRegisterNs		(xmlXPathContextPtr ctxt,
 
						 const xmlChar *prefix,
 
						 const xmlChar *ns_uri);
 
XMLPUBFUN const xmlChar * XMLCALL	   
 
		xmlXPathNsLookup		(xmlXPathContextPtr ctxt,
 
						 const xmlChar *prefix);
 
XMLPUBFUN void XMLCALL		   
 
		xmlXPathRegisteredNsCleanup	(xmlXPathContextPtr ctxt);
 

	
 
XMLPUBFUN int XMLCALL		   
 
		xmlXPathRegisterFunc		(xmlXPathContextPtr ctxt,
 
						 const xmlChar *name,
 
						 xmlXPathFunction f);
 
XMLPUBFUN int XMLCALL		   
 
		xmlXPathRegisterFuncNS		(xmlXPathContextPtr ctxt,
 
						 const xmlChar *name,
 
						 const xmlChar *ns_uri,
 
						 xmlXPathFunction f);
 
XMLPUBFUN int XMLCALL		   
 
		xmlXPathRegisterVariable	(xmlXPathContextPtr ctxt,
 
						 const xmlChar *name,
 
						 xmlXPathObjectPtr value);
 
XMLPUBFUN int XMLCALL		   
 
		xmlXPathRegisterVariableNS	(xmlXPathContextPtr ctxt,
 
						 const xmlChar *name,
 
						 const xmlChar *ns_uri,
 
						 xmlXPathObjectPtr value);
 
XMLPUBFUN xmlXPathFunction XMLCALL   
 
		xmlXPathFunctionLookup		(xmlXPathContextPtr ctxt,
 
						 const xmlChar *name);
 
XMLPUBFUN xmlXPathFunction XMLCALL   
 
		xmlXPathFunctionLookupNS	(xmlXPathContextPtr ctxt,
 
						 const xmlChar *name,
 
						 const xmlChar *ns_uri);
 
XMLPUBFUN void XMLCALL		   
 
		xmlXPathRegisteredFuncsCleanup	(xmlXPathContextPtr ctxt);
 
XMLPUBFUN xmlXPathObjectPtr XMLCALL  
 
		xmlXPathVariableLookup		(xmlXPathContextPtr ctxt,
 
						 const xmlChar *name);
 
XMLPUBFUN xmlXPathObjectPtr XMLCALL  
 
		xmlXPathVariableLookupNS	(xmlXPathContextPtr ctxt,
 
						 const xmlChar *name,
 
						 const xmlChar *ns_uri);
 
XMLPUBFUN void XMLCALL		   
 
		xmlXPathRegisteredVariablesCleanup(xmlXPathContextPtr ctxt);
 

	
 
/**
 
 * Utilities to extend XPath.
 
 */
 
XMLPUBFUN xmlXPathParserContextPtr XMLCALL
 
		  xmlXPathNewParserContext	(const xmlChar *str,
 
			  			 xmlXPathContextPtr ctxt);
 
XMLPUBFUN void XMLCALL		  
 
		xmlXPathFreeParserContext	(xmlXPathParserContextPtr ctxt);
 

	
 
/* TODO: remap to xmlXPathValuePop and Push. */
 
XMLPUBFUN xmlXPathObjectPtr XMLCALL 
 
		valuePop			(xmlXPathParserContextPtr ctxt);
 
XMLPUBFUN int XMLCALL		  
 
		valuePush			(xmlXPathParserContextPtr ctxt,
 
					 	 xmlXPathObjectPtr value);
 

	
 
XMLPUBFUN xmlXPathObjectPtr XMLCALL 
 
		xmlXPathNewString		(const xmlChar *val);
 
XMLPUBFUN xmlXPathObjectPtr XMLCALL 
 
		xmlXPathNewCString		(const char *val);
 
XMLPUBFUN xmlXPathObjectPtr XMLCALL 
 
		xmlXPathWrapString		(xmlChar *val);
 
XMLPUBFUN xmlXPathObjectPtr XMLCALL 
 
		xmlXPathWrapCString		(char * val);
 
XMLPUBFUN xmlXPathObjectPtr XMLCALL 
 
		xmlXPathNewFloat		(double val);
 
XMLPUBFUN xmlXPathObjectPtr XMLCALL 
 
		xmlXPathNewBoolean		(int val);
 
XMLPUBFUN xmlXPathObjectPtr XMLCALL 
 
		xmlXPathNewNodeSet		(xmlNodePtr val);
 
XMLPUBFUN xmlXPathObjectPtr XMLCALL 
 
		xmlXPathNewValueTree		(xmlNodePtr val);
 
XMLPUBFUN void XMLCALL		  
 
		xmlXPathNodeSetAdd		(xmlNodeSetPtr cur,
 
						 xmlNodePtr val);
 
XMLPUBFUN void XMLCALL              
 
		xmlXPathNodeSetAddUnique	(xmlNodeSetPtr cur,
 
						 xmlNodePtr val);
 
XMLPUBFUN void XMLCALL		  
 
		xmlXPathNodeSetAddNs		(xmlNodeSetPtr cur, 
 
						 xmlNodePtr node, 
 
						 xmlNsPtr ns);
 
XMLPUBFUN void XMLCALL              
 
		xmlXPathNodeSetSort		(xmlNodeSetPtr set);
 

	
 
XMLPUBFUN void XMLCALL		  
 
		xmlXPathRoot			(xmlXPathParserContextPtr ctxt);
 
XMLPUBFUN void XMLCALL		  
 
		xmlXPathEvalExpr		(xmlXPathParserContextPtr ctxt);
 
XMLPUBFUN xmlChar * XMLCALL	  
 
		xmlXPathParseName		(xmlXPathParserContextPtr ctxt);
 
XMLPUBFUN xmlChar * XMLCALL	  
 
		xmlXPathParseNCName		(xmlXPathParserContextPtr ctxt);
 

	
 
/*
 
 * Existing functions.
 
 */
 
XMLPUBFUN double XMLCALL 
 
		xmlXPathStringEvalNumber	(const xmlChar *str);
 
XMLPUBFUN int XMLCALL 
 
		xmlXPathEvaluatePredicateResult (xmlXPathParserContextPtr ctxt, 
 
						 xmlXPathObjectPtr res);
 
XMLPUBFUN void XMLCALL 
 
		xmlXPathRegisterAllFunctions	(xmlXPathContextPtr ctxt);
 
XMLPUBFUN xmlNodeSetPtr XMLCALL 
 
		xmlXPathNodeSetMerge		(xmlNodeSetPtr val1, 
 
						 xmlNodeSetPtr val2);
 
XMLPUBFUN void XMLCALL 
 
		xmlXPathNodeSetDel		(xmlNodeSetPtr cur, 
 
						 xmlNodePtr val);
 
XMLPUBFUN void XMLCALL 
 
		xmlXPathNodeSetRemove		(xmlNodeSetPtr cur, 
 
						 int val);
 
XMLPUBFUN xmlXPathObjectPtr XMLCALL 
 
		xmlXPathNewNodeSetList		(xmlNodeSetPtr val);
 
XMLPUBFUN xmlXPathObjectPtr XMLCALL 
 
		xmlXPathWrapNodeSet		(xmlNodeSetPtr val);
 
XMLPUBFUN xmlXPathObjectPtr XMLCALL 
 
		xmlXPathWrapExternal		(void *val);
 

	
 
XMLPUBFUN int XMLCALL xmlXPathEqualValues(xmlXPathParserContextPtr ctxt);
 
XMLPUBFUN int XMLCALL xmlXPathNotEqualValues(xmlXPathParserContextPtr ctxt);
 
XMLPUBFUN int XMLCALL xmlXPathCompareValues(xmlXPathParserContextPtr ctxt, int inf, int strict);
 
XMLPUBFUN void XMLCALL xmlXPathValueFlipSign(xmlXPathParserContextPtr ctxt);
 
XMLPUBFUN void XMLCALL xmlXPathAddValues(xmlXPathParserContextPtr ctxt);
 
XMLPUBFUN void XMLCALL xmlXPathSubValues(xmlXPathParserContextPtr ctxt);
 
XMLPUBFUN void XMLCALL xmlXPathMultValues(xmlXPathParserContextPtr ctxt);
 
XMLPUBFUN void XMLCALL xmlXPathDivValues(xmlXPathParserContextPtr ctxt);
 
XMLPUBFUN void XMLCALL xmlXPathModValues(xmlXPathParserContextPtr ctxt);
 

	
 
XMLPUBFUN int XMLCALL xmlXPathIsNodeType(const xmlChar *name);
 

	
 
/*
 
 * Some of the axis navigation routines.
 
 */
 
XMLPUBFUN xmlNodePtr XMLCALL xmlXPathNextSelf(xmlXPathParserContextPtr ctxt,
 
			xmlNodePtr cur);
 
XMLPUBFUN xmlNodePtr XMLCALL xmlXPathNextChild(xmlXPathParserContextPtr ctxt,
 
			xmlNodePtr cur);
 
XMLPUBFUN xmlNodePtr XMLCALL xmlXPathNextDescendant(xmlXPathParserContextPtr ctxt,
 
			xmlNodePtr cur);
 
XMLPUBFUN xmlNodePtr XMLCALL xmlXPathNextDescendantOrSelf(xmlXPathParserContextPtr ctxt,
 
			xmlNodePtr cur);
 
XMLPUBFUN xmlNodePtr XMLCALL xmlXPathNextParent(xmlXPathParserContextPtr ctxt,
 
			xmlNodePtr cur);
 
XMLPUBFUN xmlNodePtr XMLCALL xmlXPathNextAncestorOrSelf(xmlXPathParserContextPtr ctxt,
 
			xmlNodePtr cur);
 
XMLPUBFUN xmlNodePtr XMLCALL xmlXPathNextFollowingSibling(xmlXPathParserContextPtr ctxt,
 
			xmlNodePtr cur);
 
XMLPUBFUN xmlNodePtr XMLCALL xmlXPathNextFollowing(xmlXPathParserContextPtr ctxt,
 
			xmlNodePtr cur);
 
XMLPUBFUN xmlNodePtr XMLCALL xmlXPathNextNamespace(xmlXPathParserContextPtr ctxt,
 
			xmlNodePtr cur);
 
XMLPUBFUN xmlNodePtr XMLCALL xmlXPathNextAttribute(xmlXPathParserContextPtr ctxt,
 
			xmlNodePtr cur);
 
XMLPUBFUN xmlNodePtr XMLCALL xmlXPathNextPreceding(xmlXPathParserContextPtr ctxt,
 
			xmlNodePtr cur);
 
XMLPUBFUN xmlNodePtr XMLCALL xmlXPathNextAncestor(xmlXPathParserContextPtr ctxt,
 
			xmlNodePtr cur);
 
XMLPUBFUN xmlNodePtr XMLCALL xmlXPathNextPrecedingSibling(xmlXPathParserContextPtr ctxt,
 
			xmlNodePtr cur);
 
/*
 
 * The official core of XPath functions.
 
 */
 
XMLPUBFUN void XMLCALL xmlXPathLastFunction(xmlXPathParserContextPtr ctxt, int nargs);
 
XMLPUBFUN void XMLCALL xmlXPathPositionFunction(xmlXPathParserContextPtr ctxt, int nargs);
 
XMLPUBFUN void XMLCALL xmlXPathCountFunction(xmlXPathParserContextPtr ctxt, int nargs);
 
XMLPUBFUN void XMLCALL xmlXPathIdFunction(xmlXPathParserContextPtr ctxt, int nargs);
 
XMLPUBFUN void XMLCALL xmlXPathLocalNameFunction(xmlXPathParserContextPtr ctxt, int nargs);
 
XMLPUBFUN void XMLCALL xmlXPathNamespaceURIFunction(xmlXPathParserContextPtr ctxt, int nargs);
 
XMLPUBFUN void XMLCALL xmlXPathStringFunction(xmlXPathParserContextPtr ctxt, int nargs);
 
XMLPUBFUN void XMLCALL xmlXPathStringLengthFunction(xmlXPathParserContextPtr ctxt, int nargs);
 
XMLPUBFUN void XMLCALL xmlXPathConcatFunction(xmlXPathParserContextPtr ctxt, int nargs);
 
XMLPUBFUN void XMLCALL xmlXPathContainsFunction(xmlXPathParserContextPtr ctxt, int nargs);
 
XMLPUBFUN void XMLCALL xmlXPathStartsWithFunction(xmlXPathParserContextPtr ctxt, int nargs);
 
XMLPUBFUN void XMLCALL xmlXPathSubstringFunction(xmlXPathParserContextPtr ctxt, int nargs);
 
XMLPUBFUN void XMLCALL xmlXPathSubstringBeforeFunction(xmlXPathParserContextPtr ctxt, int nargs);
 
XMLPUBFUN void XMLCALL xmlXPathSubstringAfterFunction(xmlXPathParserContextPtr ctxt, int nargs);
 
XMLPUBFUN void XMLCALL xmlXPathNormalizeFunction(xmlXPathParserContextPtr ctxt, int nargs);
 
XMLPUBFUN void XMLCALL xmlXPathTranslateFunction(xmlXPathParserContextPtr ctxt, int nargs);
 
XMLPUBFUN void XMLCALL xmlXPathNotFunction(xmlXPathParserContextPtr ctxt, int nargs);
 
XMLPUBFUN void XMLCALL xmlXPathTrueFunction(xmlXPathParserContextPtr ctxt, int nargs);
 
XMLPUBFUN void XMLCALL xmlXPathFalseFunction(xmlXPathParserContextPtr ctxt, int nargs);
 
XMLPUBFUN void XMLCALL xmlXPathLangFunction(xmlXPathParserContextPtr ctxt, int nargs);
 
XMLPUBFUN void XMLCALL xmlXPathNumberFunction(xmlXPathParserContextPtr ctxt, int nargs);
 
XMLPUBFUN void XMLCALL xmlXPathSumFunction(xmlXPathParserContextPtr ctxt, int nargs);
 
XMLPUBFUN void XMLCALL xmlXPathFloorFunction(xmlXPathParserContextPtr ctxt, int nargs);
 
XMLPUBFUN void XMLCALL xmlXPathCeilingFunction(xmlXPathParserContextPtr ctxt, int nargs);
 
XMLPUBFUN void XMLCALL xmlXPathRoundFunction(xmlXPathParserContextPtr ctxt, int nargs);
 
XMLPUBFUN void XMLCALL xmlXPathBooleanFunction(xmlXPathParserContextPtr ctxt, int nargs);
 

	
 
/**
 
 * Really internal functions
 
 */
 
XMLPUBFUN void XMLCALL xmlXPathNodeSetFreeNs(xmlNsPtr ns);
 
 
 
#ifdef __cplusplus
 
}
 
#endif
 

	
 
#endif /* LIBXML_XPATH_ENABLED */
 
#endif /* ! __XML_XPATH_INTERNALS_H__ */
lib/libxml2/include/libxml/xpointer.h
Show inline comments
 
new file 100755
 
/*
 
 * Summary: API to handle XML Pointers
 
 * Description: API to handle XML Pointers
 
 * Base implementation was made accordingly to
 
 * W3C Candidate Recommendation 7 June 2000
 
 * http://www.w3.org/TR/2000/CR-xptr-20000607
 
 *
 
 * Added support for the element() scheme described in:
 
 * W3C Proposed Recommendation 13 November 2002
 
 * http://www.w3.org/TR/2002/PR-xptr-element-20021113/  
 
 *
 
 * Copy: See Copyright for the status of this software.
 
 *
 
 * Author: Daniel Veillard
 
 */
 

	
 
#ifndef __XML_XPTR_H__
 
#define __XML_XPTR_H__
 

	
 
#include <libxml/xmlversion.h>
 

	
 
#ifdef LIBXML_XPTR_ENABLED
 

	
 
#include <libxml/tree.h>
 
#include <libxml/xpath.h>
 

	
 
#ifdef __cplusplus
 
extern "C" {
 
#endif
 

	
 
/*
 
 * A Location Set
 
 */
 
typedef struct _xmlLocationSet xmlLocationSet;
 
typedef xmlLocationSet *xmlLocationSetPtr;
 
struct _xmlLocationSet {
 
    int locNr;		      /* number of locations in the set */
 
    int locMax;		      /* size of the array as allocated */
 
    xmlXPathObjectPtr *locTab;/* array of locations */
 
};
 

	
 
/*
 
 * Handling of location sets.
 
 */
 

	
 
XMLPUBFUN xmlLocationSetPtr XMLCALL			
 
		    xmlXPtrLocationSetCreate	(xmlXPathObjectPtr val);
 
XMLPUBFUN void XMLCALL			
 
		    xmlXPtrFreeLocationSet	(xmlLocationSetPtr obj);
 
XMLPUBFUN xmlLocationSetPtr XMLCALL	
 
		    xmlXPtrLocationSetMerge	(xmlLocationSetPtr val1,
 
						 xmlLocationSetPtr val2);
 
XMLPUBFUN xmlXPathObjectPtr XMLCALL	
 
		    xmlXPtrNewRange		(xmlNodePtr start,
 
						 int startindex,
 
						 xmlNodePtr end,
 
						 int endindex);
 
XMLPUBFUN xmlXPathObjectPtr XMLCALL	
 
		    xmlXPtrNewRangePoints	(xmlXPathObjectPtr start,
 
						 xmlXPathObjectPtr end);
 
XMLPUBFUN xmlXPathObjectPtr XMLCALL	
 
		    xmlXPtrNewRangeNodePoint	(xmlNodePtr start,
 
						 xmlXPathObjectPtr end);
 
XMLPUBFUN xmlXPathObjectPtr XMLCALL	
 
		    xmlXPtrNewRangePointNode	(xmlXPathObjectPtr start,
 
						 xmlNodePtr end);
 
XMLPUBFUN xmlXPathObjectPtr XMLCALL			
 
		    xmlXPtrNewRangeNodes	(xmlNodePtr start,
 
						 xmlNodePtr end);
 
XMLPUBFUN xmlXPathObjectPtr XMLCALL	
 
		    xmlXPtrNewLocationSetNodes	(xmlNodePtr start,
 
						 xmlNodePtr end);
 
XMLPUBFUN xmlXPathObjectPtr XMLCALL	
 
		    xmlXPtrNewLocationSetNodeSet(xmlNodeSetPtr set);
 
XMLPUBFUN xmlXPathObjectPtr XMLCALL	
 
		    xmlXPtrNewRangeNodeObject	(xmlNodePtr start,
 
						 xmlXPathObjectPtr end);
 
XMLPUBFUN xmlXPathObjectPtr XMLCALL	
 
		    xmlXPtrNewCollapsedRange	(xmlNodePtr start);
 
XMLPUBFUN void XMLCALL			
 
		    xmlXPtrLocationSetAdd	(xmlLocationSetPtr cur,
 
						 xmlXPathObjectPtr val);
 
XMLPUBFUN xmlXPathObjectPtr XMLCALL	
 
		    xmlXPtrWrapLocationSet	(xmlLocationSetPtr val);
 
XMLPUBFUN void XMLCALL			
 
		    xmlXPtrLocationSetDel	(xmlLocationSetPtr cur,
 
						 xmlXPathObjectPtr val);
 
XMLPUBFUN void XMLCALL			
 
		    xmlXPtrLocationSetRemove	(xmlLocationSetPtr cur,
 
						 int val);
 

	
 
/*
 
 * Functions.
 
 */
 
XMLPUBFUN xmlXPathContextPtr XMLCALL	
 
		    xmlXPtrNewContext		(xmlDocPtr doc,
 
						 xmlNodePtr here,
 
						 xmlNodePtr origin);
 
XMLPUBFUN xmlXPathObjectPtr XMLCALL	
 
		    xmlXPtrEval			(const xmlChar *str,
 
						 xmlXPathContextPtr ctx);
 
XMLPUBFUN void XMLCALL					    
 
		    xmlXPtrRangeToFunction	(xmlXPathParserContextPtr ctxt,
 
       						 int nargs);
 
XMLPUBFUN xmlNodePtr XMLCALL		
 
		    xmlXPtrBuildNodeList	(xmlXPathObjectPtr obj);
 
XMLPUBFUN void XMLCALL		
 
		    xmlXPtrEvalRangePredicate	(xmlXPathParserContextPtr ctxt);
 
#ifdef __cplusplus
 
}
 
#endif
 

	
 
#endif /* LIBXML_XPTR_ENABLED */
 
#endif /* __XML_XPTR_H__ */
lib/libxml2/lib/libxml2.dll
Show inline comments
 
new file 100755
 
binary diff not shown
lib/libxml2/lib/libxml2.lib
Show inline comments
 
new file 100755
 
binary diff not shown
lib/libz/include/zconf.h
Show inline comments
 
new file 100755
 
/* zconf.h -- configuration of the zlib compression library
 
 * Copyright (C) 1995-2005 Jean-loup Gailly.
 
 * For conditions of distribution and use, see copyright notice in zlib.h
 
 */
 

	
 
/* @(#) $Id$ */
 

	
 
#ifndef ZCONF_H
 
#define ZCONF_H
 

	
 
/*
 
 * If you *really* need a unique prefix for all types and library functions,
 
 * compile with -DZ_PREFIX. The "standard" zlib should be compiled without it.
 
 */
 
#ifdef Z_PREFIX
 
#  define deflateInit_          z_deflateInit_
 
#  define deflate               z_deflate
 
#  define deflateEnd            z_deflateEnd
 
#  define inflateInit_          z_inflateInit_
 
#  define inflate               z_inflate
 
#  define inflateEnd            z_inflateEnd
 
#  define deflateInit2_         z_deflateInit2_
 
#  define deflateSetDictionary  z_deflateSetDictionary
 
#  define deflateCopy           z_deflateCopy
 
#  define deflateReset          z_deflateReset
 
#  define deflateParams         z_deflateParams
 
#  define deflateBound          z_deflateBound
 
#  define deflatePrime          z_deflatePrime
 
#  define inflateInit2_         z_inflateInit2_
 
#  define inflateSetDictionary  z_inflateSetDictionary
 
#  define inflateSync           z_inflateSync
 
#  define inflateSyncPoint      z_inflateSyncPoint
 
#  define inflateCopy           z_inflateCopy
 
#  define inflateReset          z_inflateReset
 
#  define inflateBack           z_inflateBack
 
#  define inflateBackEnd        z_inflateBackEnd
 
#  define compress              z_compress
 
#  define compress2             z_compress2
 
#  define compressBound         z_compressBound
 
#  define uncompress            z_uncompress
 
#  define adler32               z_adler32
 
#  define crc32                 z_crc32
 
#  define get_crc_table         z_get_crc_table
 
#  define zError                z_zError
 

	
 
#  define alloc_func            z_alloc_func
 
#  define free_func             z_free_func
 
#  define in_func               z_in_func
 
#  define out_func              z_out_func
 
#  define Byte                  z_Byte
 
#  define uInt                  z_uInt
 
#  define uLong                 z_uLong
 
#  define Bytef                 z_Bytef
 
#  define charf                 z_charf
 
#  define intf                  z_intf
 
#  define uIntf                 z_uIntf
 
#  define uLongf                z_uLongf
 
#  define voidpf                z_voidpf
 
#  define voidp                 z_voidp
 
#endif
 

	
 
#if defined(__MSDOS__) && !defined(MSDOS)
 
#  define MSDOS
 
#endif
 
#if (defined(OS_2) || defined(__OS2__)) && !defined(OS2)
 
#  define OS2
 
#endif
 
#if defined(_WINDOWS) && !defined(WINDOWS)
 
#  define WINDOWS
 
#endif
 
#if defined(_WIN32) || defined(_WIN32_WCE) || defined(__WIN32__)
 
#  ifndef WIN32
 
#    define WIN32
 
#  endif
 
#endif
 
#if (defined(MSDOS) || defined(OS2) || defined(WINDOWS)) && !defined(WIN32)
 
#  if !defined(__GNUC__) && !defined(__FLAT__) && !defined(__386__)
 
#    ifndef SYS16BIT
 
#      define SYS16BIT
 
#    endif
 
#  endif
 
#endif
 

	
 
/*
 
 * Compile with -DMAXSEG_64K if the alloc function cannot allocate more
 
 * than 64k bytes at a time (needed on systems with 16-bit int).
 
 */
 
#ifdef SYS16BIT
 
#  define MAXSEG_64K
 
#endif
 
#ifdef MSDOS
 
#  define UNALIGNED_OK
 
#endif
 

	
 
#ifdef __STDC_VERSION__
 
#  ifndef STDC
 
#    define STDC
 
#  endif
 
#  if __STDC_VERSION__ >= 199901L
 
#    ifndef STDC99
 
#      define STDC99
 
#    endif
 
#  endif
 
#endif
 
#if !defined(STDC) && (defined(__STDC__) || defined(__cplusplus))
 
#  define STDC
 
#endif
 
#if !defined(STDC) && (defined(__GNUC__) || defined(__BORLANDC__))
 
#  define STDC
 
#endif
 
#if !defined(STDC) && (defined(MSDOS) || defined(WINDOWS) || defined(WIN32))
 
#  define STDC
 
#endif
 
#if !defined(STDC) && (defined(OS2) || defined(__HOS_AIX__))
 
#  define STDC
 
#endif
 

	
 
#if defined(__OS400__) && !defined(STDC)    /* iSeries (formerly AS/400). */
 
#  define STDC
 
#endif
 

	
 
#ifndef STDC
 
#  ifndef const /* cannot use !defined(STDC) && !defined(const) on Mac */
 
#    define const       /* note: need a more gentle solution here */
 
#  endif
 
#endif
 

	
 
/* Some Mac compilers merge all .h files incorrectly: */
 
#if defined(__MWERKS__)||defined(applec)||defined(THINK_C)||defined(__SC__)
 
#  define NO_DUMMY_DECL
 
#endif
 

	
 
/* Maximum value for memLevel in deflateInit2 */
 
#ifndef MAX_MEM_LEVEL
 
#  ifdef MAXSEG_64K
 
#    define MAX_MEM_LEVEL 8
 
#  else
 
#    define MAX_MEM_LEVEL 9
 
#  endif
 
#endif
 

	
 
/* Maximum value for windowBits in deflateInit2 and inflateInit2.
 
 * WARNING: reducing MAX_WBITS makes minigzip unable to extract .gz files
 
 * created by gzip. (Files created by minigzip can still be extracted by
 
 * gzip.)
 
 */
 
#ifndef MAX_WBITS
 
#  define MAX_WBITS   15 /* 32K LZ77 window */
 
#endif
 

	
 
/* The memory requirements for deflate are (in bytes):
 
            (1 << (windowBits+2)) +  (1 << (memLevel+9))
 
 that is: 128K for windowBits=15  +  128K for memLevel = 8  (default values)
 
 plus a few kilobytes for small objects. For example, if you want to reduce
 
 the default memory requirements from 256K to 128K, compile with
 
     make CFLAGS="-O -DMAX_WBITS=14 -DMAX_MEM_LEVEL=7"
 
 Of course this will generally degrade compression (there's no free lunch).
 

	
 
   The memory requirements for inflate are (in bytes) 1 << windowBits
 
 that is, 32K for windowBits=15 (default value) plus a few kilobytes
 
 for small objects.
 
*/
 

	
 
                        /* Type declarations */
 

	
 
#ifndef OF /* function prototypes */
 
#  ifdef STDC
 
#    define OF(args)  args
 
#  else
 
#    define OF(args)  ()
 
#  endif
 
#endif
 

	
 
/* The following definitions for FAR are needed only for MSDOS mixed
 
 * model programming (small or medium model with some far allocations).
 
 * This was tested only with MSC; for other MSDOS compilers you may have
 
 * to define NO_MEMCPY in zutil.h.  If you don't need the mixed model,
 
 * just define FAR to be empty.
 
 */
 
#ifdef SYS16BIT
 
#  if defined(M_I86SM) || defined(M_I86MM)
 
     /* MSC small or medium model */
 
#    define SMALL_MEDIUM
 
#    ifdef _MSC_VER
 
#      define FAR _far
 
#    else
 
#      define FAR far
 
#    endif
 
#  endif
 
#  if (defined(__SMALL__) || defined(__MEDIUM__))
 
     /* Turbo C small or medium model */
 
#    define SMALL_MEDIUM
 
#    ifdef __BORLANDC__
 
#      define FAR _far
 
#    else
 
#      define FAR far
 
#    endif
 
#  endif
 
#endif
 

	
 
#if defined(WINDOWS) || defined(WIN32)
 
   /* If building or using zlib as a DLL, define ZLIB_DLL.
 
    * This is not mandatory, but it offers a little performance increase.
 
    */
 
#  ifdef ZLIB_DLL
 
#    if defined(WIN32) && (!defined(__BORLANDC__) || (__BORLANDC__ >= 0x500))
 
#      ifdef ZLIB_INTERNAL
 
#        define ZEXTERN extern __declspec(dllexport)
 
#      else
 
#        define ZEXTERN extern __declspec(dllimport)
 
#      endif
 
#    endif
 
#  endif  /* ZLIB_DLL */
 
   /* If building or using zlib with the WINAPI/WINAPIV calling convention,
 
    * define ZLIB_WINAPI.
 
    * Caution: the standard ZLIB1.DLL is NOT compiled using ZLIB_WINAPI.
 
    */
 
#  ifdef ZLIB_WINAPI
 
#    ifdef FAR
 
#      undef FAR
 
#    endif
 
#    include <windows.h>
 
     /* No need for _export, use ZLIB.DEF instead. */
 
     /* For complete Windows compatibility, use WINAPI, not __stdcall. */
 
#    define ZEXPORT WINAPI
 
#    ifdef WIN32
 
#      define ZEXPORTVA WINAPIV
 
#    else
 
#      define ZEXPORTVA FAR CDECL
 
#    endif
 
#  endif
 
#endif
 

	
 
#if defined (__BEOS__)
 
#  ifdef ZLIB_DLL
 
#    ifdef ZLIB_INTERNAL
 
#      define ZEXPORT   __declspec(dllexport)
 
#      define ZEXPORTVA __declspec(dllexport)
 
#    else
 
#      define ZEXPORT   __declspec(dllimport)
 
#      define ZEXPORTVA __declspec(dllimport)
 
#    endif
 
#  endif
 
#endif
 

	
 
#ifndef ZEXTERN
 
#  define ZEXTERN extern
 
#endif
 
#ifndef ZEXPORT
 
#  define ZEXPORT
 
#endif
 
#ifndef ZEXPORTVA
 
#  define ZEXPORTVA
 
#endif
 

	
 
#ifndef FAR
 
#  define FAR
 
#endif
 

	
 
#if !defined(__MACTYPES__)
 
typedef unsigned char  Byte;  /* 8 bits */
 
#endif
 
typedef unsigned int   uInt;  /* 16 bits or more */
 
typedef unsigned long  uLong; /* 32 bits or more */
 

	
 
#ifdef SMALL_MEDIUM
 
   /* Borland C/C++ and some old MSC versions ignore FAR inside typedef */
 
#  define Bytef Byte FAR
 
#else
 
   typedef Byte  FAR Bytef;
 
#endif
 
typedef char  FAR charf;
 
typedef int   FAR intf;
 
typedef uInt  FAR uIntf;
 
typedef uLong FAR uLongf;
 

	
 
#ifdef STDC
 
   typedef void const *voidpc;
 
   typedef void FAR   *voidpf;
 
   typedef void       *voidp;
 
#else
 
   typedef Byte const *voidpc;
 
   typedef Byte FAR   *voidpf;
 
   typedef Byte       *voidp;
 
#endif
 

	
 
#if 1           /* HAVE_UNISTD_H -- this line is updated by ./configure */
 
#  include <sys/types.h> /* for off_t */
 
#  include <unistd.h>    /* for SEEK_* and off_t */
 
#  ifdef VMS
 
#    include <unixio.h>   /* for off_t */
 
#  endif
 
#  define z_off_t off_t
 
#endif
 
#ifndef SEEK_SET
 
#  define SEEK_SET        0       /* Seek from beginning of file.  */
 
#  define SEEK_CUR        1       /* Seek from current position.  */
 
#  define SEEK_END        2       /* Set file pointer to EOF plus "offset" */
 
#endif
 
#ifndef z_off_t
 
#  define z_off_t long
 
#endif
 

	
 
#if defined(__OS400__)
 
#  define NO_vsnprintf
 
#endif
 

	
 
#if defined(__MVS__)
 
#  define NO_vsnprintf
 
#  ifdef FAR
 
#    undef FAR
 
#  endif
 
#endif
 

	
 
/* MVS linker does not support external names larger than 8 bytes */
 
#if defined(__MVS__)
 
#   pragma map(deflateInit_,"DEIN")
 
#   pragma map(deflateInit2_,"DEIN2")
 
#   pragma map(deflateEnd,"DEEND")
 
#   pragma map(deflateBound,"DEBND")
 
#   pragma map(inflateInit_,"ININ")
 
#   pragma map(inflateInit2_,"ININ2")
 
#   pragma map(inflateEnd,"INEND")
 
#   pragma map(inflateSync,"INSY")
 
#   pragma map(inflateSetDictionary,"INSEDI")
 
#   pragma map(compressBound,"CMBND")
 
#   pragma map(inflate_table,"INTABL")
 
#   pragma map(inflate_fast,"INFA")
 
#   pragma map(inflate_copyright,"INCOPY")
 
#endif
 

	
 
#endif /* ZCONF_H */
lib/libz/include/zlib.h
Show inline comments
 
new file 100755
 
/* zlib.h -- interface of the 'zlib' general purpose compression library
 
  version 1.2.3, July 18th, 2005
 

	
 
  Copyright (C) 1995-2005 Jean-loup Gailly and Mark Adler
 

	
 
  This software is provided 'as-is', without any express or implied
 
  warranty.  In no event will the authors be held liable for any damages
 
  arising from the use of this software.
 

	
 
  Permission is granted to anyone to use this software for any purpose,
 
  including commercial applications, and to alter it and redistribute it
 
  freely, subject to the following restrictions:
 

	
 
  1. The origin of this software must not be misrepresented; you must not
 
     claim that you wrote the original software. If you use this software
 
     in a product, an acknowledgment in the product documentation would be
 
     appreciated but is not required.
 
  2. Altered source versions must be plainly marked as such, and must not be
 
     misrepresented as being the original software.
 
  3. This notice may not be removed or altered from any source distribution.
 

	
 
  Jean-loup Gailly        Mark Adler
 
  jloup@gzip.org          madler@alumni.caltech.edu
 

	
 

	
 
  The data format used by the zlib library is described by RFCs (Request for
 
  Comments) 1950 to 1952 in the files http://www.ietf.org/rfc/rfc1950.txt
 
  (zlib format), rfc1951.txt (deflate format) and rfc1952.txt (gzip format).
 
*/
 

	
 
#ifndef ZLIB_H
 
#define ZLIB_H
 

	
 
#include "zconf.h"
 

	
 
#ifdef __cplusplus
 
extern "C" {
 
#endif
 

	
 
#define ZLIB_VERSION "1.2.3"
 
#define ZLIB_VERNUM 0x1230
 

	
 
/*
 
     The 'zlib' compression library provides in-memory compression and
 
  decompression functions, including integrity checks of the uncompressed
 
  data.  This version of the library supports only one compression method
 
  (deflation) but other algorithms will be added later and will have the same
 
  stream interface.
 

	
 
     Compression can be done in a single step if the buffers are large
 
  enough (for example if an input file is mmap'ed), or can be done by
 
  repeated calls of the compression function.  In the latter case, the
 
  application must provide more input and/or consume the output
 
  (providing more output space) before each call.
 

	
 
     The compressed data format used by default by the in-memory functions is
 
  the zlib format, which is a zlib wrapper documented in RFC 1950, wrapped
 
  around a deflate stream, which is itself documented in RFC 1951.
 

	
 
     The library also supports reading and writing files in gzip (.gz) format
 
  with an interface similar to that of stdio using the functions that start
 
  with "gz".  The gzip format is different from the zlib format.  gzip is a
 
  gzip wrapper, documented in RFC 1952, wrapped around a deflate stream.
 

	
 
     This library can optionally read and write gzip streams in memory as well.
 

	
 
     The zlib format was designed to be compact and fast for use in memory
 
  and on communications channels.  The gzip format was designed for single-
 
  file compression on file systems, has a larger header than zlib to maintain
 
  directory information, and uses a different, slower check method than zlib.
 

	
 
     The library does not install any signal handler. The decoder checks
 
  the consistency of the compressed data, so the library should never
 
  crash even in case of corrupted input.
 
*/
 

	
 
typedef voidpf (*alloc_func) OF((voidpf opaque, uInt items, uInt size));
 
typedef void   (*free_func)  OF((voidpf opaque, voidpf address));
 

	
 
struct internal_state;
 

	
 
typedef struct z_stream_s {
 
    Bytef    *next_in;  /* next input byte */
 
    uInt     avail_in;  /* number of bytes available at next_in */
 
    uLong    total_in;  /* total nb of input bytes read so far */
 

	
 
    Bytef    *next_out; /* next output byte should be put there */
 
    uInt     avail_out; /* remaining free space at next_out */
 
    uLong    total_out; /* total nb of bytes output so far */
 

	
 
    char     *msg;      /* last error message, NULL if no error */
 
    struct internal_state FAR *state; /* not visible by applications */
 

	
 
    alloc_func zalloc;  /* used to allocate the internal state */
 
    free_func  zfree;   /* used to free the internal state */
 
    voidpf     opaque;  /* private data object passed to zalloc and zfree */
 

	
 
    int     data_type;  /* best guess about the data type: binary or text */
 
    uLong   adler;      /* adler32 value of the uncompressed data */
 
    uLong   reserved;   /* reserved for future use */
 
} z_stream;
 

	
 
typedef z_stream FAR *z_streamp;
 

	
 
/*
 
     gzip header information passed to and from zlib routines.  See RFC 1952
 
  for more details on the meanings of these fields.
 
*/
 
typedef struct gz_header_s {
 
    int     text;       /* true if compressed data believed to be text */
 
    uLong   time;       /* modification time */
 
    int     xflags;     /* extra flags (not used when writing a gzip file) */
 
    int     os;         /* operating system */
 
    Bytef   *extra;     /* pointer to extra field or Z_NULL if none */
 
    uInt    extra_len;  /* extra field length (valid if extra != Z_NULL) */
 
    uInt    extra_max;  /* space at extra (only when reading header) */
 
    Bytef   *name;      /* pointer to zero-terminated file name or Z_NULL */
 
    uInt    name_max;   /* space at name (only when reading header) */
 
    Bytef   *comment;   /* pointer to zero-terminated comment or Z_NULL */
 
    uInt    comm_max;   /* space at comment (only when reading header) */
 
    int     hcrc;       /* true if there was or will be a header crc */
 
    int     done;       /* true when done reading gzip header (not used
 
                           when writing a gzip file) */
 
} gz_header;
 

	
 
typedef gz_header FAR *gz_headerp;
 

	
 
/*
 
   The application must update next_in and avail_in when avail_in has
 
   dropped to zero. It must update next_out and avail_out when avail_out
 
   has dropped to zero. The application must initialize zalloc, zfree and
 
   opaque before calling the init function. All other fields are set by the
 
   compression library and must not be updated by the application.
 

	
 
   The opaque value provided by the application will be passed as the first
 
   parameter for calls of zalloc and zfree. This can be useful for custom
 
   memory management. The compression library attaches no meaning to the
 
   opaque value.
 

	
 
   zalloc must return Z_NULL if there is not enough memory for the object.
 
   If zlib is used in a multi-threaded application, zalloc and zfree must be
 
   thread safe.
 

	
 
   On 16-bit systems, the functions zalloc and zfree must be able to allocate
 
   exactly 65536 bytes, but will not be required to allocate more than this
 
   if the symbol MAXSEG_64K is defined (see zconf.h). WARNING: On MSDOS,
 
   pointers returned by zalloc for objects of exactly 65536 bytes *must*
 
   have their offset normalized to zero. The default allocation function
 
   provided by this library ensures this (see zutil.c). To reduce memory
 
   requirements and avoid any allocation of 64K objects, at the expense of
 
   compression ratio, compile the library with -DMAX_WBITS=14 (see zconf.h).
 

	
 
   The fields total_in and total_out can be used for statistics or
 
   progress reports. After compression, total_in holds the total size of
 
   the uncompressed data and may be saved for use in the decompressor
 
   (particularly if the decompressor wants to decompress everything in
 
   a single step).
 
*/
 

	
 
                        /* constants */
 

	
 
#define Z_NO_FLUSH      0
 
#define Z_PARTIAL_FLUSH 1 /* will be removed, use Z_SYNC_FLUSH instead */
 
#define Z_SYNC_FLUSH    2
 
#define Z_FULL_FLUSH    3
 
#define Z_FINISH        4
 
#define Z_BLOCK         5
 
/* Allowed flush values; see deflate() and inflate() below for details */
 

	
 
#define Z_OK            0
 
#define Z_STREAM_END    1
 
#define Z_NEED_DICT     2
 
#define Z_ERRNO        (-1)
 
#define Z_STREAM_ERROR (-2)
 
#define Z_DATA_ERROR   (-3)
 
#define Z_MEM_ERROR    (-4)
 
#define Z_BUF_ERROR    (-5)
 
#define Z_VERSION_ERROR (-6)
 
/* Return codes for the compression/decompression functions. Negative
 
 * values are errors, positive values are used for special but normal events.
 
 */
 

	
 
#define Z_NO_COMPRESSION         0
 
#define Z_BEST_SPEED             1
 
#define Z_BEST_COMPRESSION       9
 
#define Z_DEFAULT_COMPRESSION  (-1)
 
/* compression levels */
 

	
 
#define Z_FILTERED            1
 
#define Z_HUFFMAN_ONLY        2
 
#define Z_RLE                 3
 
#define Z_FIXED               4
 
#define Z_DEFAULT_STRATEGY    0
 
/* compression strategy; see deflateInit2() below for details */
 

	
 
#define Z_BINARY   0
 
#define Z_TEXT     1
 
#define Z_ASCII    Z_TEXT   /* for compatibility with 1.2.2 and earlier */
 
#define Z_UNKNOWN  2
 
/* Possible values of the data_type field (though see inflate()) */
 

	
 
#define Z_DEFLATED   8
 
/* The deflate compression method (the only one supported in this version) */
 

	
 
#define Z_NULL  0  /* for initializing zalloc, zfree, opaque */
 

	
 
#define zlib_version zlibVersion()
 
/* for compatibility with versions < 1.0.2 */
 

	
 
                        /* basic functions */
 

	
 
ZEXTERN const char * ZEXPORT zlibVersion OF((void));
 
/* The application can compare zlibVersion and ZLIB_VERSION for consistency.
 
   If the first character differs, the library code actually used is
 
   not compatible with the zlib.h header file used by the application.
 
   This check is automatically made by deflateInit and inflateInit.
 
 */
 

	
 
/*
 
ZEXTERN int ZEXPORT deflateInit OF((z_streamp strm, int level));
 

	
 
     Initializes the internal stream state for compression. The fields
 
   zalloc, zfree and opaque must be initialized before by the caller.
 
   If zalloc and zfree are set to Z_NULL, deflateInit updates them to
 
   use default allocation functions.
 

	
 
     The compression level must be Z_DEFAULT_COMPRESSION, or between 0 and 9:
 
   1 gives best speed, 9 gives best compression, 0 gives no compression at
 
   all (the input data is simply copied a block at a time).
 
   Z_DEFAULT_COMPRESSION requests a default compromise between speed and
 
   compression (currently equivalent to level 6).
 

	
 
     deflateInit returns Z_OK if success, Z_MEM_ERROR if there was not
 
   enough memory, Z_STREAM_ERROR if level is not a valid compression level,
 
   Z_VERSION_ERROR if the zlib library version (zlib_version) is incompatible
 
   with the version assumed by the caller (ZLIB_VERSION).
 
   msg is set to null if there is no error message.  deflateInit does not
 
   perform any compression: this will be done by deflate().
 
*/
 

	
 

	
 
ZEXTERN int ZEXPORT deflate OF((z_streamp strm, int flush));
 
/*
 
    deflate compresses as much data as possible, and stops when the input
 
  buffer becomes empty or the output buffer becomes full. It may introduce some
 
  output latency (reading input without producing any output) except when
 
  forced to flush.
 

	
 
    The detailed semantics are as follows. deflate performs one or both of the
 
  following actions:
 

	
 
  - Compress more input starting at next_in and update next_in and avail_in
 
    accordingly. If not all input can be processed (because there is not
 
    enough room in the output buffer), next_in and avail_in are updated and
 
    processing will resume at this point for the next call of deflate().
 

	
 
  - Provide more output starting at next_out and update next_out and avail_out
 
    accordingly. This action is forced if the parameter flush is non zero.
 
    Forcing flush frequently degrades the compression ratio, so this parameter
 
    should be set only when necessary (in interactive applications).
 
    Some output may be provided even if flush is not set.
 

	
 
  Before the call of deflate(), the application should ensure that at least
 
  one of the actions is possible, by providing more input and/or consuming
 
  more output, and updating avail_in or avail_out accordingly; avail_out
 
  should never be zero before the call. The application can consume the
 
  compressed output when it wants, for example when the output buffer is full
 
  (avail_out == 0), or after each call of deflate(). If deflate returns Z_OK
 
  and with zero avail_out, it must be called again after making room in the
 
  output buffer because there might be more output pending.
 

	
 
    Normally the parameter flush is set to Z_NO_FLUSH, which allows deflate to
 
  decide how much data to accumualte before producing output, in order to
 
  maximize compression.
 

	
 
    If the parameter flush is set to Z_SYNC_FLUSH, all pending output is
 
  flushed to the output buffer and the output is aligned on a byte boundary, so
 
  that the decompressor can get all input data available so far. (In particular
 
  avail_in is zero after the call if enough output space has been provided
 
  before the call.)  Flushing may degrade compression for some compression
 
  algorithms and so it should be used only when necessary.
 

	
 
    If flush is set to Z_FULL_FLUSH, all output is flushed as with
 
  Z_SYNC_FLUSH, and the compression state is reset so that decompression can
 
  restart from this point if previous compressed data has been damaged or if
 
  random access is desired. Using Z_FULL_FLUSH too often can seriously degrade
 
  compression.
 

	
 
    If deflate returns with avail_out == 0, this function must be called again
 
  with the same value of the flush parameter and more output space (updated
 
  avail_out), until the flush is complete (deflate returns with non-zero
 
  avail_out). In the case of a Z_FULL_FLUSH or Z_SYNC_FLUSH, make sure that
 
  avail_out is greater than six to avoid repeated flush markers due to
 
  avail_out == 0 on return.
 

	
 
    If the parameter flush is set to Z_FINISH, pending input is processed,
 
  pending output is flushed and deflate returns with Z_STREAM_END if there
 
  was enough output space; if deflate returns with Z_OK, this function must be
 
  called again with Z_FINISH and more output space (updated avail_out) but no
 
  more input data, until it returns with Z_STREAM_END or an error. After
 
  deflate has returned Z_STREAM_END, the only possible operations on the
 
  stream are deflateReset or deflateEnd.
 

	
 
    Z_FINISH can be used immediately after deflateInit if all the compression
 
  is to be done in a single step. In this case, avail_out must be at least
 
  the value returned by deflateBound (see below). If deflate does not return
 
  Z_STREAM_END, then it must be called again as described above.
 

	
 
    deflate() sets strm->adler to the adler32 checksum of all input read
 
  so far (that is, total_in bytes).
 

	
 
    deflate() may update strm->data_type if it can make a good guess about
 
  the input data type (Z_BINARY or Z_TEXT). In doubt, the data is considered
 
  binary. This field is only for information purposes and does not affect
 
  the compression algorithm in any manner.
 

	
 
    deflate() returns Z_OK if some progress has been made (more input
 
  processed or more output produced), Z_STREAM_END if all input has been
 
  consumed and all output has been produced (only when flush is set to
 
  Z_FINISH), Z_STREAM_ERROR if the stream state was inconsistent (for example
 
  if next_in or next_out was NULL), Z_BUF_ERROR if no progress is possible
 
  (for example avail_in or avail_out was zero). Note that Z_BUF_ERROR is not
 
  fatal, and deflate() can be called again with more input and more output
 
  space to continue compressing.
 
*/
 

	
 

	
 
ZEXTERN int ZEXPORT deflateEnd OF((z_streamp strm));
 
/*
 
     All dynamically allocated data structures for this stream are freed.
 
   This function discards any unprocessed input and does not flush any
 
   pending output.
 

	
 
     deflateEnd returns Z_OK if success, Z_STREAM_ERROR if the
 
   stream state was inconsistent, Z_DATA_ERROR if the stream was freed
 
   prematurely (some input or output was discarded). In the error case,
 
   msg may be set but then points to a static string (which must not be
 
   deallocated).
 
*/
 

	
 

	
 
/*
 
ZEXTERN int ZEXPORT inflateInit OF((z_streamp strm));
 

	
 
     Initializes the internal stream state for decompression. The fields
 
   next_in, avail_in, zalloc, zfree and opaque must be initialized before by
 
   the caller. If next_in is not Z_NULL and avail_in is large enough (the exact
 
   value depends on the compression method), inflateInit determines the
 
   compression method from the zlib header and allocates all data structures
 
   accordingly; otherwise the allocation will be deferred to the first call of
 
   inflate.  If zalloc and zfree are set to Z_NULL, inflateInit updates them to
 
   use default allocation functions.
 

	
 
     inflateInit returns Z_OK if success, Z_MEM_ERROR if there was not enough
 
   memory, Z_VERSION_ERROR if the zlib library version is incompatible with the
 
   version assumed by the caller.  msg is set to null if there is no error
 
   message. inflateInit does not perform any decompression apart from reading
 
   the zlib header if present: this will be done by inflate().  (So next_in and
 
   avail_in may be modified, but next_out and avail_out are unchanged.)
 
*/
 

	
 

	
 
ZEXTERN int ZEXPORT inflate OF((z_streamp strm, int flush));
 
/*
 
    inflate decompresses as much data as possible, and stops when the input
 
  buffer becomes empty or the output buffer becomes full. It may introduce
 
  some output latency (reading input without producing any output) except when
 
  forced to flush.
 

	
 
  The detailed semantics are as follows. inflate performs one or both of the
 
  following actions:
 

	
 
  - Decompress more input starting at next_in and update next_in and avail_in
 
    accordingly. If not all input can be processed (because there is not
 
    enough room in the output buffer), next_in is updated and processing
 
    will resume at this point for the next call of inflate().
 

	
 
  - Provide more output starting at next_out and update next_out and avail_out
 
    accordingly.  inflate() provides as much output as possible, until there
 
    is no more input data or no more space in the output buffer (see below
 
    about the flush parameter).
 

	
 
  Before the call of inflate(), the application should ensure that at least
 
  one of the actions is possible, by providing more input and/or consuming
 
  more output, and updating the next_* and avail_* values accordingly.
 
  The application can consume the uncompressed output when it wants, for
 
  example when the output buffer is full (avail_out == 0), or after each
 
  call of inflate(). If inflate returns Z_OK and with zero avail_out, it
 
  must be called again after making room in the output buffer because there
 
  might be more output pending.
 

	
 
    The flush parameter of inflate() can be Z_NO_FLUSH, Z_SYNC_FLUSH,
 
  Z_FINISH, or Z_BLOCK. Z_SYNC_FLUSH requests that inflate() flush as much
 
  output as possible to the output buffer. Z_BLOCK requests that inflate() stop
 
  if and when it gets to the next deflate block boundary. When decoding the
 
  zlib or gzip format, this will cause inflate() to return immediately after
 
  the header and before the first block. When doing a raw inflate, inflate()
 
  will go ahead and process the first block, and will return when it gets to
 
  the end of that block, or when it runs out of data.
 

	
 
    The Z_BLOCK option assists in appending to or combining deflate streams.
 
  Also to assist in this, on return inflate() will set strm->data_type to the
 
  number of unused bits in the last byte taken from strm->next_in, plus 64
 
  if inflate() is currently decoding the last block in the deflate stream,
 
  plus 128 if inflate() returned immediately after decoding an end-of-block
 
  code or decoding the complete header up to just before the first byte of the
 
  deflate stream. The end-of-block will not be indicated until all of the
 
  uncompressed data from that block has been written to strm->next_out.  The
 
  number of unused bits may in general be greater than seven, except when
 
  bit 7 of data_type is set, in which case the number of unused bits will be
 
  less than eight.
 

	
 
    inflate() should normally be called until it returns Z_STREAM_END or an
 
  error. However if all decompression is to be performed in a single step
 
  (a single call of inflate), the parameter flush should be set to
 
  Z_FINISH. In this case all pending input is processed and all pending
 
  output is flushed; avail_out must be large enough to hold all the
 
  uncompressed data. (The size of the uncompressed data may have been saved
 
  by the compressor for this purpose.) The next operation on this stream must
 
  be inflateEnd to deallocate the decompression state. The use of Z_FINISH
 
  is never required, but can be used to inform inflate that a faster approach
 
  may be used for the single inflate() call.
 

	
 
     In this implementation, inflate() always flushes as much output as
 
  possible to the output buffer, and always uses the faster approach on the
 
  first call. So the only effect of the flush parameter in this implementation
 
  is on the return value of inflate(), as noted below, or when it returns early
 
  because Z_BLOCK is used.
 

	
 
     If a preset dictionary is needed after this call (see inflateSetDictionary
 
  below), inflate sets strm->adler to the adler32 checksum of the dictionary
 
  chosen by the compressor and returns Z_NEED_DICT; otherwise it sets
 
  strm->adler to the adler32 checksum of all output produced so far (that is,
 
  total_out bytes) and returns Z_OK, Z_STREAM_END or an error code as described
 
  below. At the end of the stream, inflate() checks that its computed adler32
 
  checksum is equal to that saved by the compressor and returns Z_STREAM_END
 
  only if the checksum is correct.
 

	
 
    inflate() will decompress and check either zlib-wrapped or gzip-wrapped
 
  deflate data.  The header type is detected automatically.  Any information
 
  contained in the gzip header is not retained, so applications that need that
 
  information should instead use raw inflate, see inflateInit2() below, or
 
  inflateBack() and perform their own processing of the gzip header and
 
  trailer.
 

	
 
    inflate() returns Z_OK if some progress has been made (more input processed
 
  or more output produced), Z_STREAM_END if the end of the compressed data has
 
  been reached and all uncompressed output has been produced, Z_NEED_DICT if a
 
  preset dictionary is needed at this point, Z_DATA_ERROR if the input data was
 
  corrupted (input stream not conforming to the zlib format or incorrect check
 
  value), Z_STREAM_ERROR if the stream structure was inconsistent (for example
 
  if next_in or next_out was NULL), Z_MEM_ERROR if there was not enough memory,
 
  Z_BUF_ERROR if no progress is possible or if there was not enough room in the
 
  output buffer when Z_FINISH is used. Note that Z_BUF_ERROR is not fatal, and
 
  inflate() can be called again with more input and more output space to
 
  continue decompressing. If Z_DATA_ERROR is returned, the application may then
 
  call inflateSync() to look for a good compression block if a partial recovery
 
  of the data is desired.
 
*/
 

	
 

	
 
ZEXTERN int ZEXPORT inflateEnd OF((z_streamp strm));
 
/*
 
     All dynamically allocated data structures for this stream are freed.
 
   This function discards any unprocessed input and does not flush any
 
   pending output.
 

	
 
     inflateEnd returns Z_OK if success, Z_STREAM_ERROR if the stream state
 
   was inconsistent. In the error case, msg may be set but then points to a
 
   static string (which must not be deallocated).
 
*/
 

	
 
                        /* Advanced functions */
 

	
 
/*
 
    The following functions are needed only in some special applications.
 
*/
 

	
 
/*
 
ZEXTERN int ZEXPORT deflateInit2 OF((z_streamp strm,
 
                                     int  level,
 
                                     int  method,
 
                                     int  windowBits,
 
                                     int  memLevel,
 
                                     int  strategy));
 

	
 
     This is another version of deflateInit with more compression options. The
 
   fields next_in, zalloc, zfree and opaque must be initialized before by
 
   the caller.
 

	
 
     The method parameter is the compression method. It must be Z_DEFLATED in
 
   this version of the library.
 

	
 
     The windowBits parameter is the base two logarithm of the window size
 
   (the size of the history buffer). It should be in the range 8..15 for this
 
   version of the library. Larger values of this parameter result in better
 
   compression at the expense of memory usage. The default value is 15 if
 
   deflateInit is used instead.
 

	
 
     windowBits can also be -8..-15 for raw deflate. In this case, -windowBits
 
   determines the window size. deflate() will then generate raw deflate data
 
   with no zlib header or trailer, and will not compute an adler32 check value.
 

	
 
     windowBits can also be greater than 15 for optional gzip encoding. Add
 
   16 to windowBits to write a simple gzip header and trailer around the
 
   compressed data instead of a zlib wrapper. The gzip header will have no
 
   file name, no extra data, no comment, no modification time (set to zero),
 
   no header crc, and the operating system will be set to 255 (unknown).  If a
 
   gzip stream is being written, strm->adler is a crc32 instead of an adler32.
 

	
 
     The memLevel parameter specifies how much memory should be allocated
 
   for the internal compression state. memLevel=1 uses minimum memory but
 
   is slow and reduces compression ratio; memLevel=9 uses maximum memory
 
   for optimal speed. The default value is 8. See zconf.h for total memory
 
   usage as a function of windowBits and memLevel.
 

	
 
     The strategy parameter is used to tune the compression algorithm. Use the
 
   value Z_DEFAULT_STRATEGY for normal data, Z_FILTERED for data produced by a
 
   filter (or predictor), Z_HUFFMAN_ONLY to force Huffman encoding only (no
 
   string match), or Z_RLE to limit match distances to one (run-length
 
   encoding). Filtered data consists mostly of small values with a somewhat
 
   random distribution. In this case, the compression algorithm is tuned to
 
   compress them better. The effect of Z_FILTERED is to force more Huffman
 
   coding and less string matching; it is somewhat intermediate between
 
   Z_DEFAULT and Z_HUFFMAN_ONLY. Z_RLE is designed to be almost as fast as
 
   Z_HUFFMAN_ONLY, but give better compression for PNG image data. The strategy
 
   parameter only affects the compression ratio but not the correctness of the
 
   compressed output even if it is not set appropriately.  Z_FIXED prevents the
 
   use of dynamic Huffman codes, allowing for a simpler decoder for special
 
   applications.
 

	
 
      deflateInit2 returns Z_OK if success, Z_MEM_ERROR if there was not enough
 
   memory, Z_STREAM_ERROR if a parameter is invalid (such as an invalid
 
   method). msg is set to null if there is no error message.  deflateInit2 does
 
   not perform any compression: this will be done by deflate().
 
*/
 

	
 
ZEXTERN int ZEXPORT deflateSetDictionary OF((z_streamp strm,
 
                                             const Bytef *dictionary,
 
                                             uInt  dictLength));
 
/*
 
     Initializes the compression dictionary from the given byte sequence
 
   without producing any compressed output. This function must be called
 
   immediately after deflateInit, deflateInit2 or deflateReset, before any
 
   call of deflate. The compressor and decompressor must use exactly the same
 
   dictionary (see inflateSetDictionary).
 

	
 
     The dictionary should consist of strings (byte sequences) that are likely
 
   to be encountered later in the data to be compressed, with the most commonly
 
   used strings preferably put towards the end of the dictionary. Using a
 
   dictionary is most useful when the data to be compressed is short and can be
 
   predicted with good accuracy; the data can then be compressed better than
 
   with the default empty dictionary.
 

	
 
     Depending on the size of the compression data structures selected by
 
   deflateInit or deflateInit2, a part of the dictionary may in effect be
 
   discarded, for example if the dictionary is larger than the window size in
 
   deflate or deflate2. Thus the strings most likely to be useful should be
 
   put at the end of the dictionary, not at the front. In addition, the
 
   current implementation of deflate will use at most the window size minus
 
   262 bytes of the provided dictionary.
 

	
 
     Upon return of this function, strm->adler is set to the adler32 value
 
   of the dictionary; the decompressor may later use this value to determine
 
   which dictionary has been used by the compressor. (The adler32 value
 
   applies to the whole dictionary even if only a subset of the dictionary is
 
   actually used by the compressor.) If a raw deflate was requested, then the
 
   adler32 value is not computed and strm->adler is not set.
 

	
 
     deflateSetDictionary returns Z_OK if success, or Z_STREAM_ERROR if a
 
   parameter is invalid (such as NULL dictionary) or the stream state is
 
   inconsistent (for example if deflate has already been called for this stream
 
   or if the compression method is bsort). deflateSetDictionary does not
 
   perform any compression: this will be done by deflate().
 
*/
 

	
 
ZEXTERN int ZEXPORT deflateCopy OF((z_streamp dest,
 
                                    z_streamp source));
 
/*
 
     Sets the destination stream as a complete copy of the source stream.
 

	
 
     This function can be useful when several compression strategies will be
 
   tried, for example when there are several ways of pre-processing the input
 
   data with a filter. The streams that will be discarded should then be freed
 
   by calling deflateEnd.  Note that deflateCopy duplicates the internal
 
   compression state which can be quite large, so this strategy is slow and
 
   can consume lots of memory.
 

	
 
     deflateCopy returns Z_OK if success, Z_MEM_ERROR if there was not
 
   enough memory, Z_STREAM_ERROR if the source stream state was inconsistent
 
   (such as zalloc being NULL). msg is left unchanged in both source and
 
   destination.
 
*/
 

	
 
ZEXTERN int ZEXPORT deflateReset OF((z_streamp strm));
 
/*
 
     This function is equivalent to deflateEnd followed by deflateInit,
 
   but does not free and reallocate all the internal compression state.
 
   The stream will keep the same compression level and any other attributes
 
   that may have been set by deflateInit2.
 

	
 
      deflateReset returns Z_OK if success, or Z_STREAM_ERROR if the source
 
   stream state was inconsistent (such as zalloc or state being NULL).
 
*/
 

	
 
ZEXTERN int ZEXPORT deflateParams OF((z_streamp strm,
 
                                      int level,
 
                                      int strategy));
 
/*
 
     Dynamically update the compression level and compression strategy.  The
 
   interpretation of level and strategy is as in deflateInit2.  This can be
 
   used to switch between compression and straight copy of the input data, or
 
   to switch to a different kind of input data requiring a different
 
   strategy. If the compression level is changed, the input available so far
 
   is compressed with the old level (and may be flushed); the new level will
 
   take effect only at the next call of deflate().
 

	
 
     Before the call of deflateParams, the stream state must be set as for
 
   a call of deflate(), since the currently available input may have to
 
   be compressed and flushed. In particular, strm->avail_out must be non-zero.
 

	
 
     deflateParams returns Z_OK if success, Z_STREAM_ERROR if the source
 
   stream state was inconsistent or if a parameter was invalid, Z_BUF_ERROR
 
   if strm->avail_out was zero.
 
*/
 

	
 
ZEXTERN int ZEXPORT deflateTune OF((z_streamp strm,
 
                                    int good_length,
 
                                    int max_lazy,
 
                                    int nice_length,
 
                                    int max_chain));
 
/*
 
     Fine tune deflate's internal compression parameters.  This should only be
 
   used by someone who understands the algorithm used by zlib's deflate for
 
   searching for the best matching string, and even then only by the most
 
   fanatic optimizer trying to squeeze out the last compressed bit for their
 
   specific input data.  Read the deflate.c source code for the meaning of the
 
   max_lazy, good_length, nice_length, and max_chain parameters.
 

	
 
     deflateTune() can be called after deflateInit() or deflateInit2(), and
 
   returns Z_OK on success, or Z_STREAM_ERROR for an invalid deflate stream.
 
 */
 

	
 
ZEXTERN uLong ZEXPORT deflateBound OF((z_streamp strm,
 
                                       uLong sourceLen));
 
/*
 
     deflateBound() returns an upper bound on the compressed size after
 
   deflation of sourceLen bytes.  It must be called after deflateInit()
 
   or deflateInit2().  This would be used to allocate an output buffer
 
   for deflation in a single pass, and so would be called before deflate().
 
*/
 

	
 
ZEXTERN int ZEXPORT deflatePrime OF((z_streamp strm,
 
                                     int bits,
 
                                     int value));
 
/*
 
     deflatePrime() inserts bits in the deflate output stream.  The intent
 
  is that this function is used to start off the deflate output with the
 
  bits leftover from a previous deflate stream when appending to it.  As such,
 
  this function can only be used for raw deflate, and must be used before the
 
  first deflate() call after a deflateInit2() or deflateReset().  bits must be
 
  less than or equal to 16, and that many of the least significant bits of
 
  value will be inserted in the output.
 

	
 
      deflatePrime returns Z_OK if success, or Z_STREAM_ERROR if the source
 
   stream state was inconsistent.
 
*/
 

	
 
ZEXTERN int ZEXPORT deflateSetHeader OF((z_streamp strm,
 
                                         gz_headerp head));
 
/*
 
      deflateSetHeader() provides gzip header information for when a gzip
 
   stream is requested by deflateInit2().  deflateSetHeader() may be called
 
   after deflateInit2() or deflateReset() and before the first call of
 
   deflate().  The text, time, os, extra field, name, and comment information
 
   in the provided gz_header structure are written to the gzip header (xflag is
 
   ignored -- the extra flags are set according to the compression level).  The
 
   caller must assure that, if not Z_NULL, name and comment are terminated with
 
   a zero byte, and that if extra is not Z_NULL, that extra_len bytes are
 
   available there.  If hcrc is true, a gzip header crc is included.  Note that
 
   the current versions of the command-line version of gzip (up through version
 
   1.3.x) do not support header crc's, and will report that it is a "multi-part
 
   gzip file" and give up.
 

	
 
      If deflateSetHeader is not used, the default gzip header has text false,
 
   the time set to zero, and os set to 255, with no extra, name, or comment
 
   fields.  The gzip header is returned to the default state by deflateReset().
 

	
 
      deflateSetHeader returns Z_OK if success, or Z_STREAM_ERROR if the source
 
   stream state was inconsistent.
 
*/
 

	
 
/*
 
ZEXTERN int ZEXPORT inflateInit2 OF((z_streamp strm,
 
                                     int  windowBits));
 

	
 
     This is another version of inflateInit with an extra parameter. The
 
   fields next_in, avail_in, zalloc, zfree and opaque must be initialized
 
   before by the caller.
 

	
 
     The windowBits parameter is the base two logarithm of the maximum window
 
   size (the size of the history buffer).  It should be in the range 8..15 for
 
   this version of the library. The default value is 15 if inflateInit is used
 
   instead. windowBits must be greater than or equal to the windowBits value
 
   provided to deflateInit2() while compressing, or it must be equal to 15 if
 
   deflateInit2() was not used. If a compressed stream with a larger window
 
   size is given as input, inflate() will return with the error code
 
   Z_DATA_ERROR instead of trying to allocate a larger window.
 

	
 
     windowBits can also be -8..-15 for raw inflate. In this case, -windowBits
 
   determines the window size. inflate() will then process raw deflate data,
 
   not looking for a zlib or gzip header, not generating a check value, and not
 
   looking for any check values for comparison at the end of the stream. This
 
   is for use with other formats that use the deflate compressed data format
 
   such as zip.  Those formats provide their own check values. If a custom
 
   format is developed using the raw deflate format for compressed data, it is
 
   recommended that a check value such as an adler32 or a crc32 be applied to
 
   the uncompressed data as is done in the zlib, gzip, and zip formats.  For
 
   most applications, the zlib format should be used as is. Note that comments
 
   above on the use in deflateInit2() applies to the magnitude of windowBits.
 

	
 
     windowBits can also be greater than 15 for optional gzip decoding. Add
 
   32 to windowBits to enable zlib and gzip decoding with automatic header
 
   detection, or add 16 to decode only the gzip format (the zlib format will
 
   return a Z_DATA_ERROR).  If a gzip stream is being decoded, strm->adler is
 
   a crc32 instead of an adler32.
 

	
 
     inflateInit2 returns Z_OK if success, Z_MEM_ERROR if there was not enough
 
   memory, Z_STREAM_ERROR if a parameter is invalid (such as a null strm). msg
 
   is set to null if there is no error message.  inflateInit2 does not perform
 
   any decompression apart from reading the zlib header if present: this will
 
   be done by inflate(). (So next_in and avail_in may be modified, but next_out
 
   and avail_out are unchanged.)
 
*/
 

	
 
ZEXTERN int ZEXPORT inflateSetDictionary OF((z_streamp strm,
 
                                             const Bytef *dictionary,
 
                                             uInt  dictLength));
 
/*
 
     Initializes the decompression dictionary from the given uncompressed byte
 
   sequence. This function must be called immediately after a call of inflate,
 
   if that call returned Z_NEED_DICT. The dictionary chosen by the compressor
 
   can be determined from the adler32 value returned by that call of inflate.
 
   The compressor and decompressor must use exactly the same dictionary (see
 
   deflateSetDictionary).  For raw inflate, this function can be called
 
   immediately after inflateInit2() or inflateReset() and before any call of
 
   inflate() to set the dictionary.  The application must insure that the
 
   dictionary that was used for compression is provided.
 

	
 
     inflateSetDictionary returns Z_OK if success, Z_STREAM_ERROR if a
 
   parameter is invalid (such as NULL dictionary) or the stream state is
 
   inconsistent, Z_DATA_ERROR if the given dictionary doesn't match the
 
   expected one (incorrect adler32 value). inflateSetDictionary does not
 
   perform any decompression: this will be done by subsequent calls of
 
   inflate().
 
*/
 

	
 
ZEXTERN int ZEXPORT inflateSync OF((z_streamp strm));
 
/*
 
    Skips invalid compressed data until a full flush point (see above the
 
  description of deflate with Z_FULL_FLUSH) can be found, or until all
 
  available input is skipped. No output is provided.
 

	
 
    inflateSync returns Z_OK if a full flush point has been found, Z_BUF_ERROR
 
  if no more input was provided, Z_DATA_ERROR if no flush point has been found,
 
  or Z_STREAM_ERROR if the stream structure was inconsistent. In the success
 
  case, the application may save the current current value of total_in which
 
  indicates where valid compressed data was found. In the error case, the
 
  application may repeatedly call inflateSync, providing more input each time,
 
  until success or end of the input data.
 
*/
 

	
 
ZEXTERN int ZEXPORT inflateCopy OF((z_streamp dest,
 
                                    z_streamp source));
 
/*
 
     Sets the destination stream as a complete copy of the source stream.
 

	
 
     This function can be useful when randomly accessing a large stream.  The
 
   first pass through the stream can periodically record the inflate state,
 
   allowing restarting inflate at those points when randomly accessing the
 
   stream.
 

	
 
     inflateCopy returns Z_OK if success, Z_MEM_ERROR if there was not
 
   enough memory, Z_STREAM_ERROR if the source stream state was inconsistent
 
   (such as zalloc being NULL). msg is left unchanged in both source and
 
   destination.
 
*/
 

	
 
ZEXTERN int ZEXPORT inflateReset OF((z_streamp strm));
 
/*
 
     This function is equivalent to inflateEnd followed by inflateInit,
 
   but does not free and reallocate all the internal decompression state.
 
   The stream will keep attributes that may have been set by inflateInit2.
 

	
 
      inflateReset returns Z_OK if success, or Z_STREAM_ERROR if the source
 
   stream state was inconsistent (such as zalloc or state being NULL).
 
*/
 

	
 
ZEXTERN int ZEXPORT inflatePrime OF((z_streamp strm,
 
                                     int bits,
 
                                     int value));
 
/*
 
     This function inserts bits in the inflate input stream.  The intent is
 
  that this function is used to start inflating at a bit position in the
 
  middle of a byte.  The provided bits will be used before any bytes are used
 
  from next_in.  This function should only be used with raw inflate, and
 
  should be used before the first inflate() call after inflateInit2() or
 
  inflateReset().  bits must be less than or equal to 16, and that many of the
 
  least significant bits of value will be inserted in the input.
 

	
 
      inflatePrime returns Z_OK if success, or Z_STREAM_ERROR if the source
 
   stream state was inconsistent.
 
*/
 

	
 
ZEXTERN int ZEXPORT inflateGetHeader OF((z_streamp strm,
 
                                         gz_headerp head));
 
/*
 
      inflateGetHeader() requests that gzip header information be stored in the
 
   provided gz_header structure.  inflateGetHeader() may be called after
 
   inflateInit2() or inflateReset(), and before the first call of inflate().
 
   As inflate() processes the gzip stream, head->done is zero until the header
 
   is completed, at which time head->done is set to one.  If a zlib stream is
 
   being decoded, then head->done is set to -1 to indicate that there will be
 
   no gzip header information forthcoming.  Note that Z_BLOCK can be used to
 
   force inflate() to return immediately after header processing is complete
 
   and before any actual data is decompressed.
 

	
 
      The text, time, xflags, and os fields are filled in with the gzip header
 
   contents.  hcrc is set to true if there is a header CRC.  (The header CRC
 
   was valid if done is set to one.)  If extra is not Z_NULL, then extra_max
 
   contains the maximum number of bytes to write to extra.  Once done is true,
 
   extra_len contains the actual extra field length, and extra contains the
 
   extra field, or that field truncated if extra_max is less than extra_len.
 
   If name is not Z_NULL, then up to name_max characters are written there,
 
   terminated with a zero unless the length is greater than name_max.  If
 
   comment is not Z_NULL, then up to comm_max characters are written there,
 
   terminated with a zero unless the length is greater than comm_max.  When
 
   any of extra, name, or comment are not Z_NULL and the respective field is
 
   not present in the header, then that field is set to Z_NULL to signal its
 
   absence.  This allows the use of deflateSetHeader() with the returned
 
   structure to duplicate the header.  However if those fields are set to
 
   allocated memory, then the application will need to save those pointers
 
   elsewhere so that they can be eventually freed.
 

	
 
      If inflateGetHeader is not used, then the header information is simply
 
   discarded.  The header is always checked for validity, including the header
 
   CRC if present.  inflateReset() will reset the process to discard the header
 
   information.  The application would need to call inflateGetHeader() again to
 
   retrieve the header from the next gzip stream.
 

	
 
      inflateGetHeader returns Z_OK if success, or Z_STREAM_ERROR if the source
 
   stream state was inconsistent.
 
*/
 

	
 
/*
 
ZEXTERN int ZEXPORT inflateBackInit OF((z_streamp strm, int windowBits,
 
                                        unsigned char FAR *window));
 

	
 
     Initialize the internal stream state for decompression using inflateBack()
 
   calls.  The fields zalloc, zfree and opaque in strm must be initialized
 
   before the call.  If zalloc and zfree are Z_NULL, then the default library-
 
   derived memory allocation routines are used.  windowBits is the base two
 
   logarithm of the window size, in the range 8..15.  window is a caller
 
   supplied buffer of that size.  Except for special applications where it is
 
   assured that deflate was used with small window sizes, windowBits must be 15
 
   and a 32K byte window must be supplied to be able to decompress general
 
   deflate streams.
 

	
 
     See inflateBack() for the usage of these routines.
 

	
 
     inflateBackInit will return Z_OK on success, Z_STREAM_ERROR if any of
 
   the paramaters are invalid, Z_MEM_ERROR if the internal state could not
 
   be allocated, or Z_VERSION_ERROR if the version of the library does not
 
   match the version of the header file.
 
*/
 

	
 
typedef unsigned (*in_func) OF((void FAR *, unsigned char FAR * FAR *));
 
typedef int (*out_func) OF((void FAR *, unsigned char FAR *, unsigned));
 

	
 
ZEXTERN int ZEXPORT inflateBack OF((z_streamp strm,
 
                                    in_func in, void FAR *in_desc,
 
                                    out_func out, void FAR *out_desc));
 
/*
 
     inflateBack() does a raw inflate with a single call using a call-back
 
   interface for input and output.  This is more efficient than inflate() for
 
   file i/o applications in that it avoids copying between the output and the
 
   sliding window by simply making the window itself the output buffer.  This
 
   function trusts the application to not change the output buffer passed by
 
   the output function, at least until inflateBack() returns.
 

	
 
     inflateBackInit() must be called first to allocate the internal state
 
   and to initialize the state with the user-provided window buffer.
 
   inflateBack() may then be used multiple times to inflate a complete, raw
 
   deflate stream with each call.  inflateBackEnd() is then called to free
 
   the allocated state.
 

	
 
     A raw deflate stream is one with no zlib or gzip header or trailer.
 
   This routine would normally be used in a utility that reads zip or gzip
 
   files and writes out uncompressed files.  The utility would decode the
 
   header and process the trailer on its own, hence this routine expects
 
   only the raw deflate stream to decompress.  This is different from the
 
   normal behavior of inflate(), which expects either a zlib or gzip header and
 
   trailer around the deflate stream.
 

	
 
     inflateBack() uses two subroutines supplied by the caller that are then
 
   called by inflateBack() for input and output.  inflateBack() calls those
 
   routines until it reads a complete deflate stream and writes out all of the
 
   uncompressed data, or until it encounters an error.  The function's
 
   parameters and return types are defined above in the in_func and out_func
 
   typedefs.  inflateBack() will call in(in_desc, &buf) which should return the
 
   number of bytes of provided input, and a pointer to that input in buf.  If
 
   there is no input available, in() must return zero--buf is ignored in that
 
   case--and inflateBack() will return a buffer error.  inflateBack() will call
 
   out(out_desc, buf, len) to write the uncompressed data buf[0..len-1].  out()
 
   should return zero on success, or non-zero on failure.  If out() returns
 
   non-zero, inflateBack() will return with an error.  Neither in() nor out()
 
   are permitted to change the contents of the window provided to
 
   inflateBackInit(), which is also the buffer that out() uses to write from.
 
   The length written by out() will be at most the window size.  Any non-zero
 
   amount of input may be provided by in().
 

	
 
     For convenience, inflateBack() can be provided input on the first call by
 
   setting strm->next_in and strm->avail_in.  If that input is exhausted, then
 
   in() will be called.  Therefore strm->next_in must be initialized before
 
   calling inflateBack().  If strm->next_in is Z_NULL, then in() will be called
 
   immediately for input.  If strm->next_in is not Z_NULL, then strm->avail_in
 
   must also be initialized, and then if strm->avail_in is not zero, input will
 
   initially be taken from strm->next_in[0 .. strm->avail_in - 1].
 

	
 
     The in_desc and out_desc parameters of inflateBack() is passed as the
 
   first parameter of in() and out() respectively when they are called.  These
 
   descriptors can be optionally used to pass any information that the caller-
 
   supplied in() and out() functions need to do their job.
 

	
 
     On return, inflateBack() will set strm->next_in and strm->avail_in to
 
   pass back any unused input that was provided by the last in() call.  The
 
   return values of inflateBack() can be Z_STREAM_END on success, Z_BUF_ERROR
 
   if in() or out() returned an error, Z_DATA_ERROR if there was a format
 
   error in the deflate stream (in which case strm->msg is set to indicate the
 
   nature of the error), or Z_STREAM_ERROR if the stream was not properly
 
   initialized.  In the case of Z_BUF_ERROR, an input or output error can be
 
   distinguished using strm->next_in which will be Z_NULL only if in() returned
 
   an error.  If strm->next is not Z_NULL, then the Z_BUF_ERROR was due to
 
   out() returning non-zero.  (in() will always be called before out(), so
 
   strm->next_in is assured to be defined if out() returns non-zero.)  Note
 
   that inflateBack() cannot return Z_OK.
 
*/
 

	
 
ZEXTERN int ZEXPORT inflateBackEnd OF((z_streamp strm));
 
/*
 
     All memory allocated by inflateBackInit() is freed.
 

	
 
     inflateBackEnd() returns Z_OK on success, or Z_STREAM_ERROR if the stream
 
   state was inconsistent.
 
*/
 

	
 
ZEXTERN uLong ZEXPORT zlibCompileFlags OF((void));
 
/* Return flags indicating compile-time options.
 

	
 
    Type sizes, two bits each, 00 = 16 bits, 01 = 32, 10 = 64, 11 = other:
 
     1.0: size of uInt
 
     3.2: size of uLong
 
     5.4: size of voidpf (pointer)
 
     7.6: size of z_off_t
 

	
 
    Compiler, assembler, and debug options:
 
     8: DEBUG
 
     9: ASMV or ASMINF -- use ASM code
 
     10: ZLIB_WINAPI -- exported functions use the WINAPI calling convention
 
     11: 0 (reserved)
 

	
 
    One-time table building (smaller code, but not thread-safe if true):
 
     12: BUILDFIXED -- build static block decoding tables when needed
 
     13: DYNAMIC_CRC_TABLE -- build CRC calculation tables when needed
 
     14,15: 0 (reserved)
 

	
 
    Library content (indicates missing functionality):
 
     16: NO_GZCOMPRESS -- gz* functions cannot compress (to avoid linking
 
                          deflate code when not needed)
 
     17: NO_GZIP -- deflate can't write gzip streams, and inflate can't detect
 
                    and decode gzip streams (to avoid linking crc code)
 
     18-19: 0 (reserved)
 

	
 
    Operation variations (changes in library functionality):
 
     20: PKZIP_BUG_WORKAROUND -- slightly more permissive inflate
 
     21: FASTEST -- deflate algorithm with only one, lowest compression level
 
     22,23: 0 (reserved)
 

	
 
    The sprintf variant used by gzprintf (zero is best):
 
     24: 0 = vs*, 1 = s* -- 1 means limited to 20 arguments after the format
 
     25: 0 = *nprintf, 1 = *printf -- 1 means gzprintf() not secure!
 
     26: 0 = returns value, 1 = void -- 1 means inferred string length returned
 

	
 
    Remainder:
 
     27-31: 0 (reserved)
 
 */
 

	
 

	
 
                        /* utility functions */
 

	
 
/*
 
     The following utility functions are implemented on top of the
 
   basic stream-oriented functions. To simplify the interface, some
 
   default options are assumed (compression level and memory usage,
 
   standard memory allocation functions). The source code of these
 
   utility functions can easily be modified if you need special options.
 
*/
 

	
 
ZEXTERN int ZEXPORT compress OF((Bytef *dest,   uLongf *destLen,
 
                                 const Bytef *source, uLong sourceLen));
 
/*
 
     Compresses the source buffer into the destination buffer.  sourceLen is
 
   the byte length of the source buffer. Upon entry, destLen is the total
 
   size of the destination buffer, which must be at least the value returned
 
   by compressBound(sourceLen). Upon exit, destLen is the actual size of the
 
   compressed buffer.
 
     This function can be used to compress a whole file at once if the
 
   input file is mmap'ed.
 
     compress returns Z_OK if success, Z_MEM_ERROR if there was not
 
   enough memory, Z_BUF_ERROR if there was not enough room in the output
 
   buffer.
 
*/
 

	
 
ZEXTERN int ZEXPORT compress2 OF((Bytef *dest,   uLongf *destLen,
 
                                  const Bytef *source, uLong sourceLen,
 
                                  int level));
 
/*
 
     Compresses the source buffer into the destination buffer. The level
 
   parameter has the same meaning as in deflateInit.  sourceLen is the byte
 
   length of the source buffer. Upon entry, destLen is the total size of the
 
   destination buffer, which must be at least the value returned by
 
   compressBound(sourceLen). Upon exit, destLen is the actual size of the
 
   compressed buffer.
 

	
 
     compress2 returns Z_OK if success, Z_MEM_ERROR if there was not enough
 
   memory, Z_BUF_ERROR if there was not enough room in the output buffer,
 
   Z_STREAM_ERROR if the level parameter is invalid.
 
*/
 

	
 
ZEXTERN uLong ZEXPORT compressBound OF((uLong sourceLen));
 
/*
 
     compressBound() returns an upper bound on the compressed size after
 
   compress() or compress2() on sourceLen bytes.  It would be used before
 
   a compress() or compress2() call to allocate the destination buffer.
 
*/
 

	
 
ZEXTERN int ZEXPORT uncompress OF((Bytef *dest,   uLongf *destLen,
 
                                   const Bytef *source, uLong sourceLen));
 
/*
 
     Decompresses the source buffer into the destination buffer.  sourceLen is
 
   the byte length of the source buffer. Upon entry, destLen is the total
 
   size of the destination buffer, which must be large enough to hold the
 
   entire uncompressed data. (The size of the uncompressed data must have
 
   been saved previously by the compressor and transmitted to the decompressor
 
   by some mechanism outside the scope of this compression library.)
 
   Upon exit, destLen is the actual size of the compressed buffer.
 
     This function can be used to decompress a whole file at once if the
 
   input file is mmap'ed.
 

	
 
     uncompress returns Z_OK if success, Z_MEM_ERROR if there was not
 
   enough memory, Z_BUF_ERROR if there was not enough room in the output
 
   buffer, or Z_DATA_ERROR if the input data was corrupted or incomplete.
 
*/
 

	
 

	
 
typedef voidp gzFile;
 

	
 
ZEXTERN gzFile ZEXPORT gzopen  OF((const char *path, const char *mode));
 
/*
 
     Opens a gzip (.gz) file for reading or writing. The mode parameter
 
   is as in fopen ("rb" or "wb") but can also include a compression level
 
   ("wb9") or a strategy: 'f' for filtered data as in "wb6f", 'h' for
 
   Huffman only compression as in "wb1h", or 'R' for run-length encoding
 
   as in "wb1R". (See the description of deflateInit2 for more information
 
   about the strategy parameter.)
 

	
 
     gzopen can be used to read a file which is not in gzip format; in this
 
   case gzread will directly read from the file without decompression.
 

	
 
     gzopen returns NULL if the file could not be opened or if there was
 
   insufficient memory to allocate the (de)compression state; errno
 
   can be checked to distinguish the two cases (if errno is zero, the
 
   zlib error is Z_MEM_ERROR).  */
 

	
 
ZEXTERN gzFile ZEXPORT gzdopen  OF((int fd, const char *mode));
 
/*
 
     gzdopen() associates a gzFile with the file descriptor fd.  File
 
   descriptors are obtained from calls like open, dup, creat, pipe or
 
   fileno (in the file has been previously opened with fopen).
 
   The mode parameter is as in gzopen.
 
     The next call of gzclose on the returned gzFile will also close the
 
   file descriptor fd, just like fclose(fdopen(fd), mode) closes the file
 
   descriptor fd. If you want to keep fd open, use gzdopen(dup(fd), mode).
 
     gzdopen returns NULL if there was insufficient memory to allocate
 
   the (de)compression state.
 
*/
 

	
 
ZEXTERN int ZEXPORT gzsetparams OF((gzFile file, int level, int strategy));
 
/*
 
     Dynamically update the compression level or strategy. See the description
 
   of deflateInit2 for the meaning of these parameters.
 
     gzsetparams returns Z_OK if success, or Z_STREAM_ERROR if the file was not
 
   opened for writing.
 
*/
 

	
 
ZEXTERN int ZEXPORT    gzread  OF((gzFile file, voidp buf, unsigned len));
 
/*
 
     Reads the given number of uncompressed bytes from the compressed file.
 
   If the input file was not in gzip format, gzread copies the given number
 
   of bytes into the buffer.
 
     gzread returns the number of uncompressed bytes actually read (0 for
 
   end of file, -1 for error). */
 

	
 
ZEXTERN int ZEXPORT    gzwrite OF((gzFile file,
 
                                   voidpc buf, unsigned len));
 
/*
 
     Writes the given number of uncompressed bytes into the compressed file.
 
   gzwrite returns the number of uncompressed bytes actually written
 
   (0 in case of error).
 
*/
 

	
 
ZEXTERN int ZEXPORTVA   gzprintf OF((gzFile file, const char *format, ...));
 
/*
 
     Converts, formats, and writes the args to the compressed file under
 
   control of the format string, as in fprintf. gzprintf returns the number of
 
   uncompressed bytes actually written (0 in case of error).  The number of
 
   uncompressed bytes written is limited to 4095. The caller should assure that
 
   this limit is not exceeded. If it is exceeded, then gzprintf() will return
 
   return an error (0) with nothing written. In this case, there may also be a
 
   buffer overflow with unpredictable consequences, which is possible only if
 
   zlib was compiled with the insecure functions sprintf() or vsprintf()
 
   because the secure snprintf() or vsnprintf() functions were not available.
 
*/
 

	
 
ZEXTERN int ZEXPORT gzputs OF((gzFile file, const char *s));
 
/*
 
      Writes the given null-terminated string to the compressed file, excluding
 
   the terminating null character.
 
      gzputs returns the number of characters written, or -1 in case of error.
 
*/
 

	
 
ZEXTERN char * ZEXPORT gzgets OF((gzFile file, char *buf, int len));
 
/*
 
      Reads bytes from the compressed file until len-1 characters are read, or
 
   a newline character is read and transferred to buf, or an end-of-file
 
   condition is encountered.  The string is then terminated with a null
 
   character.
 
      gzgets returns buf, or Z_NULL in case of error.
 
*/
 

	
 
ZEXTERN int ZEXPORT    gzputc OF((gzFile file, int c));
 
/*
 
      Writes c, converted to an unsigned char, into the compressed file.
 
   gzputc returns the value that was written, or -1 in case of error.
 
*/
 

	
 
ZEXTERN int ZEXPORT    gzgetc OF((gzFile file));
 
/*
 
      Reads one byte from the compressed file. gzgetc returns this byte
 
   or -1 in case of end of file or error.
 
*/
 

	
 
ZEXTERN int ZEXPORT    gzungetc OF((int c, gzFile file));
 
/*
 
      Push one character back onto the stream to be read again later.
 
   Only one character of push-back is allowed.  gzungetc() returns the
 
   character pushed, or -1 on failure.  gzungetc() will fail if a
 
   character has been pushed but not read yet, or if c is -1. The pushed
 
   character will be discarded if the stream is repositioned with gzseek()
 
   or gzrewind().
 
*/
 

	
 
ZEXTERN int ZEXPORT    gzflush OF((gzFile file, int flush));
 
/*
 
     Flushes all pending output into the compressed file. The parameter
 
   flush is as in the deflate() function. The return value is the zlib
 
   error number (see function gzerror below). gzflush returns Z_OK if
 
   the flush parameter is Z_FINISH and all output could be flushed.
 
     gzflush should be called only when strictly necessary because it can
 
   degrade compression.
 
*/
 

	
 
ZEXTERN z_off_t ZEXPORT    gzseek OF((gzFile file,
 
                                      z_off_t offset, int whence));
 
/*
 
      Sets the starting position for the next gzread or gzwrite on the
 
   given compressed file. The offset represents a number of bytes in the
 
   uncompressed data stream. The whence parameter is defined as in lseek(2);
 
   the value SEEK_END is not supported.
 
     If the file is opened for reading, this function is emulated but can be
 
   extremely slow. If the file is opened for writing, only forward seeks are
 
   supported; gzseek then compresses a sequence of zeroes up to the new
 
   starting position.
 

	
 
      gzseek returns the resulting offset location as measured in bytes from
 
   the beginning of the uncompressed stream, or -1 in case of error, in
 
   particular if the file is opened for writing and the new starting position
 
   would be before the current position.
 
*/
 

	
 
ZEXTERN int ZEXPORT    gzrewind OF((gzFile file));
 
/*
 
     Rewinds the given file. This function is supported only for reading.
 

	
 
   gzrewind(file) is equivalent to (int)gzseek(file, 0L, SEEK_SET)
 
*/
 

	
 
ZEXTERN z_off_t ZEXPORT    gztell OF((gzFile file));
 
/*
 
     Returns the starting position for the next gzread or gzwrite on the
 
   given compressed file. This position represents a number of bytes in the
 
   uncompressed data stream.
 

	
 
   gztell(file) is equivalent to gzseek(file, 0L, SEEK_CUR)
 
*/
 

	
 
ZEXTERN int ZEXPORT gzeof OF((gzFile file));
 
/*
 
     Returns 1 when EOF has previously been detected reading the given
 
   input stream, otherwise zero.
 
*/
 

	
 
ZEXTERN int ZEXPORT gzdirect OF((gzFile file));
 
/*
 
     Returns 1 if file is being read directly without decompression, otherwise
 
   zero.
 
*/
 

	
 
ZEXTERN int ZEXPORT    gzclose OF((gzFile file));
 
/*
 
     Flushes all pending output if necessary, closes the compressed file
 
   and deallocates all the (de)compression state. The return value is the zlib
 
   error number (see function gzerror below).
 
*/
 

	
 
ZEXTERN const char * ZEXPORT gzerror OF((gzFile file, int *errnum));
 
/*
 
     Returns the error message for the last error which occurred on the
 
   given compressed file. errnum is set to zlib error number. If an
 
   error occurred in the file system and not in the compression library,
 
   errnum is set to Z_ERRNO and the application may consult errno
 
   to get the exact error code.
 
*/
 

	
 
ZEXTERN void ZEXPORT gzclearerr OF((gzFile file));
 
/*
 
     Clears the error and end-of-file flags for file. This is analogous to the
 
   clearerr() function in stdio. This is useful for continuing to read a gzip
 
   file that is being written concurrently.
 
*/
 

	
 
                        /* checksum functions */
 

	
 
/*
 
     These functions are not related to compression but are exported
 
   anyway because they might be useful in applications using the
 
   compression library.
 
*/
 

	
 
ZEXTERN uLong ZEXPORT adler32 OF((uLong adler, const Bytef *buf, uInt len));
 
/*
 
     Update a running Adler-32 checksum with the bytes buf[0..len-1] and
 
   return the updated checksum. If buf is NULL, this function returns
 
   the required initial value for the checksum.
 
   An Adler-32 checksum is almost as reliable as a CRC32 but can be computed
 
   much faster. Usage example:
 

	
 
     uLong adler = adler32(0L, Z_NULL, 0);
 

	
 
     while (read_buffer(buffer, length) != EOF) {
 
       adler = adler32(adler, buffer, length);
 
     }
 
     if (adler != original_adler) error();
 
*/
 

	
 
ZEXTERN uLong ZEXPORT adler32_combine OF((uLong adler1, uLong adler2,
 
                                          z_off_t len2));
 
/*
 
     Combine two Adler-32 checksums into one.  For two sequences of bytes, seq1
 
   and seq2 with lengths len1 and len2, Adler-32 checksums were calculated for
 
   each, adler1 and adler2.  adler32_combine() returns the Adler-32 checksum of
 
   seq1 and seq2 concatenated, requiring only adler1, adler2, and len2.
 
*/
 

	
 
ZEXTERN uLong ZEXPORT crc32   OF((uLong crc, const Bytef *buf, uInt len));
 
/*
 
     Update a running CRC-32 with the bytes buf[0..len-1] and return the
 
   updated CRC-32. If buf is NULL, this function returns the required initial
 
   value for the for the crc. Pre- and post-conditioning (one's complement) is
 
   performed within this function so it shouldn't be done by the application.
 
   Usage example:
 

	
 
     uLong crc = crc32(0L, Z_NULL, 0);
 

	
 
     while (read_buffer(buffer, length) != EOF) {
 
       crc = crc32(crc, buffer, length);
 
     }
 
     if (crc != original_crc) error();
 
*/
 

	
 
ZEXTERN uLong ZEXPORT crc32_combine OF((uLong crc1, uLong crc2, z_off_t len2));
 

	
 
/*
 
     Combine two CRC-32 check values into one.  For two sequences of bytes,
 
   seq1 and seq2 with lengths len1 and len2, CRC-32 check values were
 
   calculated for each, crc1 and crc2.  crc32_combine() returns the CRC-32
 
   check value of seq1 and seq2 concatenated, requiring only crc1, crc2, and
 
   len2.
 
*/
 

	
 

	
 
                        /* various hacks, don't look :) */
 

	
 
/* deflateInit and inflateInit are macros to allow checking the zlib version
 
 * and the compiler's view of z_stream:
 
 */
 
ZEXTERN int ZEXPORT deflateInit_ OF((z_streamp strm, int level,
 
                                     const char *version, int stream_size));
 
ZEXTERN int ZEXPORT inflateInit_ OF((z_streamp strm,
 
                                     const char *version, int stream_size));
 
ZEXTERN int ZEXPORT deflateInit2_ OF((z_streamp strm, int  level, int  method,
 
                                      int windowBits, int memLevel,
 
                                      int strategy, const char *version,
 
                                      int stream_size));
 
ZEXTERN int ZEXPORT inflateInit2_ OF((z_streamp strm, int  windowBits,
 
                                      const char *version, int stream_size));
 
ZEXTERN int ZEXPORT inflateBackInit_ OF((z_streamp strm, int windowBits,
 
                                         unsigned char FAR *window,
 
                                         const char *version,
 
                                         int stream_size));
 
#define deflateInit(strm, level) \
 
        deflateInit_((strm), (level),       ZLIB_VERSION, sizeof(z_stream))
 
#define inflateInit(strm) \
 
        inflateInit_((strm),                ZLIB_VERSION, sizeof(z_stream))
 
#define deflateInit2(strm, level, method, windowBits, memLevel, strategy) \
 
        deflateInit2_((strm),(level),(method),(windowBits),(memLevel),\
 
                      (strategy),           ZLIB_VERSION, sizeof(z_stream))
 
#define inflateInit2(strm, windowBits) \
 
        inflateInit2_((strm), (windowBits), ZLIB_VERSION, sizeof(z_stream))
 
#define inflateBackInit(strm, windowBits, window) \
 
        inflateBackInit_((strm), (windowBits), (window), \
 
        ZLIB_VERSION, sizeof(z_stream))
 

	
 

	
 
#if !defined(ZUTIL_H) && !defined(NO_DUMMY_DECL)
 
    struct internal_state {int dummy;}; /* hack for buggy compilers */
 
#endif
 

	
 
ZEXTERN const char   * ZEXPORT zError           OF((int));
 
ZEXTERN int            ZEXPORT inflateSyncPoint OF((z_streamp z));
 
ZEXTERN const uLongf * ZEXPORT get_crc_table    OF((void));
 

	
 
#ifdef __cplusplus
 
}
 
#endif
 

	
 
#endif /* ZLIB_H */
src/ChangeLog
Show inline comments
 
2010-06-18    <guravage@caterpie.sen.cwi.nl>
 

	
 
	* VirtualLeaf.pro: Changed default LIBXML2DIR, LIBICONVDIR and LIBZDIR to corresponding distribution lib directories.
 
	* libplugin.pro: Ditto.
 

	
 
	* Makefile (clean): add if stmt not to `touch` on windows.
 

	
 
2010-06-17    <guravage@caterpie.sen.cwi.nl>
 

	
 
	* VirtualLeaf.pro: Removed perl references.
 
	* libplugin.pro: Ditto.
 

	
 
2010-06-15    <guravage@caterpie.sen.cwi.nl>
 

	
 
	* VirtualLeaf.pro: Removed xmlwritecode.cpp from SOURCES list.
 

	
 
	* xmlwrite.cpp (XMLSave): Removed references to XMLWriteLeafSourceCode and XMLWriteReactionsCode.
 
	* xmlwrite.h (XMLIO): Ditto!
 

	
 
	* mesh.cpp (findNextBoundaryNode): Initialize Node *next_boundary_node = NULL;
 

	
 
	* xmlwrite.cpp (XMLReadSimtime): Removed unused variable cur
 
	(XMLReadWalls): viz_flux need not be declared twice; default value of 0.0.
 
	(XMLReadCells): Removed unused count variable.
 
	(XMLReadSimtime): Removed unused cur variable.
 
	(XMLRead): Removed unused v_str variable.
 

	
 
	* simitembase.cpp (userMove): Use assignment merely to obviate compilation warning.
 
	(SimItemBase) Ditto.
 

	
 
	* qcanvasarrow.h (QGraphicsLineItem): Use assignment merely to obviate compilation warning.
 

	
 
	* output.cpp (OpenWriteFile): Removed unused par variable.
 

	
 
	* nodeitem.cpp (paint): Use assignment merely to obviate compilation warning.
 

	
 
	* forwardeuler.cpp (odeint): Use assignment merely to obviate compilation warning.
 

	
 
	* cell.cpp (DivideOverGivenLine): Use assignment merely to obviate compilation warning.
 

	
 
	* canvas.cpp (FigureEditor): Use assignments merely to obviate compilation errors.
 
	(mousePressEvent): Removed unused item variable.
 

	
 
	* apoplastitem.cpp
 
	(ApoplastItem): Removed unused par variable.
 
	(OnClick): Use NULL assignment merely to obviate compilation warning.
 

	
 
	* mainbase.h (MainBase): Use assignment merely to obviate compilation warning.
 

	
 
	* cellbase.h (CellsStaticDatamembers): Use assignment merely to obviate compilation warning.
 

	
 

	
 
	* cell.cpp: Wrapped diagnostic output in QDEBUG blocks.
 
	* VirtualLeaf.cpp ditto.
 
	* canvas.cpp ditto.
 
	* cell.cpp ditto.
 
	* data_plot.cpp ditto.
 
	* forwardeuler.cpp ditto.
 
	* mesh.cpp ditto.
 
	* mesh.h
 
	* random.cpp ditto.
 
	* wall.cpp ditto.
 
	* wallbase.cpp ditto.
 
	* wallitem.cpp ditto.
 

	
 

	
 
2010-06-07    <guravage@caterpie.sen.cwi.nl>
 

	
 
	* VirtualLeaf.pro: Removed explicit perl invocation to regerenerate parameter files.
 
	* libplugin.pro: ditto.
 

	
 
2010-06-03    <guravage@caterpie.sen.cwi.nl>
 

	
 
	* pardialog.h: Added default versions of this automatically generated file.
 
	* pardialog.cpp: ditto.
 
	* parameter.h: ditto.
 
	* parameter.cpp: ditto.
 

	
 
	* VirtualLeaf.pro: delete/generate  parameter.{h,cpp}and pardialog.{h,cpp} only if perl is installed.
 
 	* libplugin.pro: dito.
 

	
 
	* Makefile: Added top-level Makefile
 

	
 
2010-05-10    <guravage@caterpie.sen.cwi.nl>
 

	
 
	* VirtualLeaf.pro: Added -fPIC option to QMAKE_CXXFLAGS.
 

	
src/Makefile
Show inline comments
 
# $Id$
 

	
 
QMAKE = qmake
 

	
 
# Set $(MAKE) to the name of the make command on your machine, e.g. 'make' on Linux and 'mingw32-make' on windows.
 
MAKE =  make # mingw32-make
 

	
 
all: VirtualLeaf libplugin plugins
 

	
 
VirtualLeaf: Makefile.VirtualLeaf
 
	make -f Makefile.VirtualLeaf
 
	$(MAKE) -f Makefile.VirtualLeaf
 

	
 
Makefile.VirtualLeaf: VirtualLeaf.pro
 
	$(QMAKE) -makefile -o $@ $< 
 

	
 
libplugin: Makefile.libplugin
 
	make -f Makefile.libplugin
 
	$(MAKE) -f Makefile.libplugin
 

	
 
Makefile.libplugin: libplugin.pro
 
	$(QMAKE) -makefile -o $@ $< 
 

	
 
plugins:
 
	make -C build_models
 
	$(MAKE) -C build_models
 

	
 
clean:
 
	make -f Makefile.libplugin clean
 
	make -f Makefile.VirtualLeaf clean
 
	make -C build_models clean
 
	$(MAKE) -f Makefile.libplugin clean
 
	$(MAKE) -f Makefile.VirtualLeaf clean
 
	$(MAKE) -C build_models clean
 
ifeq ($(MAKE),make)
 
	touch VirtualLeaf.pro
 
	touch libplugin.pro
 
endif
 

	
 
#finis
src/VirtualLeaf.pro
Show inline comments
 
#
 
#  $Id$
 
#
 
#  This file is part of the Virtual Leaf.
 
#
 
#  The Virtual Leaf 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 3 of the License, or
 
#  (at your option) any later version.
 
#
 
#  The Virtual Leaf 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 the Virtual Leaf.  If not, see <http://www.gnu.org/licenses/>.
 
#
 
#  Copyright 2010 Roeland Merks.
 
#
 

	
 
CONFIG += release
 
CONFIG -= debug
 
CONFIG += qt
 

	
 
QMAKE_CXXFLAGS += -fexceptions
 
QMAKE_CXXFLAGS_DEBUG += -g3
 
QMAKE_CXXFLAGS_DEBUG += -DQDEBUG
 

	
 
#REACTIONS = reactions_auxin_growth.h 
 
#REACTIONS = reactions_meinhardt.h
 
#REACTIONS = reactions_pce_growth.h
 
DEFINES += QTGRAPHICS
 
DEFINES += REACTIONS_HEADER=$${REACTIONS}
 
DEFINES += REACTIONS_HEADER_STRING=\"$${REACTIONS}\"
 
DEFINES += FLEMING
 

	
 
BINDIR = ../bin
 
DESTDIR = $$BINDIR
 
TARGET = VirtualLeaf
 
TEMPLATE = app
 
PARTMPL = $${TARGET}par.tmpl
 
MAINSRC = $${TARGET}.cpp
 
QT -= network sql xml
 
QT += qt3support
 

	
 
!win32 {
 
 GRAPHICS = qt #qwt
 
}
 

	
 
win32 {
 
 CONFIG += console
 
 LIBXML2DIR = C:\libxml2
 
 LIBICONVDIR = C:\libiconv
 
 LIBZDIR = C:\libz
 
 LIBXML2DIR = ..\lib\libxml2
 
 LIBICONVDIR = ..\lib\libiconv
 
 LIBZDIR = ..\lib\libz
 
 GRAPHICS = qt 
 
 RC_FILE = VirtualLeaf.rc
 
 QMAKE_CXXFLAGS += -DLIBXML_STATIC
 
 QMAKE_CXXFLAGS += -I$${LIBXML2DIR}\include -I$${LIBICONVDIR}\include -I$${LIBZDIR}\include
 
 QMAKE_POST_LINK = "\
 
  C:\Bin\cp release\VirtualLeaf.exe \
 
  C:\Qt\4.5.3\bin\Qt3Support4.dll \
 
  C:\Qt\4.5.3\bin\QtGui4.dll \
 
  C:\Qt\4.5.3\bin\QtSql4.dll \
 
  C:\Qt\4.5.3\bin\QtXml4.dll \
 
  C:\Qt\4.5.3\bin\QtCore4.dll \
 
  C:\Qt\4.5.3\bin\QtNetwork4.dll \
 
  C:\Qt\4.5.3\bin\QtSvg4.dll \
 
  C:\bin\iconv.dll \
 
  C:\bin\libxml2.dll \
 
  C:\bin\zlib1.dll \
 
  C:\MinGW\bin\mingwm10.dll \
 
  $${DESTDIR}"
 
 LIBS += -L$${LIBXML2DIR}\lib -lxml2 -L$${LIBICONVDIR}\lib -L$${LIBZDIR}\lib  -lz -lm -lwsock32 -liconv
 
}
 

	
 

	
 
macx:release {
 
 LIBS+= -dead_strip
 
}
 

	
 
unix {
 
 CC = /usr/bin/gcc 
 
 QWTDIR = /ufs/guravage/opt/qwt-5.2.1-svn
 
 QMAKE_LIBDIR += $$QWTDIR/lib 
 
 QMAKE_CXXFLAGS += -fPIC -I/usr/include/libxml2
 
 QMAKE_LFLAGS += -fPIC
 
 LIBS += -lxml2 -lz -lm 
 
}
 

	
 
# Input
 
HEADERS += \
 
 apoplastitem.h \
 
 canvas.h \
 
 cellbase.h \
 
 cell.h \
 
 cellitem.h \
 
 forwardeuler.h \
 
 infobar.h \
 
 mainbase.h \
 
 mainbase.h \
 
 matrix.h \
 
 mesh.h \
 
 miscq.h \
 
 modelcatalogue.h \
 
 Neighbor.h \
 
 node.h \
 
 nodeitem.h \
 
 nodeset.h \
 
 OptionFileDialog.h \
 
 output.h \
 
 parameter.h \
 
 pardialog.h \
 
 parse.h \
 
 pi.h \
 
 qcanvasarrow.h \
 
 random.h \
 
 rungekutta.h \
 
 simitembase.h \
 
 simplugin.h \
 
 sqr.h \
 
 tiny.h \
 
 transporterdialog.h \
 
 UniqueMessage.h \
 
 vector.h \
 
 wallbase.h \
 
 wall.h \
 
 wallitem.h \
 
 warning.h \
 
 xmlwrite.h \
 
 $${PARTMPL}
 

	
 
SOURCES += \
 
 apoplastitem.cpp \
 
 canvas.cpp \
 
 cellbase.cpp \
 
 cell.cpp \
 
 cellitem.cpp \
 
 forwardeuler.cpp \
 
 mainbase.cpp \
 
 matrix.cpp \
 
 mesh.cpp \
 
 miscq.cpp \
 
 modelcatalogue.cpp \
 
 Neighbor.cpp \
 
 node.cpp \
 
 nodeitem.cpp \
 
 nodeset.cpp \
 
 OptionFileDialog.cpp \
 
 output.cpp \
 
 parameter.cpp \
 
 pardialog.cpp \
 
 parse.cpp \
 
 random.cpp \
 
 rungekutta.cpp \
 
 simitembase.cpp \
 
 transporterdialog.cpp \
 
 UniqueMessage.cpp \
 
 vector.cpp \
 
 wallbase.cpp \
 
 wall.cpp \
 
 wallitem.cpp \
 
 warning.cpp \
 
 xmlwrite.cpp \
 
 $$MAINSRC
 

	
 
contains( TARGET, leaf_fleming ) {
 
 DEFINES += FLEMING	
 
}
 

	
 
contains(GRAPHICS, qwt) {
 
 #macx:LIBS += -L$$QWTDIR/lib -lqwt
 
 #win32:LIBS += -L$$QWTDIR/lib -lqwt5
 
 #LIBS += -L$$QWTDIR/lib -lqwt
 
 INCLUDEPATH += $$QWTDIR/include
 
 DEFINES += HAVE_QWT
 
 HEADERS += data_plot.h
 
 SOURCES += data_plot.cpp
 
}
 

	
 
contains( GRAPHICS, qt ) {
 
 message( "Building Qt executable" )
 
 QMAKE_CXXFLAGS += -DQTGRAPHICS # -fpermissive
 
}
 

	
 
contains( GRAPHICS, xfig ) {
 
 message("Building Xfig executable (background runnable).")
 
 QMAKE_CXXFLAGS += -DXFIGGRAPHICS
 
}
 

	
 
contains( GRAPHICS, x11 ) {
 
 !unix {
 
  error("X11 graphics only available on Unix systems.")
 
 }
 
 message("Building X11 executable")
 
 SOURCES += x11graph.cpp
 
 HEADERS += x11graph.h
 
 QMAKE_CXXFLAGS += -DX11GRAPHICS
 
 CONFIG -= qt
 
 CONFIG += x11
 
 unix:LIBS += -lpng
 
}
 

	
 
#contains( GRAPHICS, qwt ) {
 
# 	QMAKE_POST_LINK = "install_name_tool -change libqwt.5.dylib $$QWTDIR/lib/libqwt.dylib $${TARGET}.app/Contents/MacOS/$${TARGET}; \
 
#}
 

	
 
# MACOSX packaging
 
macx {
 
ICON = leaficon.icns
 
QMAKE_POST_LINK = "\
 
	#install_name_tool -change libqwt.5.dylib $$QWTDIR/lib/libqwt.dylib $${TARGET}.app/Contents/MacOS/$${TARGET}; \
 
	cp leaficon.icns $${DESTDIR}/$${TARGET}.app; \
 
	mkdir $${DESTDIR}/$${TARGET}.app/Contents/Frameworks; \
 
	cp -R /Library/Frameworks/QtCore.framework $${DESTDIR}/$${TARGET}.app/Contents/Frameworks; \
 
	cp -R /Library/Frameworks/QtGui.framework $${DESTDIR}/$${TARGET}.app/Contents/Frameworks; \
 
	cp -R /Library/Frameworks/Qt3Support.framework $${DESTDIR}/$${TARGET}.app/Contents/Frameworks; \
 
	#cp /usr/local/qwt/lib/libqwt.dylib $${DESTDIR}/$${TARGET}.app/Contents/Frameworks; \
 
	#install_name_tool -id @executable_path/../Frameworks/libqwt.dylib $${DESTDIR}/$${TARGET}.app/Contents/Frameworks/libqwt.dylib; \
 
	install_name_tool -change /usr/local/qwt/lib/libqwt.dylib @executable_path/../Frameworks/libqwt.dylib $${DESTDIR}/$${TARGET}.app/Contents/MacOS/$${TARGET};\
 
	install_name_tool -id @executable_path/../Frameworks/QtCore.framework/Versions/Current/QtCore $${DESTDIR}/$${TARGET}.app/Contents/Frameworks/QtCore.framework/Versions/4.0/QtCore; \
 
	install_name_tool -id @executable_path/../Frameworks/QtGui.framework/Versions/Current/QtGui $${DESTDIR}/$${TARGET}.app/Contents/Frameworks/QtGui.framework/Versions/4.0/QtGui; \
 
	install_name_tool -id @executable_path/../Frameworks/Qt3Support.framework/Versions/Current/Qt3Support $${DESTDIR}/$${TARGET}.app/Contents/Frameworks/Qt3Support.framework/Versions/4.0/Qt3Support; \
 
	install_name_tool -change Frameworks/QtCore.framework/Versions/Current/QtCore @executable_path/../Frameworks/QtCore.framework/Versions/4.0/QtCore $${DESTDIR}/$${TARGET}.app/Contents/MacOS/$${TARGET}; \
 
	install_name_tool -change Frameworks/QtGui.framework/Versions/Current/QtGui @executable_path/../Frameworks/QtGui.framework/Versions/4.0/QtGui $${DESTDIR}/$${TARGET}.app/Contents/MacOS/$${TARGET}; \
 
	install_name_tool -change Frameworks/Qt3Support.framework/Versions/Current/Qt3Support @executable_path/../Frameworks/Qt3Support.framework/Versions/4.0/Qt3Support $${DESTDIR}/$${TARGET}.app/Contents/MacOS/$${TARGET}; \
 
	install_name_tool -change Frameworks/QtCore.framework/Versions/Current/QtCore @executable_path/../Frameworks/QtCore.framework/Versions/4.0/QtCore $${DESTDIR}/$${TARGET}.app/Contents/Frameworks/Qt3Support.framework/Versions/4.0/Qt3Support; \
 
	install_name_tool -change Frameworks/QtGui.framework/Versions/Current/QtGui @executable_path/../Frameworks/QtGui.framework/Versions/4.0/QtGui $${DESTDIR}/$${TARGET}.app/Contents/Frameworks/Qt3Support.framework/Versions/4.0/Qt3Support; \
 
	install_name_tool -change Frameworks/QtCore.framework/Versions/Current/QtCore @executable_path/../Frameworks/QtCore.framework/Versions/4.0/QtCore $${DESTDIR}/$${TARGET}.app/Contents/Frameworks/Qt3Support.framework/Versions/4.0/Qt3Support; "
 
}
 

	
 
# finis
src/build_models/ChangeLog
Show inline comments
 
2010-06-18    <guravage@caterpie.sen.cwi.nl>
 

	
 
	* plugin_auxingrowth.pro: Changed default LIBXML2DIR, LIBICONVDIR and LIBZDIR to corresponding distribution lib directories.
 
	* plugin_meinhardt.pro: Ditto.
 
	* plugin_test.pro: Ditto.
 

	
 
	* Makefile (clean): add if stmt not to `touch` on windows.
 

	
 

	
 
2010-06-15    <guravage@caterpie.sen.cwi.nl>
 

	
 

	
 
	* testplugin.cpp (CelltoCellTransport) Use NULL assignment merely to obviate compilation warnings.
 
	(WallDynamics): Ditto.
 
	(CellDynamics): Ditto.
 
	(OnDivide): Ditto.
 

	
 
	* meinhardtplugin.cpp (OnDivide): Use NULL assignment merely to obviate compilation warnings.
 
	* (WallDynamics): Ditto.
 

	
 
	* auxingrowthplugin.cpp (OnDivide): Use NULL assignment merely to obviate compilation warnings.
 

	
 
2010-06-03    <guravage@caterpie.sen.cwi.nl>
 

	
 
	* Makefile: Added top-level Makefile.
 

	
 
2010-05-10    <guravage@caterpie.sen.cwi.nl>
 

	
 
	* plugin_test.pro: Added -fPIC option to QMAKE_CXXFLAGS.
 
	* plugin_meinhardt.pro: ditto
 
	* plugin_auxingrowth.pro: ditto
 

	
 

	
src/build_models/Makefile
Show inline comments
 
# $Id$
 

	
 
QMAKE = qmake
 

	
 
# Set $(MAKE) to the name of the make command on your machine, e.g. 'make' on Linux and 'mingw32-make' on windows.
 
MAKE = make # mingw32-make
 

	
 
all: plugin_auxingrowth plugin_meinhardt plugin_test
 

	
 
plugin_auxingrowth: Makefile.plugin_auxingrowth
 
	make -f Makefile.plugin_auxingrowth
 
	$(MAKE) -f Makefile.plugin_auxingrowth
 

	
 
Makefile.plugin_auxingrowth: plugin_auxingrowth.pro
 
	$(QMAKE) -makefile -o $@ $< 
 

	
 
plugin_meinhardt: Makefile.plugin_meinhardt
 
	make -f Makefile.plugin_meinhardt
 
	$(MAKE) -f Makefile.plugin_meinhardt
 

	
 
Makefile.plugin_meinhardt: plugin_meinhardt.pro
 
	$(QMAKE) -makefile -o $@ $< 
 

	
 
plugin_test: Makefile.plugin_test
 
	make -f Makefile.plugin_test
 
	$(MAKE) -f Makefile.plugin_test
 

	
 
Makefile.plugin_test: plugin_test.pro
 
	$(QMAKE) -makefile -o $@ $< 
 

	
 
clean:
 
	make -f Makefile.plugin_auxingrowth clean
 
	make -f Makefile.plugin_meinhardt clean
 
	make -f Makefile.plugin_test clean
 
	$(MAKE) -f Makefile.plugin_auxingrowth clean
 
	$(MAKE) -f Makefile.plugin_meinhardt clean
 
	$(MAKE) -f Makefile.plugin_test clean
 
ifeq ($(MAKE),make)
 
	touch plugin_auxingrowth.pro
 
	touch plugin_meinhardt.pro
 
	touch plugin_test.pro
 
endif
 

	
 
#finis
src/build_models/plugin_auxingrowth.pro
Show inline comments
 
#
 
# $Id$
 
#
 
#  This file is part of the Virtual Leaf.
 
#
 
#  The Virtual Leaf 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 3 of the License, or
 
#  (at your option) any later version.
 
#
 
#  The Virtual Leaf 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 the Virtual Leaf.  If not, see <http://www.gnu.org/licenses/>.
 
#
 
#  Copyright 2010 Roeland Merks.
 
#
 

	
 
CONFIG += release
 
CONFIG -= debug
 
CONFIG += plugin
 

	
 
BINDIR = ../../bin
 
LIBDIR = ../../lib
 
DEFINES = QTGRAPHICS # VLEAFPLUGIN
 
DESTDIR = $${BINDIR}/models
 
TARGET = auxingrowth
 
HEADERS = ../simplugin.h $${TARGET}plugin.h  
 
QMAKE_CXXFLAGS += -fexceptions -I..
 
QMAKE_CXXFLAGS_DEBUG += -g3
 
QMAKE_CXXFLAGS_DEBUG += -DQDEBUG
 

	
 
QT += qt3support
 
SOURCES = $${TARGET}plugin.cpp
 
TEMPLATE = lib 
 

	
 
unix {
 
 LIBS += -L$${LIBDIR} -lvleaf
 
 QMAKE_CXXFLAGS += -fPIC -I/usr/include/libxml2
 
 QMAKE_LFLAGS += -fPIC
 
}
 

	
 
win32 {
 
 LIBXML2DIR = C:\libxml2
 
 LIBICONVDIR = C:\libiconv
 
 LIBZDIR = C:\libz
 
 LIBXML2DIR = ..\..\lib\libxml2
 
 LIBICONVDIR = ..\..\lib\libiconv
 
 LIBZDIR = ..\..\lib\libz
 
 LIBS += -L$${LIBDIR} -Llib -lvleaf
 
 QMAKE_CXXFLAGS += -DLIBXML_STATIC
 
 QMAKE_CXXFLAGS += -I$${LIBXML2DIR}\include -I$${LIBICONVDIR}\include -I$${LIBZDIR}\include
 
}
 

	
 
# finis
src/build_models/plugin_meinhardt.pro
Show inline comments
 
#
 
# $Id$
 
#
 
#  This file is part of the Virtual Leaf.
 
#
 
#  The Virtual Leaf 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 3 of the License, or
 
#  (at your option) any later version.
 
#
 
#  The Virtual Leaf 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 the Virtual Leaf.  If not, see <http://www.gnu.org/licenses/>.
 
#
 
#  Copyright 2010 Roeland Merks.
 
#
 

	
 
CONFIG += release
 
CONFIG -= debug
 
CONFIG += plugin
 

	
 
BINDIR = ../../bin
 
LIBDIR = ../../lib
 
DEFINES = QTGRAPHICS # VLEAFPLUGIN
 
DESTDIR = $${BINDIR}/models
 
TARGET = meinhardt
 
HEADERS = ../simplugin.h $${TARGET}plugin.h  
 
QMAKE_CXXFLAGS += -fexceptions -I..
 
QMAKE_CXXFLAGS_DEBUG += -g3
 
QMAKE_CXXFLAGS_DEBUG += -DQDEBUG
 

	
 
QT += qt3support
 
SOURCES = $${TARGET}plugin.cpp
 
TEMPLATE = lib 
 

	
 
unix {
 
 LIBS += -L$${LIBDIR} -lvleaf
 
 QMAKE_CXXFLAGS += -fPIC -I/usr/include/libxml2
 
 QMAKE_LFLAGS += -fPIC
 
}
 

	
 
win32 {
 
 LIBXML2DIR = C:\libxml2
 
 LIBICONVDIR = C:\libiconv
 
 LIBZDIR = C:\libz
 
 LIBXML2DIR = ..\..\lib\libxml2
 
 LIBICONVDIR = ..\..\lib\libiconv
 
 LIBZDIR = ..\..\lib\libz
 
 LIBS += -L$${LIBDIR} -Llib -lvleaf
 
 QMAKE_CXXFLAGS += -DLIBXML_STATIC
 
 QMAKE_CXXFLAGS += -I$${LIBXML2DIR}\include -I$${LIBICONVDIR}\include -I$${LIBZDIR}\include
 
}
 

	
 
# finis
 

	
src/build_models/plugin_test.pro
Show inline comments
 
#
 
# $Id$
 
#
 
#  This file is part of the Virtual Leaf.
 
#
 
#  The Virtual Leaf 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 3 of the License, or
 
#  (at your option) any later version.
 
#
 
#  The Virtual Leaf 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 the Virtual Leaf.  If not, see <http://www.gnu.org/licenses/>.
 
#
 
#  Copyright 2010 Roeland Merks.
 
#
 

	
 
CONFIG += release
 
CONFIG -= debug
 
CONFIG += plugin
 

	
 
BINDIR = ../../bin
 
LIBDIR = ../../lib
 
DEFINES = QTGRAPHICS # VLEAFPLUGIN
 
DESTDIR = $${BINDIR}/models
 
TARGET = test
 
HEADERS = ../simplugin.h $${TARGET}plugin.h  
 
QMAKE_CXXFLAGS += -fexceptions -I..
 
QMAKE_CXXFLAGS_DEBUG += -g3
 
QMAKE_CXXFLAGS_DEBUG += -DQDEBUG
 

	
 
QT += qt3support
 
SOURCES = $${TARGET}plugin.cpp
 
TEMPLATE = lib 
 

	
 
unix {
 
 LIBS += -L$${LIBDIR} -lvleaf
 
 QMAKE_CXXFLAGS += -fPIC -I/usr/include/libxml2
 
 QMAKE_LFLAGS += -fPIC
 
}
 

	
 
win32 {
 
 LIBXML2DIR = C:\libxml2
 
 LIBICONVDIR = C:\libiconv
 
 LIBZDIR = C:\libz
 
 LIBXML2DIR = ..\..\lib\libxml2
 
 LIBICONVDIR = ..\..\lib\libiconv
 
 LIBZDIR = ..\..\lib\libz
 
 LIBS += -L$${LIBDIR} -Llib -lvleaf
 
 QMAKE_CXXFLAGS += -DLIBXML_STATIC
 
 QMAKE_CXXFLAGS += -I$${LIBXML2DIR}\include -I$${LIBICONVDIR}\include -I$${LIBZDIR}\include
 

	
 
}
 

	
 
# finis
src/libplugin.pro
Show inline comments
 
#
 
#  $Id$
 
#
 
#  This file is part of the Virtual Leaf.
 
#
 
#  The Virtual Leaf 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 3 of the License, or
 
#  (at your option) any later version.
 
#
 
#  The Virtual Leaf 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 the Virtual Leaf.  If not, see <http://www.gnu.org/licenses/>.
 
#
 
#  Copyright 2010 Roeland Merks.
 
#
 

	
 
CONFIG += release
 
CONFIG -= debug
 
CONFIG += staticlib
 

	
 
QMAKE_CXXFLAGS += -fexceptions
 
QMAKE_CXXFLAGS_DEBUG += -g3
 
QMAKE_CXXFLAGS_DEBUG += -DQDEBUG
 
QMAKE_CXXFLAGS_DEBUG -= -finstrument-functions
 

	
 
DEFINES = QTGRAPHICS # VLEAFPLUGIN
 
DESTDIR = ../lib 
 
PARTMPL = VirtualLeafpar.tmpl
 
QT += qt3support
 
TARGET = vleaf
 
TEMPLATE = lib
 

	
 
HEADERS = \
 
 cellbase.h \
 
 matrix.h \
 
 output.h \
 
 parameter.h \
 
 parse.h \
 
 random.h \
 
 simplugin.h \
 
 UniqueMessage.h \
 
 vector.h \
 
 wallbase.h \
 
 warning.h
 

	
 
SOURCES = \
 
 cellbase.cpp \
 
 matrix.cpp \
 
 output.cpp \
 
 parameter.cpp \
 
 parse.cpp \
 
 random.cpp \
 
 simplugin.cpp \
 
 UniqueMessage.cpp \
 
 vector.cpp \
 
 wallbase.cpp \
 
 warning.cpp
 

	
 
unix {
 
 QMAKE_CXXFLAGS += -fPIC -I/usr/include/libxml2
 
 QMAKE_LFLAGS += -fPIC
 
 LIBS += -lxml2 -lz -lm 
 
}
 

	
 
win32 {
 
 LIBXML2DIR = C:\libxml2
 
 LIBICONVDIR = C:\libiconv
 
 LIBZDIR = C:\libz
 
 LIBXML2DIR = ..\lib\libxml2
 
 LIBICONVDIR = ..\lib\libiconv
 
 LIBZDIR = ..\lib\libz
 
 QMAKE_CXXFLAGS += -DLIBXML_STATIC
 
 QMAKE_CXXFLAGS += -I$${LIBXML2DIR}\include -I$${LIBICONVDIR}\include -I$${LIBZDIR}\include
 
}
 

	
 
#
0 comments (0 inline, 0 general)