epoc32/include/stdapis/libxml2/libxml2_tree.h
author William Roberts <williamr@symbian.org>
Wed, 31 Mar 2010 12:33:34 +0100
branchSymbian3
changeset 4 837f303aceeb
permissions -rw-r--r--
Current Symbian^3 public API header files (from PDK 3.0.h)
This is the epoc32/include tree with the "platform" subtrees removed, and
all but a selected few mbg and rsg files removed.
williamr@4
     1
/*
williamr@4
     2
 * Summary: interfaces for tree manipulation
williamr@4
     3
 * Description: this module describes the structures found in an tree resulting
williamr@4
     4
 *              from an XML or HTML parsing, as well as the API provided for
williamr@4
     5
 *              various processing on that tree
williamr@4
     6
 *
williamr@4
     7
 * Copy: See Copyright for the status of this software.
williamr@4
     8
 *
williamr@4
     9
 * Author: Daniel Veillard
williamr@4
    10
 * Portion Copyright © 2009 Nokia Corporation and/or its subsidiary(-ies). All rights reserved. 
williamr@4
    11
 */
williamr@4
    12
williamr@4
    13
/** @file
williamr@4
    14
@publishedAll
williamr@4
    15
@released
williamr@4
    16
*/
williamr@4
    17
williamr@4
    18
#ifndef XML_TREE_H
williamr@4
    19
#define XML_TREE_H
williamr@4
    20
williamr@4
    21
#include <stdapis/libxml2/libxml2_xmlstring.h>
williamr@4
    22
williamr@4
    23
#include <stdlib.h>
williamr@4
    24
#include <stdio.h>
williamr@4
    25
williamr@4
    26
#ifdef LIBXML_REGEXP_ENABLED
williamr@4
    27
#include "libxml2_xmlregexp.h"
williamr@4
    28
#endif
williamr@4
    29
williamr@4
    30
#ifdef __cplusplus
williamr@4
    31
