1// -*- C++ -*-
2
3#include <stdio.h>
4#include <stddef.h>
5#include <stdint.h>
6#include <ctype.h>
7#include <unistd.h>
8#include <string.h>
9#include <stdlib.h>
10#include <math.h>
11#include <sys/types.h>
12#include <time.h>
13#include <signal.h>
14#include <pthread.h>
15
16void xmlCheckVersion (int version);
17typedef unsigned char xmlChar;
18xmlChar *xmlStrdup (const xmlChar * cur);
19xmlChar *xmlStrndup (const xmlChar * cur, int len);
20xmlChar *xmlCharStrndup (const char *cur, int len);
21xmlChar *xmlCharStrdup (const char *cur);
22xmlChar *xmlStrsub (const xmlChar * str, int start, int len);
23const xmlChar *xmlStrchr (const xmlChar * str, xmlChar val);
24const xmlChar *xmlStrstr (const xmlChar * str, const xmlChar * val);
25const xmlChar *xmlStrcasestr (const xmlChar * str, const xmlChar * val);
26int xmlStrcmp (const xmlChar * str1, const xmlChar * str2);
27int xmlStrncmp (const xmlChar * str1, const xmlChar * str2, int len);
28int xmlStrcasecmp (const xmlChar * str1, const xmlChar * str2);
29int xmlStrncasecmp (const xmlChar * str1, const xmlChar * str2, int len);
30int xmlStrEqual (const xmlChar * str1, const xmlChar * str2);
31int xmlStrQEqual (const xmlChar * pref,
32		  const xmlChar * name, const xmlChar * str);
33int xmlStrlen (const xmlChar * str);
34xmlChar *xmlStrcat (xmlChar * cur, const xmlChar * add);
35xmlChar *xmlStrncat (xmlChar * cur, const xmlChar * add, int len);
36xmlChar *xmlStrncatNew (const xmlChar * str1, const xmlChar * str2, int len);
37int xmlStrPrintf (xmlChar * buf, int len, const xmlChar * msg, ...);
38int xmlStrVPrintf (xmlChar * buf, int len, const xmlChar * msg, va_list ap);
39int xmlGetUTF8Char (const unsigned char *utf, int *len);
40int xmlCheckUTF8 (const unsigned char *utf);
41int xmlUTF8Strsize (const xmlChar * utf, int len);
42xmlChar *xmlUTF8Strndup (const xmlChar * utf, int len);
43const xmlChar *xmlUTF8Strpos (const xmlChar * utf, int pos);
44int xmlUTF8Strloc (const xmlChar * utf, const xmlChar * utfchar);
45xmlChar *xmlUTF8Strsub (const xmlChar * utf, int start, int len);
46int xmlUTF8Strlen (const xmlChar * utf);
47int xmlUTF8Size (const xmlChar * utf);
48int xmlUTF8Charcmp (const xmlChar * utf1, const xmlChar * utf2);
49
50typedef struct _xmlParserInputBuffer xmlParserInputBuffer;
51typedef xmlParserInputBuffer *xmlParserInputBufferPtr;
52typedef struct _xmlOutputBuffer xmlOutputBuffer;
53typedef xmlOutputBuffer *xmlOutputBufferPtr;
54typedef struct _xmlParserInput xmlParserInput;
55typedef xmlParserInput *xmlParserInputPtr;
56typedef struct _xmlParserCtxt xmlParserCtxt;
57typedef xmlParserCtxt *xmlParserCtxtPtr;
58typedef struct _xmlSAXLocator xmlSAXLocator;
59typedef xmlSAXLocator *xmlSAXLocatorPtr;
60typedef struct _xmlSAXHandler xmlSAXHandler;
61typedef xmlSAXHandler *xmlSAXHandlerPtr;
62typedef struct _xmlEntity xmlEntity;
63typedef xmlEntity *xmlEntityPtr;
64
65typedef enum
66{
67  XML_BUFFER_ALLOC_DOUBLEIT,
68  XML_BUFFER_ALLOC_EXACT,
69  XML_BUFFER_ALLOC_IMMUTABLE,
70  XML_BUFFER_ALLOC_IO,
71  XML_BUFFER_ALLOC_HYBRID
72} xmlBufferAllocationScheme;
73
74typedef struct _xmlBuffer xmlBuffer;
75typedef xmlBuffer *xmlBufferPtr;
76
77struct _xmlBuffer
78{
79  xmlChar *content;
80  unsigned int use;
81  unsigned int size;
82  xmlBufferAllocationScheme alloc;
83  xmlChar *contentIO;
84};
85
86typedef struct _xmlBuf xmlBuf;
87typedef xmlBuf *xmlBufPtr;
88
89xmlChar *xmlBufContent (const xmlBuf * buf);
90xmlChar *xmlBufEnd (xmlBufPtr buf);
91size_t xmlBufUse (const xmlBufPtr buf);
92size_t xmlBufShrink (xmlBufPtr buf, size_t len);
93
94typedef enum
95{
96  XML_ELEMENT_NODE = 1,
97  XML_ATTRIBUTE_NODE = 2,
98  XML_TEXT_NODE = 3,
99  XML_CDATA_SECTION_NODE = 4,
100  XML_ENTITY_REF_NODE = 5,
101  XML_ENTITY_NODE = 6,
102  XML_PI_NODE = 7,
103  XML_COMMENT_NODE = 8,
104  XML_DOCUMENT_NODE = 9,
105  XML_DOCUMENT_TYPE_NODE = 10,
106  XML_DOCUMENT_FRAG_NODE = 11,
107  XML_NOTATION_NODE = 12,
108  XML_HTML_DOCUMENT_NODE = 13,
109  XML_DTD_NODE = 14,
110  XML_ELEMENT_DECL = 15,
111  XML_ATTRIBUTE_DECL = 16,
112  XML_ENTITY_DECL = 17,
113  XML_NAMESPACE_DECL = 18,
114  XML_XINCLUDE_START = 19,
115  XML_XINCLUDE_END = 20, XML_DOCB_DOCUMENT_NODE = 21
116} xmlElementType;
117
118typedef struct _xmlNotation xmlNotation;
119typedef xmlNotation *xmlNotationPtr;
120
121struct _xmlNotation
122{
123  const xmlChar *name;
124  const xmlChar *PublicID;
125  const xmlChar *SystemID;
126};
127
128typedef enum
129{
130  XML_ATTRIBUTE_CDATA = 1,
131  XML_ATTRIBUTE_ID,
132  XML_ATTRIBUTE_IDREF,
133  XML_ATTRIBUTE_IDREFS,
134  XML_ATTRIBUTE_ENTITY,
135  XML_ATTRIBUTE_ENTITIES,
136  XML_ATTRIBUTE_NMTOKEN,
137  XML_ATTRIBUTE_NMTOKENS,
138  XML_ATTRIBUTE_ENUMERATION,
139  XML_ATTRIBUTE_NOTATION
140} xmlAttributeType;
141
142typedef enum
143{
144  XML_ATTRIBUTE_NONE = 1,
145  XML_ATTRIBUTE_REQUIRED,
146  XML_ATTRIBUTE_IMPLIED,
147  XML_ATTRIBUTE_FIXED
148} xmlAttributeDefault;
149
150typedef struct _xmlEnumeration xmlEnumeration;
151typedef xmlEnumeration *xmlEnumerationPtr;
152
153struct _xmlEnumeration
154{
155  struct _xmlEnumeration *next;
156  const xmlChar *name;
157};
158
159typedef struct _xmlAttribute xmlAttribute;
160typedef xmlAttribute *xmlAttributePtr;
161struct _xmlAttribute
162{
163  void *_private;
164  xmlElementType type;
165  const xmlChar *name;
166  struct _xmlNode *children;
167  struct _xmlNode *last;
168  struct _xmlDtd *parent;
169  struct _xmlNode *next;
170  struct _xmlNode *prev;
171  struct _xmlDoc *doc;
172
173  struct _xmlAttribute *nexth;
174  xmlAttributeType atype;
175  xmlAttributeDefault def;
176  const xmlChar *defaultValue;
177  xmlEnumerationPtr tree;
178  const xmlChar *prefix;
179  const xmlChar *elem;
180};
181
182typedef enum
183{
184  XML_ELEMENT_CONTENT_PCDATA = 1,
185  XML_ELEMENT_CONTENT_ELEMENT,
186  XML_ELEMENT_CONTENT_SEQ,
187  XML_ELEMENT_CONTENT_OR
188} xmlElementContentType;
189
190typedef enum
191{
192  XML_ELEMENT_CONTENT_ONCE = 1,
193  XML_ELEMENT_CONTENT_OPT,
194  XML_ELEMENT_CONTENT_MULT,
195  XML_ELEMENT_CONTENT_PLUS
196} xmlElementContentOccur;
197
198typedef struct _xmlElementContent xmlElementContent;
199typedef xmlElementContent *xmlElementContentPtr;
200
201struct _xmlElementContent
202{
203  xmlElementContentType type;
204  xmlElementContentOccur ocur;
205  const xmlChar *name;
206  struct _xmlElementContent *c1;
207  struct _xmlElementContent *c2;
208  struct _xmlElementContent *parent;
209  const xmlChar *prefix;
210};
211
212typedef enum
213{
214  XML_ELEMENT_TYPE_UNDEFINED = 0,
215  XML_ELEMENT_TYPE_EMPTY = 1,
216  XML_ELEMENT_TYPE_ANY,
217  XML_ELEMENT_TYPE_MIXED,
218  XML_ELEMENT_TYPE_ELEMENT
219} xmlElementTypeVal;
220
221typedef struct _xmlRegexp xmlRegexp;
222typedef xmlRegexp *xmlRegexpPtr;
223typedef struct _xmlRegExecCtxt xmlRegExecCtxt;
224typedef xmlRegExecCtxt *xmlRegExecCtxtPtr;
225typedef struct _xmlDict xmlDict;
226typedef xmlDict *xmlDictPtr;
227
228int xmlInitializeDict (void);
229xmlDictPtr xmlDictCreate (void);
230size_t xmlDictSetLimit (xmlDictPtr dict, size_t limit);
231size_t xmlDictGetUsage (xmlDictPtr dict);
232xmlDictPtr xmlDictCreateSub (xmlDictPtr sub);
233int xmlDictReference (xmlDictPtr dict);
234void xmlDictFree (xmlDictPtr dict);
235const xmlChar *xmlDictLookup (xmlDictPtr dict, const xmlChar * name, int len);
236const xmlChar *xmlDictExists (xmlDictPtr dict, const xmlChar * name, int len);
237const xmlChar *xmlDictQLookup (xmlDictPtr dict,
238			       const xmlChar * prefix, const xmlChar * name);
239int xmlDictOwns (xmlDictPtr dict, const xmlChar * str);
240int xmlDictSize (xmlDictPtr dict);
241void xmlDictCleanup (void);
242xmlRegexpPtr xmlRegexpCompile (const xmlChar * regexp);
243void xmlRegFreeRegexp (xmlRegexpPtr regexp);
244int xmlRegexpExec (xmlRegexpPtr comp, const xmlChar * value);
245void xmlRegexpPrint (FILE * output, xmlRegexpPtr regexp);
246int xmlRegexpIsDeterminist (xmlRegexpPtr comp);
247typedef void (*xmlRegExecCallbacks) (xmlRegExecCtxtPtr exec,
248				     const xmlChar * token,
249				     void *transdata, void *inputdata);
250xmlRegExecCtxtPtr
251xmlRegNewExecCtxt (xmlRegexpPtr comp,
252		   xmlRegExecCallbacks callback, void *data);
253void xmlRegFreeExecCtxt (xmlRegExecCtxtPtr exec);
254int xmlRegExecPushString (xmlRegExecCtxtPtr exec,
255			  const xmlChar * value, void *data);
256int xmlRegExecPushString2 (xmlRegExecCtxtPtr exec,
257			   const xmlChar * value,
258			   const xmlChar * value2, void *data);
259
260int xmlRegExecNextValues (xmlRegExecCtxtPtr exec,
261			  int *nbval,
262			  int *nbneg, xmlChar ** values, int *terminal);
263int xmlRegExecErrInfo (xmlRegExecCtxtPtr exec,
264		       const xmlChar ** string,
265		       int *nbval, int *nbneg, xmlChar ** values, int *terminal);
266
267typedef struct _xmlExpCtxt xmlExpCtxt;
268typedef xmlExpCtxt *xmlExpCtxtPtr;
269void xmlExpFreeCtxt (xmlExpCtxtPtr ctxt);
270xmlExpCtxtPtr xmlExpNewCtxt (int maxNodes, xmlDictPtr dict);
271int xmlExpCtxtNbNodes (xmlExpCtxtPtr ctxt);
272int xmlExpCtxtNbCons (xmlExpCtxtPtr ctxt);
273typedef struct _xmlExpNode xmlExpNode;
274typedef xmlExpNode *xmlExpNodePtr;
275
276typedef enum
277{
278  XML_EXP_EMPTY = 0,
279  XML_EXP_FORBID = 1,
280  XML_EXP_ATOM = 2,
281  XML_EXP_SEQ = 3,
282  XML_EXP_OR = 4,
283  XML_EXP_COUNT = 5
284} xmlExpNodeType;
285
286extern xmlExpNodePtr forbiddenExp;
287extern xmlExpNodePtr emptyExp;
288
289void xmlExpFree (xmlExpCtxtPtr ctxt, xmlExpNodePtr expr);
290void xmlExpRef (xmlExpNodePtr expr);
291
292xmlExpNodePtr xmlExpParse (xmlExpCtxtPtr ctxt, const char *expr);
293xmlExpNodePtr xmlExpNewAtom (xmlExpCtxtPtr ctxt, const xmlChar * name, int len);
294xmlExpNodePtr xmlExpNewOr (xmlExpCtxtPtr ctxt, xmlExpNodePtr left, xmlExpNodePtr right);
295xmlExpNodePtr xmlExpNewSeq (xmlExpCtxtPtr ctxt, xmlExpNodePtr left, xmlExpNodePtr right);
296xmlExpNodePtr xmlExpNewRange (xmlExpCtxtPtr ctxt, xmlExpNodePtr subset, int min, int max);
297
298int xmlExpIsNillable (xmlExpNodePtr expr);
299int xmlExpMaxToken (xmlExpNodePtr expr);
300int xmlExpGetLanguage (xmlExpCtxtPtr ctxt,
301		       xmlExpNodePtr expr, const xmlChar ** langList, int len);
302int xmlExpGetStart (xmlExpCtxtPtr ctxt,
303		    xmlExpNodePtr expr, const xmlChar ** tokList, int len);
304xmlExpNodePtr xmlExpStringDerive (xmlExpCtxtPtr ctxt,
305				  xmlExpNodePtr expr, const xmlChar * str, int len);
306xmlExpNodePtr xmlExpExpDerive (xmlExpCtxtPtr ctxt, xmlExpNodePtr expr, xmlExpNodePtr sub);
307int xmlExpSubsume (xmlExpCtxtPtr ctxt, xmlExpNodePtr expr, xmlExpNodePtr sub);
308void xmlExpDump (xmlBufferPtr buf, xmlExpNodePtr expr);
309typedef struct _xmlElement xmlElement;
310typedef xmlElement *xmlElementPtr;
311
312struct _xmlElement
313{
314  void *_private;
315  xmlElementType type;
316  const xmlChar *name;
317  struct _xmlNode *children;
318  struct _xmlNode *last;
319  struct _xmlDtd *parent;
320  struct _xmlNode *next;
321  struct _xmlNode *prev;
322  struct _xmlDoc *doc;
323  xmlElementTypeVal etype;
324  xmlElementContentPtr content;
325  xmlAttributePtr attributes;
326  const xmlChar *prefix;
327  xmlRegexpPtr contModel;
328};
329
330typedef xmlElementType xmlNsType;
331typedef struct _xmlNs xmlNs;
332typedef xmlNs *xmlNsPtr;
333
334struct _xmlNs
335{
336  struct _xmlNs *next;
337  xmlNsType type;
338  const xmlChar *href;
339  const xmlChar *prefix;
340  void *_private;
341  struct _xmlDoc *context;
342};
343
344typedef struct _xmlDtd xmlDtd;
345typedef xmlDtd *xmlDtdPtr;
346struct _xmlDtd
347{
348  void *_private;
349  xmlElementType type;
350  const xmlChar *name;
351  struct _xmlNode *children;
352  struct _xmlNode *last;
353  struct _xmlDoc *parent;
354  struct _xmlNode *next;
355  struct _xmlNode *prev;
356  struct _xmlDoc *doc;
357  void *notations;
358  void *elements;
359  void *attributes;
360  void *entities;
361  const xmlChar *ExternalID;
362  const xmlChar *SystemID;
363  void *pentities;
364};
365
366typedef struct _xmlAttr xmlAttr;
367typedef xmlAttr *xmlAttrPtr;
368struct _xmlAttr
369{
370  void *_private;
371  xmlElementType type;
372  const xmlChar *name;
373  struct _xmlNode *children;
374  struct _xmlNode *last;
375  struct _xmlNode *parent;
376  struct _xmlAttr *next;
377  struct _xmlAttr *prev;
378  struct _xmlDoc *doc;
379  xmlNs *ns;
380  xmlAttributeType atype;
381  void *psvi;
382};
383
384typedef struct _xmlID xmlID;
385typedef xmlID *xmlIDPtr;
386struct _xmlID
387{
388  struct _xmlID *next;
389  const xmlChar *value;
390  xmlAttrPtr attr;
391  const xmlChar *name;
392  int lineno;
393  struct _xmlDoc *doc;
394};
395
396typedef struct _xmlRef xmlRef;
397typedef xmlRef *xmlRefPtr;
398struct _xmlRef
399{
400  struct _xmlRef *next;
401  const xmlChar *value;
402  xmlAttrPtr attr;
403  const xmlChar *name;
404  int lineno;
405};
406
407typedef struct _xmlNode xmlNode;
408typedef xmlNode *xmlNodePtr;
409struct _xmlNode
410{
411  void *_private;
412  xmlElementType type;
413  const xmlChar *name;
414  struct _xmlNode *children;
415  struct _xmlNode *last;
416  struct _xmlNode *parent;
417  struct _xmlNode *next;
418  struct _xmlNode *prev;
419  struct _xmlDoc *doc;
420  xmlNs *ns;
421  xmlChar *content;
422  struct _xmlAttr *properties;
423  xmlNs *nsDef;
424  void *psvi;
425  unsigned short line;
426  unsigned short extra;
427};
428
429typedef enum
430{
431  XML_DOC_WELLFORMED = 1 << 0,
432  XML_DOC_NSVALID = 1 << 1,
433  XML_DOC_OLD10 = 1 << 2,
434  XML_DOC_DTDVALID = 1 << 3,
435  XML_DOC_XINCLUDE = 1 << 4,
436  XML_DOC_USERBUILT = 1 << 5,
437  XML_DOC_INTERNAL = 1 << 6,
438  XML_DOC_HTML = 1 << 7
439} xmlDocProperties;
440
441typedef struct _xmlDoc xmlDoc;
442typedef xmlDoc *xmlDocPtr;
443
444struct _xmlDoc
445{
446  void *_private;
447  xmlElementType type;
448  char *name;
449  struct _xmlNode *children;
450  struct _xmlNode *last;
451  struct _xmlNode *parent;
452  struct _xmlNode *next;
453  struct _xmlNode *prev;
454  struct _xmlDoc *doc;
455  int compression;
456  int standalone;
457  struct _xmlDtd *intSubset;
458  struct _xmlDtd *extSubset;
459  struct _xmlNs *oldNs;
460  const xmlChar *version;
461  const xmlChar *encoding;
462  void *ids;
463  void *refs;
464  const xmlChar *URL;
465  int charset;
466  struct _xmlDict *dict;
467  void *psvi;
468  int parseFlags;
469  int properties;
470};
471
472typedef struct _xmlDOMWrapCtxt xmlDOMWrapCtxt;
473typedef xmlDOMWrapCtxt *xmlDOMWrapCtxtPtr;
474typedef xmlNsPtr (*xmlDOMWrapAcquireNsFunction) (xmlDOMWrapCtxtPtr ctxt,
475						 xmlNodePtr node,
476						 const xmlChar * nsName,
477						 const xmlChar * nsPrefix);
478
479struct _xmlDOMWrapCtxt
480{
481  void *_private;
482  int type;
483  void *namespaceMap;
484  xmlDOMWrapAcquireNsFunction getNsForNodeFunc;
485};
486
487int xmlValidateNCName (const xmlChar * value, int space);
488int xmlValidateQName (const xmlChar * value, int space);
489int xmlValidateName (const xmlChar * value, int space);
490int xmlValidateNMToken (const xmlChar * value, int space);
491xmlChar *xmlBuildQName (const xmlChar * ncname,
492			const xmlChar * prefix, xmlChar * memory, int len);
493xmlChar *xmlSplitQName2 (const xmlChar * name, xmlChar ** prefix);
494const xmlChar *xmlSplitQName3 (const xmlChar * name, int *len);
495void xmlSetBufferAllocationScheme (xmlBufferAllocationScheme scheme);
496xmlBufferAllocationScheme xmlGetBufferAllocationScheme (void);
497xmlBufferPtr xmlBufferCreate (void);
498xmlBufferPtr xmlBufferCreateSize (size_t size);
499xmlBufferPtr xmlBufferCreateStatic (void *mem, size_t size);
500int xmlBufferResize (xmlBufferPtr buf, unsigned int size);
501void xmlBufferFree (xmlBufferPtr buf);
502int xmlBufferDump (FILE * file, xmlBufferPtr buf);
503int xmlBufferAdd (xmlBufferPtr buf, const xmlChar * str, int len);
504int xmlBufferAddHead (xmlBufferPtr buf, const xmlChar * str, int len);
505int xmlBufferCat (xmlBufferPtr buf, const xmlChar * str);
506int xmlBufferCCat (xmlBufferPtr buf, const char *str);
507int xmlBufferShrink (xmlBufferPtr buf, unsigned int len);
508int xmlBufferGrow (xmlBufferPtr buf, unsigned int len);
509void xmlBufferEmpty (xmlBufferPtr buf);
510const xmlChar *xmlBufferContent (const xmlBuffer * buf);
511xmlChar *xmlBufferDetach (xmlBufferPtr buf);
512void xmlBufferSetAllocationScheme (xmlBufferPtr buf,
513				   xmlBufferAllocationScheme scheme);
514int xmlBufferLength (const xmlBuffer * buf);
515
516xmlDtdPtr xmlCreateIntSubset (xmlDocPtr doc,
517			      const xmlChar * name,
518			      const xmlChar * ExternalID, const xmlChar * SystemID);
519xmlDtdPtr xmlNewDtd (xmlDocPtr doc,
520		     const xmlChar * name,
521		     const xmlChar * ExternalID, const xmlChar * SystemID);
522xmlDtdPtr xmlGetIntSubset (const xmlDoc * doc);
523void xmlFreeDtd (xmlDtdPtr cur);
524
525xmlNsPtr xmlNewGlobalNs (xmlDocPtr doc, const xmlChar * href, const xmlChar * prefix);
526
527xmlNsPtr xmlNewNs (xmlNodePtr node, const xmlChar * href, const xmlChar * prefix);
528void xmlFreeNs (xmlNsPtr cur);
529void xmlFreeNsList (xmlNsPtr cur);
530xmlDocPtr xmlNewDoc (const xmlChar * version);
531void xmlFreeDoc (xmlDocPtr cur);
532xmlAttrPtr xmlNewDocProp (xmlDocPtr doc, const xmlChar * name, const xmlChar * value);
533
534
535xmlAttrPtr xmlNewProp (xmlNodePtr node, const xmlChar * name, const xmlChar * value);
536
537xmlAttrPtr xmlNewNsProp (xmlNodePtr node,
538			 xmlNsPtr ns, const xmlChar * name, const xmlChar * value);
539xmlAttrPtr xmlNewNsPropEatName (xmlNodePtr node,
540				xmlNsPtr ns, xmlChar * name, const xmlChar * value);
541void xmlFreePropList (xmlAttrPtr cur);
542void xmlFreeProp (xmlAttrPtr cur);
543xmlAttrPtr xmlCopyProp (xmlNodePtr target, xmlAttrPtr cur);
544xmlAttrPtr xmlCopyPropList (xmlNodePtr target, xmlAttrPtr cur);
545xmlDtdPtr xmlCopyDtd (xmlDtdPtr dtd);
546xmlDocPtr xmlCopyDoc (xmlDocPtr doc, int recursive);
547xmlNodePtr xmlNewDocNode (xmlDocPtr doc,
548			  xmlNsPtr ns, const xmlChar * name, const xmlChar * content);
549xmlNodePtr xmlNewDocNodeEatName (xmlDocPtr doc,
550				 xmlNsPtr ns, xmlChar * name, const xmlChar * content);
551xmlNodePtr xmlNewNode (xmlNsPtr ns, const xmlChar * name);
552xmlNodePtr xmlNewNodeEatName (xmlNsPtr ns, xmlChar * name);
553
554xmlNodePtr xmlNewChild (xmlNodePtr parent,
555			xmlNsPtr ns, const xmlChar * name, const xmlChar * content);
556xmlNodePtr xmlNewDocText (const xmlDoc * doc, const xmlChar * content);
557xmlNodePtr xmlNewText (const xmlChar * content);
558xmlNodePtr xmlNewDocPI (xmlDocPtr doc, const xmlChar * name, const xmlChar * content);
559xmlNodePtr xmlNewPI (const xmlChar * name, const xmlChar * content);
560xmlNodePtr xmlNewDocTextLen (xmlDocPtr doc, const xmlChar * content, int len);
561xmlNodePtr xmlNewTextLen (const xmlChar * content, int len);
562xmlNodePtr xmlNewDocComment (xmlDocPtr doc, const xmlChar * content);
563xmlNodePtr xmlNewComment (const xmlChar * content);
564xmlNodePtr xmlNewCDataBlock (xmlDocPtr doc, const xmlChar * content, int len);
565xmlNodePtr xmlNewCharRef (xmlDocPtr doc, const xmlChar * name);
566xmlNodePtr xmlNewReference (const xmlDoc * doc, const xmlChar * name);
567xmlNodePtr xmlCopyNode (xmlNodePtr node, int recursive);
568xmlNodePtr xmlDocCopyNode (xmlNodePtr node, xmlDocPtr doc, int recursive);
569xmlNodePtr xmlDocCopyNodeList (xmlDocPtr doc, xmlNodePtr node);
570xmlNodePtr xmlCopyNodeList (xmlNodePtr node);
571
572xmlNodePtr xmlNewTextChild (xmlNodePtr parent,
573			    xmlNsPtr ns, const xmlChar * name, const xmlChar * content);
574xmlNodePtr xmlNewDocRawNode (xmlDocPtr doc,
575			     xmlNsPtr ns, const xmlChar * name, const xmlChar * content);
576xmlNodePtr xmlNewDocFragment (xmlDocPtr doc);
577long xmlGetLineNo (const xmlNode * node);
578xmlChar *xmlGetNodePath (const xmlNode * node);
579xmlNodePtr xmlDocGetRootElement (const xmlDoc * doc);
580xmlNodePtr xmlGetLastChild (const xmlNode * parent);
581int xmlNodeIsText (const xmlNode * node);
582int xmlIsBlankNode (const xmlNode * node);
583xmlNodePtr xmlDocSetRootElement (xmlDocPtr doc, xmlNodePtr root);
584void xmlNodeSetName (xmlNodePtr cur, const xmlChar * name);
585xmlNodePtr xmlAddChild (xmlNodePtr parent, xmlNodePtr cur);
586xmlNodePtr xmlAddChildList (xmlNodePtr parent, xmlNodePtr cur);
587xmlNodePtr xmlReplaceNode (xmlNodePtr old, xmlNodePtr cur);
588xmlNodePtr xmlAddPrevSibling (xmlNodePtr cur, xmlNodePtr elem);
589xmlNodePtr xmlAddSibling (xmlNodePtr cur, xmlNodePtr elem);
590xmlNodePtr xmlAddNextSibling (xmlNodePtr cur, xmlNodePtr elem);
591void xmlUnlinkNode (xmlNodePtr cur);
592xmlNodePtr xmlTextMerge (xmlNodePtr first, xmlNodePtr second);
593int xmlTextConcat (xmlNodePtr node, const xmlChar * content, int len);
594void xmlFreeNodeList (xmlNodePtr cur);
595void xmlFreeNode (xmlNodePtr cur);
596void xmlSetTreeDoc (xmlNodePtr tree, xmlDocPtr doc);
597void xmlSetListDoc (xmlNodePtr list, xmlDocPtr doc);
598
599xmlNsPtr xmlSearchNs (xmlDocPtr doc, xmlNodePtr node, const xmlChar * nameSpace);
600xmlNsPtr xmlSearchNsByHref (xmlDocPtr doc, xmlNodePtr node, const xmlChar * href);
601xmlNsPtr *xmlGetNsList (const xmlDoc * doc, const xmlNode * node);
602void xmlSetNs (xmlNodePtr node, xmlNsPtr ns);
603xmlNsPtr xmlCopyNamespace (xmlNsPtr cur);
604xmlNsPtr xmlCopyNamespaceList (xmlNsPtr cur);
605xmlAttrPtr xmlSetProp (xmlNodePtr node, const xmlChar * name, const xmlChar * value);
606xmlAttrPtr xmlSetNsProp (xmlNodePtr node,
607			 xmlNsPtr ns, const xmlChar * name, const xmlChar * value);
608
609xmlChar *xmlGetNoNsProp (const xmlNode * node, const xmlChar * name);
610xmlChar *xmlGetProp (const xmlNode * node, const xmlChar * name);
611xmlAttrPtr xmlHasProp (const xmlNode * node, const xmlChar * name);
612xmlAttrPtr xmlHasNsProp (const xmlNode * node,
613			 const xmlChar * name, const xmlChar * nameSpace);
614xmlChar *xmlGetNsProp (const xmlNode * node,
615		       const xmlChar * name, const xmlChar * nameSpace);
616xmlNodePtr xmlStringGetNodeList (const xmlDoc * doc, const xmlChar * value);
617xmlNodePtr xmlStringLenGetNodeList (const xmlDoc * doc, const xmlChar * value, int len);
618xmlChar *xmlNodeListGetString (xmlDocPtr doc,
619			       const xmlNode * list, int inLine);
620
621xmlChar *xmlNodeListGetRawString (const xmlDoc * doc,
622				  const xmlNode * list, int inLine);
623
624void xmlNodeSetContent (xmlNodePtr cur, const xmlChar * content);
625void xmlNodeSetContentLen (xmlNodePtr cur, const xmlChar * content, int len);
626void xmlNodeAddContent (xmlNodePtr cur, const xmlChar * content);
627void xmlNodeAddContentLen (xmlNodePtr cur, const xmlChar * content, int len);
628xmlChar *xmlNodeGetContent (const xmlNode * cur);
629int xmlNodeBufGetContent (xmlBufferPtr buffer, const xmlNode * cur);
630int xmlBufGetNodeContent (xmlBufPtr buf, const xmlNode * cur);
631xmlChar *xmlNodeGetLang (const xmlNode * cur);
632int xmlNodeGetSpacePreserve (const xmlNode * cur);
633void xmlNodeSetLang (xmlNodePtr cur, const xmlChar * lang);
634void xmlNodeSetSpacePreserve (xmlNodePtr cur, int val);
635xmlChar *xmlNodeGetBase (const xmlDoc * doc, const xmlNode * cur);
636void xmlNodeSetBase (xmlNodePtr cur, const xmlChar * uri);
637int xmlRemoveProp (xmlAttrPtr cur);
638int xmlUnsetNsProp (xmlNodePtr node, xmlNsPtr ns, const xmlChar * name);
639int xmlUnsetProp (xmlNodePtr node, const xmlChar * name);
640void xmlBufferWriteCHAR (xmlBufferPtr buf, const xmlChar * string);
641void xmlBufferWriteChar (xmlBufferPtr buf, const char *string);
642void xmlBufferWriteQuotedString (xmlBufferPtr buf, const xmlChar * string);
643void xmlAttrSerializeTxtContent (xmlBufferPtr buf,
644				 xmlDocPtr doc,
645				 xmlAttrPtr attr, const xmlChar * string);
646int xmlReconciliateNs (xmlDocPtr doc, xmlNodePtr tree);
647void xmlDocDumpFormatMemory (xmlDocPtr cur, xmlChar ** mem, int *size, int format);
648void xmlDocDumpMemory (xmlDocPtr cur, xmlChar ** mem, int *size);
649void xmlDocDumpMemoryEnc (xmlDocPtr out_doc,
650			  xmlChar ** doc_txt_ptr,
651			  int *doc_txt_len, const char *txt_encoding);
652void xmlDocDumpFormatMemoryEnc (xmlDocPtr out_doc,
653				xmlChar ** doc_txt_ptr,
654				int *doc_txt_len,
655				const char *txt_encoding, int format);
656int xmlDocFormatDump (FILE * f, xmlDocPtr cur, int format);
657int xmlDocDump (FILE * f, xmlDocPtr cur);
658void xmlElemDump (FILE * f, xmlDocPtr doc, xmlNodePtr cur);
659int xmlSaveFile (const char *filename, xmlDocPtr cur);
660int xmlSaveFormatFile (const char *filename, xmlDocPtr cur, int format);
661size_t xmlBufNodeDump (xmlBufPtr buf,
662		       xmlDocPtr doc, xmlNodePtr cur, int level, int format);
663int xmlNodeDump (xmlBufferPtr buf,
664		 xmlDocPtr doc, xmlNodePtr cur, int level, int format);
665
666int xmlSaveFileTo (xmlOutputBufferPtr buf, xmlDocPtr cur, const char *encoding);
667int xmlSaveFormatFileTo (xmlOutputBufferPtr buf,
668			 xmlDocPtr cur, const char *encoding, int format);
669void xmlNodeDumpOutput (xmlOutputBufferPtr buf,
670			xmlDocPtr doc,
671			xmlNodePtr cur,
672			int level, int format, const char *encoding);
673
674int xmlSaveFormatFileEnc (const char *filename,
675			  xmlDocPtr cur, const char *encoding, int format);
676
677int xmlSaveFileEnc (const char *filename, xmlDocPtr cur, const char *encoding);
678int xmlIsXHTML (const xmlChar * systemID, const xmlChar * publicID);
679int xmlGetDocCompressMode (const xmlDoc * doc);
680void xmlSetDocCompressMode (xmlDocPtr doc, int mode);
681int xmlGetCompressMode (void);
682void xmlSetCompressMode (int mode);
683xmlDOMWrapCtxtPtr xmlDOMWrapNewCtxt (void);
684void xmlDOMWrapFreeCtxt (xmlDOMWrapCtxtPtr ctxt);
685int xmlDOMWrapReconcileNamespaces (xmlDOMWrapCtxtPtr ctxt,
686				   xmlNodePtr elem, int options);
687int xmlDOMWrapAdoptNode (xmlDOMWrapCtxtPtr ctxt,
688			 xmlDocPtr sourceDoc,
689			 xmlNodePtr node,
690			 xmlDocPtr destDoc, xmlNodePtr destParent, int options);
691int xmlDOMWrapRemoveNode (xmlDOMWrapCtxtPtr ctxt,
692			  xmlDocPtr doc, xmlNodePtr node, int options);
693int xmlDOMWrapCloneNode (xmlDOMWrapCtxtPtr ctxt,
694			 xmlDocPtr sourceDoc,
695			 xmlNodePtr node,
696			 xmlNodePtr * clonedNode,
697			 xmlDocPtr destDoc,
698			 xmlNodePtr destParent, int deep, int options);
699
700unsigned long xmlChildElementCount (xmlNodePtr parent);
701xmlNodePtr xmlNextElementSibling (xmlNodePtr node);
702xmlNodePtr xmlFirstElementChild (xmlNodePtr parent);
703xmlNodePtr xmlLastElementChild (xmlNodePtr parent);
704xmlNodePtr xmlPreviousElementSibling (xmlNodePtr node);
705typedef struct _xmlHashTable xmlHashTable;
706typedef xmlHashTable *xmlHashTablePtr;
707typedef void (*xmlHashDeallocator) (void *payload, xmlChar * name);
708typedef void *(*xmlHashCopier) (void *payload, xmlChar * name);
709typedef void (*xmlHashScanner) (void *payload, void *data, xmlChar * name);
710typedef void (*xmlHashScannerFull) (void *payload, void *data,
711				    const xmlChar * name,
712				    const xmlChar * name2,
713				    const xmlChar * name3);
714
715
716
717
718xmlHashTablePtr xmlHashCreate (int size);
719xmlHashTablePtr xmlHashCreateDict (int size, xmlDictPtr dict);
720void xmlHashFree (xmlHashTablePtr table, xmlHashDeallocator f);
721
722int xmlHashAddEntry (xmlHashTablePtr table, const xmlChar * name, void *userdata);
723int xmlHashUpdateEntry (xmlHashTablePtr table,
724			const xmlChar * name,
725			void *userdata, xmlHashDeallocator f);
726int xmlHashAddEntry2 (xmlHashTablePtr table,
727		      const xmlChar * name,
728		      const xmlChar * name2, void *userdata);
729int xmlHashUpdateEntry2 (xmlHashTablePtr table,
730			 const xmlChar * name,
731			 const xmlChar * name2,
732			 void *userdata, xmlHashDeallocator f);
733int xmlHashAddEntry3 (xmlHashTablePtr table,
734		      const xmlChar * name,
735		      const xmlChar * name2,
736		      const xmlChar * name3, void *userdata);
737int xmlHashUpdateEntry3 (xmlHashTablePtr table,
738			 const xmlChar * name,
739			 const xmlChar * name2,
740			 const xmlChar * name3,
741			 void *userdata, xmlHashDeallocator f);
742
743int xmlHashRemoveEntry (xmlHashTablePtr table, const xmlChar * name,
744			xmlHashDeallocator f);
745int xmlHashRemoveEntry2 (xmlHashTablePtr table, const xmlChar * name,
746			 const xmlChar * name2, xmlHashDeallocator f);
747int xmlHashRemoveEntry3 (xmlHashTablePtr table, const xmlChar * name,
748			 const xmlChar * name2, const xmlChar * name3,
749			 xmlHashDeallocator f);
750
751void *xmlHashLookup (xmlHashTablePtr table, const xmlChar * name);
752void *xmlHashLookup2 (xmlHashTablePtr table,
753		      const xmlChar * name, const xmlChar * name2);
754void *xmlHashLookup3 (xmlHashTablePtr table,
755		      const xmlChar * name,
756		      const xmlChar * name2, const xmlChar * name3);
757void *xmlHashQLookup (xmlHashTablePtr table,
758		      const xmlChar * name, const xmlChar * prefix);
759void *xmlHashQLookup2 (xmlHashTablePtr table,
760		       const xmlChar * name,
761		       const xmlChar * prefix,
762		       const xmlChar * name2, const xmlChar * prefix2);
763void *xmlHashQLookup3 (xmlHashTablePtr table,
764		       const xmlChar * name,
765		       const xmlChar * prefix,
766		       const xmlChar * name2,
767		       const xmlChar * prefix2,
768		       const xmlChar * name3, const xmlChar * prefix3);
769
770xmlHashTablePtr xmlHashCopy (xmlHashTablePtr table, xmlHashCopier f);
771int xmlHashSize (xmlHashTablePtr table);
772void xmlHashScan (xmlHashTablePtr table, xmlHashScanner f, void *data);
773void xmlHashScan3 (xmlHashTablePtr table,
774		   const xmlChar * name,
775		   const xmlChar * name2,
776		   const xmlChar * name3, xmlHashScanner f, void *data);
777void xmlHashScanFull (xmlHashTablePtr table, xmlHashScannerFull f, void *data);
778void xmlHashScanFull3 (xmlHashTablePtr table,
779		       const xmlChar * name,
780		       const xmlChar * name2,
781		       const xmlChar * name3, xmlHashScannerFull f, void *data);
782typedef enum
783{
784  XML_ERR_NONE = 0,
785  XML_ERR_WARNING = 1,
786  XML_ERR_ERROR = 2,
787  XML_ERR_FATAL = 3
788} xmlErrorLevel;
789
790typedef enum
791{
792  XML_FROM_NONE = 0,
793  XML_FROM_PARSER,
794  XML_FROM_TREE,
795  XML_FROM_NAMESPACE,
796  XML_FROM_DTD,
797  XML_FROM_HTML,
798  XML_FROM_MEMORY,
799  XML_FROM_OUTPUT,
800  XML_FROM_IO,
801  XML_FROM_FTP,
802  XML_FROM_HTTP,
803  XML_FROM_XINCLUDE,
804  XML_FROM_XPATH,
805  XML_FROM_XPOINTER,
806  XML_FROM_REGEXP,
807  XML_FROM_DATATYPE,
808  XML_FROM_SCHEMASP,
809  XML_FROM_SCHEMASV,
810  XML_FROM_RELAXNGP,
811  XML_FROM_RELAXNGV,
812  XML_FROM_CATALOG,
813  XML_FROM_C14N,
814  XML_FROM_XSLT,
815  XML_FROM_VALID,
816  XML_FROM_CHECK,
817  XML_FROM_WRITER,
818  XML_FROM_MODULE,
819  XML_FROM_I18N,
820  XML_FROM_SCHEMATRONV,
821  XML_FROM_BUFFER,
822  XML_FROM_URI
823} xmlErrorDomain;
824
825typedef struct _xmlError xmlError;
826typedef xmlError *xmlErrorPtr;
827struct _xmlError
828{
829  int domain;
830  int code;
831  char *message;
832  xmlErrorLevel level;
833  char *file;
834  int line;
835  char *str1;
836  char *str2;
837  char *str3;
838  int int1;
839  int int2;
840  void *ctxt;
841  void *node;
842};
843
844typedef enum
845{
846  XML_ERR_OK = 0,
847  XML_ERR_INTERNAL_ERROR,
848  XML_ERR_NO_MEMORY,
849  XML_ERR_DOCUMENT_START,
850  XML_ERR_DOCUMENT_EMPTY,
851  XML_ERR_DOCUMENT_END,
852  XML_ERR_INVALID_HEX_CHARREF,
853  XML_ERR_INVALID_DEC_CHARREF,
854  XML_ERR_INVALID_CHARREF,
855  XML_ERR_INVALID_CHAR,
856  XML_ERR_CHARREF_AT_EOF,
857  XML_ERR_CHARREF_IN_PROLOG,
858  XML_ERR_CHARREF_IN_EPILOG,
859  XML_ERR_CHARREF_IN_DTD,
860  XML_ERR_ENTITYREF_AT_EOF,
861  XML_ERR_ENTITYREF_IN_PROLOG,
862  XML_ERR_ENTITYREF_IN_EPILOG,
863  XML_ERR_ENTITYREF_IN_DTD,
864  XML_ERR_PEREF_AT_EOF,
865  XML_ERR_PEREF_IN_PROLOG,
866  XML_ERR_PEREF_IN_EPILOG,
867  XML_ERR_PEREF_IN_INT_SUBSET,
868  XML_ERR_ENTITYREF_NO_NAME,
869  XML_ERR_ENTITYREF_SEMICOL_MISSING,
870  XML_ERR_PEREF_NO_NAME,
871  XML_ERR_PEREF_SEMICOL_MISSING,
872  XML_ERR_UNDECLARED_ENTITY,
873  XML_WAR_UNDECLARED_ENTITY,
874  XML_ERR_UNPARSED_ENTITY,
875  XML_ERR_ENTITY_IS_EXTERNAL,
876  XML_ERR_ENTITY_IS_PARAMETER,
877  XML_ERR_UNKNOWN_ENCODING,
878  XML_ERR_UNSUPPORTED_ENCODING,
879  XML_ERR_STRING_NOT_STARTED,
880  XML_ERR_STRING_NOT_CLOSED,
881  XML_ERR_NS_DECL_ERROR,
882  XML_ERR_ENTITY_NOT_STARTED,
883  XML_ERR_ENTITY_NOT_FINISHED,
884  XML_ERR_LT_IN_ATTRIBUTE,
885  XML_ERR_ATTRIBUTE_NOT_STARTED,
886  XML_ERR_ATTRIBUTE_NOT_FINISHED,
887  XML_ERR_ATTRIBUTE_WITHOUT_VALUE,
888  XML_ERR_ATTRIBUTE_REDEFINED,
889  XML_ERR_LITERAL_NOT_STARTED,
890  XML_ERR_LITERAL_NOT_FINISHED,
891  XML_ERR_COMMENT_NOT_FINISHED,
892  XML_ERR_PI_NOT_STARTED,
893  XML_ERR_PI_NOT_FINISHED,
894  XML_ERR_NOTATION_NOT_STARTED,
895  XML_ERR_NOTATION_NOT_FINISHED,
896  XML_ERR_ATTLIST_NOT_STARTED,
897  XML_ERR_ATTLIST_NOT_FINISHED,
898  XML_ERR_MIXED_NOT_STARTED,
899  XML_ERR_MIXED_NOT_FINISHED,
900  XML_ERR_ELEMCONTENT_NOT_STARTED,
901  XML_ERR_ELEMCONTENT_NOT_FINISHED,
902  XML_ERR_XMLDECL_NOT_STARTED,
903  XML_ERR_XMLDECL_NOT_FINISHED,
904  XML_ERR_CONDSEC_NOT_STARTED,
905  XML_ERR_CONDSEC_NOT_FINISHED,
906  XML_ERR_EXT_SUBSET_NOT_FINISHED,
907  XML_ERR_DOCTYPE_NOT_FINISHED,
908  XML_ERR_MISPLACED_CDATA_END,
909  XML_ERR_CDATA_NOT_FINISHED,
910  XML_ERR_RESERVED_XML_NAME,
911  XML_ERR_SPACE_REQUIRED,
912  XML_ERR_SEPARATOR_REQUIRED,
913  XML_ERR_NMTOKEN_REQUIRED,
914  XML_ERR_NAME_REQUIRED,
915  XML_ERR_PCDATA_REQUIRED,
916  XML_ERR_URI_REQUIRED,
917  XML_ERR_PUBID_REQUIRED,
918  XML_ERR_LT_REQUIRED,
919  XML_ERR_GT_REQUIRED,
920  XML_ERR_LTSLASH_REQUIRED,
921  XML_ERR_EQUAL_REQUIRED,
922  XML_ERR_TAG_NAME_MISMATCH,
923  XML_ERR_TAG_NOT_FINISHED,
924  XML_ERR_STANDALONE_VALUE,
925  XML_ERR_ENCODING_NAME,
926  XML_ERR_HYPHEN_IN_COMMENT,
927  XML_ERR_INVALID_ENCODING,
928  XML_ERR_EXT_ENTITY_STANDALONE,
929  XML_ERR_CONDSEC_INVALID,
930  XML_ERR_VALUE_REQUIRED,
931  XML_ERR_NOT_WELL_BALANCED,
932  XML_ERR_EXTRA_CONTENT,
933  XML_ERR_ENTITY_CHAR_ERROR,
934  XML_ERR_ENTITY_PE_INTERNAL,
935  XML_ERR_ENTITY_LOOP,
936  XML_ERR_ENTITY_BOUNDARY,
937  XML_ERR_INVALID_URI,
938  XML_ERR_URI_FRAGMENT,
939  XML_WAR_CATALOG_PI,
940  XML_ERR_NO_DTD,
941  XML_ERR_CONDSEC_INVALID_KEYWORD,
942  XML_ERR_VERSION_MISSING,
943  XML_WAR_UNKNOWN_VERSION,
944  XML_WAR_LANG_VALUE,
945  XML_WAR_NS_URI,
946  XML_WAR_NS_URI_RELATIVE,
947  XML_ERR_MISSING_ENCODING,
948  XML_WAR_SPACE_VALUE,
949  XML_ERR_NOT_STANDALONE,
950  XML_ERR_ENTITY_PROCESSING,
951  XML_ERR_NOTATION_PROCESSING,
952  XML_WAR_NS_COLUMN,
953  XML_WAR_ENTITY_REDEFINED,
954  XML_ERR_UNKNOWN_VERSION,
955  XML_ERR_VERSION_MISMATCH,
956  XML_ERR_NAME_TOO_LONG,
957  XML_ERR_USER_STOP,
958  XML_NS_ERR_XML_NAMESPACE = 200,
959  XML_NS_ERR_UNDEFINED_NAMESPACE,
960  XML_NS_ERR_QNAME,
961  XML_NS_ERR_ATTRIBUTE_REDEFINED,
962  XML_NS_ERR_EMPTY,
963  XML_NS_ERR_COLON,
964  XML_DTD_ATTRIBUTE_DEFAULT = 500,
965  XML_DTD_ATTRIBUTE_REDEFINED,
966  XML_DTD_ATTRIBUTE_VALUE,
967  XML_DTD_CONTENT_ERROR,
968  XML_DTD_CONTENT_MODEL,
969  XML_DTD_CONTENT_NOT_DETERMINIST,
970  XML_DTD_DIFFERENT_PREFIX,
971  XML_DTD_ELEM_DEFAULT_NAMESPACE,
972  XML_DTD_ELEM_NAMESPACE,
973  XML_DTD_ELEM_REDEFINED,
974  XML_DTD_EMPTY_NOTATION,
975  XML_DTD_ENTITY_TYPE,
976  XML_DTD_ID_FIXED,
977  XML_DTD_ID_REDEFINED,
978  XML_DTD_ID_SUBSET,
979  XML_DTD_INVALID_CHILD,
980  XML_DTD_INVALID_DEFAULT,
981  XML_DTD_LOAD_ERROR,
982  XML_DTD_MISSING_ATTRIBUTE,
983  XML_DTD_MIXED_CORRUPT,
984  XML_DTD_MULTIPLE_ID,
985  XML_DTD_NO_DOC,
986  XML_DTD_NO_DTD,
987  XML_DTD_NO_ELEM_NAME,
988  XML_DTD_NO_PREFIX,
989  XML_DTD_NO_ROOT,
990  XML_DTD_NOTATION_REDEFINED,
991  XML_DTD_NOTATION_VALUE,
992  XML_DTD_NOT_EMPTY,
993  XML_DTD_NOT_PCDATA,
994  XML_DTD_NOT_STANDALONE,
995  XML_DTD_ROOT_NAME,
996  XML_DTD_STANDALONE_WHITE_SPACE,
997  XML_DTD_UNKNOWN_ATTRIBUTE,
998  XML_DTD_UNKNOWN_ELEM,
999  XML_DTD_UNKNOWN_ENTITY,
1000  XML_DTD_UNKNOWN_ID,
1001  XML_DTD_UNKNOWN_NOTATION,
1002  XML_DTD_STANDALONE_DEFAULTED,
1003  XML_DTD_XMLID_VALUE,
1004  XML_DTD_XMLID_TYPE,
1005  XML_DTD_DUP_TOKEN,
1006  XML_HTML_STRUCURE_ERROR = 800,
1007  XML_HTML_UNKNOWN_TAG,
1008  XML_RNGP_ANYNAME_ATTR_ANCESTOR = 1000,
1009  XML_RNGP_ATTR_CONFLICT,
1010  XML_RNGP_ATTRIBUTE_CHILDREN,
1011  XML_RNGP_ATTRIBUTE_CONTENT,
1012  XML_RNGP_ATTRIBUTE_EMPTY,
1013  XML_RNGP_ATTRIBUTE_NOOP,
1014  XML_RNGP_CHOICE_CONTENT,
1015  XML_RNGP_CHOICE_EMPTY,
1016  XML_RNGP_CREATE_FAILURE,
1017  XML_RNGP_DATA_CONTENT,
1018  XML_RNGP_DEF_CHOICE_AND_INTERLEAVE,
1019  XML_RNGP_DEFINE_CREATE_FAILED,
1020  XML_RNGP_DEFINE_EMPTY,
1021  XML_RNGP_DEFINE_MISSING,
1022  XML_RNGP_DEFINE_NAME_MISSING,
1023  XML_RNGP_ELEM_CONTENT_EMPTY,
1024  XML_RNGP_ELEM_CONTENT_ERROR,
1025  XML_RNGP_ELEMENT_EMPTY,
1026  XML_RNGP_ELEMENT_CONTENT,
1027  XML_RNGP_ELEMENT_NAME,
1028  XML_RNGP_ELEMENT_NO_CONTENT,
1029  XML_RNGP_ELEM_TEXT_CONFLICT,
1030  XML_RNGP_EMPTY,
1031  XML_RNGP_EMPTY_CONSTRUCT,
1032  XML_RNGP_EMPTY_CONTENT,
1033  XML_RNGP_EMPTY_NOT_EMPTY,
1034  XML_RNGP_ERROR_TYPE_LIB,
1035  XML_RNGP_EXCEPT_EMPTY,
1036  XML_RNGP_EXCEPT_MISSING,
1037  XML_RNGP_EXCEPT_MULTIPLE,
1038  XML_RNGP_EXCEPT_NO_CONTENT,
1039  XML_RNGP_EXTERNALREF_EMTPY,
1040  XML_RNGP_EXTERNAL_REF_FAILURE,
1041  XML_RNGP_EXTERNALREF_RECURSE,
1042  XML_RNGP_FORBIDDEN_ATTRIBUTE,
1043  XML_RNGP_FOREIGN_ELEMENT,
1044  XML_RNGP_GRAMMAR_CONTENT,
1045  XML_RNGP_GRAMMAR_EMPTY,
1046  XML_RNGP_GRAMMAR_MISSING,
1047  XML_RNGP_GRAMMAR_NO_START,
1048  XML_RNGP_GROUP_ATTR_CONFLICT,
1049  XML_RNGP_HREF_ERROR,
1050  XML_RNGP_INCLUDE_EMPTY,
1051  XML_RNGP_INCLUDE_FAILURE,
1052  XML_RNGP_INCLUDE_RECURSE,
1053  XML_RNGP_INTERLEAVE_ADD,
1054  XML_RNGP_INTERLEAVE_CREATE_FAILED,
1055  XML_RNGP_INTERLEAVE_EMPTY,
1056  XML_RNGP_INTERLEAVE_NO_CONTENT,
1057  XML_RNGP_INVALID_DEFINE_NAME,
1058  XML_RNGP_INVALID_URI,
1059  XML_RNGP_INVALID_VALUE,
1060  XML_RNGP_MISSING_HREF,
1061  XML_RNGP_NAME_MISSING,
1062  XML_RNGP_NEED_COMBINE,
1063  XML_RNGP_NOTALLOWED_NOT_EMPTY,
1064  XML_RNGP_NSNAME_ATTR_ANCESTOR,
1065  XML_RNGP_NSNAME_NO_NS,
1066  XML_RNGP_PARAM_FORBIDDEN,
1067  XML_RNGP_PARAM_NAME_MISSING,
1068  XML_RNGP_PARENTREF_CREATE_FAILED,
1069  XML_RNGP_PARENTREF_NAME_INVALID,
1070  XML_RNGP_PARENTREF_NO_NAME,
1071  XML_RNGP_PARENTREF_NO_PARENT,
1072  XML_RNGP_PARENTREF_NOT_EMPTY,
1073  XML_RNGP_PARSE_ERROR,
1074  XML_RNGP_PAT_ANYNAME_EXCEPT_ANYNAME,
1075  XML_RNGP_PAT_ATTR_ATTR,
1076  XML_RNGP_PAT_ATTR_ELEM,
1077  XML_RNGP_PAT_DATA_EXCEPT_ATTR,
1078  XML_RNGP_PAT_DATA_EXCEPT_ELEM,
1079  XML_RNGP_PAT_DATA_EXCEPT_EMPTY,
1080  XML_RNGP_PAT_DATA_EXCEPT_GROUP,
1081  XML_RNGP_PAT_DATA_EXCEPT_INTERLEAVE,
1082  XML_RNGP_PAT_DATA_EXCEPT_LIST,
1083  XML_RNGP_PAT_DATA_EXCEPT_ONEMORE,
1084  XML_RNGP_PAT_DATA_EXCEPT_REF,
1085  XML_RNGP_PAT_DATA_EXCEPT_TEXT,
1086  XML_RNGP_PAT_LIST_ATTR,
1087  XML_RNGP_PAT_LIST_ELEM,
1088  XML_RNGP_PAT_LIST_INTERLEAVE,
1089  XML_RNGP_PAT_LIST_LIST,
1090  XML_RNGP_PAT_LIST_REF,
1091  XML_RNGP_PAT_LIST_TEXT,
1092  XML_RNGP_PAT_NSNAME_EXCEPT_ANYNAME,
1093  XML_RNGP_PAT_NSNAME_EXCEPT_NSNAME,
1094  XML_RNGP_PAT_ONEMORE_GROUP_ATTR,
1095  XML_RNGP_PAT_ONEMORE_INTERLEAVE_ATTR,
1096  XML_RNGP_PAT_START_ATTR,
1097  XML_RNGP_PAT_START_DATA,
1098  XML_RNGP_PAT_START_EMPTY,
1099  XML_RNGP_PAT_START_GROUP,
1100  XML_RNGP_PAT_START_INTERLEAVE,
1101  XML_RNGP_PAT_START_LIST,
1102  XML_RNGP_PAT_START_ONEMORE,
1103  XML_RNGP_PAT_START_TEXT,
1104  XML_RNGP_PAT_START_VALUE,
1105  XML_RNGP_PREFIX_UNDEFINED,
1106  XML_RNGP_REF_CREATE_FAILED,
1107  XML_RNGP_REF_CYCLE,
1108  XML_RNGP_REF_NAME_INVALID,
1109  XML_RNGP_REF_NO_DEF,
1110  XML_RNGP_REF_NO_NAME,
1111  XML_RNGP_REF_NOT_EMPTY,
1112  XML_RNGP_START_CHOICE_AND_INTERLEAVE,
1113  XML_RNGP_START_CONTENT,
1114  XML_RNGP_START_EMPTY,
1115  XML_RNGP_START_MISSING,
1116  XML_RNGP_TEXT_EXPECTED,
1117  XML_RNGP_TEXT_HAS_CHILD,
1118  XML_RNGP_TYPE_MISSING,
1119  XML_RNGP_TYPE_NOT_FOUND,
1120  XML_RNGP_TYPE_VALUE,
1121  XML_RNGP_UNKNOWN_ATTRIBUTE,
1122  XML_RNGP_UNKNOWN_COMBINE,
1123  XML_RNGP_UNKNOWN_CONSTRUCT,
1124  XML_RNGP_UNKNOWN_TYPE_LIB,
1125  XML_RNGP_URI_FRAGMENT,
1126  XML_RNGP_URI_NOT_ABSOLUTE,
1127  XML_RNGP_VALUE_EMPTY,
1128  XML_RNGP_VALUE_NO_CONTENT,
1129  XML_RNGP_XMLNS_NAME,
1130  XML_RNGP_XML_NS,
1131  XML_XPATH_EXPRESSION_OK = 1200,
1132  XML_XPATH_NUMBER_ERROR,
1133  XML_XPATH_UNFINISHED_LITERAL_ERROR,
1134  XML_XPATH_START_LITERAL_ERROR,
1135  XML_XPATH_VARIABLE_REF_ERROR,
1136  XML_XPATH_UNDEF_VARIABLE_ERROR,
1137  XML_XPATH_INVALID_PREDICATE_ERROR,
1138  XML_XPATH_EXPR_ERROR,
1139  XML_XPATH_UNCLOSED_ERROR,
1140  XML_XPATH_UNKNOWN_FUNC_ERROR,
1141  XML_XPATH_INVALID_OPERAND,
1142  XML_XPATH_INVALID_TYPE,
1143  XML_XPATH_INVALID_ARITY,
1144  XML_XPATH_INVALID_CTXT_SIZE,
1145  XML_XPATH_INVALID_CTXT_POSITION,
1146  XML_XPATH_MEMORY_ERROR,
1147  XML_XPTR_SYNTAX_ERROR,
1148  XML_XPTR_RESOURCE_ERROR,
1149  XML_XPTR_SUB_RESOURCE_ERROR,
1150  XML_XPATH_UNDEF_PREFIX_ERROR,
1151  XML_XPATH_ENCODING_ERROR,
1152  XML_XPATH_INVALID_CHAR_ERROR,
1153  XML_TREE_INVALID_HEX = 1300,
1154  XML_TREE_INVALID_DEC,
1155  XML_TREE_UNTERMINATED_ENTITY,
1156  XML_TREE_NOT_UTF8,
1157  XML_SAVE_NOT_UTF8 = 1400,
1158  XML_SAVE_CHAR_INVALID,
1159  XML_SAVE_NO_DOCTYPE,
1160  XML_SAVE_UNKNOWN_ENCODING,
1161  XML_REGEXP_COMPILE_ERROR = 1450,
1162  XML_IO_UNKNOWN = 1500,
1163  XML_IO_EACCES,
1164  XML_IO_EAGAIN,
1165  XML_IO_EBADF,
1166  XML_IO_EBADMSG,
1167  XML_IO_EBUSY,
1168  XML_IO_ECANCELED,
1169  XML_IO_ECHILD,
1170  XML_IO_EDEADLK,
1171  XML_IO_EDOM,
1172  XML_IO_EEXIST,
1173  XML_IO_EFAULT,
1174  XML_IO_EFBIG,
1175  XML_IO_EINPROGRESS,
1176  XML_IO_EINTR,
1177  XML_IO_EINVAL,
1178  XML_IO_EIO,
1179  XML_IO_EISDIR,
1180  XML_IO_EMFILE,
1181  XML_IO_EMLINK,
1182  XML_IO_EMSGSIZE,
1183  XML_IO_ENAMETOOLONG,
1184  XML_IO_ENFILE,
1185  XML_IO_ENODEV,
1186  XML_IO_ENOENT,
1187  XML_IO_ENOEXEC,
1188  XML_IO_ENOLCK,
1189  XML_IO_ENOMEM,
1190  XML_IO_ENOSPC,
1191  XML_IO_ENOSYS,
1192  XML_IO_ENOTDIR,
1193  XML_IO_ENOTEMPTY,
1194  XML_IO_ENOTSUP,
1195  XML_IO_ENOTTY,
1196  XML_IO_ENXIO,
1197  XML_IO_EPERM,
1198  XML_IO_EPIPE,
1199  XML_IO_ERANGE,
1200  XML_IO_EROFS,
1201  XML_IO_ESPIPE,
1202  XML_IO_ESRCH,
1203  XML_IO_ETIMEDOUT,
1204  XML_IO_EXDEV,
1205  XML_IO_NETWORK_ATTEMPT,
1206  XML_IO_ENCODER,
1207  XML_IO_FLUSH,
1208  XML_IO_WRITE,
1209  XML_IO_NO_INPUT,
1210  XML_IO_BUFFER_FULL,
1211  XML_IO_LOAD_ERROR,
1212  XML_IO_ENOTSOCK,
1213  XML_IO_EISCONN,
1214  XML_IO_ECONNREFUSED,
1215  XML_IO_ENETUNREACH,
1216  XML_IO_EADDRINUSE,
1217  XML_IO_EALREADY,
1218  XML_IO_EAFNOSUPPORT,
1219  XML_XINCLUDE_RECURSION = 1600,
1220  XML_XINCLUDE_PARSE_VALUE,
1221  XML_XINCLUDE_ENTITY_DEF_MISMATCH,
1222  XML_XINCLUDE_NO_HREF,
1223  XML_XINCLUDE_NO_FALLBACK,
1224  XML_XINCLUDE_HREF_URI,
1225  XML_XINCLUDE_TEXT_FRAGMENT,
1226  XML_XINCLUDE_TEXT_DOCUMENT,
1227  XML_XINCLUDE_INVALID_CHAR,
1228  XML_XINCLUDE_BUILD_FAILED,
1229  XML_XINCLUDE_UNKNOWN_ENCODING,
1230  XML_XINCLUDE_MULTIPLE_ROOT,
1231  XML_XINCLUDE_XPTR_FAILED,
1232  XML_XINCLUDE_XPTR_RESULT,
1233  XML_XINCLUDE_INCLUDE_IN_INCLUDE,
1234  XML_XINCLUDE_FALLBACKS_IN_INCLUDE,
1235  XML_XINCLUDE_FALLBACK_NOT_IN_INCLUDE,
1236  XML_XINCLUDE_DEPRECATED_NS,
1237  XML_XINCLUDE_FRAGMENT_ID,
1238  XML_CATALOG_MISSING_ATTR = 1650,
1239  XML_CATALOG_ENTRY_BROKEN,
1240  XML_CATALOG_PREFER_VALUE,
1241  XML_CATALOG_NOT_CATALOG,
1242  XML_CATALOG_RECURSION,
1243  XML_SCHEMAP_PREFIX_UNDEFINED = 1700,
1244  XML_SCHEMAP_ATTRFORMDEFAULT_VALUE,
1245  XML_SCHEMAP_ATTRGRP_NONAME_NOREF,
1246  XML_SCHEMAP_ATTR_NONAME_NOREF,
1247  XML_SCHEMAP_COMPLEXTYPE_NONAME_NOREF,
1248  XML_SCHEMAP_ELEMFORMDEFAULT_VALUE,
1249  XML_SCHEMAP_ELEM_NONAME_NOREF,
1250  XML_SCHEMAP_EXTENSION_NO_BASE,
1251  XML_SCHEMAP_FACET_NO_VALUE,
1252  XML_SCHEMAP_FAILED_BUILD_IMPORT,
1253  XML_SCHEMAP_GROUP_NONAME_NOREF,
1254  XML_SCHEMAP_IMPORT_NAMESPACE_NOT_URI,
1255  XML_SCHEMAP_IMPORT_REDEFINE_NSNAME,
1256  XML_SCHEMAP_IMPORT_SCHEMA_NOT_URI,
1257  XML_SCHEMAP_INVALID_BOOLEAN,
1258  XML_SCHEMAP_INVALID_ENUM,
1259  XML_SCHEMAP_INVALID_FACET,
1260  XML_SCHEMAP_INVALID_FACET_VALUE,
1261  XML_SCHEMAP_INVALID_MAXOCCURS,
1262  XML_SCHEMAP_INVALID_MINOCCURS,
1263  XML_SCHEMAP_INVALID_REF_AND_SUBTYPE,
1264  XML_SCHEMAP_INVALID_WHITE_SPACE,
1265  XML_SCHEMAP_NOATTR_NOREF,
1266  XML_SCHEMAP_NOTATION_NO_NAME,
1267  XML_SCHEMAP_NOTYPE_NOREF,
1268  XML_SCHEMAP_REF_AND_SUBTYPE,
1269  XML_SCHEMAP_RESTRICTION_NONAME_NOREF,
1270  XML_SCHEMAP_SIMPLETYPE_NONAME,
1271  XML_SCHEMAP_TYPE_AND_SUBTYPE,
1272  XML_SCHEMAP_UNKNOWN_ALL_CHILD,
1273  XML_SCHEMAP_UNKNOWN_ANYATTRIBUTE_CHILD,
1274  XML_SCHEMAP_UNKNOWN_ATTR_CHILD,
1275  XML_SCHEMAP_UNKNOWN_ATTRGRP_CHILD,
1276  XML_SCHEMAP_UNKNOWN_ATTRIBUTE_GROUP,
1277  XML_SCHEMAP_UNKNOWN_BASE_TYPE,
1278  XML_SCHEMAP_UNKNOWN_CHOICE_CHILD,
1279  XML_SCHEMAP_UNKNOWN_COMPLEXCONTENT_CHILD,
1280  XML_SCHEMAP_UNKNOWN_COMPLEXTYPE_CHILD,
1281  XML_SCHEMAP_UNKNOWN_ELEM_CHILD,
1282  XML_SCHEMAP_UNKNOWN_EXTENSION_CHILD,
1283  XML_SCHEMAP_UNKNOWN_FACET_CHILD,
1284  XML_SCHEMAP_UNKNOWN_FACET_TYPE,
1285  XML_SCHEMAP_UNKNOWN_GROUP_CHILD,
1286  XML_SCHEMAP_UNKNOWN_IMPORT_CHILD,
1287  XML_SCHEMAP_UNKNOWN_LIST_CHILD,
1288  XML_SCHEMAP_UNKNOWN_NOTATION_CHILD,
1289  XML_SCHEMAP_UNKNOWN_PROCESSCONTENT_CHILD,
1290  XML_SCHEMAP_UNKNOWN_REF,
1291  XML_SCHEMAP_UNKNOWN_RESTRICTION_CHILD,
1292  XML_SCHEMAP_UNKNOWN_SCHEMAS_CHILD,
1293  XML_SCHEMAP_UNKNOWN_SEQUENCE_CHILD,
1294  XML_SCHEMAP_UNKNOWN_SIMPLECONTENT_CHILD,
1295  XML_SCHEMAP_UNKNOWN_SIMPLETYPE_CHILD,
1296  XML_SCHEMAP_UNKNOWN_TYPE,
1297  XML_SCHEMAP_UNKNOWN_UNION_CHILD,
1298  XML_SCHEMAP_ELEM_DEFAULT_FIXED,
1299  XML_SCHEMAP_REGEXP_INVALID,
1300  XML_SCHEMAP_FAILED_LOAD,
1301  XML_SCHEMAP_NOTHING_TO_PARSE,
1302  XML_SCHEMAP_NOROOT,
1303  XML_SCHEMAP_REDEFINED_GROUP,
1304  XML_SCHEMAP_REDEFINED_TYPE,
1305  XML_SCHEMAP_REDEFINED_ELEMENT,
1306  XML_SCHEMAP_REDEFINED_ATTRGROUP,
1307  XML_SCHEMAP_REDEFINED_ATTR,
1308  XML_SCHEMAP_REDEFINED_NOTATION,
1309  XML_SCHEMAP_FAILED_PARSE,
1310  XML_SCHEMAP_UNKNOWN_PREFIX,
1311  XML_SCHEMAP_DEF_AND_PREFIX,
1312  XML_SCHEMAP_UNKNOWN_INCLUDE_CHILD,
1313  XML_SCHEMAP_INCLUDE_SCHEMA_NOT_URI,
1314  XML_SCHEMAP_INCLUDE_SCHEMA_NO_URI,
1315  XML_SCHEMAP_NOT_SCHEMA,
1316  XML_SCHEMAP_UNKNOWN_MEMBER_TYPE,
1317  XML_SCHEMAP_INVALID_ATTR_USE,
1318  XML_SCHEMAP_RECURSIVE,
1319  XML_SCHEMAP_SUPERNUMEROUS_LIST_ITEM_TYPE,
1320  XML_SCHEMAP_INVALID_ATTR_COMBINATION,
1321  XML_SCHEMAP_INVALID_ATTR_INLINE_COMBINATION,
1322  XML_SCHEMAP_MISSING_SIMPLETYPE_CHILD,
1323  XML_SCHEMAP_INVALID_ATTR_NAME,
1324  XML_SCHEMAP_REF_AND_CONTENT,
1325  XML_SCHEMAP_CT_PROPS_CORRECT_1,
1326  XML_SCHEMAP_CT_PROPS_CORRECT_2,
1327  XML_SCHEMAP_CT_PROPS_CORRECT_3,
1328  XML_SCHEMAP_CT_PROPS_CORRECT_4,
1329  XML_SCHEMAP_CT_PROPS_CORRECT_5,
1330  XML_SCHEMAP_DERIVATION_OK_RESTRICTION_1,
1331  XML_SCHEMAP_DERIVATION_OK_RESTRICTION_2_1_1,
1332  XML_SCHEMAP_DERIVATION_OK_RESTRICTION_2_1_2,
1333  XML_SCHEMAP_DERIVATION_OK_RESTRICTION_2_2,
1334  XML_SCHEMAP_DERIVATION_OK_RESTRICTION_3,
1335  XML_SCHEMAP_WILDCARD_INVALID_NS_MEMBER,
1336  XML_SCHEMAP_INTERSECTION_NOT_EXPRESSIBLE,
1337  XML_SCHEMAP_UNION_NOT_EXPRESSIBLE,
1338  XML_SCHEMAP_SRC_IMPORT_3_1,
1339  XML_SCHEMAP_SRC_IMPORT_3_2,
1340  XML_SCHEMAP_DERIVATION_OK_RESTRICTION_4_1,
1341  XML_SCHEMAP_DERIVATION_OK_RESTRICTION_4_2,
1342  XML_SCHEMAP_DERIVATION_OK_RESTRICTION_4_3,
1343  XML_SCHEMAP_COS_CT_EXTENDS_1_3,
1344  XML_SCHEMAV_NOROOT = 1801,
1345  XML_SCHEMAV_UNDECLAREDELEM,
1346  XML_SCHEMAV_NOTTOPLEVEL,
1347  XML_SCHEMAV_MISSING,
1348  XML_SCHEMAV_WRONGELEM,
1349  XML_SCHEMAV_NOTYPE,
1350  XML_SCHEMAV_NOROLLBACK,
1351  XML_SCHEMAV_ISABSTRACT,
1352  XML_SCHEMAV_NOTEMPTY,
1353  XML_SCHEMAV_ELEMCONT,
1354  XML_SCHEMAV_HAVEDEFAULT,
1355  XML_SCHEMAV_NOTNILLABLE,
1356  XML_SCHEMAV_EXTRACONTENT,
1357  XML_SCHEMAV_INVALIDATTR,
1358  XML_SCHEMAV_INVALIDELEM,
1359  XML_SCHEMAV_NOTDETERMINIST,
1360  XML_SCHEMAV_CONSTRUCT,
1361  XML_SCHEMAV_INTERNAL,
1362  XML_SCHEMAV_NOTSIMPLE,
1363  XML_SCHEMAV_ATTRUNKNOWN,
1364  XML_SCHEMAV_ATTRINVALID,
1365  XML_SCHEMAV_VALUE,
1366  XML_SCHEMAV_FACET,
1367  XML_SCHEMAV_CVC_DATATYPE_VALID_1_2_1,
1368  XML_SCHEMAV_CVC_DATATYPE_VALID_1_2_2,
1369  XML_SCHEMAV_CVC_DATATYPE_VALID_1_2_3,
1370  XML_SCHEMAV_CVC_TYPE_3_1_1,
1371  XML_SCHEMAV_CVC_TYPE_3_1_2,
1372  XML_SCHEMAV_CVC_FACET_VALID,
1373  XML_SCHEMAV_CVC_LENGTH_VALID,
1374  XML_SCHEMAV_CVC_MINLENGTH_VALID,
1375  XML_SCHEMAV_CVC_MAXLENGTH_VALID,
1376  XML_SCHEMAV_CVC_MININCLUSIVE_VALID,
1377  XML_SCHEMAV_CVC_MAXINCLUSIVE_VALID,
1378  XML_SCHEMAV_CVC_MINEXCLUSIVE_VALID,
1379  XML_SCHEMAV_CVC_MAXEXCLUSIVE_VALID,
1380  XML_SCHEMAV_CVC_TOTALDIGITS_VALID,
1381  XML_SCHEMAV_CVC_FRACTIONDIGITS_VALID,
1382  XML_SCHEMAV_CVC_PATTERN_VALID,
1383  XML_SCHEMAV_CVC_ENUMERATION_VALID,
1384  XML_SCHEMAV_CVC_COMPLEX_TYPE_2_1,
1385  XML_SCHEMAV_CVC_COMPLEX_TYPE_2_2,
1386  XML_SCHEMAV_CVC_COMPLEX_TYPE_2_3,
1387  XML_SCHEMAV_CVC_COMPLEX_TYPE_2_4,
1388  XML_SCHEMAV_CVC_ELT_1,
1389  XML_SCHEMAV_CVC_ELT_2,
1390  XML_SCHEMAV_CVC_ELT_3_1,
1391  XML_SCHEMAV_CVC_ELT_3_2_1,
1392  XML_SCHEMAV_CVC_ELT_3_2_2,
1393  XML_SCHEMAV_CVC_ELT_4_1,
1394  XML_SCHEMAV_CVC_ELT_4_2,
1395  XML_SCHEMAV_CVC_ELT_4_3,
1396  XML_SCHEMAV_CVC_ELT_5_1_1,
1397  XML_SCHEMAV_CVC_ELT_5_1_2,
1398  XML_SCHEMAV_CVC_ELT_5_2_1,
1399  XML_SCHEMAV_CVC_ELT_5_2_2_1,
1400  XML_SCHEMAV_CVC_ELT_5_2_2_2_1,
1401  XML_SCHEMAV_CVC_ELT_5_2_2_2_2,
1402  XML_SCHEMAV_CVC_ELT_6,
1403  XML_SCHEMAV_CVC_ELT_7,
1404  XML_SCHEMAV_CVC_ATTRIBUTE_1,
1405  XML_SCHEMAV_CVC_ATTRIBUTE_2,
1406  XML_SCHEMAV_CVC_ATTRIBUTE_3,
1407  XML_SCHEMAV_CVC_ATTRIBUTE_4,
1408  XML_SCHEMAV_CVC_COMPLEX_TYPE_3_1,
1409  XML_SCHEMAV_CVC_COMPLEX_TYPE_3_2_1,
1410  XML_SCHEMAV_CVC_COMPLEX_TYPE_3_2_2,
1411  XML_SCHEMAV_CVC_COMPLEX_TYPE_4,
1412  XML_SCHEMAV_CVC_COMPLEX_TYPE_5_1,
1413  XML_SCHEMAV_CVC_COMPLEX_TYPE_5_2,
1414  XML_SCHEMAV_ELEMENT_CONTENT,
1415  XML_SCHEMAV_DOCUMENT_ELEMENT_MISSING,
1416  XML_SCHEMAV_CVC_COMPLEX_TYPE_1,
1417  XML_SCHEMAV_CVC_AU,
1418  XML_SCHEMAV_CVC_TYPE_1,
1419  XML_SCHEMAV_CVC_TYPE_2,
1420  XML_SCHEMAV_CVC_IDC,
1421  XML_SCHEMAV_CVC_WILDCARD,
1422  XML_SCHEMAV_MISC,
1423  XML_XPTR_UNKNOWN_SCHEME = 1900,
1424  XML_XPTR_CHILDSEQ_START,
1425  XML_XPTR_EVAL_FAILED,
1426  XML_XPTR_EXTRA_OBJECTS,
1427  XML_C14N_CREATE_CTXT = 1950,
1428  XML_C14N_REQUIRES_UTF8,
1429  XML_C14N_CREATE_STACK,
1430  XML_C14N_INVALID_NODE,
1431  XML_C14N_UNKNOW_NODE,
1432  XML_C14N_RELATIVE_NAMESPACE,
1433  XML_FTP_PASV_ANSWER = 2000,
1434  XML_FTP_EPSV_ANSWER,
1435  XML_FTP_ACCNT,
1436  XML_FTP_URL_SYNTAX,
1437  XML_HTTP_URL_SYNTAX = 2020,
1438  XML_HTTP_USE_IP,
1439  XML_HTTP_UNKNOWN_HOST,
1440  XML_SCHEMAP_SRC_SIMPLE_TYPE_1 = 3000,
1441  XML_SCHEMAP_SRC_SIMPLE_TYPE_2,
1442  XML_SCHEMAP_SRC_SIMPLE_TYPE_3,
1443  XML_SCHEMAP_SRC_SIMPLE_TYPE_4,
1444  XML_SCHEMAP_SRC_RESOLVE,
1445  XML_SCHEMAP_SRC_RESTRICTION_BASE_OR_SIMPLETYPE,
1446  XML_SCHEMAP_SRC_LIST_ITEMTYPE_OR_SIMPLETYPE,
1447  XML_SCHEMAP_SRC_UNION_MEMBERTYPES_OR_SIMPLETYPES,
1448  XML_SCHEMAP_ST_PROPS_CORRECT_1,
1449  XML_SCHEMAP_ST_PROPS_CORRECT_2,
1450  XML_SCHEMAP_ST_PROPS_CORRECT_3,
1451  XML_SCHEMAP_COS_ST_RESTRICTS_1_1,
1452  XML_SCHEMAP_COS_ST_RESTRICTS_1_2,
1453  XML_SCHEMAP_COS_ST_RESTRICTS_1_3_1,
1454  XML_SCHEMAP_COS_ST_RESTRICTS_1_3_2,
1455  XML_SCHEMAP_COS_ST_RESTRICTS_2_1,
1456  XML_SCHEMAP_COS_ST_RESTRICTS_2_3_1_1,
1457  XML_SCHEMAP_COS_ST_RESTRICTS_2_3_1_2,
1458  XML_SCHEMAP_COS_ST_RESTRICTS_2_3_2_1,
1459  XML_SCHEMAP_COS_ST_RESTRICTS_2_3_2_2,
1460  XML_SCHEMAP_COS_ST_RESTRICTS_2_3_2_3,
1461  XML_SCHEMAP_COS_ST_RESTRICTS_2_3_2_4,
1462  XML_SCHEMAP_COS_ST_RESTRICTS_2_3_2_5,
1463  XML_SCHEMAP_COS_ST_RESTRICTS_3_1,
1464  XML_SCHEMAP_COS_ST_RESTRICTS_3_3_1,
1465  XML_SCHEMAP_COS_ST_RESTRICTS_3_3_1_2,
1466  XML_SCHEMAP_COS_ST_RESTRICTS_3_3_2_2,
1467  XML_SCHEMAP_COS_ST_RESTRICTS_3_3_2_1,
1468  XML_SCHEMAP_COS_ST_RESTRICTS_3_3_2_3,
1469  XML_SCHEMAP_COS_ST_RESTRICTS_3_3_2_4,
1470  XML_SCHEMAP_COS_ST_RESTRICTS_3_3_2_5,
1471  XML_SCHEMAP_COS_ST_DERIVED_OK_2_1,
1472  XML_SCHEMAP_COS_ST_DERIVED_OK_2_2,
1473  XML_SCHEMAP_S4S_ELEM_NOT_ALLOWED,
1474  XML_SCHEMAP_S4S_ELEM_MISSING,
1475  XML_SCHEMAP_S4S_ATTR_NOT_ALLOWED,
1476  XML_SCHEMAP_S4S_ATTR_MISSING,
1477  XML_SCHEMAP_S4S_ATTR_INVALID_VALUE,
1478  XML_SCHEMAP_SRC_ELEMENT_1,
1479  XML_SCHEMAP_SRC_ELEMENT_2_1,
1480  XML_SCHEMAP_SRC_ELEMENT_2_2,
1481  XML_SCHEMAP_SRC_ELEMENT_3,
1482  XML_SCHEMAP_P_PROPS_CORRECT_1,
1483  XML_SCHEMAP_P_PROPS_CORRECT_2_1,
1484  XML_SCHEMAP_P_PROPS_CORRECT_2_2,
1485  XML_SCHEMAP_E_PROPS_CORRECT_2,
1486  XML_SCHEMAP_E_PROPS_CORRECT_3,
1487  XML_SCHEMAP_E_PROPS_CORRECT_4,
1488  XML_SCHEMAP_E_PROPS_CORRECT_5,
1489  XML_SCHEMAP_E_PROPS_CORRECT_6,
1490  XML_SCHEMAP_SRC_INCLUDE,
1491  XML_SCHEMAP_SRC_ATTRIBUTE_1,
1492  XML_SCHEMAP_SRC_ATTRIBUTE_2,
1493  XML_SCHEMAP_SRC_ATTRIBUTE_3_1,
1494  XML_SCHEMAP_SRC_ATTRIBUTE_3_2,
1495  XML_SCHEMAP_SRC_ATTRIBUTE_4,
1496  XML_SCHEMAP_NO_XMLNS,
1497  XML_SCHEMAP_NO_XSI,
1498  XML_SCHEMAP_COS_VALID_DEFAULT_1,
1499  XML_SCHEMAP_COS_VALID_DEFAULT_2_1,
1500  XML_SCHEMAP_COS_VALID_DEFAULT_2_2_1,
1501  XML_SCHEMAP_COS_VALID_DEFAULT_2_2_2,
1502  XML_SCHEMAP_CVC_SIMPLE_TYPE,
1503  XML_SCHEMAP_COS_CT_EXTENDS_1_1,
1504  XML_SCHEMAP_SRC_IMPORT_1_1,
1505  XML_SCHEMAP_SRC_IMPORT_1_2,
1506  XML_SCHEMAP_SRC_IMPORT_2,
1507  XML_SCHEMAP_SRC_IMPORT_2_1,
1508  XML_SCHEMAP_SRC_IMPORT_2_2,
1509  XML_SCHEMAP_INTERNAL,
1510  XML_SCHEMAP_NOT_DETERMINISTIC,
1511  XML_SCHEMAP_SRC_ATTRIBUTE_GROUP_1,
1512  XML_SCHEMAP_SRC_ATTRIBUTE_GROUP_2,
1513  XML_SCHEMAP_SRC_ATTRIBUTE_GROUP_3,
1514  XML_SCHEMAP_MG_PROPS_CORRECT_1,
1515  XML_SCHEMAP_MG_PROPS_CORRECT_2,
1516  XML_SCHEMAP_SRC_CT_1,
1517  XML_SCHEMAP_DERIVATION_OK_RESTRICTION_2_1_3,
1518  XML_SCHEMAP_AU_PROPS_CORRECT_2,
1519  XML_SCHEMAP_A_PROPS_CORRECT_2,
1520  XML_SCHEMAP_C_PROPS_CORRECT,
1521  XML_SCHEMAP_SRC_REDEFINE,
1522  XML_SCHEMAP_SRC_IMPORT,
1523  XML_SCHEMAP_WARN_SKIP_SCHEMA,
1524  XML_SCHEMAP_WARN_UNLOCATED_SCHEMA,
1525  XML_SCHEMAP_WARN_ATTR_REDECL_PROH,
1526  XML_SCHEMAP_WARN_ATTR_POINTLESS_PROH,
1527  XML_SCHEMAP_AG_PROPS_CORRECT,
1528  XML_SCHEMAP_COS_CT_EXTENDS_1_2,
1529  XML_SCHEMAP_AU_PROPS_CORRECT,
1530  XML_SCHEMAP_A_PROPS_CORRECT_3,
1531  XML_SCHEMAP_COS_ALL_LIMITED,
1532  XML_SCHEMATRONV_ASSERT = 4000,
1533  XML_SCHEMATRONV_REPORT,
1534  XML_MODULE_OPEN = 4900,
1535  XML_MODULE_CLOSE,
1536  XML_CHECK_FOUND_ELEMENT = 5000,
1537  XML_CHECK_FOUND_ATTRIBUTE,
1538  XML_CHECK_FOUND_TEXT,
1539  XML_CHECK_FOUND_CDATA,
1540  XML_CHECK_FOUND_ENTITYREF,
1541  XML_CHECK_FOUND_ENTITY,
1542  XML_CHECK_FOUND_PI,
1543  XML_CHECK_FOUND_COMMENT,
1544  XML_CHECK_FOUND_DOCTYPE,
1545  XML_CHECK_FOUND_FRAGMENT,
1546  XML_CHECK_FOUND_NOTATION,
1547  XML_CHECK_UNKNOWN_NODE,
1548  XML_CHECK_ENTITY_TYPE,
1549  XML_CHECK_NO_PARENT,
1550  XML_CHECK_NO_DOC,
1551  XML_CHECK_NO_NAME,
1552  XML_CHECK_NO_ELEM,
1553  XML_CHECK_WRONG_DOC,
1554  XML_CHECK_NO_PREV,
1555  XML_CHECK_WRONG_PREV,
1556  XML_CHECK_NO_NEXT,
1557  XML_CHECK_WRONG_NEXT,
1558  XML_CHECK_NOT_DTD,
1559  XML_CHECK_NOT_ATTR,
1560  XML_CHECK_NOT_ATTR_DECL,
1561  XML_CHECK_NOT_ELEM_DECL,
1562  XML_CHECK_NOT_ENTITY_DECL,
1563  XML_CHECK_NOT_NS_DECL,
1564  XML_CHECK_NO_HREF,
1565  XML_CHECK_WRONG_PARENT,
1566  XML_CHECK_NS_SCOPE,
1567  XML_CHECK_NS_ANCESTOR,
1568  XML_CHECK_NOT_UTF8,
1569  XML_CHECK_NO_DICT,
1570  XML_CHECK_NOT_NCNAME,
1571  XML_CHECK_OUTSIDE_DICT,
1572  XML_CHECK_WRONG_NAME,
1573  XML_CHECK_NAME_NOT_NULL,
1574  XML_I18N_NO_NAME = 6000,
1575  XML_I18N_NO_HANDLER,
1576  XML_I18N_EXCESS_HANDLER,
1577  XML_I18N_CONV_FAILED,
1578  XML_I18N_NO_OUTPUT,
1579  XML_BUF_OVERFLOW = 7000
1580} xmlParserErrors;
1581
1582typedef void (*xmlGenericErrorFunc) (void *ctx, const char *msg, ...)
1583  __attribute__ ((__format__ (__printf__, 2, 3)));
1584typedef void (*xmlStructuredErrorFunc) (void *userData, xmlErrorPtr error);
1585
1586void xmlSetGenericErrorFunc (void *ctx, xmlGenericErrorFunc handler);
1587void initGenericErrorDefaultFunc (xmlGenericErrorFunc * handler);
1588void xmlSetStructuredErrorFunc (void *ctx, xmlStructuredErrorFunc handler);
1589
1590void xmlParserError (void *ctx, const char *msg, ...)
1591  __attribute__ ((__format__ (__printf__, 2, 3)));
1592void xmlParserWarning (void *ctx, const char *msg, ...)
1593  __attribute__ ((__format__ (__printf__, 2, 3)));
1594void xmlParserValidityError (void *ctx, const char *msg, ...)
1595  __attribute__ ((__format__ (__printf__, 2, 3)));
1596void xmlParserValidityWarning (void *ctx, const char *msg, ...)
1597  __attribute__ ((__format__ (__printf__, 2, 3)));
1598void xmlParserPrintFileInfo (xmlParserInputPtr input);
1599void xmlParserPrintFileContext (xmlParserInputPtr input);
1600xmlErrorPtr xmlGetLastError (void);
1601void xmlResetLastError (void);
1602xmlErrorPtr xmlCtxtGetLastError (void *ctx);
1603void xmlCtxtResetLastError (void *ctx);
1604void xmlResetError (xmlErrorPtr err);
1605int xmlCopyError (xmlErrorPtr from, xmlErrorPtr to);
1606typedef struct _xmlLink xmlLink;
1607typedef xmlLink *xmlLinkPtr;
1608typedef struct _xmlList xmlList;
1609typedef xmlList *xmlListPtr;
1610typedef void (*xmlListDeallocator) (xmlLinkPtr lk);
1611typedef int (*xmlListDataCompare) (const void *data0, const void *data1);
1612typedef int (*xmlListWalker) (const void *data, const void *user);
1613
1614xmlListPtr xmlListCreate (xmlListDeallocator deallocator, xmlListDataCompare compare);
1615void xmlListDelete (xmlListPtr l);
1616void *xmlListSearch (xmlListPtr l, void *data);
1617void *xmlListReverseSearch (xmlListPtr l, void *data);
1618int xmlListInsert (xmlListPtr l, void *data);
1619int xmlListAppend (xmlListPtr l, void *data);
1620int xmlListRemoveFirst (xmlListPtr l, void *data);
1621int xmlListRemoveLast (xmlListPtr l, void *data);
1622int xmlListRemoveAll (xmlListPtr l, void *data);
1623void xmlListClear (xmlListPtr l);
1624int xmlListEmpty (xmlListPtr l);
1625xmlLinkPtr xmlListFront (xmlListPtr l);
1626xmlLinkPtr xmlListEnd (xmlListPtr l);
1627int xmlListSize (xmlListPtr l);
1628void xmlListPopFront (xmlListPtr l);
1629void xmlListPopBack (xmlListPtr l);
1630int xmlListPushFront (xmlListPtr l, void *data);
1631int xmlListPushBack (xmlListPtr l, void *data);
1632void xmlListReverse (xmlListPtr l);
1633void xmlListSort (xmlListPtr l);
1634void xmlListWalk (xmlListPtr l, xmlListWalker walker, const void *user);
1635void xmlListReverseWalk (xmlListPtr l, xmlListWalker walker, const void *user);
1636void xmlListMerge (xmlListPtr l1, xmlListPtr l2);
1637xmlListPtr xmlListDup (const xmlListPtr old);
1638int xmlListCopy (xmlListPtr cur, const xmlListPtr old);
1639void *xmlLinkGetData (xmlLinkPtr lk);
1640typedef struct _xmlAutomata xmlAutomata;
1641typedef xmlAutomata *xmlAutomataPtr;
1642
1643typedef struct _xmlAutomataState xmlAutomataState;
1644typedef xmlAutomataState *xmlAutomataStatePtr;
1645
1646xmlAutomataPtr xmlNewAutomata (void);
1647void xmlFreeAutomata (xmlAutomataPtr am);
1648
1649xmlAutomataStatePtr xmlAutomataGetInitState (xmlAutomataPtr am);
1650int xmlAutomataSetFinalState (xmlAutomataPtr am, xmlAutomataStatePtr state);
1651xmlAutomataStatePtr xmlAutomataNewState (xmlAutomataPtr am);
1652xmlAutomataStatePtr
1653xmlAutomataNewTransition (xmlAutomataPtr am,
1654			  xmlAutomataStatePtr from,
1655			  xmlAutomataStatePtr to,
1656			  const xmlChar * token, void *data);
1657xmlAutomataStatePtr
1658xmlAutomataNewTransition2 (xmlAutomataPtr am,
1659			   xmlAutomataStatePtr from,
1660			   xmlAutomataStatePtr to,
1661			   const xmlChar * token,
1662			   const xmlChar * token2, void *data);
1663xmlAutomataStatePtr
1664xmlAutomataNewNegTrans (xmlAutomataPtr am,
1665			xmlAutomataStatePtr from,
1666			xmlAutomataStatePtr to,
1667			const xmlChar * token,
1668			const xmlChar * token2, void *data);
1669
1670xmlAutomataStatePtr
1671xmlAutomataNewCountTrans (xmlAutomataPtr am,
1672			  xmlAutomataStatePtr from,
1673			  xmlAutomataStatePtr to,
1674			  const xmlChar * token,
1675			  int min, int max, void *data);
1676xmlAutomataStatePtr
1677xmlAutomataNewCountTrans2 (xmlAutomataPtr am,
1678			   xmlAutomataStatePtr from,
1679			   xmlAutomataStatePtr to,
1680			   const xmlChar * token,
1681			   const xmlChar * token2,
1682			   int min, int max, void *data);
1683xmlAutomataStatePtr
1684xmlAutomataNewOnceTrans (xmlAutomataPtr am,
1685			 xmlAutomataStatePtr from,
1686			 xmlAutomataStatePtr to,
1687			 const xmlChar * token, int min, int max, void *data);
1688xmlAutomataStatePtr
1689xmlAutomataNewOnceTrans2 (xmlAutomataPtr am,
1690			  xmlAutomataStatePtr from,
1691			  xmlAutomataStatePtr to,
1692			  const xmlChar * token,
1693			  const xmlChar * token2,
1694			  int min, int max, void *data);
1695xmlAutomataStatePtr
1696xmlAutomataNewAllTrans (xmlAutomataPtr am,
1697			xmlAutomataStatePtr from,
1698			xmlAutomataStatePtr to, int lax);
1699xmlAutomataStatePtr
1700xmlAutomataNewEpsilon (xmlAutomataPtr am,
1701		       xmlAutomataStatePtr from, xmlAutomataStatePtr to);
1702xmlAutomataStatePtr
1703xmlAutomataNewCountedTrans (xmlAutomataPtr am,
1704			    xmlAutomataStatePtr from,
1705			    xmlAutomataStatePtr to, int counter);
1706xmlAutomataStatePtr
1707xmlAutomataNewCounterTrans (xmlAutomataPtr am,
1708			    xmlAutomataStatePtr from,
1709			    xmlAutomataStatePtr to, int counter);
1710int xmlAutomataNewCounter (xmlAutomataPtr am, int min, int max);
1711
1712xmlRegexpPtr xmlAutomataCompile (xmlAutomataPtr am);
1713int xmlAutomataIsDeterminist (xmlAutomataPtr am);
1714typedef struct _xmlValidState xmlValidState;
1715typedef xmlValidState *xmlValidStatePtr;
1716typedef void (*xmlValidityErrorFunc) (void *ctx, const char *msg, ...)
1717  __attribute__ ((__format__ (__printf__, 2, 3)));
1718typedef void (*xmlValidityWarningFunc) (void *ctx, const char *msg, ...)
1719  __attribute__ ((__format__ (__printf__, 2, 3)));
1720typedef struct _xmlValidCtxt xmlValidCtxt;
1721typedef xmlValidCtxt *xmlValidCtxtPtr;
1722
1723struct _xmlValidCtxt
1724{
1725  void *userData;
1726  xmlValidityErrorFunc error;
1727  xmlValidityWarningFunc warning;
1728  xmlNodePtr node;
1729  int nodeNr;
1730  int nodeMax;
1731  xmlNodePtr *nodeTab;
1732  unsigned int finishDtd;
1733  xmlDocPtr doc;
1734  int valid;
1735  xmlValidState *vstate;
1736  int vstateNr;
1737  int vstateMax;
1738  xmlValidState *vstateTab;
1739  xmlAutomataPtr am;
1740  xmlAutomataStatePtr state;
1741};
1742
1743typedef struct _xmlHashTable xmlNotationTable;
1744typedef xmlNotationTable *xmlNotationTablePtr;
1745typedef struct _xmlHashTable xmlElementTable;
1746typedef xmlElementTable *xmlElementTablePtr;
1747typedef struct _xmlHashTable xmlAttributeTable;
1748typedef xmlAttributeTable *xmlAttributeTablePtr;
1749typedef struct _xmlHashTable xmlIDTable;
1750typedef xmlIDTable *xmlIDTablePtr;
1751typedef struct _xmlHashTable xmlRefTable;
1752typedef xmlRefTable *xmlRefTablePtr;
1753
1754xmlNotationPtr xmlAddNotationDecl (xmlValidCtxtPtr ctxt,
1755				   xmlDtdPtr dtd,
1756				   const xmlChar * name,
1757				   const xmlChar * PublicID, const xmlChar * SystemID);
1758
1759xmlNotationTablePtr xmlCopyNotationTable (xmlNotationTablePtr table);
1760
1761void xmlFreeNotationTable (xmlNotationTablePtr table);
1762
1763void xmlDumpNotationDecl (xmlBufferPtr buf, xmlNotationPtr nota);
1764void xmlDumpNotationTable (xmlBufferPtr buf, xmlNotationTablePtr table);
1765
1766xmlElementContentPtr xmlNewElementContent (const xmlChar * name, xmlElementContentType type);
1767xmlElementContentPtr xmlCopyElementContent (xmlElementContentPtr content);
1768void xmlFreeElementContent (xmlElementContentPtr cur);
1769
1770xmlElementContentPtr xmlNewDocElementContent (xmlDocPtr doc,
1771					      const xmlChar * name, xmlElementContentType type);
1772xmlElementContentPtr xmlCopyDocElementContent (xmlDocPtr doc, xmlElementContentPtr content);
1773void xmlFreeDocElementContent (xmlDocPtr doc, xmlElementContentPtr cur);
1774void xmlSnprintfElementContent (char *buf,
1775				int size,
1776				xmlElementContentPtr content, int englob);
1777
1778void xmlSprintfElementContent (char *buf,
1779			       xmlElementContentPtr content, int englob);
1780
1781xmlElementPtr xmlAddElementDecl (xmlValidCtxtPtr ctxt,
1782				 xmlDtdPtr dtd,
1783				 const xmlChar * name,
1784				 xmlElementTypeVal type, xmlElementContentPtr content);
1785
1786xmlElementTablePtr xmlCopyElementTable (xmlElementTablePtr table);
1787
1788void xmlFreeElementTable (xmlElementTablePtr table);
1789void xmlDumpElementTable (xmlBufferPtr buf, xmlElementTablePtr table);
1790void xmlDumpElementDecl (xmlBufferPtr buf, xmlElementPtr elem);
1791xmlEnumerationPtr xmlCreateEnumeration (const xmlChar * name);
1792void xmlFreeEnumeration (xmlEnumerationPtr cur);
1793xmlEnumerationPtr xmlCopyEnumeration (xmlEnumerationPtr cur);
1794
1795xmlAttributePtr xmlAddAttributeDecl (xmlValidCtxtPtr ctxt,
1796				     xmlDtdPtr dtd,
1797				     const xmlChar * elem,
1798				     const xmlChar * name,
1799				     const xmlChar * ns,
1800				     xmlAttributeType type,
1801				     xmlAttributeDefault def,
1802				     const xmlChar * defaultValue, xmlEnumerationPtr tree);
1803
1804xmlAttributeTablePtr xmlCopyAttributeTable (xmlAttributeTablePtr table);
1805void xmlFreeAttributeTable (xmlAttributeTablePtr table);
1806void xmlDumpAttributeTable (xmlBufferPtr buf, xmlAttributeTablePtr table);
1807void xmlDumpAttributeDecl (xmlBufferPtr buf, xmlAttributePtr attr);
1808
1809xmlIDPtr xmlAddID (xmlValidCtxtPtr ctxt,
1810		   xmlDocPtr doc, const xmlChar * value, xmlAttrPtr attr);
1811void xmlFreeIDTable (xmlIDTablePtr table);
1812xmlAttrPtr xmlGetID (xmlDocPtr doc, const xmlChar * ID);
1813int xmlIsID (xmlDocPtr doc, xmlNodePtr elem, xmlAttrPtr attr);
1814int xmlRemoveID (xmlDocPtr doc, xmlAttrPtr attr);
1815
1816xmlRefPtr xmlAddRef (xmlValidCtxtPtr ctxt,
1817		     xmlDocPtr doc, const xmlChar * value, xmlAttrPtr attr);
1818void xmlFreeRefTable (xmlRefTablePtr table);
1819int xmlIsRef (xmlDocPtr doc, xmlNodePtr elem, xmlAttrPtr attr);
1820int xmlRemoveRef (xmlDocPtr doc, xmlAttrPtr attr);
1821xmlListPtr xmlGetRefs (xmlDocPtr doc, const xmlChar * ID);
1822
1823xmlValidCtxtPtr xmlNewValidCtxt (void);
1824void xmlFreeValidCtxt (xmlValidCtxtPtr);
1825int xmlValidateRoot (xmlValidCtxtPtr ctxt, xmlDocPtr doc);
1826int xmlValidateElementDecl (xmlValidCtxtPtr ctxt,
1827			    xmlDocPtr doc, xmlElementPtr elem);
1828xmlChar *xmlValidNormalizeAttributeValue (xmlDocPtr doc,
1829					  xmlNodePtr elem,
1830					  const xmlChar * name,
1831					  const xmlChar * value);
1832xmlChar *xmlValidCtxtNormalizeAttributeValue (xmlValidCtxtPtr ctxt,
1833					      xmlDocPtr doc,
1834					      xmlNodePtr elem,
1835					      const xmlChar * name,
1836					      const xmlChar * value);
1837int xmlValidateAttributeDecl (xmlValidCtxtPtr ctxt,
1838			      xmlDocPtr doc, xmlAttributePtr attr);
1839int xmlValidateAttributeValue (xmlAttributeType type, const xmlChar * value);
1840int xmlValidateNotationDecl (xmlValidCtxtPtr ctxt,
1841			     xmlDocPtr doc, xmlNotationPtr nota);
1842int xmlValidateDtd (xmlValidCtxtPtr ctxt, xmlDocPtr doc, xmlDtdPtr dtd);
1843int xmlValidateDtdFinal (xmlValidCtxtPtr ctxt, xmlDocPtr doc);
1844int xmlValidateDocument (xmlValidCtxtPtr ctxt, xmlDocPtr doc);
1845int xmlValidateElement (xmlValidCtxtPtr ctxt, xmlDocPtr doc, xmlNodePtr elem);
1846int xmlValidateOneElement (xmlValidCtxtPtr ctxt, xmlDocPtr doc, xmlNodePtr elem);
1847int xmlValidateOneAttribute (xmlValidCtxtPtr ctxt,
1848			     xmlDocPtr doc,
1849			     xmlNodePtr elem,
1850			     xmlAttrPtr attr, const xmlChar * value);
1851int xmlValidateOneNamespace (xmlValidCtxtPtr ctxt,
1852			     xmlDocPtr doc,
1853			     xmlNodePtr elem,
1854			     const xmlChar * prefix,
1855			     xmlNsPtr ns, const xmlChar * value);
1856int xmlValidateDocumentFinal (xmlValidCtxtPtr ctxt, xmlDocPtr doc);
1857
1858
1859
1860int
1861xmlValidateNotationUse (xmlValidCtxtPtr ctxt,
1862			xmlDocPtr doc, const xmlChar * notationName);
1863
1864
1865int xmlIsMixedElement (xmlDocPtr doc, const xmlChar * name);
1866xmlAttributePtr xmlGetDtdAttrDesc (xmlDtdPtr dtd, const xmlChar * elem, const xmlChar * name);
1867xmlAttributePtr xmlGetDtdQAttrDesc (xmlDtdPtr dtd,
1868				    const xmlChar * elem,
1869				    const xmlChar * name, const xmlChar * prefix);
1870xmlNotationPtr xmlGetDtdNotationDesc (xmlDtdPtr dtd, const xmlChar * name);
1871xmlElementPtr xmlGetDtdQElementDesc (xmlDtdPtr dtd,
1872				     const xmlChar * name, const xmlChar * prefix);
1873xmlElementPtr xmlGetDtdElementDesc (xmlDtdPtr dtd, const xmlChar * name);
1874
1875int xmlValidGetPotentialChildren (xmlElementContent * ctree,
1876				  const xmlChar ** names, int *len, int max);
1877
1878int xmlValidGetValidElements (xmlNode * prev,
1879			      xmlNode * next, const xmlChar ** names, int max);
1880int xmlValidateNameValue (const xmlChar * value);
1881int xmlValidateNamesValue (const xmlChar * value);
1882int xmlValidateNmtokenValue (const xmlChar * value);
1883int xmlValidateNmtokensValue (const xmlChar * value);
1884
1885int xmlValidBuildContentModel (xmlValidCtxtPtr ctxt, xmlElementPtr elem);
1886
1887int
1888xmlValidatePushElement (xmlValidCtxtPtr ctxt,
1889			xmlDocPtr doc,
1890			xmlNodePtr elem, const xmlChar * qname);
1891int
1892xmlValidatePushCData (xmlValidCtxtPtr ctxt, const xmlChar * data, int len);
1893int
1894xmlValidatePopElement (xmlValidCtxtPtr ctxt,
1895		       xmlDocPtr doc, xmlNodePtr elem, const xmlChar * qname);
1896typedef enum
1897  {
1898    XML_INTERNAL_GENERAL_ENTITY = 1,
1899    XML_EXTERNAL_GENERAL_PARSED_ENTITY = 2,
1900    XML_EXTERNAL_GENERAL_UNPARSED_ENTITY = 3,
1901    XML_INTERNAL_PARAMETER_ENTITY = 4,
1902    XML_EXTERNAL_PARAMETER_ENTITY = 5,
1903    XML_INTERNAL_PREDEFINED_ENTITY = 6
1904  } xmlEntityType;
1905
1906struct _xmlEntity
1907{
1908  void *_private;
1909  xmlElementType type;
1910  const xmlChar *name;
1911  struct _xmlNode *children;
1912  struct _xmlNode *last;
1913  struct _xmlDtd *parent;
1914  struct _xmlNode *next;
1915  struct _xmlNode *prev;
1916  struct _xmlDoc *doc;
1917
1918  xmlChar *orig;
1919  xmlChar *content;
1920  int length;
1921  xmlEntityType etype;
1922  const xmlChar *ExternalID;
1923  const xmlChar *SystemID;
1924
1925  struct _xmlEntity *nexte;
1926  const xmlChar *URI;
1927  int owner;
1928  int checked;
1929};
1930
1931typedef struct _xmlHashTable xmlEntitiesTable;
1932typedef xmlEntitiesTable *xmlEntitiesTablePtr;
1933void xmlInitializePredefinedEntities (void);
1934
1935xmlEntityPtr
1936xmlNewEntity (xmlDocPtr doc,
1937	      const xmlChar * name,
1938	      int type,
1939	      const xmlChar * ExternalID,
1940	      const xmlChar * SystemID, const xmlChar * content);
1941xmlEntityPtr
1942xmlAddDocEntity (xmlDocPtr doc,
1943		 const xmlChar * name,
1944		 int type,
1945		 const xmlChar * ExternalID,
1946		 const xmlChar * SystemID, const xmlChar * content);
1947xmlEntityPtr
1948xmlAddDtdEntity (xmlDocPtr doc,
1949		 const xmlChar * name,
1950		 int type,
1951		 const xmlChar * ExternalID,
1952		 const xmlChar * SystemID, const xmlChar * content);
1953xmlEntityPtr xmlGetPredefinedEntity (const xmlChar * name);
1954xmlEntityPtr xmlGetDocEntity (const xmlDoc * doc, const xmlChar * name);
1955xmlEntityPtr xmlGetDtdEntity (xmlDocPtr doc, const xmlChar * name);
1956xmlEntityPtr xmlGetParameterEntity (xmlDocPtr doc, const xmlChar * name);
1957const xmlChar *xmlEncodeEntities (xmlDocPtr doc, const xmlChar * input);
1958xmlChar *xmlEncodeEntitiesReentrant (xmlDocPtr doc, const xmlChar * input);
1959xmlChar *xmlEncodeSpecialChars (const xmlDoc * doc, const xmlChar * input);
1960xmlEntitiesTablePtr xmlCreateEntitiesTable (void);
1961
1962xmlEntitiesTablePtr xmlCopyEntitiesTable (xmlEntitiesTablePtr table);
1963void xmlFreeEntitiesTable (xmlEntitiesTablePtr table);
1964void xmlDumpEntitiesTable (xmlBufferPtr buf, xmlEntitiesTablePtr table);
1965void xmlDumpEntityDecl (xmlBufferPtr buf, xmlEntityPtr ent);
1966void xmlCleanupPredefinedEntities (void);
1967typedef void (*xmlParserInputDeallocate) (xmlChar * str);
1968
1969struct _xmlParserInput
1970{
1971  xmlParserInputBufferPtr buf;
1972  const char *filename;
1973  const char *directory;
1974  const xmlChar *base;
1975  const xmlChar *cur;
1976  const xmlChar *end;
1977  int length;
1978  int line;
1979  int col;
1980  unsigned long consumed;
1981  xmlParserInputDeallocate free;
1982  const xmlChar *encoding;
1983  const xmlChar *version;
1984  int standalone;
1985  int id;
1986};
1987
1988typedef struct _xmlParserNodeInfo xmlParserNodeInfo;
1989typedef xmlParserNodeInfo *xmlParserNodeInfoPtr;
1990
1991struct _xmlParserNodeInfo
1992{
1993  const struct _xmlNode *node;
1994  unsigned long begin_pos;
1995  unsigned long begin_line;
1996  unsigned long end_pos;
1997  unsigned long end_line;
1998};
1999
2000typedef struct _xmlParserNodeInfoSeq xmlParserNodeInfoSeq;
2001typedef xmlParserNodeInfoSeq *xmlParserNodeInfoSeqPtr;
2002struct _xmlParserNodeInfoSeq
2003{
2004  unsigned long maximum;
2005  unsigned long length;
2006  xmlParserNodeInfo *buffer;
2007};
2008
2009typedef enum
2010  {
2011    XML_PARSER_EOF = -1,
2012    XML_PARSER_START = 0,
2013    XML_PARSER_MISC,
2014    XML_PARSER_PI,
2015    XML_PARSER_DTD,
2016    XML_PARSER_PROLOG,
2017    XML_PARSER_COMMENT,
2018    XML_PARSER_START_TAG,
2019    XML_PARSER_CONTENT,
2020    XML_PARSER_CDATA_SECTION,
2021    XML_PARSER_END_TAG,
2022    XML_PARSER_ENTITY_DECL,
2023    XML_PARSER_ENTITY_VALUE,
2024    XML_PARSER_ATTRIBUTE_VALUE,
2025    XML_PARSER_SYSTEM_LITERAL,
2026    XML_PARSER_EPILOG,
2027    XML_PARSER_IGNORE,
2028    XML_PARSER_PUBLIC_LITERAL
2029  } xmlParserInputState;
2030
2031typedef enum
2032  {
2033    XML_PARSE_UNKNOWN = 0,
2034    XML_PARSE_DOM = 1,
2035    XML_PARSE_SAX = 2,
2036    XML_PARSE_PUSH_DOM = 3,
2037    XML_PARSE_PUSH_SAX = 4,
2038    XML_PARSE_READER = 5
2039  } xmlParserMode;
2040
2041struct _xmlParserCtxt
2042{
2043  struct _xmlSAXHandler *sax;
2044  void *userData;
2045  xmlDocPtr myDoc;
2046  int wellFormed;
2047  int replaceEntities;
2048  const xmlChar *version;
2049  const xmlChar *encoding;
2050  int standalone;
2051  int html;
2052  xmlParserInputPtr input;
2053  int inputNr;
2054  int inputMax;
2055  xmlParserInputPtr *inputTab;
2056  xmlNodePtr node;
2057  int nodeNr;
2058  int nodeMax;
2059  xmlNodePtr *nodeTab;
2060  int record_info;
2061  xmlParserNodeInfoSeq node_seq;
2062  int errNo;
2063  int hasExternalSubset;
2064  int hasPErefs;
2065  int external;
2066  int valid;
2067  int validate;
2068  xmlValidCtxt vctxt;
2069  xmlParserInputState instate;
2070  int token;
2071  char *directory;
2072  const xmlChar *name;
2073  int nameNr;
2074  int nameMax;
2075  const xmlChar **nameTab;
2076  long nbChars;
2077  long checkIndex;
2078  int keepBlanks;
2079  int disableSAX;
2080  int inSubset;
2081  const xmlChar *intSubName;
2082  xmlChar *extSubURI;
2083  xmlChar *extSubSystem;
2084  int *space;
2085  int spaceNr;
2086  int spaceMax;
2087  int *spaceTab;
2088  int depth;
2089  xmlParserInputPtr entity;
2090  int charset;
2091  int nodelen;
2092  int nodemem;
2093  int pedantic;
2094  void *_private;
2095  int loadsubset;
2096  int linenumbers;
2097  void *catalogs;
2098  int recovery;
2099  int progressive;
2100  xmlDictPtr dict;
2101  const xmlChar **atts;
2102  int maxatts;
2103  int docdict;
2104  const xmlChar *str_xml;
2105  const xmlChar *str_xmlns;
2106  const xmlChar *str_xml_ns;
2107  int sax2;
2108  int nsNr;
2109  int nsMax;
2110  const xmlChar **nsTab;
2111  int *attallocs;
2112  void **pushTab;
2113  xmlHashTablePtr attsDefault;
2114  xmlHashTablePtr attsSpecial;
2115  int nsWellFormed;
2116  int options;
2117  int dictNames;
2118  int freeElemsNr;
2119  xmlNodePtr freeElems;
2120  int freeAttrsNr;
2121  xmlAttrPtr freeAttrs;
2122  xmlError lastError;
2123  xmlParserMode parseMode;
2124  unsigned long nbentities;
2125  unsigned long sizeentities;
2126  xmlParserNodeInfo *nodeInfo;
2127  int nodeInfoNr;
2128  int nodeInfoMax;
2129  xmlParserNodeInfo *nodeInfoTab;
2130  int input_id;
2131  unsigned long sizeentcopy;
2132};
2133
2134struct _xmlSAXLocator
2135{
2136  const xmlChar *(*getPublicId) (void *ctx);
2137  const xmlChar *(*getSystemId) (void *ctx);
2138  int (*getLineNumber) (void *ctx);
2139  int (*getColumnNumber) (void *ctx);
2140};
2141
2142typedef xmlParserInputPtr (*resolveEntitySAXFunc) (void *ctx,
2143						   const xmlChar * publicId,
2144						   const xmlChar * systemId);
2145typedef void (*internalSubsetSAXFunc) (void *ctx,
2146				       const xmlChar * name,
2147				       const xmlChar * ExternalID,
2148				       const xmlChar * SystemID);
2149typedef void (*externalSubsetSAXFunc) (void *ctx,
2150				       const xmlChar * name,
2151				       const xmlChar * ExternalID,
2152				       const xmlChar * SystemID);
2153typedef xmlEntityPtr (*getEntitySAXFunc) (void *ctx, const xmlChar * name);
2154typedef xmlEntityPtr (*getParameterEntitySAXFunc) (void *ctx,
2155						   const xmlChar * name);
2156typedef void (*entityDeclSAXFunc) (void *ctx,
2157				   const xmlChar * name,
2158				   int type,
2159				   const xmlChar * publicId,
2160				   const xmlChar * systemId,
2161				   xmlChar * content);
2162typedef void (*notationDeclSAXFunc) (void *ctx,
2163				     const xmlChar * name,
2164				     const xmlChar * publicId,
2165				     const xmlChar * systemId);
2166typedef void (*attributeDeclSAXFunc) (void *ctx,
2167				      const xmlChar * elem,
2168				      const xmlChar * fullname,
2169				      int type,
2170				      int def,
2171				      const xmlChar * defaultValue,
2172				      xmlEnumerationPtr tree);
2173typedef void (*elementDeclSAXFunc) (void *ctx,
2174				    const xmlChar * name,
2175				    int type, xmlElementContentPtr content);
2176typedef void (*unparsedEntityDeclSAXFunc) (void *ctx,
2177					   const xmlChar * name,
2178					   const xmlChar * publicId,
2179					   const xmlChar * systemId,
2180					   const xmlChar * notationName);
2181typedef void (*setDocumentLocatorSAXFunc) (void *ctx, xmlSAXLocatorPtr loc);
2182typedef void (*startDocumentSAXFunc) (void *ctx);
2183typedef void (*endDocumentSAXFunc) (void *ctx);
2184typedef void (*startElementSAXFunc) (void *ctx,
2185				     const xmlChar * name,
2186				     const xmlChar ** atts);
2187typedef void (*endElementSAXFunc) (void *ctx, const xmlChar * name);
2188typedef void (*attributeSAXFunc) (void *ctx,
2189				  const xmlChar * name,
2190				  const xmlChar * value);
2191typedef void (*referenceSAXFunc) (void *ctx, const xmlChar * name);
2192typedef void (*charactersSAXFunc) (void *ctx, const xmlChar * ch, int len);
2193typedef void (*ignorableWhitespaceSAXFunc) (void *ctx,
2194					    const xmlChar * ch, int len);
2195typedef void (*processingInstructionSAXFunc) (void *ctx,
2196					      const xmlChar * target,
2197					      const xmlChar * data);
2198
2199typedef void (*commentSAXFunc) (void *ctx, const xmlChar * value);
2200typedef void (*cdataBlockSAXFunc) (void *ctx, const xmlChar * value, int len);
2201typedef void (*warningSAXFunc) (void *ctx,
2202				const char *msg, ...)
2203  __attribute__ ((__format__ (__printf__, 2, 3)));
2204typedef void (*errorSAXFunc) (void *ctx, const char *msg, ...)
2205  __attribute__ ((__format__ (__printf__, 2, 3)));
2206typedef void (*fatalErrorSAXFunc) (void *ctx, const char *msg, ...)
2207  __attribute__ ((__format__ (__printf__, 2, 3)));
2208typedef int (*isStandaloneSAXFunc) (void *ctx);
2209typedef int (*hasInternalSubsetSAXFunc) (void *ctx);
2210typedef int (*hasExternalSubsetSAXFunc) (void *ctx);
2211typedef void (*startElementNsSAX2Func) (void *ctx,
2212					const xmlChar * localname,
2213					const xmlChar * prefix,
2214					const xmlChar * URI,
2215					int nb_namespaces,
2216					const xmlChar ** namespaces,
2217					int nb_attributes,
2218					int nb_defaulted,
2219					const xmlChar ** attributes);
2220typedef void (*endElementNsSAX2Func) (void *ctx,
2221				      const xmlChar * localname,
2222				      const xmlChar * prefix,
2223				      const xmlChar * URI);
2224
2225
2226struct _xmlSAXHandler
2227{
2228  internalSubsetSAXFunc internalSubset;
2229  isStandaloneSAXFunc isStandalone;
2230  hasInternalSubsetSAXFunc hasInternalSubset;
2231  hasExternalSubsetSAXFunc hasExternalSubset;
2232  resolveEntitySAXFunc resolveEntity;
2233  getEntitySAXFunc getEntity;
2234  entityDeclSAXFunc entityDecl;
2235  notationDeclSAXFunc notationDecl;
2236  attributeDeclSAXFunc attributeDecl;
2237  elementDeclSAXFunc elementDecl;
2238  unparsedEntityDeclSAXFunc unparsedEntityDecl;
2239  setDocumentLocatorSAXFunc setDocumentLocator;
2240  startDocumentSAXFunc startDocument;
2241  endDocumentSAXFunc endDocument;
2242  startElementSAXFunc startElement;
2243  endElementSAXFunc endElement;
2244  referenceSAXFunc reference;
2245  charactersSAXFunc characters;
2246  ignorableWhitespaceSAXFunc ignorableWhitespace;
2247  processingInstructionSAXFunc processingInstruction;
2248  commentSAXFunc comment;
2249  warningSAXFunc warning;
2250  errorSAXFunc error;
2251  fatalErrorSAXFunc fatalError;
2252  getParameterEntitySAXFunc getParameterEntity;
2253  cdataBlockSAXFunc cdataBlock;
2254  externalSubsetSAXFunc externalSubset;
2255  unsigned int initialized;
2256
2257  void *_private;
2258  startElementNsSAX2Func startElementNs;
2259  endElementNsSAX2Func endElementNs;
2260  xmlStructuredErrorFunc serror;
2261};
2262
2263typedef struct _xmlSAXHandlerV1 xmlSAXHandlerV1;
2264typedef xmlSAXHandlerV1 *xmlSAXHandlerV1Ptr;
2265struct _xmlSAXHandlerV1
2266{
2267  internalSubsetSAXFunc internalSubset;
2268  isStandaloneSAXFunc isStandalone;
2269  hasInternalSubsetSAXFunc hasInternalSubset;
2270  hasExternalSubsetSAXFunc hasExternalSubset;
2271  resolveEntitySAXFunc resolveEntity;
2272  getEntitySAXFunc getEntity;
2273  entityDeclSAXFunc entityDecl;
2274  notationDeclSAXFunc notationDecl;
2275  attributeDeclSAXFunc attributeDecl;
2276  elementDeclSAXFunc elementDecl;
2277  unparsedEntityDeclSAXFunc unparsedEntityDecl;
2278  setDocumentLocatorSAXFunc setDocumentLocator;
2279  startDocumentSAXFunc startDocument;
2280  endDocumentSAXFunc endDocument;
2281  startElementSAXFunc startElement;
2282  endElementSAXFunc endElement;
2283  referenceSAXFunc reference;
2284  charactersSAXFunc characters;
2285  ignorableWhitespaceSAXFunc ignorableWhitespace;
2286  processingInstructionSAXFunc processingInstruction;
2287  commentSAXFunc comment;
2288  warningSAXFunc warning;
2289  errorSAXFunc error;
2290  fatalErrorSAXFunc fatalError;
2291  getParameterEntitySAXFunc getParameterEntity;
2292  cdataBlockSAXFunc cdataBlock;
2293  externalSubsetSAXFunc externalSubset;
2294  unsigned int initialized;
2295};
2296typedef xmlParserInputPtr (*xmlExternalEntityLoader) (const char *URL,
2297						      const char *ID,
2298						      xmlParserCtxtPtr
2299						      context);
2300
2301typedef void *iconv_t;
2302extern iconv_t iconv_open (const char *__tocode, const char *__fromcode);
2303extern size_t iconv (iconv_t __cd, char **__restrict __inbuf,
2304		     size_t * __restrict __inbytesleft,
2305		     char **__restrict __outbuf,
2306		     size_t * __restrict __outbytesleft);
2307
2308extern int iconv_close (iconv_t __cd);
2309typedef int8_t UBool;
2310typedef short unsigned int UChar;
2311typedef int32_t UChar32;
2312typedef uint8_t UVersionInfo[4];
2313
2314extern __attribute__ ((visibility ("default")))
2315void u_versionFromString_52 (UVersionInfo versionArray,
2316			     const char *versionString);
2317extern __attribute__ ((visibility ("default")))
2318void u_versionFromUString_52 (UVersionInfo versionArray,
2319			      const UChar * versionString);
2320extern __attribute__ ((visibility ("default")))
2321void u_versionToString_52 (const UVersionInfo versionArray,
2322			   char *versionString);
2323extern __attribute__ ((visibility ("default")))
2324void u_getVersion_52 (UVersionInfo versionArray);
2325
2326extern const uint8_t utf8_countTrailBytes_52[256];
2327extern __attribute__ ((visibility ("default")))
2328UChar32 utf8_nextCharSafeBody_52 (const uint8_t * s, int32_t * pi, int32_t length,
2329				  UChar32 c, UBool strict);
2330extern __attribute__ ((visibility ("default")))
2331int32_t utf8_appendCharSafeBody_52 (uint8_t * s, int32_t i, int32_t length,
2332				    UChar32 c, UBool * pIsError);
2333extern __attribute__ ((visibility ("default")))
2334UChar32   utf8_prevCharSafeBody_52 (const uint8_t * s, int32_t start, int32_t * pi,
2335				    UChar32 c, UBool strict);
2336extern __attribute__ ((visibility ("default"))) int32_t
2337utf8_back1SafeBody_52 (const uint8_t * s, int32_t start, int32_t i);
2338
2339typedef double UDate;
2340
2341typedef enum UErrorCode {
2342  U_USING_FALLBACK_WARNING = -128,
2343  U_ERROR_WARNING_START = -128,
2344  U_USING_DEFAULT_WARNING = -127,
2345  U_SAFECLONE_ALLOCATED_WARNING = -126,
2346  U_STATE_OLD_WARNING = -125,
2347  U_STRING_NOT_TERMINATED_WARNING = -124,
2348  U_SORT_KEY_TOO_SHORT_WARNING = -123,
2349  U_AMBIGUOUS_ALIAS_WARNING = -122,
2350  U_DIFFERENT_UCA_VERSION = -121,
2351  U_PLUGIN_CHANGED_LEVEL_WARNING = -120,
2352  U_ERROR_WARNING_LIMIT,
2353  U_ZERO_ERROR = 0,
2354  U_ILLEGAL_ARGUMENT_ERROR = 1,
2355  U_MISSING_RESOURCE_ERROR = 2,
2356  U_INVALID_FORMAT_ERROR = 3,
2357  U_FILE_ACCESS_ERROR = 4,
2358  U_INTERNAL_PROGRAM_ERROR = 5,
2359  U_MESSAGE_PARSE_ERROR = 6,
2360  U_MEMORY_ALLOCATION_ERROR = 7,
2361  U_INDEX_OUTOFBOUNDS_ERROR = 8,
2362  U_PARSE_ERROR = 9,
2363  U_INVALID_CHAR_FOUND = 10,
2364  U_TRUNCATED_CHAR_FOUND = 11,
2365  U_ILLEGAL_CHAR_FOUND = 12,
2366  U_INVALID_TABLE_FORMAT = 13,
2367  U_INVALID_TABLE_FILE = 14,
2368  U_BUFFER_OVERFLOW_ERROR = 15,
2369  U_UNSUPPORTED_ERROR = 16,
2370  U_RESOURCE_TYPE_MISMATCH = 17,
2371  U_ILLEGAL_ESCAPE_SEQUENCE = 18,
2372  U_UNSUPPORTED_ESCAPE_SEQUENCE = 19,
2373  U_NO_SPACE_AVAILABLE = 20,
2374  U_CE_NOT_FOUND_ERROR = 21,
2375  U_PRIMARY_TOO_LONG_ERROR = 22,
2376  U_STATE_TOO_OLD_ERROR = 23,
2377  U_TOO_MANY_ALIASES_ERROR = 24,
2378  U_ENUM_OUT_OF_SYNC_ERROR = 25,
2379  U_INVARIANT_CONVERSION_ERROR = 26,
2380  U_INVALID_STATE_ERROR = 27,
2381  U_COLLATOR_VERSION_MISMATCH = 28,
2382  U_USELESS_COLLATOR_ERROR = 29,
2383  U_NO_WRITE_PERMISSION = 30,
2384  U_STANDARD_ERROR_LIMIT,
2385  U_BAD_VARIABLE_DEFINITION = 0x10000,
2386  U_PARSE_ERROR_START = 0x10000,
2387  U_MALFORMED_RULE,
2388  U_MALFORMED_SET,
2389  U_MALFORMED_SYMBOL_REFERENCE,
2390  U_MALFORMED_UNICODE_ESCAPE,
2391  U_MALFORMED_VARIABLE_DEFINITION,
2392  U_MALFORMED_VARIABLE_REFERENCE,
2393  U_MISMATCHED_SEGMENT_DELIMITERS,
2394  U_MISPLACED_ANCHOR_START,
2395  U_MISPLACED_CURSOR_OFFSET,
2396  U_MISPLACED_QUANTIFIER,
2397  U_MISSING_OPERATOR,
2398  U_MISSING_SEGMENT_CLOSE,
2399  U_MULTIPLE_ANTE_CONTEXTS,
2400  U_MULTIPLE_CURSORS,
2401  U_MULTIPLE_POST_CONTEXTS,
2402  U_TRAILING_BACKSLASH,
2403  U_UNDEFINED_SEGMENT_REFERENCE,
2404  U_UNDEFINED_VARIABLE,
2405  U_UNQUOTED_SPECIAL,
2406  U_UNTERMINATED_QUOTE,
2407  U_RULE_MASK_ERROR,
2408  U_MISPLACED_COMPOUND_FILTER,
2409  U_MULTIPLE_COMPOUND_FILTERS,
2410  U_INVALID_RBT_SYNTAX,
2411  U_INVALID_PROPERTY_PATTERN,
2412  U_MALFORMED_PRAGMA,
2413  U_UNCLOSED_SEGMENT,
2414  U_ILLEGAL_CHAR_IN_SEGMENT,
2415  U_VARIABLE_RANGE_EXHAUSTED,
2416  U_VARIABLE_RANGE_OVERLAP,
2417  U_ILLEGAL_CHARACTER,
2418  U_INTERNAL_TRANSLITERATOR_ERROR,
2419  U_INVALID_ID,
2420  U_INVALID_FUNCTION,
2421  U_PARSE_ERROR_LIMIT,
2422  U_UNEXPECTED_TOKEN = 0x10100,
2423  U_FMT_PARSE_ERROR_START = 0x10100,
2424  U_MULTIPLE_DECIMAL_SEPARATORS,
2425  U_MULTIPLE_DECIMAL_SEPERATORS = U_MULTIPLE_DECIMAL_SEPARATORS,
2426  U_MULTIPLE_EXPONENTIAL_SYMBOLS,
2427  U_MALFORMED_EXPONENTIAL_PATTERN,
2428  U_MULTIPLE_PERCENT_SYMBOLS,
2429  U_MULTIPLE_PERMILL_SYMBOLS,
2430  U_MULTIPLE_PAD_SPECIFIERS,
2431  U_PATTERN_SYNTAX_ERROR,
2432  U_ILLEGAL_PAD_POSITION,
2433  U_UNMATCHED_BRACES,
2434  U_UNSUPPORTED_PROPERTY,
2435  U_UNSUPPORTED_ATTRIBUTE,
2436  U_ARGUMENT_TYPE_MISMATCH,
2437  U_DUPLICATE_KEYWORD,
2438  U_UNDEFINED_KEYWORD,
2439  U_DEFAULT_KEYWORD_MISSING,
2440  U_DECIMAL_NUMBER_SYNTAX_ERROR,
2441  U_FORMAT_INEXACT_ERROR,
2442  U_FMT_PARSE_ERROR_LIMIT,
2443  U_BRK_INTERNAL_ERROR = 0x10200,
2444  U_BRK_ERROR_START = 0x10200,
2445  U_BRK_HEX_DIGITS_EXPECTED,
2446  U_BRK_SEMICOLON_EXPECTED,
2447  U_BRK_RULE_SYNTAX,
2448  U_BRK_UNCLOSED_SET,
2449  U_BRK_ASSIGN_ERROR,
2450  U_BRK_VARIABLE_REDFINITION,
2451  U_BRK_MISMATCHED_PAREN,
2452  U_BRK_NEW_LINE_IN_QUOTED_STRING,
2453  U_BRK_UNDEFINED_VARIABLE,
2454  U_BRK_INIT_ERROR,
2455  U_BRK_RULE_EMPTY_SET,
2456  U_BRK_UNRECOGNIZED_OPTION,
2457  U_BRK_MALFORMED_RULE_TAG,
2458  U_BRK_ERROR_LIMIT,
2459  U_REGEX_INTERNAL_ERROR = 0x10300,
2460  U_REGEX_ERROR_START = 0x10300,
2461  U_REGEX_RULE_SYNTAX,
2462  U_REGEX_INVALID_STATE,
2463  U_REGEX_BAD_ESCAPE_SEQUENCE,
2464  U_REGEX_PROPERTY_SYNTAX,
2465  U_REGEX_UNIMPLEMENTED,
2466  U_REGEX_MISMATCHED_PAREN,
2467  U_REGEX_NUMBER_TOO_BIG,
2468  U_REGEX_BAD_INTERVAL,
2469  U_REGEX_MAX_LT_MIN,
2470  U_REGEX_INVALID_BACK_REF,
2471  U_REGEX_INVALID_FLAG,
2472  U_REGEX_LOOK_BEHIND_LIMIT,
2473  U_REGEX_SET_CONTAINS_STRING,
2474  U_REGEX_OCTAL_TOO_BIG,
2475  U_REGEX_MISSING_CLOSE_BRACKET,
2476  U_REGEX_INVALID_RANGE,
2477  U_REGEX_STACK_OVERFLOW,
2478  U_REGEX_TIME_OUT,
2479  U_REGEX_STOPPED_BY_CALLER,
2480  U_REGEX_PATTERN_TOO_BIG,
2481  U_REGEX_ERROR_LIMIT,
2482  U_IDNA_PROHIBITED_ERROR = 0x10400,
2483  U_IDNA_ERROR_START = 0x10400,
2484  U_IDNA_UNASSIGNED_ERROR,
2485  U_IDNA_CHECK_BIDI_ERROR,
2486  U_IDNA_STD3_ASCII_RULES_ERROR,
2487  U_IDNA_ACE_PREFIX_ERROR,
2488  U_IDNA_VERIFICATION_ERROR,
2489  U_IDNA_LABEL_TOO_LONG_ERROR,
2490  U_IDNA_ZERO_LENGTH_LABEL_ERROR,
2491  U_IDNA_DOMAIN_NAME_TOO_LONG_ERROR,
2492  U_IDNA_ERROR_LIMIT,
2493  U_STRINGPREP_PROHIBITED_ERROR = U_IDNA_PROHIBITED_ERROR,
2494  U_STRINGPREP_UNASSIGNED_ERROR = U_IDNA_UNASSIGNED_ERROR,
2495  U_STRINGPREP_CHECK_BIDI_ERROR = U_IDNA_CHECK_BIDI_ERROR,
2496  U_PLUGIN_ERROR_START = 0x10500,
2497  U_PLUGIN_TOO_HIGH = 0x10500,
2498  U_PLUGIN_DIDNT_SET_LEVEL,
2499  U_PLUGIN_ERROR_LIMIT,
2500  U_ERROR_LIMIT = U_PLUGIN_ERROR_LIMIT
2501} UErrorCode;
2502
2503extern __attribute__ ((visibility ("default")))
2504const char * u_errorName_52 (UErrorCode code);
2505
2506struct UConverter;
2507
2508typedef struct UConverter UConverter;
2509typedef enum {
2510  UCNV_UNASSIGNED = 0,
2511  UCNV_ILLEGAL = 1,
2512  UCNV_IRREGULAR = 2,
2513  UCNV_RESET = 3,
2514  UCNV_CLOSE = 4,
2515  UCNV_CLONE = 5
2516} UConverterCallbackReason;
2517
2518typedef struct
2519{
2520  uint16_t size;
2521  UBool flush;
2522  UConverter *converter;
2523  const UChar *source;
2524  const UChar *sourceLimit;
2525  char *target;
2526  const char *targetLimit;
2527  int32_t * offsets;
2528} UConverterFromUnicodeArgs;
2529
2530typedef struct
2531{
2532  uint16_t size;
2533  UBool flush;
2534  UConverter *converter;
2535  const char *source;
2536  const char *sourceLimit;
2537  UChar *target;
2538  const UChar *targetLimit;
2539  int32_t *offsets;
2540} UConverterToUnicodeArgs;
2541
2542extern __attribute__ ((visibility ("default")))
2543void UCNV_FROM_U_CALLBACK_STOP_52 (const void *context,
2544				   UConverterFromUnicodeArgs * fromUArgs,
2545				   const UChar * codeUnits,
2546				   int32_t length,
2547				   UChar32 codePoint,
2548				   UConverterCallbackReason reason,
2549				   UErrorCode * err);
2550
2551extern __attribute__ ((visibility ("default")))
2552void UCNV_TO_U_CALLBACK_STOP_52 (const void *context,
2553				 UConverterToUnicodeArgs * toUArgs,
2554				 const char *codeUnits,
2555				 int32_t length,
2556				 UConverterCallbackReason reason,
2557				 UErrorCode * err);
2558
2559extern __attribute__ ((visibility ("default")))
2560void UCNV_FROM_U_CALLBACK_SKIP_52 (const void *context,
2561				   UConverterFromUnicodeArgs * fromUArgs,
2562				   const UChar * codeUnits,
2563				   int32_t length,
2564				   UChar32 codePoint,
2565				   UConverterCallbackReason reason,
2566				   UErrorCode * err);
2567
2568extern __attribute__ ((visibility ("default")))
2569void UCNV_FROM_U_CALLBACK_SUBSTITUTE_52 (const void *context,
2570					 UConverterFromUnicodeArgs *
2571					 fromUArgs, const UChar * codeUnits,
2572					 int32_t length, UChar32 codePoint,
2573					 UConverterCallbackReason reason,
2574					 UErrorCode * err);
2575
2576extern __attribute__ ((visibility ("default")))
2577void UCNV_FROM_U_CALLBACK_ESCAPE_52 (const void *context,
2578				     UConverterFromUnicodeArgs * fromUArgs,
2579				     const UChar * codeUnits,
2580				     int32_t length,
2581				     UChar32 codePoint,
2582				     UConverterCallbackReason reason,
2583				     UErrorCode * err);
2584
2585extern __attribute__ ((visibility ("default")))
2586void UCNV_TO_U_CALLBACK_SKIP_52 (const void *context,
2587				 UConverterToUnicodeArgs * toUArgs,
2588				 const char *codeUnits,
2589				 int32_t length,
2590				 UConverterCallbackReason reason,
2591				 UErrorCode * err);
2592
2593extern __attribute__ ((visibility ("default")))
2594void UCNV_TO_U_CALLBACK_SUBSTITUTE_52 (const void *context,
2595				       UConverterToUnicodeArgs * toUArgs,
2596				       const char *codeUnits,
2597				       int32_t length,
2598				       UConverterCallbackReason reason,
2599				       UErrorCode * err);
2600
2601extern __attribute__ ((visibility ("default")))
2602void UCNV_TO_U_CALLBACK_ESCAPE_52 (const void *context,
2603				   UConverterToUnicodeArgs * toUArgs,
2604				   const char *codeUnits,
2605				   int32_t length,
2606				   UConverterCallbackReason reason,
2607				   UErrorCode * err);
2608struct UEnumeration;
2609
2610typedef struct UEnumeration UEnumeration;
2611
2612extern __attribute__ ((visibility ("default")))
2613void uenum_close_52 (UEnumeration * en);
2614
2615extern __attribute__ ((visibility ("default")))
2616int32_t uenum_count_52 (UEnumeration * en, UErrorCode * status);
2617
2618extern __attribute__ ((visibility ("default")))
2619const UChar *uenum_unext_52 (UEnumeration * en,
2620			     int32_t * resultLength, UErrorCode * status);
2621
2622extern __attribute__ ((visibility ("default")))
2623const char *uenum_next_52 (UEnumeration * en,
2624			   int32_t * resultLength, UErrorCode * status);
2625
2626extern __attribute__ ((visibility ("default")))
2627void uenum_reset_52 (UEnumeration * en, UErrorCode * status);
2628
2629extern __attribute__ ((visibility ("default")))
2630UEnumeration *uenum_openUCharStringsEnumeration_52 (const UChar * const strings[],
2631						    int32_t count, UErrorCode * ec);
2632
2633extern __attribute__ ((visibility ("default")))
2634UEnumeration *uenum_openCharStringsEnumeration_52 (const char *const strings[],
2635						   int32_t count, UErrorCode * ec);
2636
2637struct USet;
2638typedef struct USet USet;
2639
2640typedef enum {
2641  UCNV_UNSUPPORTED_CONVERTER = -1,
2642  UCNV_SBCS = 0,
2643  UCNV_DBCS = 1,
2644  UCNV_MBCS = 2,
2645  UCNV_LATIN_1 = 3,
2646  UCNV_UTF8 = 4,
2647  UCNV_UTF16_BigEndian = 5,
2648  UCNV_UTF16_LittleEndian = 6,
2649  UCNV_UTF32_BigEndian = 7,
2650  UCNV_UTF32_LittleEndian = 8,
2651  UCNV_EBCDIC_STATEFUL = 9,
2652  UCNV_ISO_2022 = 10,
2653  UCNV_LMBCS_1 = 11,
2654  UCNV_LMBCS_2,
2655  UCNV_LMBCS_3,
2656  UCNV_LMBCS_4,
2657  UCNV_LMBCS_5,
2658  UCNV_LMBCS_6,
2659  UCNV_LMBCS_8,
2660  UCNV_LMBCS_11,
2661  UCNV_LMBCS_16,
2662  UCNV_LMBCS_17,
2663  UCNV_LMBCS_18,
2664  UCNV_LMBCS_19,
2665  UCNV_LMBCS_LAST = UCNV_LMBCS_19,
2666  UCNV_HZ,
2667  UCNV_SCSU,
2668  UCNV_ISCII,
2669  UCNV_US_ASCII,
2670  UCNV_UTF7,
2671  UCNV_BOCU1,
2672  UCNV_UTF16,
2673  UCNV_UTF32,
2674  UCNV_CESU8,
2675  UCNV_IMAP_MAILBOX,
2676  UCNV_COMPOUND_TEXT,
2677  UCNV_NUMBER_OF_SUPPORTED_CONVERTER_TYPES
2678} UConverterType;
2679
2680typedef enum {
2681  UCNV_UNKNOWN = -1,
2682  UCNV_IBM = 0
2683} UConverterPlatform;
2684
2685typedef void (*UConverterToUCallback) (const void *context,
2686				       UConverterToUnicodeArgs * args,
2687				       const char *codeUnits,
2688				       int32_t length,
2689				       UConverterCallbackReason reason,
2690				       UErrorCode * pErrorCode);
2691
2692typedef void (*UConverterFromUCallback) (const void *context,
2693					 UConverterFromUnicodeArgs *
2694					 args, const UChar * codeUnits,
2695					 int32_t length,
2696					 UChar32 codePoint,
2697					 UConverterCallbackReason reason,
2698					 UErrorCode * pErrorCode);
2699
2700extern __attribute__ ((visibility ("default")))
2701int ucnv_compareNames_52 (const char *name1, const char *name2);
2702
2703extern __attribute__ ((visibility ("default")))
2704UConverter *ucnv_open_52 (const char *converterName, UErrorCode * err);
2705
2706extern __attribute__ ((visibility ("default")))
2707UConverter *ucnv_openU_52 (const UChar * name, UErrorCode * err);
2708
2709extern __attribute__ ((visibility ("default")))
2710UConverter *ucnv_openCCSID_52 (int32_t codepage,
2711			       UConverterPlatform platform, UErrorCode * err);
2712
2713extern __attribute__ ((visibility ("default")))
2714UConverter *ucnv_openPackage_52 (const char *packageName, const char *converterName,
2715				 UErrorCode * err);
2716extern __attribute__ ((visibility ("default")))
2717UConverter *
2718ucnv_safeClone_52 (const UConverter * cnv,
2719		   void *stackBuffer,
2720		   int32_t * pBufferSize, UErrorCode * status);
2721extern __attribute__ ((visibility ("default")))
2722void
2723ucnv_close_52 (UConverter * converter);
2724extern __attribute__ ((visibility ("default")))
2725void
2726ucnv_getSubstChars_52 (const UConverter * converter,
2727		       char *subChars, int8_t * len, UErrorCode * err);
2728extern __attribute__ ((visibility ("default")))
2729void
2730ucnv_setSubstChars_52 (UConverter * converter,
2731		       const char *subChars,
2732		       int8_t len, UErrorCode * err);
2733extern __attribute__ ((visibility ("default")))
2734void
2735ucnv_setSubstString_52 (UConverter * cnv,
2736			const UChar * s,
2737			int32_t length, UErrorCode * err);
2738extern __attribute__ ((visibility ("default")))
2739void
2740ucnv_getInvalidChars_52 (const UConverter * converter,
2741			 char *errBytes, int8_t * len, UErrorCode * err);
2742extern __attribute__ ((visibility ("default")))
2743void
2744ucnv_getInvalidUChars_52 (const UConverter * converter,
2745			  UChar * errUChars,
2746			  int8_t * len, UErrorCode * err);
2747extern __attribute__ ((visibility ("default")))
2748void
2749ucnv_reset_52 (UConverter * converter);
2750extern __attribute__ ((visibility ("default")))
2751void
2752ucnv_resetToUnicode_52 (UConverter * converter);
2753extern __attribute__ ((visibility ("default")))
2754void
2755ucnv_resetFromUnicode_52 (UConverter * converter);
2756extern __attribute__ ((visibility ("default"))) int8_t
2757ucnv_getMaxCharSize_52 (const UConverter * converter);
2758extern __attribute__ ((visibility ("default"))) int8_t
2759ucnv_getMinCharSize_52 (const UConverter * converter);
2760extern __attribute__ ((visibility ("default"))) int32_t
2761ucnv_getDisplayName_52 (const UConverter * converter,
2762			const char *displayLocale,
2763			UChar * displayName,
2764			int32_t displayNameCapacity, UErrorCode * err);
2765extern __attribute__ ((visibility ("default")))
2766const char *
2767ucnv_getName_52 (const UConverter * converter, UErrorCode * err);
2768extern __attribute__ ((visibility ("default"))) int32_t
2769ucnv_getCCSID_52 (const UConverter * converter, UErrorCode * err);
2770extern __attribute__ ((visibility ("default"))) UConverterPlatform
2771ucnv_getPlatform_52 (const UConverter * converter, UErrorCode * err);
2772extern __attribute__ ((visibility ("default"))) UConverterType
2773ucnv_getType_52 (const UConverter * converter);
2774extern __attribute__ ((visibility ("default")))
2775void
2776ucnv_getStarters_52 (const UConverter * converter,
2777		     UBool starters[256], UErrorCode * err);
2778
2779typedef enum UConverterUnicodeSet {
2780
2781  UCNV_ROUNDTRIP_SET,
2782
2783  UCNV_ROUNDTRIP_AND_FALLBACK_SET,
2784
2785  UCNV_SET_COUNT
2786} UConverterUnicodeSet;
2787extern __attribute__ ((visibility ("default")))
2788void
2789ucnv_getUnicodeSet_52 (const UConverter * cnv,
2790		       USet * setFillIn,
2791		       UConverterUnicodeSet whichSet,
2792		       UErrorCode * pErrorCode);
2793extern __attribute__ ((visibility ("default")))
2794void
2795ucnv_getToUCallBack_52 (const UConverter * converter,
2796			UConverterToUCallback * action,
2797			const void **context);
2798extern __attribute__ ((visibility ("default")))
2799void
2800ucnv_getFromUCallBack_52 (const UConverter * converter,
2801			  UConverterFromUCallback * action,
2802			  const void **context);
2803extern __attribute__ ((visibility ("default")))
2804void
2805ucnv_setToUCallBack_52 (UConverter * converter,
2806			UConverterToUCallback newAction,
2807			const void *newContext,
2808			UConverterToUCallback * oldAction,
2809			const void **oldContext, UErrorCode * err);
2810extern __attribute__ ((visibility ("default")))
2811void
2812ucnv_setFromUCallBack_52 (UConverter * converter,
2813			  UConverterFromUCallback newAction,
2814			  const void *newContext,
2815			  UConverterFromUCallback * oldAction,
2816			  const void **oldContext, UErrorCode * err);
2817extern __attribute__ ((visibility ("default")))
2818void
2819ucnv_fromUnicode_52 (UConverter * converter,
2820		     char **target,
2821		     const char *targetLimit,
2822		     const UChar ** source,
2823		     const UChar * sourceLimit,
2824		     int32_t * offsets, UBool flush, UErrorCode * err);
2825extern __attribute__ ((visibility ("default")))
2826void
2827ucnv_toUnicode_52 (UConverter * converter,
2828		   UChar ** target,
2829		   const UChar * targetLimit,
2830		   const char **source,
2831		   const char *sourceLimit,
2832		   int32_t * offsets, UBool flush, UErrorCode * err);
2833extern __attribute__ ((visibility ("default"))) int32_t
2834ucnv_fromUChars_52 (UConverter * cnv,
2835		    char *dest, int32_t destCapacity,
2836		    const UChar * src, int32_t srcLength,
2837		    UErrorCode * pErrorCode);
2838extern __attribute__ ((visibility ("default"))) int32_t
2839ucnv_toUChars_52 (UConverter * cnv,
2840		  UChar * dest, int32_t destCapacity,
2841		  const char *src, int32_t srcLength,
2842		  UErrorCode * pErrorCode);
2843extern __attribute__ ((visibility ("default"))) UChar32
2844ucnv_getNextUChar_52 (UConverter * converter,
2845		      const char **source,
2846		      const char *sourceLimit, UErrorCode * err);
2847extern __attribute__ ((visibility ("default")))
2848void
2849ucnv_convertEx_52 (UConverter * targetCnv, UConverter * sourceCnv,
2850		   char **target, const char *targetLimit,
2851		   const char **source, const char *sourceLimit,
2852		   UChar * pivotStart, UChar ** pivotSource,
2853		   UChar ** pivotTarget, const UChar * pivotLimit,
2854		   UBool reset, UBool flush, UErrorCode * pErrorCode);
2855extern __attribute__ ((visibility ("default"))) int32_t
2856ucnv_convert_52 (const char *toConverterName,
2857		 const char *fromConverterName,
2858		 char *target,
2859		 int32_t targetCapacity,
2860		 const char *source,
2861		 int32_t sourceLength, UErrorCode * pErrorCode);
2862extern __attribute__ ((visibility ("default"))) int32_t
2863ucnv_toAlgorithmic_52 (UConverterType algorithmicType,
2864		       UConverter * cnv,
2865		       char *target, int32_t targetCapacity,
2866		       const char *source, int32_t sourceLength,
2867		       UErrorCode * pErrorCode);
2868extern __attribute__ ((visibility ("default"))) int32_t
2869ucnv_fromAlgorithmic_52 (UConverter * cnv,
2870			 UConverterType algorithmicType,
2871			 char *target, int32_t targetCapacity,
2872			 const char *source, int32_t sourceLength,
2873			 UErrorCode * pErrorCode);
2874extern __attribute__ ((visibility ("default"))) int32_t
2875ucnv_flushCache_52 (void);
2876extern __attribute__ ((visibility ("default"))) int32_t
2877ucnv_countAvailable_52 (void);
2878extern __attribute__ ((visibility ("default")))
2879const char *
2880ucnv_getAvailableName_52 (int32_t n);
2881extern __attribute__ ((visibility ("default")))
2882UEnumeration *
2883ucnv_openAllNames_52 (UErrorCode * pErrorCode);
2884extern __attribute__ ((visibility ("default"))) uint16_t
2885ucnv_countAliases_52 (const char *alias, UErrorCode * pErrorCode);
2886extern __attribute__ ((visibility ("default")))
2887const char *
2888ucnv_getAlias_52 (const char *alias, uint16_t n,
2889		  UErrorCode * pErrorCode);
2890extern __attribute__ ((visibility ("default")))
2891void
2892ucnv_getAliases_52 (const char *alias, const char **aliases,
2893		    UErrorCode * pErrorCode);
2894extern __attribute__ ((visibility ("default")))
2895UEnumeration *
2896ucnv_openStandardNames_52 (const char *convName,
2897			   const char *standard,
2898			   UErrorCode * pErrorCode);
2899
2900
2901
2902
2903
2904
2905extern __attribute__ ((visibility ("default"))) uint16_t
2906ucnv_countStandards_52 (void);
2907extern __attribute__ ((visibility ("default")))
2908const char *
2909ucnv_getStandard_52 (uint16_t n, UErrorCode * pErrorCode);
2910extern __attribute__ ((visibility ("default")))
2911const char *
2912ucnv_getStandardName_52 (const char *name, const char *standard,
2913			 UErrorCode * pErrorCode);
2914extern __attribute__ ((visibility ("default")))
2915const char *
2916ucnv_getCanonicalName_52 (const char *alias, const char *standard,
2917			  UErrorCode * pErrorCode);
2918extern __attribute__ ((visibility ("default")))
2919const char *
2920ucnv_getDefaultName_52 (void);
2921extern __attribute__ ((visibility ("default")))
2922void
2923ucnv_setDefaultName_52 (const char *name);
2924extern __attribute__ ((visibility ("default")))
2925void
2926ucnv_fixFileSeparator_52 (const UConverter * cnv, UChar * source,
2927			  int32_t sourceLen);
2928extern
2929__attribute__ ((visibility ("default"))) UBool
2930ucnv_isAmbiguous_52 (const UConverter * cnv);
2931extern __attribute__ ((visibility ("default")))
2932void
2933ucnv_setFallback_52 (UConverter * cnv, UBool usesFallback);
2934extern __attribute__ ((visibility ("default"))) UBool
2935ucnv_usesFallback_52 (const UConverter * cnv);
2936extern __attribute__ ((visibility ("default")))
2937const char *
2938ucnv_detectUnicodeSignature_52 (const char *source,
2939				int32_t sourceLength,
2940				int32_t * signatureLength,
2941				UErrorCode * pErrorCode);
2942extern __attribute__ ((visibility ("default"))) int32_t
2943ucnv_fromUCountPending_52 (const UConverter * cnv, UErrorCode * status);
2944extern __attribute__ ((visibility ("default"))) int32_t
2945ucnv_toUCountPending_52 (const UConverter * cnv, UErrorCode * status);
2946extern __attribute__ ((visibility ("default"))) UBool
2947ucnv_isFixedWidth_52 (UConverter * cnv, UErrorCode * status);
2948
2949typedef enum
2950  {
2951    XML_CHAR_ENCODING_ERROR = -1,
2952    XML_CHAR_ENCODING_NONE = 0,
2953    XML_CHAR_ENCODING_UTF8 = 1,
2954    XML_CHAR_ENCODING_UTF16LE = 2,
2955    XML_CHAR_ENCODING_UTF16BE = 3,
2956    XML_CHAR_ENCODING_UCS4LE = 4,
2957    XML_CHAR_ENCODING_UCS4BE = 5,
2958    XML_CHAR_ENCODING_EBCDIC = 6,
2959    XML_CHAR_ENCODING_UCS4_2143 = 7,
2960    XML_CHAR_ENCODING_UCS4_3412 = 8,
2961    XML_CHAR_ENCODING_UCS2 = 9,
2962    XML_CHAR_ENCODING_8859_1 = 10,
2963    XML_CHAR_ENCODING_8859_2 = 11,
2964    XML_CHAR_ENCODING_8859_3 = 12,
2965    XML_CHAR_ENCODING_8859_4 = 13,
2966    XML_CHAR_ENCODING_8859_5 = 14,
2967    XML_CHAR_ENCODING_8859_6 = 15,
2968    XML_CHAR_ENCODING_8859_7 = 16,
2969    XML_CHAR_ENCODING_8859_8 = 17,
2970    XML_CHAR_ENCODING_8859_9 = 18,
2971    XML_CHAR_ENCODING_2022_JP = 19,
2972    XML_CHAR_ENCODING_SHIFT_JIS = 20,
2973    XML_CHAR_ENCODING_EUC_JP = 21,
2974    XML_CHAR_ENCODING_ASCII = 22
2975  } xmlCharEncoding;
2976typedef int (*xmlCharEncodingInputFunc) (unsigned char *out, int *outlen,
2977					 const unsigned char *in,
2978					 int *inlen);
2979typedef int (*xmlCharEncodingOutputFunc) (unsigned char *out,
2980					  int *outlen,
2981					  const unsigned char *in,
2982					  int *inlen);
2983
2984
2985
2986
2987
2988
2989
2990struct _uconv_t
2991{
2992  UConverter *
2993  uconv;
2994  UConverter *
2995  utf8;
2996};
2997typedef struct _uconv_t
2998uconv_t;
2999
3000
3001typedef struct _xmlCharEncodingHandler
3002xmlCharEncodingHandler;
3003typedef xmlCharEncodingHandler *
3004xmlCharEncodingHandlerPtr;
3005struct _xmlCharEncodingHandler
3006{
3007  char *
3008  name;
3009  xmlCharEncodingInputFunc
3010  input;
3011  xmlCharEncodingOutputFunc
3012  output;
3013
3014  iconv_t
3015  iconv_in;
3016  iconv_t
3017  iconv_out;
3018
3019
3020  uconv_t *
3021  uconv_in;
3022  uconv_t *
3023  uconv_out;
3024
3025};
3026void
3027xmlInitCharEncodingHandlers (void);
3028void
3029xmlCleanupCharEncodingHandlers (void);
3030void
3031xmlRegisterCharEncodingHandler (xmlCharEncodingHandlerPtr handler);
3032xmlCharEncodingHandlerPtr
3033xmlGetCharEncodingHandler (xmlCharEncoding enc);
3034xmlCharEncodingHandlerPtr
3035xmlFindCharEncodingHandler (const char *name);
3036xmlCharEncodingHandlerPtr
3037xmlNewCharEncodingHandler (const char *name,
3038			   xmlCharEncodingInputFunc input,
3039			   xmlCharEncodingOutputFunc output);
3040
3041
3042
3043
3044int xmlAddEncodingAlias (const char *name, const char *alias);
3045int xmlDelEncodingAlias (const char *alias);
3046const char *xmlGetEncodingAlias (const char *alias);
3047void xmlCleanupEncodingAliases (void);
3048xmlCharEncoding
3049xmlParseCharEncoding (const char *name);
3050const char *xmlGetCharEncodingName (xmlCharEncoding enc);
3051
3052
3053
3054
3055xmlCharEncoding
3056xmlDetectCharEncoding (const unsigned char *in, int len);
3057
3058int
3059xmlCharEncOutFunc (xmlCharEncodingHandler * handler,
3060		   xmlBufferPtr out, xmlBufferPtr in);
3061
3062int
3063xmlCharEncInFunc (xmlCharEncodingHandler * handler,
3064		  xmlBufferPtr out, xmlBufferPtr in);
3065int
3066xmlCharEncFirstLine (xmlCharEncodingHandler * handler,
3067		     xmlBufferPtr out, xmlBufferPtr in);
3068int xmlCharEncCloseFunc (xmlCharEncodingHandler * handler);
3069
3070
3071
3072
3073
3074int
3075UTF8Toisolat1 (unsigned char *out,
3076	       int *outlen, const unsigned char *in, int *inlen);
3077
3078int
3079isolat1ToUTF8 (unsigned char *out,
3080	       int *outlen, const unsigned char *in, int *inlen);
3081typedef int (*xmlInputMatchCallback) (char const *filename);
3082typedef void *(*xmlInputOpenCallback) (char const *filename);
3083typedef int (*xmlInputReadCallback) (void *context, char *buffer,
3084				     int len);
3085typedef int (*xmlInputCloseCallback) (void *context);
3086typedef int (*xmlOutputMatchCallback) (char const *filename);
3087typedef void *(*xmlOutputOpenCallback) (char const *filename);
3088typedef int (*xmlOutputWriteCallback) (void *context, const char *buffer,
3089				       int len);
3090typedef int (*xmlOutputCloseCallback) (void *context);
3091
3092
3093
3094
3095
3096
3097
3098typedef xmlChar *xlinkHRef;
3099typedef xmlChar *xlinkRole;
3100typedef xmlChar *xlinkTitle;
3101
3102typedef enum
3103  {
3104    XLINK_TYPE_NONE = 0,
3105    XLINK_TYPE_SIMPLE,
3106    XLINK_TYPE_EXTENDED,
3107    XLINK_TYPE_EXTENDED_SET
3108  } xlinkType;
3109
3110typedef enum
3111  {
3112    XLINK_SHOW_NONE = 0,
3113    XLINK_SHOW_NEW,
3114    XLINK_SHOW_EMBED,
3115    XLINK_SHOW_REPLACE
3116  } xlinkShow;
3117
3118typedef enum
3119  {
3120    XLINK_ACTUATE_NONE = 0,
3121    XLINK_ACTUATE_AUTO,
3122    XLINK_ACTUATE_ONREQUEST
3123  } xlinkActuate;
3124typedef void (*xlinkNodeDetectFunc) (void *ctx, xmlNodePtr node);
3125typedef void
3126(*xlinkSimpleLinkFunk) (void *ctx,
3127			xmlNodePtr node,
3128			const xlinkHRef href,
3129			const xlinkRole role, const xlinkTitle title);
3130typedef void
3131(*xlinkExtendedLinkFunk) (void *ctx,
3132			  xmlNodePtr node,
3133			  int nbLocators,
3134			  const xlinkHRef * hrefs,
3135			  const xlinkRole * roles,
3136			  int nbArcs,
3137			  const xlinkRole * from,
3138			  const xlinkRole * to,
3139			  xlinkShow * show,
3140			  xlinkActuate * actuate,
3141			  int nbTitles,
3142			  const xlinkTitle * titles,
3143			  const xmlChar ** langs);
3144typedef void
3145(*xlinkExtendedLinkSetFunk) (void *ctx,
3146			     xmlNodePtr node,
3147			     int nbLocators,
3148			     const xlinkHRef * hrefs,
3149			     const xlinkRole * roles,
3150			     int nbTitles,
3151			     const xlinkTitle * titles,
3152			     const xmlChar ** langs);
3153
3154
3155
3156
3157
3158
3159
3160typedef struct _xlinkHandler xlinkHandler;
3161typedef xlinkHandler *xlinkHandlerPtr;
3162struct _xlinkHandler
3163{
3164  xlinkSimpleLinkFunk simple;
3165  xlinkExtendedLinkFunk extended;
3166  xlinkExtendedLinkSetFunk set;
3167};
3168
3169
3170
3171
3172
3173
3174xlinkNodeDetectFunc
3175xlinkGetDefaultDetect (void);
3176void xlinkSetDefaultDetect (xlinkNodeDetectFunc func);
3177
3178
3179
3180
3181xlinkHandlerPtr
3182xlinkGetDefaultHandler (void);
3183void xlinkSetDefaultHandler (xlinkHandlerPtr handler);
3184
3185
3186
3187
3188xlinkType
3189xlinkIsLink (xmlDocPtr doc, xmlNodePtr node);
3190
3191
3192
3193
3194
3195
3196const xmlChar *getPublicId (void *ctx);
3197const xmlChar *getSystemId (void *ctx);
3198void setDocumentLocator (void *ctx, xmlSAXLocatorPtr loc);
3199
3200int getLineNumber (void *ctx);
3201int getColumnNumber (void *ctx);
3202
3203int isStandalone (void *ctx);
3204int hasInternalSubset (void *ctx);
3205int hasExternalSubset (void *ctx);
3206
3207void
3208internalSubset (void *ctx,
3209		const xmlChar * name,
3210		const xmlChar * ExternalID, const xmlChar * SystemID);
3211void
3212externalSubset (void *ctx,
3213		const xmlChar * name,
3214		const xmlChar * ExternalID, const xmlChar * SystemID);
3215xmlEntityPtr
3216getEntity (void *ctx, const xmlChar * name);
3217xmlEntityPtr
3218getParameterEntity (void *ctx, const xmlChar * name);
3219xmlParserInputPtr
3220resolveEntity (void *ctx, const xmlChar * publicId, const xmlChar * systemId);
3221
3222void
3223entityDecl (void *ctx,
3224	    const xmlChar * name,
3225	    int type,
3226	    const xmlChar * publicId,
3227	    const xmlChar * systemId, xmlChar * content);
3228void
3229attributeDecl (void *ctx,
3230	       const xmlChar * elem,
3231	       const xmlChar * fullname,
3232	       int type,
3233	       int def,
3234	       const xmlChar * defaultValue, xmlEnumerationPtr tree);
3235void
3236elementDecl (void *ctx,
3237	     const xmlChar * name,
3238	     int type, xmlElementContentPtr content);
3239void
3240notationDecl (void *ctx,
3241	      const xmlChar * name,
3242	      const xmlChar * publicId, const xmlChar * systemId);
3243void
3244unparsedEntityDecl (void *ctx,
3245		    const xmlChar * name,
3246		    const xmlChar * publicId,
3247		    const xmlChar * systemId,
3248		    const xmlChar * notationName);
3249
3250void startDocument (void *ctx);
3251void endDocument (void *ctx);
3252void
3253attribute (void *ctx, const xmlChar * fullname, const xmlChar * value);
3254void
3255startElement (void *ctx,
3256	      const xmlChar * fullname, const xmlChar ** atts);
3257void endElement (void *ctx, const xmlChar * name);
3258void reference (void *ctx, const xmlChar * name);
3259void characters (void *ctx, const xmlChar * ch, int len);
3260void ignorableWhitespace (void *ctx, const xmlChar * ch, int len);
3261void
3262processingInstruction (void *ctx,
3263		       const xmlChar * target, const xmlChar * data);
3264void
3265globalNamespace (void *ctx,
3266		 const xmlChar * href, const xmlChar * prefix);
3267void setNamespace (void *ctx, const xmlChar * name);
3268xmlNsPtr
3269getNamespace (void *ctx);
3270int checkNamespace (void *ctx, xmlChar * nameSpace);
3271void
3272namespaceDecl (void *ctx,
3273	       const xmlChar * href, const xmlChar * prefix);
3274void comment (void *ctx, const xmlChar * value);
3275void cdataBlock (void *ctx, const xmlChar * value, int len);
3276
3277
3278void initxmlDefaultSAXHandler (xmlSAXHandlerV1 * hdlr, int warning);
3279
3280void inithtmlDefaultSAXHandler (xmlSAXHandlerV1 * hdlr);
3281
3282
3283void initdocbDefaultSAXHandler (xmlSAXHandlerV1 * hdlr);
3284const xmlChar *xmlSAX2GetPublicId (void *ctx);
3285const xmlChar *xmlSAX2GetSystemId (void *ctx);
3286void xmlSAX2SetDocumentLocator (void *ctx, xmlSAXLocatorPtr loc);
3287
3288int xmlSAX2GetLineNumber (void *ctx);
3289int xmlSAX2GetColumnNumber (void *ctx);
3290
3291int xmlSAX2IsStandalone (void *ctx);
3292int xmlSAX2HasInternalSubset (void *ctx);
3293int xmlSAX2HasExternalSubset (void *ctx);
3294
3295void
3296xmlSAX2InternalSubset (void *ctx,
3297		       const xmlChar * name,
3298		       const xmlChar * ExternalID,
3299		       const xmlChar * SystemID);
3300void
3301xmlSAX2ExternalSubset (void *ctx,
3302		       const xmlChar * name,
3303		       const xmlChar * ExternalID,
3304		       const xmlChar * SystemID);
3305xmlEntityPtr
3306xmlSAX2GetEntity (void *ctx, const xmlChar * name);
3307xmlEntityPtr
3308xmlSAX2GetParameterEntity (void *ctx, const xmlChar * name);
3309xmlParserInputPtr
3310xmlSAX2ResolveEntity (void *ctx,
3311		      const xmlChar * publicId, const xmlChar * systemId);
3312
3313void
3314xmlSAX2EntityDecl (void *ctx,
3315		   const xmlChar * name,
3316		   int type,
3317		   const xmlChar * publicId,
3318		   const xmlChar * systemId, xmlChar * content);
3319void
3320xmlSAX2AttributeDecl (void *ctx,
3321		      const xmlChar * elem,
3322		      const xmlChar * fullname,
3323		      int type,
3324		      int def,
3325		      const xmlChar * defaultValue,
3326		      xmlEnumerationPtr tree);
3327void
3328xmlSAX2ElementDecl (void *ctx,
3329		    const xmlChar * name,
3330		    int type, xmlElementContentPtr content);
3331void
3332xmlSAX2NotationDecl (void *ctx,
3333		     const xmlChar * name,
3334		     const xmlChar * publicId,
3335		     const xmlChar * systemId);
3336void
3337xmlSAX2UnparsedEntityDecl (void *ctx,
3338			   const xmlChar * name,
3339			   const xmlChar * publicId,
3340			   const xmlChar * systemId,
3341			   const xmlChar * notationName);
3342
3343void xmlSAX2StartDocument (void *ctx);
3344void xmlSAX2EndDocument (void *ctx);
3345
3346
3347
3348void
3349xmlSAX2StartElement (void *ctx,
3350		     const xmlChar * fullname, const xmlChar ** atts);
3351void xmlSAX2EndElement (void *ctx, const xmlChar * name);
3352
3353void
3354xmlSAX2StartElementNs (void *ctx,
3355		       const xmlChar * localname,
3356		       const xmlChar * prefix,
3357		       const xmlChar * URI,
3358		       int nb_namespaces,
3359		       const xmlChar ** namespaces,
3360		       int nb_attributes,
3361		       int nb_defaulted, const xmlChar ** attributes);
3362void
3363xmlSAX2EndElementNs (void *ctx,
3364		     const xmlChar * localname,
3365		     const xmlChar * prefix, const xmlChar * URI);
3366void xmlSAX2Reference (void *ctx, const xmlChar * name);
3367void xmlSAX2Characters (void *ctx, const xmlChar * ch, int len);
3368void xmlSAX2IgnorableWhitespace (void *ctx, const xmlChar * ch, int len);
3369void
3370xmlSAX2ProcessingInstruction (void *ctx,
3371			      const xmlChar * target,
3372			      const xmlChar * data);
3373void xmlSAX2Comment (void *ctx, const xmlChar * value);
3374void xmlSAX2CDataBlock (void *ctx, const xmlChar * value, int len);
3375
3376
3377int xmlSAXDefaultVersion (int version);
3378
3379
3380int xmlSAXVersion (xmlSAXHandler * hdlr, int version);
3381void xmlSAX2InitDefaultSAXHandler (xmlSAXHandler * hdlr, int warning);
3382
3383void xmlSAX2InitHtmlDefaultSAXHandler (xmlSAXHandler * hdlr);
3384void htmlDefaultSAXHandlerInit (void);
3385
3386
3387void xmlSAX2InitDocbDefaultSAXHandler (xmlSAXHandler * hdlr);
3388void docbDefaultSAXHandlerInit (void);
3389
3390void xmlDefaultSAXHandlerInit (void);
3391typedef void (*xmlFreeFunc) (void *mem);
3392typedef void *( __attribute__ ((alloc_size (1))) *
3393		xmlMallocFunc) (size_t size);
3394typedef void *(*xmlReallocFunc) (void *mem, size_t size);
3395typedef char *(*xmlStrdupFunc) (const char *str);
3396int
3397xmlMemSetup (xmlFreeFunc freeFunc,
3398	     xmlMallocFunc mallocFunc,
3399	     xmlReallocFunc reallocFunc, xmlStrdupFunc strdupFunc);
3400int
3401xmlMemGet (xmlFreeFunc * freeFunc,
3402	   xmlMallocFunc * mallocFunc,
3403	   xmlReallocFunc * reallocFunc, xmlStrdupFunc * strdupFunc);
3404int
3405xmlGcMemSetup (xmlFreeFunc freeFunc,
3406	       xmlMallocFunc mallocFunc,
3407	       xmlMallocFunc mallocAtomicFunc,
3408	       xmlReallocFunc reallocFunc, xmlStrdupFunc strdupFunc);
3409int
3410xmlGcMemGet (xmlFreeFunc * freeFunc,
3411	     xmlMallocFunc * mallocFunc,
3412	     xmlMallocFunc * mallocAtomicFunc,
3413	     xmlReallocFunc * reallocFunc, xmlStrdupFunc * strdupFunc);
3414
3415
3416
3417
3418int xmlInitMemory (void);
3419
3420
3421
3422
3423void xmlCleanupMemory (void);
3424
3425
3426
3427int xmlMemUsed (void);
3428int xmlMemBlocks (void);
3429void xmlMemDisplay (FILE * fp);
3430void xmlMemDisplayLast (FILE * fp, long nbBytes);
3431void xmlMemShow (FILE * fp, int nr);
3432void xmlMemoryDump (void);
3433void *xmlMemMalloc (size_t size) __attribute__ ((alloc_size (1)));
3434void *xmlMemRealloc (void *ptr, size_t size);
3435void xmlMemFree (void *ptr);
3436char *xmlMemoryStrdup (const char *str);
3437void *xmlMallocLoc (size_t size, const char *file, int line)
3438  __attribute__ ((alloc_size (1)));
3439void *xmlReallocLoc (void *ptr, size_t size, const char *file, int line);
3440void *xmlMallocAtomicLoc (size_t size, const char *file, int line)
3441  __attribute__ ((alloc_size (1)));
3442char *xmlMemStrdupLoc (const char *str, const char *file, int line);
3443
3444
3445
3446
3447
3448void xmlInitGlobals (void);
3449void xmlCleanupGlobals (void);
3450typedef
3451xmlParserInputBufferPtr (*xmlParserInputBufferCreateFilenameFunc)
3452(const char *URI, xmlCharEncoding enc);
3453typedef xmlOutputBufferPtr (*xmlOutputBufferCreateFilenameFunc) (const
3454								 char
3455								 *URI,
3456								 xmlCharEncodingHandlerPtr
3457								 encoder,
3458								 int
3459								 compression);
3460
3461xmlParserInputBufferCreateFilenameFunc
3462xmlParserInputBufferCreateFilenameDefault
3463(xmlParserInputBufferCreateFilenameFunc func);
3464xmlOutputBufferCreateFilenameFunc
3465xmlOutputBufferCreateFilenameDefault (xmlOutputBufferCreateFilenameFunc func);
3466typedef void (*xmlRegisterNodeFunc) (xmlNodePtr node);
3467
3468
3469
3470
3471
3472
3473typedef void (*xmlDeregisterNodeFunc) (xmlNodePtr node);
3474
3475typedef struct _xmlGlobalState xmlGlobalState;
3476typedef xmlGlobalState *xmlGlobalStatePtr;
3477struct _xmlGlobalState
3478{
3479  const char *xmlParserVersion;
3480
3481  xmlSAXLocator xmlDefaultSAXLocator;
3482  xmlSAXHandlerV1 xmlDefaultSAXHandler;
3483  xmlSAXHandlerV1 docbDefaultSAXHandler;
3484  xmlSAXHandlerV1 htmlDefaultSAXHandler;
3485
3486  xmlFreeFunc xmlFree;
3487  xmlMallocFunc xmlMalloc;
3488  xmlStrdupFunc xmlMemStrdup;
3489  xmlReallocFunc xmlRealloc;
3490
3491  xmlGenericErrorFunc xmlGenericError;
3492  xmlStructuredErrorFunc xmlStructuredError;
3493  void *xmlGenericErrorContext;
3494
3495  int oldXMLWDcompatibility;
3496
3497  xmlBufferAllocationScheme xmlBufferAllocScheme;
3498  int xmlDefaultBufferSize;
3499
3500  int xmlSubstituteEntitiesDefaultValue;
3501  int xmlDoValidityCheckingDefaultValue;
3502  int xmlGetWarningsDefaultValue;
3503  int xmlKeepBlanksDefaultValue;
3504  int xmlLineNumbersDefaultValue;
3505  int xmlLoadExtDtdDefaultValue;
3506  int xmlParserDebugEntities;
3507  int xmlPedanticParserDefaultValue;
3508
3509  int xmlSaveNoEmptyTags;
3510  int xmlIndentTreeOutput;
3511  const char *xmlTreeIndentString;
3512
3513  xmlRegisterNodeFunc xmlRegisterNodeDefaultValue;
3514  xmlDeregisterNodeFunc xmlDeregisterNodeDefaultValue;
3515
3516  xmlMallocFunc xmlMallocAtomic;
3517  xmlError xmlLastError;
3518
3519  xmlParserInputBufferCreateFilenameFunc
3520  xmlParserInputBufferCreateFilenameValue;
3521  xmlOutputBufferCreateFilenameFunc xmlOutputBufferCreateFilenameValue;
3522
3523  void *xmlStructuredErrorContext;
3524};
3525
3526
3527
3528
3529typedef struct _xmlMutex xmlMutex;
3530typedef xmlMutex *xmlMutexPtr;
3531
3532
3533
3534
3535typedef struct _xmlRMutex xmlRMutex;
3536typedef xmlRMutex *xmlRMutexPtr;
3537
3538
3539
3540
3541
3542
3543
3544xmlMutexPtr
3545xmlNewMutex (void);
3546void xmlMutexLock (xmlMutexPtr tok);
3547void xmlMutexUnlock (xmlMutexPtr tok);
3548void xmlFreeMutex (xmlMutexPtr tok);
3549
3550xmlRMutexPtr
3551xmlNewRMutex (void);
3552void xmlRMutexLock (xmlRMutexPtr tok);
3553void xmlRMutexUnlock (xmlRMutexPtr tok);
3554void xmlFreeRMutex (xmlRMutexPtr tok);
3555
3556
3557
3558
3559void xmlInitThreads (void);
3560void xmlLockLibrary (void);
3561void xmlUnlockLibrary (void);
3562int xmlGetThreadId (void);
3563int xmlIsMainThread (void);
3564void xmlCleanupThreads (void);
3565xmlGlobalStatePtr
3566xmlGetGlobalState (void);
3567
3568
3569
3570
3571void xmlInitializeGlobalState (xmlGlobalStatePtr gs);
3572
3573void xmlThrDefSetGenericErrorFunc (void *ctx,
3574				   xmlGenericErrorFunc handler);
3575
3576void xmlThrDefSetStructuredErrorFunc (void *ctx,
3577				      xmlStructuredErrorFunc handler);
3578
3579xmlRegisterNodeFunc xmlRegisterNodeDefault (xmlRegisterNodeFunc func);
3580xmlRegisterNodeFunc xmlThrDefRegisterNodeDefault (xmlRegisterNodeFunc
3581						  func);
3582xmlDeregisterNodeFunc xmlDeregisterNodeDefault (xmlDeregisterNodeFunc
3583						func);
3584xmlDeregisterNodeFunc
3585xmlThrDefDeregisterNodeDefault (xmlDeregisterNodeFunc func);
3586
3587xmlOutputBufferCreateFilenameFunc
3588xmlThrDefOutputBufferCreateFilenameDefault (xmlOutputBufferCreateFilenameFunc
3589					    func);
3590xmlParserInputBufferCreateFilenameFunc
3591xmlThrDefParserInputBufferCreateFilenameDefault
3592(xmlParserInputBufferCreateFilenameFunc func);
3593extern xmlMallocFunc xmlMalloc;
3594extern xmlMallocFunc xmlMallocAtomic;
3595extern xmlReallocFunc xmlRealloc;
3596extern xmlFreeFunc xmlFree;
3597extern xmlStrdupFunc xmlMemStrdup;
3598
3599
3600
3601xmlSAXHandlerV1 *__docbDefaultSAXHandler (void);
3602xmlSAXHandlerV1 *__htmlDefaultSAXHandler (void);
3603xmlError *__xmlLastError (void);
3604int *__oldXMLWDcompatibility (void);
3605
3606
3607
3608
3609
3610
3611
3612xmlBufferAllocationScheme *__xmlBufferAllocScheme (void);
3613
3614
3615
3616
3617
3618
3619xmlBufferAllocationScheme
3620xmlThrDefBufferAllocScheme (xmlBufferAllocationScheme v);
3621
3622int *__xmlDefaultBufferSize (void);
3623
3624
3625
3626
3627
3628
3629int xmlThrDefDefaultBufferSize (int v);
3630
3631xmlSAXHandlerV1 *__xmlDefaultSAXHandler (void);
3632
3633
3634
3635
3636
3637
3638
3639xmlSAXLocator *__xmlDefaultSAXLocator (void);
3640
3641
3642
3643
3644
3645
3646
3647int *__xmlDoValidityCheckingDefaultValue (void);
3648
3649
3650
3651
3652
3653
3654int xmlThrDefDoValidityCheckingDefaultValue (int v);
3655
3656xmlGenericErrorFunc *__xmlGenericError (void);
3657
3658
3659
3660
3661
3662
3663
3664xmlStructuredErrorFunc *__xmlStructuredError (void);
3665
3666
3667
3668
3669
3670
3671
3672void **__xmlGenericErrorContext (void);
3673
3674
3675
3676
3677
3678
3679
3680void **__xmlStructuredErrorContext (void);
3681
3682
3683
3684
3685
3686
3687
3688int *__xmlGetWarningsDefaultValue (void);
3689
3690
3691
3692
3693
3694
3695int xmlThrDefGetWarningsDefaultValue (int v);
3696
3697int *__xmlIndentTreeOutput (void);
3698
3699
3700
3701
3702
3703
3704int xmlThrDefIndentTreeOutput (int v);
3705
3706const char **__xmlTreeIndentString (void);
3707
3708
3709
3710
3711
3712
3713const char *xmlThrDefTreeIndentString (const char *v);
3714
3715int *__xmlKeepBlanksDefaultValue (void);
3716
3717
3718
3719
3720
3721
3722int xmlThrDefKeepBlanksDefaultValue (int v);
3723
3724int *__xmlLineNumbersDefaultValue (void);
3725
3726
3727
3728
3729
3730
3731int xmlThrDefLineNumbersDefaultValue (int v);
3732
3733int *__xmlLoadExtDtdDefaultValue (void);
3734
3735
3736
3737
3738
3739
3740int xmlThrDefLoadExtDtdDefaultValue (int v);
3741
3742int *__xmlParserDebugEntities (void);
3743
3744
3745
3746
3747
3748
3749int xmlThrDefParserDebugEntities (int v);
3750
3751const char **__xmlParserVersion (void);
3752
3753
3754
3755
3756
3757
3758
3759int *__xmlPedanticParserDefaultValue (void);
3760
3761
3762
3763
3764
3765
3766int xmlThrDefPedanticParserDefaultValue (int v);
3767
3768int *__xmlSaveNoEmptyTags (void);
3769
3770
3771
3772
3773
3774
3775int xmlThrDefSaveNoEmptyTags (int v);
3776
3777int *__xmlSubstituteEntitiesDefaultValue (void);
3778
3779
3780
3781
3782
3783
3784int xmlThrDefSubstituteEntitiesDefaultValue (int v);
3785
3786xmlRegisterNodeFunc *__xmlRegisterNodeDefaultValue (void);
3787
3788
3789
3790
3791
3792
3793
3794xmlDeregisterNodeFunc *__xmlDeregisterNodeDefaultValue (void);
3795
3796
3797
3798
3799
3800
3801
3802xmlParserInputBufferCreateFilenameFunc
3803*__xmlParserInputBufferCreateFilenameValue (void);
3804
3805
3806
3807
3808
3809
3810
3811xmlOutputBufferCreateFilenameFunc
3812*__xmlOutputBufferCreateFilenameValue (void);
3813
3814
3815
3816
3817
3818
3819
3820struct _xmlParserInputBuffer
3821{
3822  void *context;
3823  xmlInputReadCallback readcallback;
3824  xmlInputCloseCallback closecallback;
3825
3826  xmlCharEncodingHandlerPtr encoder;
3827
3828  xmlBufPtr buffer;
3829  xmlBufPtr raw;
3830  int compressed;
3831  int error;
3832  unsigned long rawconsumed;
3833};
3834
3835
3836
3837struct _xmlOutputBuffer
3838{
3839  void *context;
3840  xmlOutputWriteCallback writecallback;
3841  xmlOutputCloseCallback closecallback;
3842
3843  xmlCharEncodingHandlerPtr encoder;
3844
3845  xmlBufPtr buffer;
3846  xmlBufPtr conv;
3847  int written;
3848  int error;
3849};
3850
3851
3852
3853
3854
3855void xmlCleanupInputCallbacks (void);
3856
3857int xmlPopInputCallbacks (void);
3858
3859void xmlRegisterDefaultInputCallbacks (void);
3860xmlParserInputBufferPtr
3861xmlAllocParserInputBuffer (xmlCharEncoding enc);
3862
3863xmlParserInputBufferPtr
3864xmlParserInputBufferCreateFilename (const char *URI, xmlCharEncoding enc);
3865xmlParserInputBufferPtr
3866xmlParserInputBufferCreateFile (FILE * file, xmlCharEncoding enc);
3867xmlParserInputBufferPtr
3868xmlParserInputBufferCreateFd (int fd, xmlCharEncoding enc);
3869xmlParserInputBufferPtr
3870xmlParserInputBufferCreateMem (const char *mem, int size,
3871			       xmlCharEncoding enc);
3872xmlParserInputBufferPtr
3873xmlParserInputBufferCreateStatic (const char *mem, int size,
3874				  xmlCharEncoding enc);
3875xmlParserInputBufferPtr
3876xmlParserInputBufferCreateIO (xmlInputReadCallback ioread,
3877			      xmlInputCloseCallback ioclose,
3878			      void *ioctx, xmlCharEncoding enc);
3879int xmlParserInputBufferRead (xmlParserInputBufferPtr in, int len);
3880int xmlParserInputBufferGrow (xmlParserInputBufferPtr in, int len);
3881int
3882xmlParserInputBufferPush (xmlParserInputBufferPtr in,
3883			  int len, const char *buf);
3884void xmlFreeParserInputBuffer (xmlParserInputBufferPtr in);
3885char *xmlParserGetDirectory (const char *filename);
3886
3887int
3888xmlRegisterInputCallbacks (xmlInputMatchCallback matchFunc,
3889			   xmlInputOpenCallback openFunc,
3890			   xmlInputReadCallback readFunc,
3891			   xmlInputCloseCallback closeFunc);
3892
3893xmlParserInputBufferPtr
3894__xmlParserInputBufferCreateFilename (const char *URI, xmlCharEncoding enc);
3895
3896
3897
3898
3899
3900void xmlCleanupOutputCallbacks (void);
3901void xmlRegisterDefaultOutputCallbacks (void);
3902xmlOutputBufferPtr
3903xmlAllocOutputBuffer (xmlCharEncodingHandlerPtr encoder);
3904
3905xmlOutputBufferPtr
3906xmlOutputBufferCreateFilename (const char *URI,
3907			       xmlCharEncodingHandlerPtr encoder,
3908			       int compression);
3909
3910xmlOutputBufferPtr
3911xmlOutputBufferCreateFile (FILE * file, xmlCharEncodingHandlerPtr encoder);
3912
3913xmlOutputBufferPtr
3914xmlOutputBufferCreateBuffer (xmlBufferPtr buffer,
3915			     xmlCharEncodingHandlerPtr encoder);
3916
3917xmlOutputBufferPtr
3918xmlOutputBufferCreateFd (int fd, xmlCharEncodingHandlerPtr encoder);
3919
3920xmlOutputBufferPtr
3921xmlOutputBufferCreateIO (xmlOutputWriteCallback iowrite,
3922			 xmlOutputCloseCallback ioclose,
3923			 void *ioctx, xmlCharEncodingHandlerPtr encoder);
3924
3925
3926const xmlChar *xmlOutputBufferGetContent (xmlOutputBufferPtr out);
3927size_t
3928xmlOutputBufferGetSize (xmlOutputBufferPtr out);
3929
3930int
3931xmlOutputBufferWrite (xmlOutputBufferPtr out,
3932		      int len, const char *buf);
3933int xmlOutputBufferWriteString (xmlOutputBufferPtr out, const char *str);
3934int
3935xmlOutputBufferWriteEscape (xmlOutputBufferPtr out,
3936			    const xmlChar * str,
3937			    xmlCharEncodingOutputFunc escaping);
3938
3939int xmlOutputBufferFlush (xmlOutputBufferPtr out);
3940int xmlOutputBufferClose (xmlOutputBufferPtr out);
3941
3942int
3943xmlRegisterOutputCallbacks (xmlOutputMatchCallback matchFunc,
3944			    xmlOutputOpenCallback openFunc,
3945			    xmlOutputWriteCallback writeFunc,
3946			    xmlOutputCloseCallback closeFunc);
3947
3948xmlOutputBufferPtr
3949__xmlOutputBufferCreateFilename (const char *URI,
3950				 xmlCharEncodingHandlerPtr encoder,
3951				 int compression);
3952
3953
3954
3955void xmlRegisterHTTPPostCallbacks (void);
3956
3957
3958
3959
3960xmlParserInputPtr
3961xmlCheckHTTPInput (xmlParserCtxtPtr ctxt, xmlParserInputPtr ret);
3962
3963
3964
3965
3966xmlParserInputPtr
3967xmlNoNetExternalEntityLoader (const char *URL,
3968			      const char *ID, xmlParserCtxtPtr ctxt);
3969
3970
3971
3972
3973
3974xmlChar *xmlNormalizeWindowsPath (const xmlChar * path);
3975
3976int xmlCheckFilename (const char *path);
3977
3978
3979
3980int xmlFileMatch (const char *filename);
3981void *xmlFileOpen (const char *filename);
3982int xmlFileRead (void *context, char *buffer, int len);
3983int xmlFileClose (void *context);
3984
3985
3986
3987
3988
3989int xmlIOHTTPMatch (const char *filename);
3990void *xmlIOHTTPOpen (const char *filename);
3991
3992void *xmlIOHTTPOpenW (const char *post_uri, int compression);
3993
3994int xmlIOHTTPRead (void *context, char *buffer, int len);
3995int xmlIOHTTPClose (void *context);
3996
3997
3998
3999
4000
4001
4002int xmlIOFTPMatch (const char *filename);
4003void *xmlIOFTPOpen (const char *filename);
4004int xmlIOFTPRead (void *context, char *buffer, int len);
4005int xmlIOFTPClose (void *context);
4006void xmlInitParser (void);
4007void xmlCleanupParser (void);
4008
4009
4010
4011
4012int xmlParserInputRead (xmlParserInputPtr in, int len);
4013int xmlParserInputGrow (xmlParserInputPtr in, int len);
4014
4015
4016
4017
4018
4019xmlDocPtr
4020xmlParseDoc (const xmlChar * cur);
4021xmlDocPtr
4022xmlParseFile (const char *filename);
4023xmlDocPtr
4024xmlParseMemory (const char *buffer, int size);
4025
4026int xmlSubstituteEntitiesDefault (int val);
4027int xmlKeepBlanksDefault (int val);
4028void xmlStopParser (xmlParserCtxtPtr ctxt);
4029int xmlPedanticParserDefault (int val);
4030int xmlLineNumbersDefault (int val);
4031
4032
4033
4034
4035
4036xmlDocPtr
4037xmlRecoverDoc (const xmlChar * cur);
4038xmlDocPtr
4039xmlRecoverMemory (const char *buffer, int size);
4040xmlDocPtr
4041xmlRecoverFile (const char *filename);
4042
4043
4044
4045
4046
4047int xmlParseDocument (xmlParserCtxtPtr ctxt);
4048int xmlParseExtParsedEnt (xmlParserCtxtPtr ctxt);
4049
4050int
4051xmlSAXUserParseFile (xmlSAXHandlerPtr sax,
4052		     void *user_data, const char *filename);
4053int
4054xmlSAXUserParseMemory (xmlSAXHandlerPtr sax,
4055		       void *user_data, const char *buffer, int size);
4056xmlDocPtr
4057xmlSAXParseDoc (xmlSAXHandlerPtr sax, const xmlChar * cur, int recovery);
4058xmlDocPtr
4059xmlSAXParseMemory (xmlSAXHandlerPtr sax,
4060		   const char *buffer, int size, int recovery);
4061xmlDocPtr
4062xmlSAXParseMemoryWithData (xmlSAXHandlerPtr sax,
4063			   const char *buffer,
4064			   int size, int recovery, void *data);
4065xmlDocPtr
4066xmlSAXParseFile (xmlSAXHandlerPtr sax, const char *filename, int recovery);
4067xmlDocPtr
4068xmlSAXParseFileWithData (xmlSAXHandlerPtr sax,
4069			 const char *filename, int recovery, void *data);
4070xmlDocPtr
4071xmlSAXParseEntity (xmlSAXHandlerPtr sax, const char *filename);
4072xmlDocPtr
4073xmlParseEntity (const char *filename);
4074
4075
4076
4077xmlDtdPtr
4078xmlSAXParseDTD (xmlSAXHandlerPtr sax,
4079		const xmlChar * ExternalID, const xmlChar * SystemID);
4080xmlDtdPtr
4081xmlParseDTD (const xmlChar * ExternalID, const xmlChar * SystemID);
4082xmlDtdPtr
4083xmlIOParseDTD (xmlSAXHandlerPtr sax,
4084	       xmlParserInputBufferPtr input, xmlCharEncoding enc);
4085
4086
4087int
4088xmlParseBalancedChunkMemory (xmlDocPtr doc,
4089			     xmlSAXHandlerPtr sax,
4090			     void *user_data,
4091			     int depth,
4092			     const xmlChar * string, xmlNodePtr * lst);
4093
4094xmlParserErrors
4095xmlParseInNodeContext (xmlNodePtr node,
4096		       const char *data,
4097		       int datalen, int options, xmlNodePtr * lst);
4098
4099int
4100xmlParseBalancedChunkMemoryRecover (xmlDocPtr doc,
4101				    xmlSAXHandlerPtr sax,
4102				    void *user_data,
4103				    int depth,
4104				    const xmlChar * string,
4105				    xmlNodePtr * lst, int recover);
4106int
4107xmlParseExternalEntity (xmlDocPtr doc,
4108			xmlSAXHandlerPtr sax,
4109			void *user_data,
4110			int depth,
4111			const xmlChar * URL,
4112			const xmlChar * ID, xmlNodePtr * lst);
4113
4114int
4115xmlParseCtxtExternalEntity (xmlParserCtxtPtr ctx,
4116			    const xmlChar * URL,
4117			    const xmlChar * ID, xmlNodePtr * lst);
4118
4119
4120
4121
4122xmlParserCtxtPtr
4123xmlNewParserCtxt (void);
4124int xmlInitParserCtxt (xmlParserCtxtPtr ctxt);
4125void xmlClearParserCtxt (xmlParserCtxtPtr ctxt);
4126void xmlFreeParserCtxt (xmlParserCtxtPtr ctxt);
4127
4128void
4129xmlSetupParserForBuffer (xmlParserCtxtPtr ctxt,
4130			 const xmlChar * buffer, const char *filename);
4131
4132xmlParserCtxtPtr
4133xmlCreateDocParserCtxt (const xmlChar * cur);
4134
4135
4136
4137
4138
4139int xmlGetFeaturesList (int *len, const char **result);
4140int
4141xmlGetFeature (xmlParserCtxtPtr ctxt, const char *name, void *result);
4142int xmlSetFeature (xmlParserCtxtPtr ctxt, const char *name, void *value);
4143
4144
4145
4146
4147
4148
4149xmlParserCtxtPtr
4150xmlCreatePushParserCtxt (xmlSAXHandlerPtr sax,
4151			 void *user_data,
4152			 const char *chunk, int size, const char *filename);
4153int
4154xmlParseChunk (xmlParserCtxtPtr ctxt,
4155	       const char *chunk, int size, int terminate);
4156
4157
4158
4159
4160
4161
4162xmlParserCtxtPtr
4163xmlCreateIOParserCtxt (xmlSAXHandlerPtr sax,
4164		       void *user_data,
4165		       xmlInputReadCallback ioread,
4166		       xmlInputCloseCallback ioclose,
4167		       void *ioctx, xmlCharEncoding enc);
4168
4169xmlParserInputPtr
4170xmlNewIOInputStream (xmlParserCtxtPtr ctxt,
4171		     xmlParserInputBufferPtr input, xmlCharEncoding enc);
4172
4173
4174
4175
4176const xmlParserNodeInfo *xmlParserFindNodeInfo (const xmlParserCtxtPtr
4177						ctxt,
4178						const xmlNodePtr node);
4179void xmlInitNodeInfoSeq (xmlParserNodeInfoSeqPtr seq);
4180void xmlClearNodeInfoSeq (xmlParserNodeInfoSeqPtr seq);
4181unsigned long
4182xmlParserFindNodeInfoIndex (const xmlParserNodeInfoSeqPtr seq,
4183			    const xmlNodePtr node);
4184void
4185xmlParserAddNodeInfo (xmlParserCtxtPtr ctxt,
4186		      const xmlParserNodeInfoPtr info);
4187
4188
4189
4190
4191
4192void xmlSetExternalEntityLoader (xmlExternalEntityLoader f);
4193xmlExternalEntityLoader
4194xmlGetExternalEntityLoader (void);
4195xmlParserInputPtr
4196xmlLoadExternalEntity (const char *URL,
4197		       const char *ID, xmlParserCtxtPtr ctxt);
4198
4199
4200
4201
4202long xmlByteConsumed (xmlParserCtxtPtr ctxt);
4203typedef enum
4204  {
4205    XML_PARSE_RECOVER = 1 << 0,
4206    XML_PARSE_NOENT = 1 << 1,
4207    XML_PARSE_DTDLOAD = 1 << 2,
4208    XML_PARSE_DTDATTR = 1 << 3,
4209    XML_PARSE_DTDVALID = 1 << 4,
4210    XML_PARSE_NOERROR = 1 << 5,
4211    XML_PARSE_NOWARNING = 1 << 6,
4212    XML_PARSE_PEDANTIC = 1 << 7,
4213    XML_PARSE_NOBLANKS = 1 << 8,
4214    XML_PARSE_SAX1 = 1 << 9,
4215    XML_PARSE_XINCLUDE = 1 << 10,
4216    XML_PARSE_NONET = 1 << 11,
4217    XML_PARSE_NODICT = 1 << 12,
4218    XML_PARSE_NSCLEAN = 1 << 13,
4219    XML_PARSE_NOCDATA = 1 << 14,
4220    XML_PARSE_NOXINCNODE = 1 << 15,
4221    XML_PARSE_COMPACT = 1 << 16,
4222
4223
4224    XML_PARSE_OLD10 = 1 << 17,
4225    XML_PARSE_NOBASEFIX = 1 << 18,
4226    XML_PARSE_HUGE = 1 << 19,
4227    XML_PARSE_OLDSAX = 1 << 20,
4228    XML_PARSE_IGNORE_ENC = 1 << 21,
4229    XML_PARSE_BIG_LINES = 1 << 22
4230  } xmlParserOption;
4231
4232void xmlCtxtReset (xmlParserCtxtPtr ctxt);
4233int
4234xmlCtxtResetPush (xmlParserCtxtPtr ctxt,
4235		  const char *chunk,
4236		  int size,
4237		  const char *filename, const char *encoding);
4238int xmlCtxtUseOptions (xmlParserCtxtPtr ctxt, int options);
4239xmlDocPtr
4240xmlReadDoc (const xmlChar * cur,
4241	    const char *URL, const char *encoding, int options);
4242xmlDocPtr
4243xmlReadFile (const char *URL, const char *encoding, int options);
4244xmlDocPtr
4245xmlReadMemory (const char *buffer,
4246	       int size, const char *URL, const char *encoding, int options);
4247xmlDocPtr
4248xmlReadFd (int fd, const char *URL, const char *encoding, int options);
4249xmlDocPtr
4250xmlReadIO (xmlInputReadCallback ioread,
4251	   xmlInputCloseCallback ioclose,
4252	   void *ioctx, const char *URL, const char *encoding, int options);
4253xmlDocPtr
4254xmlCtxtReadDoc (xmlParserCtxtPtr ctxt,
4255		const xmlChar * cur,
4256		const char *URL, const char *encoding, int options);
4257xmlDocPtr
4258xmlCtxtReadFile (xmlParserCtxtPtr ctxt,
4259		 const char *filename, const char *encoding, int options);
4260xmlDocPtr
4261xmlCtxtReadMemory (xmlParserCtxtPtr ctxt,
4262		   const char *buffer,
4263		   int size,
4264		   const char *URL, const char *encoding, int options);
4265xmlDocPtr
4266xmlCtxtReadFd (xmlParserCtxtPtr ctxt,
4267	       int fd, const char *URL, const char *encoding, int options);
4268xmlDocPtr
4269xmlCtxtReadIO (xmlParserCtxtPtr ctxt,
4270	       xmlInputReadCallback ioread,
4271	       xmlInputCloseCallback ioclose,
4272	       void *ioctx,
4273	       const char *URL, const char *encoding, int options);
4274typedef enum
4275  {
4276    XML_WITH_THREAD = 1,
4277    XML_WITH_TREE = 2,
4278    XML_WITH_OUTPUT = 3,
4279    XML_WITH_PUSH = 4,
4280    XML_WITH_READER = 5,
4281    XML_WITH_PATTERN = 6,
4282    XML_WITH_WRITER = 7,
4283    XML_WITH_SAX1 = 8,
4284    XML_WITH_FTP = 9,
4285    XML_WITH_HTTP = 10,
4286    XML_WITH_VALID = 11,
4287    XML_WITH_HTML = 12,
4288    XML_WITH_LEGACY = 13,
4289    XML_WITH_C14N = 14,
4290    XML_WITH_CATALOG = 15,
4291    XML_WITH_XPATH = 16,
4292    XML_WITH_XPTR = 17,
4293    XML_WITH_XINCLUDE = 18,
4294    XML_WITH_ICONV = 19,
4295    XML_WITH_ISO8859X = 20,
4296    XML_WITH_UNICODE = 21,
4297    XML_WITH_REGEXP = 22,
4298    XML_WITH_AUTOMATA = 23,
4299    XML_WITH_EXPR = 24,
4300    XML_WITH_SCHEMAS = 25,
4301    XML_WITH_SCHEMATRON = 26,
4302    XML_WITH_MODULES = 27,
4303    XML_WITH_DEBUG = 28,
4304    XML_WITH_DEBUG_MEM = 29,
4305    XML_WITH_DEBUG_RUN = 30,
4306    XML_WITH_ZLIB = 31,
4307    XML_WITH_ICU = 32,
4308    XML_WITH_LZMA = 33,
4309    XML_WITH_NONE = 99999
4310  } xmlFeature;
4311
4312int xmlHasFeature (xmlFeature feature);
4313typedef unsigned long int ub4;
4314
4315
4316
4317typedef signed long int sb4;
4318
4319
4320
4321typedef unsigned short int ub2;
4322
4323
4324
4325typedef signed short int sb2;
4326
4327
4328
4329typedef unsigned char ub1;
4330
4331
4332
4333typedef signed char sb1;
4334
4335
4336
4337typedef int word;
4338struct randctx
4339{
4340  ub4 randcnt;
4341  ub4 randrsl[(1 << (4))];
4342  ub4 randmem[(1 << (4))];
4343  ub4 randa;
4344  ub4 randb;
4345  ub4 randc;
4346};
4347typedef struct randctx randctx;
4348
4349
4350
4351
4352
4353
4354void irandinit (randctx * r, word flag);
4355
4356void isaac (randctx * r);
4357char *flam3_version ();
4358typedef struct
4359{
4360  double index;
4361  double color[4];
4362} flam3_palette_entry;
4363
4364typedef flam3_palette_entry flam3_palette[256];
4365
4366int flam3_get_palette (int palette_index, flam3_palette p,
4367		       double hue_rotation);
4368
4369
4370
4371
4372extern char *flam3_variation_names[];
4373typedef struct
4374{
4375
4376  double badvals;
4377  long int num_iters;
4378  int render_seconds;
4379
4380} stat_struct;
4381
4382typedef struct
4383{
4384
4385  unsigned int width, height;
4386  int version;
4387  int id;
4388
4389
4390  double intensity_weight[256];
4391  unsigned int bin_size[256];
4392  unsigned int bin_offset[256];
4393
4394
4395
4396
4397
4398  unsigned short *rowcols;
4399
4400} flam3_image_store;
4401
4402
4403typedef struct xform
4404{
4405  double var[98];
4406  double c[3][2];
4407  double post[3][2];
4408  double density;
4409  double color;
4410  double color_speed;
4411  double animate;
4412  double opacity;
4413  double vis_adjusted;
4414
4415  int padding;
4416  double wind[2];
4417
4418  int precalc_angles_flag;
4419  int precalc_atan_xy_flag;
4420  int precalc_atan_yx_flag;
4421  double has_preblur;
4422  int has_post;
4423
4424
4425
4426  double blob_low;
4427  double blob_high;
4428  double blob_waves;
4429
4430
4431  double pdj_a;
4432  double pdj_b;
4433  double pdj_c;
4434  double pdj_d;
4435
4436
4437  double fan2_x;
4438  double fan2_y;
4439
4440
4441  double rings2_val;
4442
4443
4444  double perspective_angle;
4445  double perspective_dist;
4446
4447
4448  double julian_power;
4449  double julian_dist;
4450
4451
4452  double juliascope_power;
4453  double juliascope_dist;
4454
4455
4456  double radial_blur_angle;
4457
4458
4459  double pie_slices;
4460  double pie_rotation;
4461  double pie_thickness;
4462
4463
4464  double ngon_sides;
4465  double ngon_power;
4466  double ngon_circle;
4467  double ngon_corners;
4468
4469
4470  double curl_c1;
4471  double curl_c2;
4472
4473
4474  double rectangles_x;
4475  double rectangles_y;
4476
4477
4478  double amw_amp;
4479
4480
4481  double disc2_rot;
4482  double disc2_twist;
4483
4484
4485  double super_shape_rnd;
4486  double super_shape_m;
4487  double super_shape_n1;
4488  double super_shape_n2;
4489  double super_shape_n3;
4490  double super_shape_holes;
4491
4492
4493  double flower_petals;
4494  double flower_holes;
4495
4496
4497  double conic_eccentricity;
4498  double conic_holes;
4499
4500
4501  double parabola_height;
4502  double parabola_width;
4503
4504
4505  double bent2_x;
4506  double bent2_y;
4507
4508
4509  double bipolar_shift;
4510
4511
4512  double cell_size;
4513
4514
4515  double cpow_r;
4516  double cpow_i;
4517  double cpow_power;
4518
4519
4520  double curve_xamp, curve_yamp;
4521  double curve_xlength, curve_ylength;
4522
4523
4524  double escher_beta;
4525
4526
4527  double lazysusan_spin;
4528  double lazysusan_space;
4529  double lazysusan_twist;
4530  double lazysusan_x, lazysusan_y;
4531
4532
4533  double modulus_x, modulus_y;
4534
4535
4536  double oscope_separation;
4537  double oscope_frequency;
4538  double oscope_amplitude;
4539  double oscope_damping;
4540
4541
4542  double popcorn2_x, popcorn2_y, popcorn2_c;
4543
4544
4545  double separation_x, separation_xinside;
4546  double separation_y, separation_yinside;
4547
4548
4549  double split_xsize;
4550  double split_ysize;
4551
4552
4553  double splits_x, splits_y;
4554
4555
4556  double stripes_space;
4557  double stripes_warp;
4558
4559
4560  double wedge_angle, wedge_hole;
4561  double wedge_count, wedge_swirl;
4562
4563
4564  double wedge_julia_angle;
4565  double wedge_julia_count;
4566  double wedge_julia_power;
4567  double wedge_julia_dist;
4568
4569
4570  double wedge_sph_angle, wedge_sph_count;
4571  double wedge_sph_hole, wedge_sph_swirl;
4572
4573
4574  double whorl_inside, whorl_outside;
4575
4576
4577  double waves2_freqx, waves2_scalex;
4578  double waves2_freqy, waves2_scaley;
4579
4580
4581  double auger_sym, auger_weight;
4582  double auger_freq, auger_scale;
4583
4584
4585  double flux_spread;
4586
4587
4588
4589  double persp_vsin;
4590  double persp_vfcos;
4591
4592
4593  double julian_rN;
4594  double julian_cn;
4595
4596
4597  double juliascope_rN;
4598  double juliascope_cn;
4599
4600
4601  double wedgeJulia_rN;
4602  double wedgeJulia_cn;
4603  double wedgeJulia_cf;
4604
4605
4606  double radialBlur_spinvar;
4607  double radialBlur_zoomvar;
4608
4609
4610  double waves_dx2;
4611  double waves_dy2;
4612
4613
4614  double disc2_sinadd;
4615  double disc2_cosadd;
4616  double disc2_timespi;
4617
4618
4619  double super_shape_pm_4;
4620  double super_shape_pneg1_n1;
4621
4622  int num_active_vars;
4623  double active_var_weights[98];
4624  int varFunc[98];
4625
4626  int motion_freq;
4627  int motion_func;
4628
4629  struct xform *motion;
4630  int num_motion;
4631
4632
4633} flam3_xform;
4634
4635typedef struct
4636{
4637  char flame_name[64 + 1];
4638  double time;
4639  int interpolation;
4640  int interpolation_type;
4641  int palette_interpolation;
4642  int num_xforms;
4643  int final_xform_index;
4644  int final_xform_enable;
4645  flam3_xform *xform;
4646
4647
4648  double **chaos;
4649  int chaos_enable;
4650
4651  int genome_index;
4652  char parent_fname[30];
4653  int symmetry;
4654  flam3_palette palette;
4655  char *input_image;
4656  int palette_index;
4657  double brightness;
4658  double contrast;
4659  double gamma;
4660  double highlight_power;
4661  int width, height;
4662  int spatial_oversample;
4663  double center[2];
4664  double rot_center[2];
4665  double rotate;
4666  double vibrancy;
4667  double hue_rotation;
4668  double background[3];
4669  double zoom;
4670  double pixels_per_unit;
4671  double spatial_filter_radius;
4672  int spatial_filter_select;
4673
4674
4675  double sample_density;
4676
4677
4678
4679
4680
4681
4682  int nbatches;
4683  int ntemporal_samples;
4684
4685
4686  double estimator;
4687  double estimator_curve;
4688  double estimator_minimum;
4689
4690
4691
4692  xmlDocPtr edits;
4693
4694
4695  double gam_lin_thresh;
4696
4697
4698  int palette_index0;
4699  double hue_rotation0;
4700  int palette_index1;
4701  double hue_rotation1;
4702  double palette_blend;
4703
4704  int temporal_filter_type;
4705  double temporal_filter_width, temporal_filter_exp;
4706
4707  int palette_mode;
4708
4709
4710} flam3_genome;
4711
4712typedef struct
4713{
4714  int from;
4715  int to;
4716  double scalar;
4717} flam3_chaos_entry;
4718
4719
4720
4721void flam3_add_motion_element (flam3_xform * xf);
4722void flam3_add_xforms (flam3_genome * cp, int num_to_add,
4723		       int interp_padding, int final_flag);
4724void flam3_delete_xform (flam3_genome * thiscp, int idx_to_delete);
4725void flam3_copy_xform (flam3_xform * dest, flam3_xform * src);
4726void flam3_copy (flam3_genome * dest, flam3_genome * src);
4727void flam3_copyx (flam3_genome * dest, flam3_genome * src, int num_std,
4728		  int num_final);
4729void flam3_copy_params (flam3_xform * dest, flam3_xform * src, int varn);
4730void flam3_delete_motion_elements (flam3_xform * xf);
4731
4732int flam3_xform_preview (flam3_genome * cp, int xi, double range,
4733			 int numvals, int depth, double *result,
4734			 randctx * rc);
4735unsigned short *flam3_create_xform_distrib (flam3_genome * cp);
4736int flam3_create_chaos_distrib (flam3_genome * cp, int xi,
4737				unsigned short *xform_distrib);
4738int flam3_check_unity_chaos (flam3_genome * cp);
4739void clear_cp (flam3_genome * cp, int def_flag);
4740
4741
4742
4743
4744
4745
4746int flam3_iterate (flam3_genome * g, int nsamples, int fuse,
4747		   double *samples, unsigned short *xform_distrib,
4748		   randctx * rc);
4749
4750void apply_motion_parameters (flam3_xform * xf, flam3_xform * addto,
4751			      double blend);
4752
4753
4754
4755void flam3_interpolate (flam3_genome * genomes, int ngenomes,
4756			double time, double stagger,
4757			flam3_genome * result);
4758
4759
4760void flam3_print (FILE * f, flam3_genome * g, char *extra_attributes,
4761		  int print_edits);
4762void flam3_print_xform (FILE * f, flam3_xform * x, int final_flag,
4763			int numstd, double *chaos_row, int motion_flag);
4764char *flam3_print_to_string (flam3_genome * cp);
4765
4766
4767
4768
4769
4770void flam3_random (flam3_genome * g, int *ivars, int ivars_n, int sym,
4771		   int spec_xforms);
4772
4773void add_to_action (char *action, char *addtoaction);
4774
4775void flam3_mutate (flam3_genome * cp, int mutate_mode, int *ivars,
4776		   int ivars_n, int sym, double speed, randctx * rc,
4777		   char *action);
4778void flam3_cross (flam3_genome * cp0, flam3_genome * cp1,
4779		  flam3_genome * out, int cross_mode, randctx * rc,
4780		  char *action);
4781
4782
4783flam3_genome *flam3_parse_xml2 (char *s, char *fn, int default_flag,
4784				int *ncps);
4785flam3_genome *flam3_parse_from_file (FILE * f, char *fn,
4786				     int default_flag, int *ncps);
4787
4788void flam3_add_symmetry (flam3_genome * g, int sym);
4789
4790void flam3_improve_colors (flam3_genome * g, int ntries,
4791			   int change_palette, int color_resolution);
4792int flam3_colorhist (flam3_genome * cp, int num_batches, randctx * rc,
4793		     double *hist);
4794int flam3_estimate_bounding_box (flam3_genome * g, double eps,
4795				 int nsamples, double *bmin,
4796				 double *bmax, randctx * rc);
4797void flam3_rotate (flam3_genome * g, double angle, int interp_type);
4798
4799double flam3_dimension (flam3_genome * g, int ntries,
4800			int clip_to_camera);
4801double flam3_lyapunov (flam3_genome * g, int ntries);
4802
4803void flam3_apply_template (flam3_genome * cp, flam3_genome * templ);
4804
4805int flam3_count_nthreads (void);
4806
4807typedef struct
4808{
4809
4810  double pixel_aspect_ratio;
4811  flam3_genome *genomes;
4812  int ngenomes;
4813  int verbose;
4814  int bits;
4815  int bytes_per_channel;
4816  int earlyclip;
4817  double time;
4818  int (*progress) (void *, double, int, double);
4819  void *progress_parameter;
4820  randctx rc;
4821  int nthreads;
4822  int sub_batch_size;
4823} flam3_frame;
4824int flam3_render (flam3_frame * f, void *out, int field, int nchan,
4825		  int transp, stat_struct * stats);
4826
4827double flam3_render_memory_required (flam3_frame * f);
4828int flam3_make_strip (flam3_genome * cp, int nstrips, int stripnum);
4829void rotate_by (double *p, double *center, double by);
4830
4831
4832double flam3_random01 ();
4833double flam3_random11 ();
4834int flam3_random_bit ();
4835
4836
4837double flam3_random_isaac_01 (randctx *);
4838double flam3_random_isaac_11 (randctx *);
4839int flam3_random_isaac_bit (randctx *);
4840
4841void flam3_init_frame (flam3_frame * f);
4842
4843
4844void *flam3_malloc (size_t size);
4845void flam3_free (void *ptr);
4846
4847void flam3_srandom ();
4848
4849flam3_genome *sheep_loop (flam3_genome * cp, double blend);
4850flam3_genome *sheep_edge (flam3_genome * cp, double blend, int seqflag,
4851			  double stagger);
4852
4853
4854
4855
4856
4857extern char *dirname (char *__path)
4858  __attribute__ ((__nothrow__, __leaf__));
4859
4860
4861
4862
4863
4864
4865
4866extern char *__xpg_basename (char *__path)
4867  __attribute__ ((__nothrow__, __leaf__));
4868
4869
4870
4871
4872
4873
4874void docstring ();
4875
4876
4877typedef struct
4878{
4879  unsigned short *xform_distrib;
4880  flam3_frame *spec;
4881  double bounds[4];
4882  double rot[2][2];
4883  double size[2];
4884  int width, height;
4885  double ws0, wb0s0, hs1, hb1s1;
4886  flam3_palette_entry *dmap;
4887  double color_scalar;
4888  void *buckets;
4889  double badvals;
4890  double batch_size;
4891  int temporal_sample_num, ntemporal_samples;
4892  int batch_num, nbatches, aborted;
4893  time_t *progress_timer;
4894  time_t *progress_timer_history;
4895  double *progress_history;
4896  int *progress_history_mark;
4897
4898
4899  pthread_mutex_t bucket_mutex;
4900
4901
4902} flam3_iter_constants;
4903
4904typedef struct
4905{
4906
4907  double tx, ty;
4908
4909  double precalc_atan, precalc_sina;
4910  double precalc_cosa, precalc_sqrt;
4911  double precalc_sumsq, precalc_atanyx;
4912
4913  flam3_xform *xform;
4914
4915
4916
4917  double p0, p1;
4918
4919
4920  randctx *rc;
4921
4922} flam3_iter_helper;
4923
4924typedef struct
4925{
4926  double *iter_storage;
4927  randctx rc;
4928  flam3_genome cp;
4929  int first_thread;
4930  int timer_initialize;
4931  flam3_iter_constants *fic;
4932} flam3_thread_helper;
4933
4934double flam3_sinc (double x);
4935
4936
4937double flam3_gaussian_filter (double x);
4938double flam3_hermite_filter (double t);
4939double flam3_box_filter (double t);
4940double flam3_triangle_filter (double t);
4941double flam3_bell_filter (double t);
4942double flam3_b_spline_filter (double t);
4943double flam3_lanczos3_filter (double t);
4944double flam3_lanczos2_filter (double t);
4945double flam3_mitchell_filter (double t);
4946double flam3_blackman_filter (double x);
4947double flam3_catrom_filter (double x);
4948double flam3_hamming_filter (double x);
4949double flam3_hanning_filter (double x);
4950double flam3_quadratic_filter (double x);
4951
4952double flam3_spatial_filter (int knum, double x);
4953typedef struct
4954{
4955  int max_filtered_counts;
4956  int max_filter_index;
4957  int kernel_size;
4958  double *filter_widths;
4959  double *filter_coefs;
4960} flam3_de_helper;
4961
4962extern double flam3_spatial_support[14];
4963
4964double flam3_spatial_filter (int knum, double x);
4965int flam3_create_spatial_filter (flam3_frame * spec, int field,
4966				 double **filter);
4967flam3_de_helper flam3_create_de_filters (double max_rad, double min_rad,
4968					 double curve, int ss);
4969double flam3_create_temporal_filter (int numsteps, int filter_type,
4970				     double filter_exp,
4971				     double filter_width,
4972				     double **temporal_filter,
4973				     double **temporal_deltas);
4974
4975double flam3_spatial_support[14] = {
4976  1.5,
4977  1.0,
4978  0.5,
4979  1.0,
4980  1.5,
4981  2.0,
4982  2.0,
4983  1.0,
4984  2.0,
4985  1.0,
4986  1.0,
4987  3.0,
4988  2.0,
4989  1.5
4990};
4991
4992double
4993flam3_hermite_filter (double t)
4994{
4995
4996  if (t < 0.0)
4997    t = -t;
4998  if (t < 1.0)
4999    return ((2.0 * t - 3.0) * t * t + 1.0);
5000  return (0.0);
5001}
5002
5003double
5004flam3_box_filter (double t)
5005{
5006  if ((t > -0.5) && (t <= 0.5))
5007    return (1.0);
5008  return (0.0);
5009}
5010
5011double
5012flam3_triangle_filter (double t)
5013{
5014  if (t < 0.0)
5015    t = -t;
5016  if (t < 1.0)
5017    return (1.0 - t);
5018  return (0.0);
5019}
5020
5021double
5022flam3_bell_filter (double t)
5023{
5024
5025  if (t < 0)
5026    t = -t;
5027  if (t < .5)
5028    return (.75 - (t * t));
5029  if (t < 1.5)
5030    {
5031      t = (t - 1.5);
5032      return (.5 * (t * t));
5033    }
5034  return (0.0);
5035}
5036
5037double
5038flam3_b_spline_filter (double t)
5039{
5040
5041
5042  double tt;
5043
5044  if (t < 0)
5045    t = -t;
5046  if (t < 1)
5047    {
5048      tt = t * t;
5049      return ((.5 * tt * t) - tt + (2.0 / 3.0));
5050    }
5051  else if (t < 2)
5052    {
5053      t = 2 - t;
5054      return ((1.0 / 6.0) * (t * t * t));
5055    }
5056  return (0.0);
5057}
5058
5059double
5060flam3_sinc (double x)
5061{
5062  x *= 3.14159265358979323846;
5063  if (x != 0)
5064    return (sin (x) / x);
5065  return (1.0);
5066}
5067
5068double
5069flam3_blackman_filter (double x)
5070{
5071  return (0.42 + 0.5 * cos (3.14159265358979323846 * x) + 0.08 * cos (2 * 3.14159265358979323846 * x));
5072}
5073
5074double
5075flam3_catrom_filter (double x)
5076{
5077  if (x < -2.0)
5078    return (0.0);
5079  if (x < -1.0)
5080    return (0.5 * (4.0 + x * (8.0 + x * (5.0 + x))));
5081  if (x < 0.0)
5082    return (0.5 * (2.0 + x * x * (-5.0 - 3.0 * x)));
5083  if (x < 1.0)
5084    return (0.5 * (2.0 + x * x * (-5.0 + 3.0 * x)));
5085  if (x < 2.0)
5086    return (0.5 * (4.0 + x * (-8.0 + x * (5.0 - x))));
5087  return (0.0);
5088}
5089
5090double
5091flam3_mitchell_filter (double t)
5092{
5093  double tt;
5094
5095  tt = t * t;
5096  if (t < 0)
5097    t = -t;
5098  if (t < 1.0)
5099    {
5100      t = (((12.0 - 9.0 * (1.0 / 3.0) - 6.0 * (1.0 / 3.0)) * (t * tt))
5101	   + ((-18.0 + 12.0 * (1.0 / 3.0) + 6.0 * (1.0 / 3.0)) * tt)
5102	   + (6.0 - 2 * (1.0 / 3.0)));
5103      return (t / 6.0);
5104    }
5105  else if (t < 2.0)
5106    {
5107      t = (((-1.0 * (1.0 / 3.0) - 6.0 * (1.0 / 3.0)) * (t * tt))
5108	   + ((6.0 * (1.0 / 3.0) + 30.0 * (1.0 / 3.0)) * tt)
5109	   + ((-12.0 * (1.0 / 3.0) - 48.0 * (1.0 / 3.0)) * t)
5110	   + (8.0 * (1.0 / 3.0) + 24 * (1.0 / 3.0)));
5111      return (t / 6.0);
5112    }
5113  return (0.0);
5114}
5115
5116double
5117flam3_hanning_filter (double x)
5118{
5119  return (0.5 + 0.5 * cos (3.14159265358979323846 * x));
5120}
5121
5122double
5123flam3_hamming_filter (double x)
5124{
5125  return (0.54 + 0.46 * cos (3.14159265358979323846 * x));
5126}
5127
5128double
5129flam3_lanczos3_filter (double t)
5130{
5131  if (t < 0)
5132    t = -t;
5133  if (t < 3.0)
5134    return (flam3_sinc (t) * flam3_sinc (t / 3.0));
5135  return (0.0);
5136}
5137
5138double
5139flam3_lanczos2_filter (double t)
5140{
5141  if (t < 0)
5142    t = -t;
5143  if (t < 2.0)
5144    return (flam3_sinc (t) * flam3_sinc (t / 2.0));
5145  return (0.0);
5146}
5147
5148double
5149flam3_gaussian_filter (double x)
5150{
5151  return (exp ((-2.0 * x * x)) * sqrt (2.0 / 3.14159265358979323846));
5152}
5153
5154double
5155flam3_quadratic_filter (double x)
5156{
5157  if (x < -1.5)
5158    return (0.0);
5159  if (x < -0.5)
5160    return (0.5 * (x + 1.5) * (x + 1.5));
5161  if (x < 0.5)
5162    return (0.75 - x * x);
5163  if (x < 1.5)
5164    return (0.5 * (x - 1.5) * (x - 1.5));
5165  return (0.0);
5166}
5167
5168double
5169flam3_spatial_filter (int knum, double x)
5170{
5171
5172  if (knum == 0)
5173    return flam3_gaussian_filter (x);
5174  else if (knum == 1)
5175    return flam3_hermite_filter (x);
5176  else if (knum == 2)
5177    return flam3_box_filter (x);
5178  else if (knum == 3)
5179    return flam3_triangle_filter (x);
5180  else if (knum == 4)
5181    return flam3_bell_filter (x);
5182  else if (knum == 5)
5183    return flam3_b_spline_filter (x);
5184  else if (knum == 6)
5185    return flam3_mitchell_filter (x);
5186  else if (knum == 7)
5187    return flam3_sinc (x) * flam3_blackman_filter (x);
5188  else if (knum == 8)
5189    return flam3_catrom_filter (x);
5190  else if (knum == 9)
5191    return flam3_sinc (x) * flam3_hanning_filter (x);
5192  else if (knum == 10)
5193    return flam3_sinc (x) * flam3_hamming_filter (x);
5194  else if (knum == 11)
5195    return flam3_lanczos3_filter (x) * flam3_sinc (x / 3.0);
5196  else if (knum == 12)
5197    return flam3_lanczos2_filter (x) * flam3_sinc (x / 2.0);
5198  else if (knum == 13)
5199    return flam3_quadratic_filter (x);
5200}
5201
5202int
5203normalize_vector (double *v, int n)
5204{
5205  double t = 0.0;
5206  int i;
5207  for (i = 0; i < n; i++)
5208    t += v[i];
5209  if (0.0 == t)
5210    return 1;
5211  t = 1.0 / t;
5212  for (i = 0; i < n; i++)
5213    v[i] *= t;
5214  return 0;
5215}
5216
5217
5218int
5219flam3_create_spatial_filter (flam3_frame * spec, int field, double **filter)
5220{
5221
5222  int sf_kernel = spec->genomes[0].spatial_filter_select;
5223  int supersample = spec->genomes[0].spatial_oversample;
5224  double sf_radius = spec->genomes[0].spatial_filter_radius;
5225  double aspect_ratio = spec->pixel_aspect_ratio;
5226  double sf_supp = flam3_spatial_support[sf_kernel];
5227
5228  double fw = 2.0 * sf_supp * supersample * sf_radius / aspect_ratio;
5229  double adjust, ii, jj;
5230
5231  int fwidth = ((int) fw) + 1;
5232  int i, j;
5233
5234
5235
5236  if ((fwidth ^ supersample) & 1)
5237    fwidth++;
5238
5239
5240  if (fw > 0.0)
5241    adjust = sf_supp * fwidth / fw;
5242  else
5243    adjust = 1.0;
5244
5245
5246  (*filter) = (double *) calloc (fwidth * fwidth, sizeof (double));
5247
5248
5249  for (i = 0; i < fwidth; i++)
5250    for (j = 0; j < fwidth; j++)
5251      {
5252
5253
5254	ii = ((2.0 * i + 1.0) / (double) fwidth - 1.0) * adjust;
5255	jj = ((2.0 * j + 1.0) / (double) fwidth - 1.0) * adjust;
5256
5257
5258	if (field)
5259	  jj *= 2.0;
5260
5261
5262	jj /= aspect_ratio;
5263
5264	(*filter)[i + j * fwidth] =
5265	  flam3_spatial_filter (sf_kernel,
5266				ii) * flam3_spatial_filter (sf_kernel, jj);
5267      }
5268
5269
5270  if (normalize_vector ((*filter), fwidth * fwidth))
5271    {
5272      fprintf (stderr,
5273	       "Spatial filter value is too small: %g.  Terminating.\n",
5274	       sf_radius);
5275      return (-1);
5276    }
5277
5278  return (fwidth);
5279}
5280
5281flam3_de_helper
5282flam3_create_de_filters (double max_rad, double min_rad, double curve, int ss)
5283{
5284
5285  flam3_de_helper de;
5286  double comp_max_radius, comp_min_radius;
5287  double num_de_filters_d;
5288  int num_de_filters, de_max_ind;
5289  int de_row_size, de_half_size;
5290  int filtloop;
5291  int keep_thresh = 100;
5292
5293  de.kernel_size = -1;
5294
5295  if (curve <= 0.0)
5296    {
5297      fprintf (stderr, "estimator curve must be > 0\n");
5298      return (de);
5299    }
5300
5301  if (max_rad < min_rad)
5302    {
5303      fprintf (stderr, "estimator must be larger than estimator_minimum.\n");
5304      fprintf (stderr, "(%f > %f) ? \n", max_rad, min_rad);
5305      return (de);
5306    }
5307
5308
5309
5310  comp_max_radius = max_rad * ss + 1;
5311  comp_min_radius = min_rad * ss + 1;
5312
5313
5314
5315
5316
5317  num_de_filters_d = pow (comp_max_radius / comp_min_radius, 1.0 / curve);
5318  if (num_de_filters_d > 1e7)
5319    {
5320      fprintf (stderr,
5321	       "too many filters required in this configuration (%g)\n",
5322	       num_de_filters_d);
5323      return (de);
5324    }
5325  num_de_filters = (int) ceil (num_de_filters_d);
5326
5327
5328  if (num_de_filters > keep_thresh)
5329    {
5330      de_max_ind = (int) ceil (100 + pow (num_de_filters - 100, curve)) + 1;
5331      de.max_filtered_counts =
5332	(int) pow ((double) (de_max_ind - 100), 1.0 / curve) + 100;
5333    }
5334  else
5335    {
5336      de_max_ind = num_de_filters;
5337      de.max_filtered_counts = de_max_ind;
5338    }
5339
5340
5341
5342  de_row_size = (int) (2 * ceil (comp_max_radius) - 1);
5343  de_half_size = (de_row_size - 1) / 2;
5344  de.kernel_size = (de_half_size + 1) * (2 + de_half_size) / 2;
5345
5346  de.filter_coefs =
5347    (double *) calloc (de_max_ind * de.kernel_size, sizeof (double));
5348  de.filter_widths = (double *) calloc (de_max_ind, sizeof (double));
5349
5350
5351  de.max_filter_index = 0;
5352  for (filtloop = 0; filtloop < de_max_ind; filtloop++)
5353    {
5354
5355      double de_filt_sum = 0.0, de_filt_d;
5356      double de_filt_h;
5357      int dej, dek;
5358      double adjloop;
5359      int filter_coef_idx;
5360
5361
5362      if (filtloop < keep_thresh)
5363	de_filt_h = (comp_max_radius / pow (filtloop + 1, curve));
5364      else
5365	{
5366	  adjloop = pow (filtloop - keep_thresh, (1.0 / curve)) + keep_thresh;
5367	  de_filt_h = (comp_max_radius / pow (adjloop + 1, curve));
5368	}
5369
5370
5371      if (de_filt_h <= comp_min_radius)
5372	{
5373	  de_filt_h = comp_min_radius;
5374	  de.max_filter_index = filtloop;
5375	}
5376
5377      de.filter_widths[filtloop] = de_filt_h;
5378
5379
5380      for (dej = -de_half_size; dej <= de_half_size; dej++)
5381	{
5382	  for (dek = -de_half_size; dek <= de_half_size; dek++)
5383	    {
5384
5385	      de_filt_d = sqrt ((double) (dej * dej + dek * dek)) / de_filt_h;
5386
5387
5388	      if (de_filt_d <= 1.0)
5389		{
5390		  de_filt_sum += flam3_spatial_filter (0, flam3_spatial_support [0] * de_filt_d);
5391		}
5392	    }
5393	}
5394
5395      filter_coef_idx = filtloop * de.kernel_size;
5396
5397
5398      for (dej = 0; dej <= de_half_size; dej++)
5399	{
5400	  for (dek = 0; dek <= dej; dek++)
5401	    {
5402	      de_filt_d = sqrt ((double) (dej * dej + dek * dek)) / de_filt_h;
5403
5404
5405	      if (de_filt_d > 1.0)
5406		de.filter_coefs[filter_coef_idx] = 0.0;
5407	      else
5408		{
5409		  de.filter_coefs[filter_coef_idx] = flam3_spatial_filter (0, flam3_spatial_support[0] * de_filt_d) / de_filt_sum;
5410		}
5411
5412	      filter_coef_idx++;
5413	    }
5414	}
5415
5416      if (de.max_filter_index > 0)
5417	break;
5418    }
5419
5420  if (de.max_filter_index == 0)
5421    de.max_filter_index = de_max_ind - 1;
5422
5423
5424  return (de);
5425}
5426
5427double
5428flam3_create_temporal_filter (int numsteps, int filter_type,
5429			      double filter_exp, double filter_width,
5430			      double **temporal_filter,
5431			      double **temporal_deltas)
5432{
5433
5434  double maxfilt = 0.0;
5435  double sumfilt = 0.0;
5436  double slpx, halfsteps;
5437  double *deltas, *filter;
5438
5439  int i;
5440
5441
5442  deltas = (double *) malloc (numsteps * sizeof (double));
5443  filter = (double *) malloc (numsteps * sizeof (double));
5444
5445
5446  if (numsteps == 1)
5447    {
5448      deltas[0] = 0;
5449      filter[0] = 1.0;
5450      *temporal_deltas = deltas;
5451      *temporal_filter = filter;
5452      return (1.0);
5453    }
5454
5455
5456  for (i = 0; i < numsteps; i++)
5457    deltas[i] = ((double) i / (double) (numsteps - 1) - 0.5) * filter_width;
5458
5459
5460  if (2 == filter_type)
5461    {
5462
5463      for (i = 0; i < numsteps; i++)
5464	{
5465
5466	  if (filter_exp >= 0)
5467	    slpx = ((double) i + 1.0) / numsteps;
5468	  else
5469	    slpx = (double) (numsteps - i) / numsteps;
5470
5471
5472	  filter[i] = pow (slpx, fabs (filter_exp));
5473
5474
5475	  if (filter[i] > maxfilt)
5476	    maxfilt = filter[i];
5477	}
5478
5479    }
5480  else if (1 == filter_type)
5481    {
5482
5483      halfsteps = numsteps / 2.0;
5484      for (i = 0; i < numsteps; i++)
5485	{
5486
5487
5488	  filter[i] = flam3_spatial_filter (0, flam3_spatial_support[0] * fabs (i - halfsteps) / halfsteps);
5489	  if (filter[i] > maxfilt)
5490	    maxfilt = filter[i];
5491	}
5492
5493    }
5494  else
5495    {
5496
5497      for (i = 0; i < numsteps; i++)
5498	filter[i] = 1.0;
5499
5500      maxfilt = 1.0;
5501
5502    }
5503
5504
5505
5506  for (i = 0; i < numsteps; i++)
5507    {
5508      filter[i] /= maxfilt;
5509      sumfilt += filter[i];
5510    }
5511
5512  sumfilt /= numsteps;
5513
5514  *temporal_deltas = deltas;
5515  *temporal_filter = filter;
5516
5517  return (sumfilt);
5518}
5519