extern "C" {
williamr@4
    32
#endif
williamr@4
    33
williamr@4
    34
/*
williamr@4
    35
 * Some of the basic types pointer to structures:
williamr@4
    36
 */
williamr@4
    37
/* xmlIO.h */
williamr@4
    38
typedef struct _xmlParserInputBuffer xmlParserInputBuffer;
williamr@4
    39
typedef xmlParserInputBuffer *xmlParserInputBufferPtr;
williamr@4
    40
williamr@4
    41
typedef struct _xmlOutputBuffer xmlOutputBuffer;
williamr@4
    42
typedef xmlOutputBuffer *xmlOutputBufferPtr;
williamr@4
    43
williamr@4
    44
/* parser.h */
williamr@4
    45
williamr@4
    46
williamr@4
    47
typedef struct _xmlParserCtxt xmlParserCtxt;
williamr@4
    48
typedef xmlParserCtxt *xmlParserCtxtPtr;
williamr@4
    49
williamr@4
    50
typedef struct _xmlSAXLocator xmlSAXLocator;
williamr@4
    51
typedef xmlSAXLocator *xmlSAXLocatorPtr;
williamr@4
    52
williamr@4
    53
typedef struct _xmlSAXHandler xmlSAXHandler;
williamr@4
    54
typedef xmlSAXHandler *xmlSAXHandlerPtr;
williamr@4
    55
williamr@4
    56
/* entities.h */
williamr@4
    57
typedef struct _xmlEntity xmlEntity;
williamr@4
    58
typedef xmlEntity *xmlEntityPtr;
williamr@4
    59
williamr@4
    60
/**
williamr@4
    61
 * BASE_BUFFER_SIZE:
williamr@4
    62
 *
williamr@4
    63
 * default buffer size 4000.
williamr@4
    64
 */
williamr@4
    65
#define BASE_BUFFER_SIZE 4096
williamr@4
    66
williamr@4
    67
williamr@4
    68
//                     BUT! remember that it is checked in #ifdef's
williamr@4
    69
/**
williamr@4
    70
 * XML_XML_NAMESPACE:
williamr@4
    71
 *
williamr@4
    72
 * This is the namespace for the special xml: prefix predefined in the
williamr@4
    73
 * XML Namespace specification.
williamr@4
    74
 */
williamr@4
    75
#define XML_XML_NAMESPACE \
williamr@4
    76
    (const xmlChar *) "http://www.w3.org/XML/1998/namespace"
williamr@4
    77
williamr@4
    78
/**
williamr@4
    79
 * XML_XML_ID:
williamr@4
    80
 *
williamr@4
    81
 * This is the name for the special xml:id attribute
williamr@4
    82
 */
williamr@4
    83
#define XML_XML_ID (const xmlChar *) "xml:id"
williamr@4
    84
williamr@4
    85
/*
williamr@4
    86
 * The different element types carried by an XML tree.
williamr@4
    87
 *
williamr@4
    88
 * NOTE: This is synchronized with DOM Level1 values
williamr@4
    89
 *       See http://www.w3.org/TR/REC-DOM-Level-1/
williamr@4
    90
 *
williamr@4
    91
 * Actually this had diverged a bit, and now XML_DOCUMENT_TYPE_NODE should
williamr@4
    92
 * be deprecated to use an XML_DTD_NODE.
williamr@4
    93
 */
williamr@4
    94
typedef enum {
williamr@4
    95
    XML_ELEMENT_NODE=       1,
williamr@4
    96
    XML_ATTRIBUTE_NODE=     2,
williamr@4
    97
    XML_TEXT_NODE=          3,
williamr@4
    98
    XML_CDATA_SECTION_NODE= 4,
williamr@4
    99
    XML_ENTITY_REF_NODE=    5,
williamr@4
   100
    XML_ENTITY_NODE=        6,
williamr@4
   101
    XML_PI_NODE=            7,
williamr@4
   102
    XML_COMMENT_NODE=       8,
williamr@4
   103
    XML_DOCUMENT_NODE=      9,
williamr@4
   104
    XML_DOCUMENT_TYPE_NODE= 10,
williamr@4
   105
    XML_DOCUMENT_FRAG_NODE= 11,
williamr@4
   106
    XML_NOTATION_NODE=      12,
williamr@4
   107
    XML_HTML_DOCUMENT_NODE= 13,
williamr@4
   108
    XML_DTD_NODE=           14,
williamr@4
   109
    XML_ELEMENT_DECL=       15,
williamr@4
   110
    XML_ATTRIBUTE_DECL=     16,
williamr@4
   111
    XML_ENTITY_DECL=        17,
williamr@4
   112
    XML_NAMESPACE_DECL=     18,
williamr@4
   113
    XML_XINCLUDE_START=     19,
williamr@4
   114
    XML_XINCLUDE_END=       20
williamr@4
   115
//#ifdef LIBXML_DOCB_ENABLED
williamr@4
   116
//   ,XML_DOCB_DOCUMENT_NODE=   21 //DocBook support is excluded from XML Engine
williamr@4
   117
//#endif
williamr@4
   118
} xmlElementType;
williamr@4
   119
williamr@4
   120
williamr@4
   121
/**
williamr@4
   122
 * xmlNotation:
williamr@4
   123
 *
williamr@4
   124
 * A DTD Notation definition.
williamr@4
   125
 */
williamr@4
   126
williamr@4
   127
typedef struct _xmlNotation xmlNotation;
williamr@4
   128
typedef xmlNotation *xmlNotationPtr;
williamr@4
   129
struct _xmlNotation {
williamr@4
   130
    const xmlChar               *name;      /* Notation name */
williamr@4
   131
    const xmlChar               *PublicID;  /* Public identifier, if any */
williamr@4
   132
    const xmlChar               *SystemID;  /* System identifier, if any */
williamr@4
   133
};
williamr@4
   134
williamr@4
   135
/**
williamr@4
   136
 * xmlAttributeType:
williamr@4
   137
 *
williamr@4
   138
 * A DTD Attribute type definition.
williamr@4
   139
 */
williamr@4
   140
williamr@4
   141
typedef enum {
williamr@4
   142
    XML_ATTRIBUTE_CDATA = 1,
williamr@4
   143
    XML_ATTRIBUTE_ID,
williamr@4
   144
    XML_ATTRIBUTE_IDREF ,
williamr@4
   145
    XML_ATTRIBUTE_IDREFS,
williamr@4
   146
    XML_ATTRIBUTE_ENTITY,
williamr@4
   147
    XML_ATTRIBUTE_ENTITIES,
williamr@4
   148
    XML_ATTRIBUTE_NMTOKEN,
williamr@4
   149
    XML_ATTRIBUTE_NMTOKENS,
williamr@4
   150
    XML_ATTRIBUTE_ENUMERATION,
williamr@4
   151
    XML_ATTRIBUTE_NOTATION
williamr@4
   152
} xmlAttributeType;
williamr@4
   153
williamr@4
   154
/**
williamr@4
   155
 * xmlAttributeDefault:
williamr@4
   156
 *
williamr@4
   157
 * A DTD Attribute default definition.
williamr@4
   158
 */
williamr@4
   159
williamr@4
   160
typedef enum {
williamr@4
   161
    XML_ATTRIBUTE_NONE = 1,
williamr@4
   162
    XML_ATTRIBUTE_REQUIRED,
williamr@4
   163
    XML_ATTRIBUTE_IMPLIED,
williamr@4
   164
    XML_ATTRIBUTE_FIXED
williamr@4
   165
} xmlAttributeDefault;
williamr@4
   166
williamr@4
   167
/**
williamr@4
   168
 * xmlEnumeration:
williamr@4
   169
 *
williamr@4
   170
 * List structure used when there is an enumeration in DTDs.
williamr@4
   171
 */
williamr@4
   172
williamr@4
   173
typedef struct _xmlEnumeration xmlEnumeration;
williamr@4
   174
typedef xmlEnumeration *xmlEnumerationPtr;
williamr@4
   175
struct _xmlEnumeration {
williamr@4
   176
    struct _xmlEnumeration    *next;    /* next one */
williamr@4
   177
    const xmlChar            *name; /* Enumeration name */
williamr@4
   178
};
williamr@4
   179
williamr@4
   180
/**
williamr@4
   181
 * xmlAttribute:
williamr@4
   182
 *
williamr@4
   183
 * An Attribute declaration in a DTD.
williamr@4
   184
 */
williamr@4
   185
williamr@4
   186
typedef struct _xmlAttribute xmlAttribute;
williamr@4
   187
typedef xmlAttribute *xmlAttributePtr;
williamr@4
   188
struct _xmlAttribute {
williamr@4
   189
    void           *_private;       /* application data */
williamr@4
   190
    xmlElementType          type;   /* XML_ATTRIBUTE_DECL, must be second ! */
williamr@4
   191
    const xmlChar          *name;   /* Attribute name */
williamr@4
   192
    struct _xmlNode    *children;   /* NULL */
williamr@4
   193
    struct _xmlNode        *last;   /* NULL */
williamr@4
   194
    struct _xmlDtd       *parent;   /* -> DTD */
williamr@4
   195
    struct _xmlNode        *next;   /* next sibling link  */
williamr@4
   196
    struct _xmlNode        *prev;   /* previous sibling link  */
williamr@4
   197
    struct _xmlDoc          *doc;   /* the containing document */
williamr@4
   198
williamr@4
   199
    struct _xmlAttribute  *nexth;   /* next in hash table */
williamr@4
   200
    xmlAttributeType       atype;   /* The attribute type */
williamr@4
   201
    xmlAttributeDefault      def;   /* the default */
williamr@4
   202
    const xmlChar  *defaultValue;   /* or the default value */
williamr@4
   203
    xmlEnumerationPtr       tree;   /* or the enumeration tree if any */
williamr@4
   204
    const xmlChar        *prefix;   /* the namespace prefix if any */
williamr@4
   205
    const xmlChar          *elem;   /* Element holding the attribute */
williamr@4
   206
};
williamr@4
   207
williamr@4
   208
/**
williamr@4
   209
 * xmlElementContentType:
williamr@4
   210
 *
williamr@4
   211
 * Possible definitions of element content types.
williamr@4
   212
 */
williamr@4
   213
typedef enum {
williamr@4
   214
    XML_ELEMENT_CONTENT_PCDATA = 1,
williamr@4
   215
    XML_ELEMENT_CONTENT_ELEMENT,
williamr@4
   216
    XML_ELEMENT_CONTENT_SEQ,
williamr@4
   217
    XML_ELEMENT_CONTENT_OR
williamr@4
   218
} xmlElementContentType;
williamr@4
   219
williamr@4
   220
/**
williamr@4
   221
 * xmlElementContentOccur:
williamr@4
   222
 *
williamr@4
   223
 * Possible definitions of element content occurrences.
williamr@4
   224
 */
williamr@4
   225
typedef enum {
williamr@4
   226
    XML_ELEMENT_CONTENT_ONCE = 1,
williamr@4
   227
    XML_ELEMENT_CONTENT_OPT,
williamr@4
   228
    XML_ELEMENT_CONTENT_MULT,
williamr@4
   229
    XML_ELEMENT_CONTENT_PLUS
williamr@4
   230
} xmlElementContentOccur;
williamr@4
   231
williamr@4
   232
/**
williamr@4
   233
 * xmlElementContent:
williamr@4
   234
 *
williamr@4
   235
 * An XML Element content as stored after parsing an element definition
williamr@4
   236
 * in a DTD.
williamr@4
   237
 */
williamr@4
   238
williamr@4
   239
typedef struct _xmlElementContent xmlElementContent;
williamr@4
   240
typedef xmlElementContent *xmlElementContentPtr;
williamr@4
   241
struct _xmlElementContent {
williamr@4
   242
    xmlElementContentType     type;     /* PCDATA, ELEMENT, SEQ or OR */
williamr@4
   243
    xmlElementContentOccur    ocur;     /* ONCE, OPT, MULT or PLUS */
williamr@4
   244
    const xmlChar             *name;    /* Element name */
williamr@4
   245
    struct _xmlElementContent *c1;      /* first child */
williamr@4
   246
    struct _xmlElementContent *c2;      /* second child */
williamr@4
   247
    struct _xmlElementContent *parent;  /* parent */
williamr@4
   248
    const xmlChar             *prefix;  /* Namespace prefix */
williamr@4
   249
};
williamr@4
   250
williamr@4
   251
/**
williamr@4
   252
 * xmlElementTypeVal:
williamr@4
   253
 *
williamr@4
   254
 * The different possibilities for an element content type.
williamr@4
   255
 */
williamr@4
   256
williamr@4
   257
typedef enum {
williamr@4
   258
    XML_ELEMENT_TYPE_UNDEFINED = 0,
williamr@4
   259
    XML_ELEMENT_TYPE_EMPTY = 1,
williamr@4
   260
    XML_ELEMENT_TYPE_ANY,
williamr@4
   261
    XML_ELEMENT_TYPE_MIXED,
williamr@4
   262
    XML_ELEMENT_TYPE_ELEMENT
williamr@4
   263
} xmlElementTypeVal;
williamr@4
   264
williamr@4
   265
williamr@4
   266
//#ifdef __cplusplus
williamr@4
   267
//}
williamr@4
   268
//#endif
williamr@4
   269
//#ifdef __cplusplus
williamr@4
   270
//extern "C" {
williamr@4
   271
//#endif
williamr@4
   272
williamr@4
   273
/**
williamr@4
   274
 * xmlElement:
williamr@4
   275
 *
williamr@4
   276
 * An XML Element declaration from a DTD.
williamr@4
   277
 */
williamr@4
   278
williamr@4
   279
typedef struct _xmlElement xmlElement;
williamr@4
   280
typedef xmlElement *xmlElementPtr;
williamr@4
   281
struct _xmlElement {
williamr@4
   282
    void           *_private;       /* application data */
williamr@4
   283
    xmlElementType          type;   /* XML_ELEMENT_DECL, must be second ! */
williamr@4
   284
    const xmlChar          *name;   /* Element name */
williamr@4
   285
    struct _xmlNode    *children;   /* NULL */
williamr@4
   286
    struct _xmlNode        *last;   /* NULL */
williamr@4
   287
    struct _xmlDtd       *parent;   /* -> DTD */
williamr@4
   288
    struct _xmlNode        *next;   /* next sibling link  */
williamr@4
   289
    struct _xmlNode        *prev;   /* previous sibling link  */
williamr@4
   290
    struct _xmlDoc          *doc;   /* the containing document */
williamr@4
   291
williamr@4
   292
    xmlElementTypeVal      etype;   /* The type */
williamr@4
   293
    xmlElementContentPtr content;   /* the allowed element content */
williamr@4
   294
    xmlAttributePtr   attributes;   /* List of the declared attributes */
williamr@4
   295
    const xmlChar        *prefix;   /* the namespace prefix if any */
williamr@4
   296
#ifdef LIBXML_REGEXP_ENABLED
williamr@4
   297
    xmlRegexpPtr       contModel;   /* the validating regexp */
williamr@4
   298
#else
williamr@4
   299
    void*              contModel;
williamr@4
   300
#endif
williamr@4
   301
};
williamr@4
   302
williamr@4
   303
williamr@4
   304
/**
williamr@4
   305
 * XML_LOCAL_NAMESPACE:
williamr@4
   306
 *
williamr@4
   307
 * A namespace declaration node.
williamr@4
   308
 */
williamr@4
   309
#define XML_LOCAL_NAMESPACE XML_NAMESPACE_DECL
williamr@4
   310
typedef xmlElementType xmlNsType;
williamr@4
   311
williamr@4
   312
/**
williamr@4
   313
 * xmlNs:
williamr@4
   314
 *
williamr@4
   315
 * An XML namespace.
williamr@4
   316
 * Note that prefix == NULL is valid, it defines the default namespace
williamr@4
   317
 * within the subtree (until overridden).
williamr@4
   318
 *
williamr@4
   319
 * xmlNsType is unified with xmlElementType.
williamr@4
   320
 */
williamr@4
   321
williamr@4
   322
typedef struct _xmlNs xmlNs;
williamr@4
   323
typedef xmlNs *xmlNsPtr;
williamr@4
   324
struct _xmlNs {
williamr@4
   325
    struct _xmlNs  *next;       /* next Ns link for this node  */
williamr@4
   326
    xmlNsType      type;        /* global or local */
williamr@4
   327
    const xmlChar *href;        /* URL for the namespace */
williamr@4
   328
    const xmlChar *prefix;      /* prefix for the namespace */
williamr@4
   329
    void           *_private;   /* application data */
williamr@4
   330
};
williamr@4
   331
williamr@4
   332
/**
williamr@4
   333
 * xmlDtd:
williamr@4
   334
 *
williamr@4
   335
 * An XML DTD, as defined by <!DOCTYPE ... There is actually one for
williamr@4
   336
 * the internal subset and for the external subset.
williamr@4
   337
 */
williamr@4
   338
typedef struct _xmlDtd xmlDtd;
williamr@4
   339
typedef xmlDtd *xmlDtdPtr;
williamr@4
   340
struct _xmlDtd {
williamr@4
   341
    void           *_private;   /* application data */
williamr@4
   342
    xmlElementType  type;       /* XML_DTD_NODE, must be second ! */
williamr@4
   343
    const xmlChar *name;        /* Name of the DTD */
williamr@4
   344
    struct _xmlNode *children;  /* the value of the property link */
williamr@4
   345
    struct _xmlNode *last;      /* last child link */
williamr@4
   346
    struct _xmlDoc  *parent;    /* child->parent link */
williamr@4
   347
    struct _xmlNode *next;      /* next sibling link  */
williamr@4
   348
    struct _xmlNode *prev;      /* previous sibling link  */
williamr@4
   349
    struct _xmlDoc  *doc;       /* the containing document */
williamr@4
   350
williamr@4
   351
    /* End of common part */
williamr@4
   352
    void          *notations;   /* Hash table for notations if any */
williamr@4
   353
    void          *elements;    /* Hash table for elements if any */
williamr@4
   354
    void          *attributes;  /* Hash table for attributes if any */
williamr@4
   355
    void          *entities;    /* Hash table for entities if any */
williamr@4
   356
    const xmlChar *ExternalID;  /* External identifier for PUBLIC DTD */
williamr@4
   357
    const xmlChar *SystemID;    /* URI for a SYSTEM or PUBLIC DTD */
williamr@4
   358
    void          *pentities;   /* Hash table for param entities if any */
williamr@4
   359
};
williamr@4
   360
williamr@4
   361
/**
williamr@4
   362
 * xmlAttr:
williamr@4
   363
 *
williamr@4
   364
 * An attribute on an XML node.
williamr@4
   365
 */
williamr@4
   366
typedef struct _xmlAttr xmlAttr;
williamr@4
   367
typedef xmlAttr *xmlAttrPtr;
williamr@4
   368
struct _xmlAttr {
williamr@4
   369
    void           *_private;   /* application data */
williamr@4
   370
    xmlElementType   type;      /* XML_ATTRIBUTE_NODE, must be second ! */
williamr@4
   371
    const xmlChar   *name;      /* the name of the property */
williamr@4
   372
    struct _xmlNode *children;  /* the value of the property */
williamr@4
   373
    struct _xmlNode *last;      /* NULL */
williamr@4
   374
    struct _xmlNode *parent;    /* child->parent link */
williamr@4
   375
    struct _xmlAttr *next;      /* next sibling link  */
williamr@4
   376
    struct _xmlAttr *prev;      /* previous sibling link  */
williamr@4
   377
    struct _xmlDoc  *doc;       /* the containing document */
williamr@4
   378
    /* End of common part */
williamr@4
   379
    xmlNs           *ns;        /* pointer to the associated namespace */
williamr@4
   380
    xmlAttributeType atype;     /* the attribute type if validating */
williamr@4
   381
    void            *psvi;      /* for type/PSVI informations */
williamr@4
   382
};
williamr@4
   383
williamr@4
   384
/**
williamr@4
   385
 * xmlID:
williamr@4
   386
 *
williamr@4
   387
 * An XML ID instance.
williamr@4
   388
 */
williamr@4
   389
williamr@4
   390
typedef struct _xmlID xmlID;
williamr@4
   391
typedef xmlID* xmlIDPtr;
williamr@4
   392
struct _xmlID {
williamr@4
   393
    xmlIDPtr          next;     /* next ID */
williamr@4
   394
    const xmlChar*    value;    /* The ID name */
williamr@4
   395
    xmlAttrPtr        attr;     /* The attribute holding it */
williamr@4
   396
    const xmlChar*    name;     /* The attribute if attr is not available */
williamr@4
   397
    struct _xmlDoc*   doc;      /* The document holding the ID */
williamr@4
   398
#ifdef LIBXML_ENABLE_NODE_LINEINFO
williamr@4
   399
    int               lineno;   /* The line number if attr is not available */
williamr@4
   400
#endif
williamr@4
   401
};
williamr@4
   402
williamr@4
   403
/**
williamr@4
   404
 * xmlRef:
williamr@4
   405
 *
williamr@4
   406
 * An XML IDREF instance.
williamr@4
   407
 */
williamr@4
   408
williamr@4
   409
typedef struct _xmlRef xmlRef;
williamr@4
   410
typedef xmlRef* xmlRefPtr;
williamr@4
   411
struct _xmlRef {
williamr@4
   412
    xmlRefPtr       next;    /* next Ref */
williamr@4
   413
    const xmlChar*  value;   /* The Ref name */
williamr@4
   414
    xmlAttrPtr      attr;    /* The attribute holding it */
williamr@4
   415
    const xmlChar*  name;    /* The attribute if attr is not available */
williamr@4
   416
#ifdef LIBXML_ENABLE_NODE_LINEINFO
williamr@4
   417
    int               lineno;   /* The line number if attr is not available */
williamr@4
   418
#endif
williamr@4
   419
};
williamr@4
   420
williamr@4
   421
/**
williamr@4
   422
 * xmlBufferAllocationScheme:
williamr@4
   423
 *
williamr@4
   424
 * A buffer allocation scheme can be defined to either match exactly the
williamr@4
   425
 * need or double it's allocated size each time it is found too small.
williamr@4
   426
 */
williamr@4
   427
williamr@4
   428
typedef enum {
williamr@4
   429
    XML_BUFFER_ALLOC_DOUBLEIT,
williamr@4
   430
    XML_BUFFER_ALLOC_EXACT,
williamr@4
   431
    XML_BUFFER_ALLOC_IMMUTABLE
williamr@4
   432
} xmlBufferAllocationScheme;
williamr@4
   433
williamr@4
   434
/**
williamr@4
   435
 * xmlBuffer:
williamr@4
   436
 *
williamr@4
   437
 * A buffer structure.
williamr@4
   438
 */
williamr@4
   439
typedef struct _xmlBuffer xmlBuffer;
williamr@4
   440
typedef xmlBuffer* xmlBufferPtr;
williamr@4
   441
struct _xmlBuffer {
williamr@4
   442
    xmlChar*     content;   /* The buffer content UTF8 */
williamr@4
   443
    unsigned int use;       /* The buffer size used */
williamr@4
   444
    unsigned int size;      /* The buffer size */
williamr@4
   445
    xmlBufferAllocationScheme alloc; /* The realloc method */
williamr@4
   446
};
williamr@4
   447
williamr@4
   448
/**
williamr@4
   449
 * xmlNode:
williamr@4
   450
 *
williamr@4
   451
 * A node in an XML tree. 
williamr@4
   452
 *
williamr@4
   453
 * Note:
williamr@4
   454
 * Text nodes are also used to store binary data in the tree. 
williamr@4
   455
 * 'content' field is used to store a pointer to binary data
williamr@4
   456
 * 'properties' field is used to store int length of the data 
williamr@4
   457
 *
williamr@4
   458
 */
williamr@4
   459
typedef struct _xmlNode xmlNode;
williamr@4
   460
typedef xmlNode* xmlNodePtr;
williamr@4
   461
struct _xmlNode {
williamr@4
   462
    void*           _private;   /* application data */
williamr@4
   463
    xmlElementType  type;      /* type number, must be second ! */
williamr@4
   464
    const xmlChar*  name;      /* the name of the node, or the entity */
williamr@4
   465
    xmlNodePtr      children;  /* parent->childs link */
williamr@4
   466
    xmlNodePtr      last;      /* last child link */
williamr@4
   467
    xmlNodePtr      parent;    /* child->parent link */
williamr@4
   468
    xmlNodePtr      next;      /* next sibling link  */
williamr@4
   469
    xmlNodePtr      prev;      /* previous sibling link  */
williamr@4
   470
    struct _xmlDoc* doc;       /* the containing document */
williamr@4
   471
    /* End of common part */
williamr@4
   472
    xmlNs           *ns;        /* pointer to the associated namespace */
williamr@4
   473
    xmlChar         *content;   /* the content */
williamr@4
   474
    struct _xmlAttr *properties;/* properties list */
williamr@4
   475
    xmlNs           *nsDef;     /* namespace definitions on this node */
williamr@4
   476
    void            *psvi;      /* for type/PSVI informations */
williamr@4
   477
    unsigned short   extra;     /* extra data for XPath/XSLT */
williamr@4
   478
#ifdef LIBXML_ENABLE_NODE_LINEINFO
williamr@4
   479
    unsigned short   line;      /* line number */
williamr@4
   480
#endif
williamr@4
   481
};
williamr@4
   482
williamr@4
   483
/**
williamr@4
   484
 * XML_GET_CONTENT:
williamr@4
   485
 *
williamr@4
   486
 * Macro to extract the content pointer of a node.
williamr@4
   487
 */
williamr@4
   488
#define XML_GET_CONTENT(n)                  \
williamr@4
   489
    ((n)->type == XML_ELEMENT_NODE ? NULL : (n)->content)
williamr@4
   490
williamr@4
   491
williamr@4
   492
williamr@4
   493
#ifdef LIBXML_ENABLE_NODE_LINEINFO
williamr@4
   494
/**
williamr@4
   495
 * XML_GET_LINE:
williamr@4
   496
 *
williamr@4
   497
 * Macro to extract the line number of an element node.
williamr@4
   498
 */
williamr@4
   499
#define XML_GET_LINE(n)    (xmlGetLineNo(n))
williamr@4
   500
#endif /* LIBXML_ENABLE_NODE_LINEINFO */
williamr@4
   501
williamr@4
   502
/**
williamr@4
   503
 * xmlDoc:
williamr@4
   504
 *
williamr@4
   505
 * An XML document.
williamr@4
   506
 */
williamr@4
   507
typedef struct _xmlDoc xmlDoc;
williamr@4
   508
typedef xmlDoc* xmlDocPtr;
williamr@4
   509
struct _xmlDoc {
williamr@4
   510
    void           *_private;   /* application data */
williamr@4
   511
    xmlElementType  type;       /* XML_DOCUMENT_NODE, must be second ! */
williamr@4
   512
    char           *name;       /* name/filename/URI of the document */
williamr@4
   513
    struct _xmlNode *children;  /* the document tree */
williamr@4
   514
    struct _xmlNode *last;      /* last child link */
williamr@4
   515
    struct _xmlNode *parent;    /* child->parent link */
williamr@4
   516
    struct _xmlNode *next;      /* next sibling link  */
williamr@4
   517
    struct _xmlNode *prev;      /* previous sibling link  */
williamr@4
   518
    struct _xmlDoc  *doc;       /* autoreference to itself */
williamr@4
   519
    /* End of common part */
williamr@4
   520
williamr@4
   521
    /* dummy fields to avoid incorrect use of xmlDoc as xmlNode
williamr@4
   522
       currently, always NULL; reserved.
williamr@4
   523
williamr@4
   524
       Added to prevent potential problems of same kind in the future.
williamr@4
   525
    */
williamr@4
   526
    void*           _reserved1; /* ~ xmlNode.ns            */
williamr@4
   527
    void*           _reserved2; /* ~ xmlNode.content       */
williamr@4
   528
    void*           _reserved3; /* ~ xmlNode.properties    */
williamr@4
   529
    void*           _reserved4; /* ~ xmlNode.nsDef         */
williamr@4
   530
    /* End of 2nd (extra) common part (same as xmlNode) */
williamr@4
   531
williamr@4
   532
#ifdef LIBXML_ENABLE_GS_CACHING_IN_DOC
williamr@4
   533
    void*           cachedGs;   /* cached value returned by xmlGetGlobalState() */
williamr@4
   534
#endif
williamr@4
   535
    int             compression;/* level of zlib compression */
williamr@4
   536
    int             standalone; /* standalone document (no external refs) */
williamr@4
   537
    struct _xmlDtd  *intSubset; /* the document internal subset */
williamr@4
   538
    struct _xmlDtd  *extSubset; /* the document external subset */
williamr@4
   539
    struct _xmlNs   *oldNs;     /* Global namespace, the old way */
williamr@4
   540
    const xmlChar   *version;   /* the XML version string */
williamr@4
   541
    const xmlChar   *encoding;  /* external initial encoding, if any */
williamr@4
   542
    void            *ids;       /* Hash table for ID attributes if any */
williamr@4
   543
    void            *refs;      /* Hash table for IDREFs attributes if any */
williamr@4
   544
    const xmlChar   *URL;       /* The URI for that document */
williamr@4
   545
    int             charset;    /* encoding of the in-memory content
williamr@4
   546
                                   actually an xmlCharEncoding */
williamr@4
   547
    struct _xmlDict *dict;      /* dict used to allocate names or NULL */
williamr@4
   548
    void            *psvi;      /* for type/PSVI informations */
williamr@4
   549
//XMLENGINE: NEW CODE
williamr@4
   550
    /*
williamr@4
   551
    A container for nodes that were created as nodes of this document but
williamr@4
   552
    are not linked into the document yet
williamr@4
   553
    NOTE: this field is used by DOM C++ API only (not in libxml2 functions)
williamr@4
   554
    */
williamr@4
   555
    void*            ownedNodes;
williamr@4
   556
    /* 
williamr@4
   557
     * Container for nodes that store external data references
williamr@4
   558
     */
williamr@4
   559
    xmlNodePtr*		dataNodeList; 	/* array of data nodes */
williamr@4
   560
    int				dataNodeMax;	/* maximum number of data nodes in the array */
williamr@4
   561
//
williamr@4
   562
};
williamr@4
   563
williamr@4
   564
/*
williamr@4
   565
 * Variables.
williamr@4
   566
 */
williamr@4
   567
williamr@4
   568
/*
williamr@4
   569
 * Some helper functions
williamr@4
   570
 */
williamr@4
   571
XMLPUBFUN int XMLCALL xmlValidateNCName (const xmlChar* value, int space);
williamr@4
   572
XMLPUBFUN int XMLCALL xmlValidateQName  (const xmlChar* value, int space);
williamr@4
   573
XMLPUBFUN int XMLCALL xmlValidateName   (const xmlChar* value, int space);
williamr@4
   574
XMLPUBFUN int XMLCALL xmlValidateNMToken(const xmlChar* value, int space);
williamr@4
   575
williamr@4
   576
XMLPUBFUN xmlChar* XMLCALL
williamr@4
   577
        xmlBuildQName   (const xmlChar *ncname, const xmlChar *prefix,
williamr@4
   578
                         xmlChar *memory, int len);
williamr@4
   579
XMLPUBFUN xmlChar* XMLCALL
williamr@4
   580
        xmlSplitQName2  (const xmlChar *name, xmlChar **prefix);
williamr@4
   581
XMLPUBFUN const xmlChar* XMLCALL
williamr@4
   582
        xmlSplitQName3  (const xmlChar *name, int *len);
williamr@4
   583
williamr@4
   584
/*
williamr@4
   585
 * Handling Buffers.
williamr@4
   586
 */
williamr@4
   587
williamr@4
   588
XMLPUBFUN void XMLCALL
williamr@4
   589
        xmlSetBufferAllocationScheme(xmlBufferAllocationScheme scheme);
williamr@4
   590
williamr@4
   591
#ifndef XMLENGINE_EXCLUDE_UNUSED
williamr@4
   592
XMLPUBFUN xmlBufferAllocationScheme XMLCALL
williamr@4
   593
        xmlGetBufferAllocationScheme(void);
williamr@4
   594
#endif /* ifndef XMLENGINE_EXCLUDE_UNUSED */
williamr@4
   595
williamr@4
   596
XMLPUBFUN xmlBufferPtr XMLCALL
williamr@4
   597
        xmlBufferCreate     (void);
williamr@4
   598
XMLPUBFUN xmlBufferPtr XMLCALL
williamr@4
   599
        xmlBufferCreateSize (size_t size);
williamr@4
   600
XMLPUBFUN xmlBufferPtr XMLCALL
williamr@4
   601
        xmlBufferCreateStatic   (void *mem, size_t size);
williamr@4
   602
XMLPUBFUN int XMLCALL
williamr@4
   603
        xmlBufferResize     (xmlBufferPtr buf, unsigned int size);
williamr@4
   604
XMLPUBFUN void XMLCALL
williamr@4
   605
        xmlBufferFree       (xmlBufferPtr buf);
williamr@4
   606
williamr@4
   607
#ifndef XMLENGINE_EXCLUDE_FILE_FUNC
williamr@4
   608
XMLPUBFUN int XMLCALL
williamr@4
   609
        xmlBufferDump       (FILE *file, xmlBufferPtr buf);
williamr@4
   610
#endif
williamr@4
   611
williamr@4
   612
XMLPUBFUN void XMLCALL
williamr@4
   613
        xmlBufferAdd        (xmlBufferPtr buf, const xmlChar *str, int len);
williamr@4
   614
XMLPUBFUN void XMLCALL
williamr@4
   615
        xmlBufferAddHead    (xmlBufferPtr buf, const xmlChar *str, int len);
williamr@4
   616
XMLPUBFUN void XMLCALL
williamr@4
   617
        xmlBufferCat        (xmlBufferPtr buf, const xmlChar *str);
williamr@4
   618
XMLPUBFUN void XMLCALL
williamr@4
   619
        xmlBufferCCat       (xmlBufferPtr buf, const char *str);
williamr@4
   620
XMLPUBFUN int XMLCALL
williamr@4
   621
        xmlBufferShrink     (xmlBufferPtr buf, unsigned int len);
williamr@4
   622
XMLPUBFUN int XMLCALL
williamr@4
   623
        xmlBufferGrow       (xmlBufferPtr buf, unsigned int len);
williamr@4
   624
williamr@4
   625
#ifndef XMLENGINE_EXCLUDE_UNUSED
williamr@4
   626
XMLPUBFUN void XMLCALL xmlBufferEmpty   (xmlBufferPtr buf);
williamr@4
   627
XMLPUBFUN void XMLCALL xmlBufferSetAllocationScheme(xmlBufferPtr buf, xmlBufferAllocationScheme scheme);
williamr@4
   628
#endif
williamr@4
   629
williamr@4
   630
XMLPUBFUN int  XMLCALL xmlBufferLength  (const xmlBufferPtr buf);
williamr@4
   631
williamr@4
   632
// XMLENGINE: BEGIN NEW CODE
williamr@4
   633
/**
williamr@4
   634
 * xmlBufferContent:
williamr@4
   635
 * @param buf the buffer
williamr@4
   636
 *
williamr@4
   637
 * Function to extract the content of a buffer
williamr@4
   638
 *
williamr@4
   639
 * Returns the internal content
williamr@4
   640
 */
williamr@4
   641
#define xmlBufferContent(buf) ((buf)? (buf)->content : NULL)
williamr@4
   642
// XMLENGINE: END NEW CODE
williamr@4
   643
williamr@4
   644
// DONE: OPTIMIZE: replaced by MACRO
williamr@4
   645
// XMLPUBFUN const xmlChar* XMLCALL
williamr@4
   646
//      xmlBufferContent    (const xmlBufferPtr buf);
williamr@4
   647
williamr@4
   648
/*
williamr@4
   649
 * Creating/freeing new structures.
williamr@4
   650
 */
williamr@4
   651
williamr@4
   652
XMLPUBFUN xmlDtdPtr XMLCALL
williamr@4
   653
        xmlCreateIntSubset  (xmlDocPtr doc,
williamr@4
   654
                     const xmlChar *name,
williamr@4
   655
                     const xmlChar *ExternalID,
williamr@4
   656
                     const xmlChar *SystemID);
williamr@4
   657
XMLPUBFUN xmlDtdPtr XMLCALL
williamr@4
   658
        xmlNewDtd       (xmlDocPtr doc,
williamr@4
   659
                     const xmlChar *name,
williamr@4
   660
                     const xmlChar *ExternalID,
williamr@4
   661
                     const xmlChar *SystemID);
williamr@4
   662
XMLPUBFUN xmlDtdPtr XMLCALL
williamr@4
   663
        xmlGetIntSubset     (xmlDocPtr doc);
williamr@4
   664
XMLPUBFUN void XMLCALL
williamr@4
   665
        xmlFreeDtd      (xmlDtdPtr cur);
williamr@4
   666
XMLPUBFUN xmlNsPtr XMLCALL
williamr@4
   667
        xmlNewGlobalNs      (xmlDocPtr doc,
williamr@4
   668
                     const xmlChar *href,
williamr@4
   669
                     const xmlChar *prefix);
williamr@4
   670
XMLPUBFUN xmlNsPtr XMLCALL
williamr@4
   671
        xmlNewNs        (xmlNodePtr node,
williamr@4
   672
                     const xmlChar *href,
williamr@4
   673
                     const xmlChar *prefix);
williamr@4
   674
XMLPUBFUN void XMLCALL
williamr@4
   675
        xmlFreeNs       (xmlNsPtr cur);
williamr@4
   676
XMLPUBFUN void XMLCALL
williamr@4
   677
        xmlFreeNsList       (xmlNsPtr cur);
williamr@4
   678
XMLPUBFUN xmlDocPtr XMLCALL
williamr@4
   679
        xmlNewDoc       (const xmlChar *version);
williamr@4
   680
XMLPUBFUN void XMLCALL
williamr@4
   681
        xmlFreeDoc      (xmlDocPtr cur);
williamr@4
   682
XMLPUBFUN xmlAttrPtr XMLCALL
williamr@4
   683
        xmlNewDocProp       (xmlDocPtr doc,
williamr@4
   684
                     const xmlChar *name,
williamr@4
   685
                     const xmlChar *value);
williamr@4
   686
XMLPUBFUN xmlAttrPtr XMLCALL
williamr@4
   687
        xmlNewProp      (xmlNodePtr node,
williamr@4
   688
                     const xmlChar *name,
williamr@4
   689
                     const xmlChar *value);
williamr@4
   690
XMLPUBFUN xmlAttrPtr XMLCALL
williamr@4
   691
        xmlNewNsProp        (xmlNodePtr node,
williamr@4
   692
                     xmlNsPtr ns,
williamr@4
   693
                     const xmlChar *name,
williamr@4
   694
                     const xmlChar *value);
williamr@4
   695
XMLPUBFUN xmlAttrPtr XMLCALL
williamr@4
   696
        xmlNewNsPropEatName (xmlNodePtr node,
williamr@4
   697
                     xmlNsPtr ns,
williamr@4
   698
                     xmlChar *name,
williamr@4
   699
                     const xmlChar *value);
williamr@4
   700
XMLPUBFUN void XMLCALL
williamr@4
   701
        xmlFreePropList     (xmlAttrPtr cur);
williamr@4
   702
XMLPUBFUN void XMLCALL
williamr@4
   703
        xmlFreeProp     (xmlAttrPtr cur);
williamr@4
   704
XMLPUBFUN xmlAttrPtr XMLCALL
williamr@4
   705
        xmlCopyProp     (xmlNodePtr target,
williamr@4
   706
                     xmlAttrPtr cur);
williamr@4
   707
XMLPUBFUN xmlAttrPtr XMLCALL
williamr@4
   708
        xmlCopyPropList     (xmlNodePtr target,
williamr@4
   709
                     xmlAttrPtr cur);
williamr@4
   710
#ifdef LIBXML_TREE_ENABLED
williamr@4
   711
XMLPUBFUN xmlDtdPtr XMLCALL
williamr@4
   712
        xmlCopyDtd      (xmlDtdPtr dtd);
williamr@4
   713
XMLPUBFUN xmlDocPtr XMLCALL
williamr@4
   714
        xmlCopyDoc      (xmlDocPtr doc,
williamr@4
   715
                     int recursive);
williamr@4
   716
#endif /* LIBXML_TREE_ENABLED */
williamr@4
   717
williamr@4
   718
/*
williamr@4
   719
 * Creating new nodes.
williamr@4
   720
 */
williamr@4
   721
XMLPUBFUN xmlNodePtr XMLCALL
williamr@4
   722
        xmlNewDocNode       (xmlDocPtr doc,
williamr@4
   723
                     xmlNsPtr ns,
williamr@4
   724
                     const xmlChar *name,
williamr@4
   725
                     const xmlChar *content);
williamr@4
   726
XMLPUBFUN xmlNodePtr XMLCALL
williamr@4
   727
        xmlNewDocNodeEatName    (xmlDocPtr doc,
williamr@4
   728
                     xmlNsPtr ns,
williamr@4
   729
                     xmlChar *name,
williamr@4
   730
                     const xmlChar *content);
williamr@4
   731
XMLPUBFUN xmlNodePtr XMLCALL
williamr@4
   732
        xmlNewDocRawNode    (xmlDocPtr doc,
williamr@4
   733
                     xmlNsPtr ns,
williamr@4
   734
                     const xmlChar *name,
williamr@4
   735
                     const xmlChar *content);
williamr@4
   736
XMLPUBFUN xmlNodePtr XMLCALL
williamr@4
   737
        xmlNewNode      (xmlNsPtr ns,
williamr@4
   738
                     const xmlChar *name);
williamr@4
   739
XMLPUBFUN xmlNodePtr XMLCALL
williamr@4
   740
        xmlNewNodeEatName   (xmlNsPtr ns,
williamr@4
   741
                     xmlChar *name);
williamr@4
   742
XMLPUBFUN xmlNodePtr XMLCALL
williamr@4
   743
        xmlNewChild     (xmlNodePtr parent,
williamr@4
   744
                     xmlNsPtr ns,
williamr@4
   745
                     const xmlChar *name,
williamr@4
   746
                     const xmlChar *content);
williamr@4
   747
XMLPUBFUN xmlNodePtr XMLCALL
williamr@4
   748
        xmlNewTextChild     (xmlNodePtr parent,
williamr@4
   749
                     xmlNsPtr ns,
williamr@4
   750
                     const xmlChar *name,
williamr@4
   751
                     const xmlChar *content);
williamr@4
   752
XMLPUBFUN xmlNodePtr XMLCALL
williamr@4
   753
        xmlNewDocText       (xmlDocPtr doc,
williamr@4
   754
                     const xmlChar *content);
williamr@4
   755
XMLPUBFUN xmlNodePtr XMLCALL
williamr@4
   756
        xmlNewText      (const xmlChar *content);
williamr@4
   757
williamr@4
   758
XMLPUBFUN xmlNodePtr XMLCALL
williamr@4
   759
        xmlNewPI        (const xmlChar *name,
williamr@4
   760
                     const xmlChar *content);
williamr@4
   761
XMLPUBFUN xmlNodePtr XMLCALL
williamr@4
   762
        xmlNewDocTextLen    (xmlDocPtr doc,
williamr@4
   763
                     const xmlChar *content,
williamr@4
   764
                     int len);
williamr@4
   765
XMLPUBFUN xmlNodePtr XMLCALL
williamr@4
   766
        xmlNewTextLen       (const xmlChar *content,
williamr@4
   767
                     int len);
williamr@4
   768
XMLPUBFUN xmlNodePtr XMLCALL
williamr@4
   769
        xmlNewDocComment    (xmlDocPtr doc,
williamr@4
   770
                     const xmlChar *content);
williamr@4
   771
XMLPUBFUN xmlNodePtr XMLCALL
williamr@4
   772
        xmlNewComment       (const xmlChar *content);
williamr@4
   773
XMLPUBFUN xmlNodePtr XMLCALL
williamr@4
   774
        xmlNewCDataBlock    (xmlDocPtr doc,
williamr@4
   775
                     const xmlChar *content,
williamr@4
   776
                     int len);
williamr@4
   777
XMLPUBFUN xmlNodePtr XMLCALL
williamr@4
   778
        xmlNewCharRef       (xmlDocPtr doc,
williamr@4
   779
                     const xmlChar *name);
williamr@4
   780
XMLPUBFUN xmlNodePtr XMLCALL
williamr@4
   781
        xmlNewReference     (xmlDocPtr doc,
williamr@4
   782
                     const xmlChar *name);
williamr@4
   783
XMLPUBFUN xmlNodePtr XMLCALL
williamr@4
   784
        xmlCopyNode     (const xmlNodePtr node,
williamr@4
   785
                     int recursive);
williamr@4
   786
XMLPUBFUN xmlNodePtr XMLCALL
williamr@4
   787
        xmlDocCopyNode      (const xmlNodePtr node,
williamr@4
   788
                     xmlDocPtr doc,
williamr@4
   789
                     int recursive);
williamr@4
   790
williamr@4
   791
williamr@4
   792
XMLPUBFUN xmlNodePtr XMLCALL    xmlCopyNodeList     (const xmlNodePtr node);
williamr@4
   793
williamr@4
   794
#ifdef LIBXML_TREE_ENABLED
williamr@4
   795
XMLPUBFUN xmlNodePtr XMLCALL    xmlNewDocFragment   (xmlDocPtr doc);
williamr@4
   796
#endif /* LIBXML_TREE_ENABLED */
williamr@4
   797
williamr@4
   798
/*
williamr@4
   799
 * Navigating.
williamr@4
   800
 */
williamr@4
   801
#ifdef LIBXML_ENABLE_NODE_LINEINFO
williamr@4
   802
XMLPUBFUN long XMLCALL      xmlGetLineNo(xmlNodePtr node);
williamr@4
   803
#endif
williamr@4
   804
williamr@4
   805
#ifdef LIBXML_TREE_ENABLED
williamr@4
   806
#   ifndef XMLENGINE_EXCLUDE_UNUSED
williamr@4
   807
        XMLPUBFUN xmlChar * XMLCALL xmlGetNodePath      (xmlNodePtr node);
williamr@4
   808
#   endif /* ifndef XMLENGINE_EXCLUDE_UNUSED */
williamr@4
   809
#endif /* LIBXML_TREE_ENABLED */
williamr@4
   810
williamr@4
   811
XMLPUBFUN xmlNodePtr XMLCALL xmlDocGetRootElement   (xmlDocPtr doc);
williamr@4
   812
XMLPUBFUN xmlNodePtr XMLCALL xmlGetLastChild        (xmlNodePtr parent);
williamr@4
   813
XMLPUBFUN int        XMLCALL xmlNodeIsText          (xmlNodePtr node);
williamr@4
   814
XMLPUBFUN int        XMLCALL xmlIsBlankNode         (xmlNodePtr node);
williamr@4
   815
williamr@4
   816
#ifdef LIBXML_TREE_ENABLED
williamr@4
   817
/*
williamr@4
   818
 * Changing the structure.
williamr@4
   819
 */
williamr@4
   820
XMLPUBFUN xmlNodePtr XMLCALL
williamr@4
   821
        xmlDocSetRootElement    (xmlDocPtr doc, xmlNodePtr root);
williamr@4
   822
XMLPUBFUN void XMLCALL
williamr@4
   823
        xmlNodeSetName      (xmlNodePtr cur, const xmlChar *name);
williamr@4
   824
XMLPUBFUN xmlNodePtr XMLCALL
williamr@4
   825
        xmlReplaceNode      (xmlNodePtr old, xmlNodePtr cur);
williamr@4
   826
XMLPUBFUN xmlNodePtr XMLCALL
williamr@4
   827
        xmlAddPrevSibling   (xmlNodePtr cur, xmlNodePtr elem);
williamr@4
   828
#endif /* LIBXML_TREE_ENABLED */
williamr@4
   829
williamr@4
   830
XMLPUBFUN xmlNodePtr XMLCALL
williamr@4
   831
        xmlAddChild     (xmlNodePtr parent, xmlNodePtr cur);
williamr@4
   832
XMLPUBFUN xmlNodePtr XMLCALL
williamr@4
   833
        xmlAddChildList     (xmlNodePtr parent, xmlNodePtr cur);
williamr@4
   834
williamr@4
   835
XMLPUBFUN xmlNodePtr XMLCALL
williamr@4
   836
        xmlAddSibling       (xmlNodePtr cur, xmlNodePtr elem);
williamr@4
   837
XMLPUBFUN xmlNodePtr XMLCALL
williamr@4
   838
        xmlAddNextSibling   (xmlNodePtr cur, xmlNodePtr elem);
williamr@4
   839
XMLPUBFUN void XMLCALL
williamr@4
   840
        xmlUnlinkNode       (xmlNodePtr cur);
williamr@4
   841
XMLPUBFUN xmlNodePtr XMLCALL
williamr@4
   842
        xmlTextMerge        (xmlNodePtr first, xmlNodePtr second);
williamr@4
   843
XMLPUBFUN int XMLCALL
williamr@4
   844
        xmlTextConcat       (xmlNodePtr node, const xmlChar *content, int len);
williamr@4
   845
williamr@4
   846
XMLPUBFUN void XMLCALL  xmlFreeNodeList (xmlNodePtr cur);
williamr@4
   847
XMLPUBFUN void XMLCALL  xmlFreeNode     (xmlNodePtr cur);
williamr@4
   848
XMLPUBFUN void XMLCALL  xmlSetTreeDoc   (xmlNodePtr tree, xmlDocPtr doc);
williamr@4
   849
XMLPUBFUN void XMLCALL  xmlSetListDoc   (xmlNodePtr list, xmlDocPtr doc);
williamr@4
   850
/*
williamr@4
   851
 * Namespaces.
williamr@4
   852
 */
williamr@4
   853
XMLPUBFUN xmlNsPtr XMLCALL
williamr@4
   854
        xmlSearchNs (xmlDocPtr doc,
williamr@4
   855
                     xmlNodePtr node,
williamr@4
   856
                     const xmlChar *nameSpace);
williamr@4
   857
XMLPUBFUN xmlNsPtr XMLCALL
williamr@4
   858
        xmlSearchNsByHref   (xmlDocPtr doc,
williamr@4
   859
                             xmlNodePtr node,
williamr@4
   860
                             const xmlChar *href);
williamr@4
   861
williamr@4
   862
XMLPUBFUN void     XMLCALL xmlSetNs             (xmlNodePtr node, xmlNsPtr ns);
williamr@4
   863
XMLPUBFUN xmlNsPtr XMLCALL xmlCopyNamespace     (xmlNsPtr cur);
williamr@4
   864
XMLPUBFUN xmlNsPtr XMLCALL xmlCopyNamespaceList (xmlNsPtr cur);
williamr@4
   865
williamr@4
   866
#ifdef LIBXML_TREE_ENABLED
williamr@4
   867
XMLPUBFUN xmlNsPtr* XMLCALL xmlGetNsList (xmlDocPtr doc, xmlNodePtr node);
williamr@4
   868
#endif /* LIBXML_TREE_ENABLED */
williamr@4
   869
williamr@4
   870
williamr@4
   871
/*
williamr@4
   872
 * Changing the content.
williamr@4
   873
 */
williamr@4
   874
#ifdef LIBXML_TREE_ENABLED
williamr@4
   875
XMLPUBFUN xmlAttrPtr XMLCALL
williamr@4
   876
        xmlSetProp      (xmlNodePtr node,
williamr@4
   877
                     const xmlChar *name,
williamr@4
   878
                     const xmlChar *value);
williamr@4
   879
#endif /* LIBXML_TREE_ENABLED */
williamr@4
   880
XMLPUBFUN xmlChar * XMLCALL
williamr@4
   881
        xmlGetNoNsProp      (xmlNodePtr node,
williamr@4
   882
                     const xmlChar *name);
williamr@4
   883
XMLPUBFUN xmlChar * XMLCALL
williamr@4
   884
        xmlGetProp      (xmlNodePtr node,
williamr@4
   885
                     const xmlChar *name);
williamr@4
   886
XMLPUBFUN xmlAttrPtr XMLCALL
williamr@4
   887
        xmlHasProp      (xmlNodePtr node,
williamr@4
   888
                     const xmlChar *name);
williamr@4
   889
XMLPUBFUN xmlAttrPtr XMLCALL
williamr@4
   890
        xmlHasNsProp        (xmlNodePtr node,
williamr@4
   891
                     const xmlChar *name,
williamr@4
   892
                     const xmlChar *nameSpace);
williamr@4
   893
#ifdef LIBXML_TREE_ENABLED
williamr@4
   894
XMLPUBFUN xmlAttrPtr XMLCALL
williamr@4
   895
        xmlSetNsProp        (xmlNodePtr node,
williamr@4
   896
                     xmlNsPtr ns,
williamr@4
   897
                     const xmlChar *name,
williamr@4
   898
                     const xmlChar *value);
williamr@4
   899
#endif /* LIBXML_TREE_ENABLED */
williamr@4
   900
XMLPUBFUN xmlChar * XMLCALL
williamr@4
   901
        xmlGetNsProp        (xmlNodePtr node,
williamr@4
   902
                     const xmlChar *name,
williamr@4
   903
                     const xmlChar *nameSpace);
williamr@4
   904
XMLPUBFUN xmlNodePtr XMLCALL
williamr@4
   905
        xmlStringGetNodeList    (xmlDocPtr doc,
williamr@4
   906
                     const xmlChar *value);
williamr@4
   907
XMLPUBFUN xmlNodePtr XMLCALL
williamr@4
   908
        xmlStringLenGetNodeList (xmlDocPtr doc,
williamr@4
   909
                     const xmlChar *value,
williamr@4
   910
                     int len);
williamr@4
   911
XMLPUBFUN xmlChar * XMLCALL
williamr@4
   912
        xmlNodeListGetString    (xmlDocPtr doc,
williamr@4
   913
                     xmlNodePtr list,
williamr@4
   914
                     int inLine);
williamr@4
   915
#ifdef LIBXML_TREE_ENABLED
williamr@4
   916
XMLPUBFUN xmlChar * XMLCALL
williamr@4
   917
        xmlNodeListGetRawString (xmlDocPtr doc,
williamr@4
   918
                     xmlNodePtr list,
williamr@4
   919
                     int inLine);
williamr@4
   920
#endif /* LIBXML_TREE_ENABLED */
williamr@4
   921
XMLPUBFUN void XMLCALL
williamr@4
   922
        xmlNodeSetContent   (xmlNodePtr cur,
williamr@4
   923
                     const xmlChar *content);
williamr@4
   924
#ifdef LIBXML_TREE_ENABLED
williamr@4
   925
XMLPUBFUN void XMLCALL
williamr@4
   926
        xmlNodeSetContentLen    (xmlNodePtr cur,
williamr@4
   927
                     const xmlChar *content,
williamr@4
   928
                     int len);
williamr@4
   929
#endif /* LIBXML_TREE_ENABLED */
williamr@4
   930
XMLPUBFUN void XMLCALL
williamr@4
   931
        xmlNodeAddContent   (xmlNodePtr cur,
williamr@4
   932
                     const xmlChar *content);
williamr@4
   933
XMLPUBFUN void XMLCALL
williamr@4
   934
        xmlNodeAddContentLen    (xmlNodePtr cur,
williamr@4
   935
                     const xmlChar *content,
williamr@4
   936
                     int len);
williamr@4
   937
XMLPUBFUN xmlChar * XMLCALL
williamr@4
   938
        xmlNodeGetContent   (xmlNodePtr cur);
williamr@4
   939
XMLPUBFUN int XMLCALL
williamr@4
   940
        xmlNodeBufGetContent    (xmlBufferPtr buffer,
williamr@4
   941
                     xmlNodePtr cur);
williamr@4
   942
XMLPUBFUN xmlChar * XMLCALL
williamr@4
   943
        xmlNodeGetLang      (xmlNodePtr cur);
williamr@4
   944
XMLPUBFUN int XMLCALL
williamr@4
   945
        xmlNodeGetSpacePreserve (xmlNodePtr cur);
williamr@4
   946
williamr@4
   947
XMLPUBFUN xmlChar * XMLCALL
williamr@4
   948
        xmlNodeGetBase      (xmlDocPtr doc,
williamr@4
   949
                     xmlNodePtr cur);
williamr@4
   950
williamr@4
   951
#ifdef LIBXML_TREE_ENABLED
williamr@4
   952
XMLPUBFUN void XMLCALL
williamr@4
   953
        xmlNodeSetLang      (xmlNodePtr cur,
williamr@4
   954
                     const xmlChar *lang);
williamr@4
   955
XMLPUBFUN void XMLCALL
williamr@4
   956
        xmlNodeSetSpacePreserve (xmlNodePtr cur,
williamr@4
   957
                     int val);
williamr@4
   958
XMLPUBFUN void XMLCALL
williamr@4
   959
        xmlNodeSetBase      (xmlNodePtr cur,
williamr@4
   960
                     const xmlChar *uri);
williamr@4
   961
/*
williamr@4
   962
 * Removing content.
williamr@4
   963
 */
williamr@4
   964
XMLPUBFUN int XMLCALL
williamr@4
   965
        xmlRemoveProp       (xmlAttrPtr cur);
williamr@4
   966
XMLPUBFUN int XMLCALL
williamr@4
   967
        xmlUnsetProp        (xmlNodePtr node,
williamr@4
   968
                     const xmlChar *name);
williamr@4
   969
XMLPUBFUN int XMLCALL
williamr@4
   970
        xmlUnsetNsProp      (xmlNodePtr node,
williamr@4
   971
                     xmlNsPtr ns,
williamr@4
   972
                     const xmlChar *name);
williamr@4
   973
#endif /* LIBXML_TREE_ENABLED */
williamr@4
   974
williamr@4
   975
/*
williamr@4
   976
 * Internal, don't use.
williamr@4
   977
 */
williamr@4
   978
XMLPUBFUN void XMLCALL
williamr@4
   979
        xmlBufferWriteCHAR  (xmlBufferPtr buf,
williamr@4
   980
                     const xmlChar *string);
williamr@4
   981
XMLPUBFUN void XMLCALL
williamr@4
   982
        xmlBufferWriteChar  (xmlBufferPtr buf,
williamr@4
   983
                     const char *string);
williamr@4
   984
XMLPUBFUN void XMLCALL
williamr@4
   985
        xmlBufferWriteQuotedString(xmlBufferPtr buf,
williamr@4
   986
                     const xmlChar *string);
williamr@4
   987
williamr@4
   988
XMLPUBFUN void xmlAttrSerializeTxtContent(xmlBufferPtr buf,
williamr@4
   989
                     xmlDocPtr doc,
williamr@4
   990
                     xmlAttrPtr attr,
williamr@4
   991
                     const xmlChar *string);
williamr@4
   992
williamr@4
   993
/*
williamr@4
   994
 * Namespace handling.
williamr@4
   995
 */
williamr@4
   996
XMLPUBFUN int XMLCALL
williamr@4
   997
        xmlReconciliateNs   (xmlDocPtr doc,
williamr@4
   998
                     xmlNodePtr tree);
williamr@4
   999
williamr@4
  1000
#ifdef LIBXML_OUTPUT_ENABLED
williamr@4
  1001
/*
williamr@4
  1002
 * Saving.
williamr@4
  1003
 */
williamr@4
  1004
XMLPUBFUN void XMLCALL
williamr@4
  1005
        xmlDocDumpFormatMemory  (xmlDocPtr cur,
williamr@4
  1006
                     xmlChar **mem,
williamr@4
  1007
                     int *size,
williamr@4
  1008
                     int format);
williamr@4
  1009
XMLPUBFUN void XMLCALL
williamr@4
  1010
        xmlDocDumpMemory    (xmlDocPtr cur,
williamr@4
  1011
                     xmlChar **mem,
williamr@4
  1012
                     int *size);
williamr@4
  1013
XMLPUBFUN void XMLCALL
williamr@4
  1014
        xmlDocDumpMemoryEnc (xmlDocPtr out_doc,
williamr@4
  1015
                     xmlChar **doc_txt_ptr,
williamr@4
  1016
                     int * doc_txt_len,
williamr@4
  1017
                     const char *txt_encoding);
williamr@4
  1018
XMLPUBFUN void XMLCALL
williamr@4
  1019
        xmlDocDumpFormatMemoryEnc(xmlDocPtr out_doc,
williamr@4
  1020
                     xmlChar **doc_txt_ptr,
williamr@4
  1021
                     int * doc_txt_len,
williamr@4
  1022
                     const char *txt_encoding,
williamr@4
  1023
                     int format);
williamr@4
  1024
williamr@4
  1025
#ifndef XMLENGINE_EXCLUDE_FILE_FUNC
williamr@4
  1026
XMLPUBFUN int XMLCALL
williamr@4
  1027
        xmlDocFormatDump    (FILE *f,
williamr@4
  1028
                     xmlDocPtr cur,
williamr@4
  1029
                     int format);
williamr@4
  1030
williamr@4
  1031
XMLPUBFUN int XMLCALL
williamr@4
  1032
        xmlDocDump      (FILE *f,
williamr@4
  1033
                     xmlDocPtr cur);
williamr@4
  1034
XMLPUBFUN void XMLCALL
williamr@4
  1035
        xmlElemDump     (FILE *f,
williamr@4
  1036
                     xmlDocPtr doc,
williamr@4
  1037
                     xmlNodePtr cur);
williamr@4
  1038
#endif /* XMLENGINE_EXCLUDE_FILE_FUNC */
williamr@4
  1039
williamr@4
  1040
XMLPUBFUN int XMLCALL
williamr@4
  1041
        xmlSaveFile     (const char *filename,
williamr@4
  1042
                     xmlDocPtr cur);
williamr@4
  1043
XMLPUBFUN int XMLCALL
williamr@4
  1044
        xmlSaveFormatFile   (const char *filename,
williamr@4
  1045
                     xmlDocPtr cur,
williamr@4
  1046
                     int format);
williamr@4
  1047
XMLPUBFUN int XMLCALL
williamr@4
  1048
        xmlNodeDump     (xmlBufferPtr buf,
williamr@4
  1049
                     xmlDocPtr doc,
williamr@4
  1050
                     xmlNodePtr cur,
williamr@4
  1051
                     int level,
williamr@4
  1052
                     int format);
williamr@4
  1053
williamr@4
  1054
XMLPUBFUN int XMLCALL
williamr@4
  1055
        xmlSaveFileTo       (xmlOutputBufferPtr buf,
williamr@4
  1056
                     xmlDocPtr cur,
williamr@4
  1057
                     const char *encoding);
williamr@4
  1058
XMLPUBFUN int XMLCALL
williamr@4
  1059
        xmlSaveFormatFileTo     (xmlOutputBufferPtr buf,
williamr@4
  1060
                     xmlDocPtr cur,
williamr@4
  1061
                         const char *encoding,
williamr@4
  1062
                         int format);
williamr@4
  1063
williamr@4
  1064
XMLPUBFUN void XMLCALL
williamr@4
  1065
        xmlNodeDumpOutput   (xmlOutputBufferPtr buf,
williamr@4
  1066
                     xmlDocPtr doc,
williamr@4
  1067
                     xmlNodePtr cur,
williamr@4
  1068
                     int level,
williamr@4
  1069
                     int format,
williamr@4
  1070
                     const char *encoding);
williamr@4
  1071
williamr@4
  1072
XMLPUBFUN int XMLCALL
williamr@4
  1073
        xmlSaveFormatFileEnc    (const char *filename,
williamr@4
  1074
                     xmlDocPtr cur,
williamr@4
  1075
                     const char *encoding,
williamr@4
  1076
                     int format);
williamr@4
  1077
williamr@4
  1078
XMLPUBFUN int XMLCALL
williamr@4
  1079
        xmlSaveFileEnc (const char *filename,
williamr@4
  1080
                        xmlDocPtr cur,
williamr@4
  1081
                        const char *encoding);
williamr@4
  1082
williamr@4
  1083
#endif /* LIBXML_OUTPUT_ENABLED */
williamr@4
  1084
/*
williamr@4
  1085
 * XHTML
williamr@4
  1086
 */
williamr@4
  1087
XMLPUBFUN int   XMLCALL xmlIsXHTML(const xmlChar *systemID,  const xmlChar *publicID);
williamr@4
  1088
williamr@4
  1089
/*
williamr@4
  1090
 * Compression.
williamr@4
  1091
 */
williamr@4
  1092
XMLPUBFUN void  XMLCALL xmlSetDocCompressMode(xmlDocPtr doc, int mode);
williamr@4
  1093
williamr@4
  1094
#ifndef XMLENGINE_EXCLUDE_UNUSED
williamr@4
  1095
XMLPUBFUN int   XMLCALL xmlGetDocCompressMode(xmlDocPtr doc);
williamr@4
  1096
XMLPUBFUN int   XMLCALL xmlGetCompressMode(void);
williamr@4
  1097
XMLPUBFUN void  XMLCALL xmlSetCompressMode(int mode);
williamr@4
  1098
#endif /* ifndef XMLENGINE_EXCLUDE_UNUSED */
williamr@4
  1099
williamr@4
  1100
#ifdef __cplusplus
williamr@4
  1101
}
williamr@4
  1102
#endif
williamr@4
  1103
williamr@4
  1104
#endif /* XML_TREE_H */
williamr@4
  1105
williamr@4
  1106