Annotation of XML/entities.h, revision 1.36

1.1       httpng      1: /*
                      2:  * entities.h : interface for the XML entities handking
1.4       veillard    3:  *
                      4:  * See Copyright for the status of this software.
                      5:  *
1.16      daniel      6:  * Daniel.Veillard@w3.org
1.1       httpng      7:  */
                      8: 
                      9: #ifndef __XML_ENTITIES_H__
                     10: #define __XML_ENTITIES_H__
1.12      daniel     11: 
1.18      daniel     12: #include "tree.h"
1.1       httpng     13: 
1.5       daniel     14: #ifdef __cplusplus
                     15: extern "C" {
                     16: #endif
                     17: 
1.33      daniel     18: /*
                     19:  * The different valid entity types
                     20:  */
                     21: typedef enum {
                     22:     XML_INTERNAL_GENERAL_ENTITY = 1,
                     23:     XML_EXTERNAL_GENERAL_PARSED_ENTITY = 2,
                     24:     XML_EXTERNAL_GENERAL_UNPARSED_ENTITY = 3,
                     25:     XML_INTERNAL_PARAMETER_ENTITY = 4,
                     26:     XML_EXTERNAL_PARAMETER_ENTITY = 5,
                     27:     XML_INTERNAL_PREDEFINED_ENTITY = 6
                     28: } xmlEntityType;
1.6       daniel     29: 
1.1       httpng     30: /*
1.2       httpng     31:  * An unit of storage for an entity, contains the string, the value
                     32:  * and the linkind data needed for the linking in the hash table.
                     33:  */
                     34: 
1.30      daniel     35: typedef struct _xmlEntity xmlEntity;
                     36: typedef xmlEntity *xmlEntityPtr;
                     37: struct _xmlEntity {
1.31      daniel     38: #ifndef XML_WITHOUT_CORBA
                     39:     void           *_private;          /* for Corba, must be first ! */
                     40: #endif
                     41:     xmlElementType          type;       /* XML_ENTITY_DECL, must be second ! */
                     42:     const xmlChar          *name;      /* Attribute name */
                     43:     struct _xmlNode    *children;      /* NULL */
                     44:     struct _xmlNode        *last;      /* NULL */
                     45:     struct _xmlDtd       *parent;      /* -> DTD */
                     46:     struct _xmlNode        *next;      /* next sibling link  */
                     47:     struct _xmlNode        *prev;      /* previous sibling link  */
                     48:     struct _xmlDoc          *doc;       /* the containing document */
                     49: 
                     50:     xmlChar                *orig;      /* content without ref substitution */
                     51:     xmlChar             *content;      /* content or ndata if unparsed */
                     52:     int                   length;      /* the content length */
1.33      daniel     53:     xmlEntityType          etype;      /* The entity type */
1.31      daniel     54:     const xmlChar    *ExternalID;      /* External identifier for PUBLIC */
                     55:     const xmlChar      *SystemID;      /* URI for a SYSTEM or PUBLIC Entity */
1.35      daniel     56: 
1.36    ! daniel     57: #ifdef WITH_EXTRA_ENT_DETECT
1.35      daniel     58:     /* Referenced entities name stack */
                     59:     xmlChar           *ent;             /* Current parsed Node */
                     60:     int                entNr;           /* Depth of the parsing stack */
                     61:     int                entMax;          /* Max depth of the parsing stack */
                     62:     xmlChar *         *entTab;          /* array of nodes */
1.36    ! daniel     63: #endif
1.30      daniel     64: };
1.2       httpng     65: 
                     66: /*
                     67:  * ALl entities are stored in a table there is one table per DTD
                     68:  * and one extra per document.
                     69:  */
                     70: 
                     71: #define XML_MIN_ENTITIES_TABLE 32
                     72: 
1.30      daniel     73: typedef struct _xmlEntitiesTable xmlEntitiesTable;
                     74: typedef xmlEntitiesTable *xmlEntitiesTablePtr;
                     75: struct _xmlEntitiesTable {
1.2       httpng     76:     int nb_entities;           /* number of elements stored */
                     77:     int max_entities;          /* maximum number of elements */
1.32      daniel     78:     xmlEntityPtr *table;       /* the table of entities */
1.30      daniel     79: };
1.2       httpng     80: 
1.12      daniel     81: 
1.2       httpng     82: /*
1.1       httpng     83:  * External functions :
                     84:  */
1.18      daniel     85: 
1.32      daniel     86: xmlEntityPtr           xmlAddDocEntity         (xmlDocPtr doc,
1.25      daniel     87:                                                 const xmlChar *name,
1.24      daniel     88:                                                 int type,
1.25      daniel     89:                                                 const xmlChar *ExternalID,
                     90:                                                 const xmlChar *SystemID,
                     91:                                                 const xmlChar *content);
1.32      daniel     92: xmlEntityPtr           xmlAddDtdEntity         (xmlDocPtr doc,
1.25      daniel     93:                                                 const xmlChar *name,
1.24      daniel     94:                                                 int type,
1.25      daniel     95:                                                 const xmlChar *ExternalID,
                     96:                                                 const xmlChar *SystemID,
                     97:                                                 const xmlChar *content);
                     98: xmlEntityPtr           xmlGetPredefinedEntity  (const xmlChar *name);
1.24      daniel     99: xmlEntityPtr           xmlGetDocEntity         (xmlDocPtr doc,
1.25      daniel    100:                                                 const xmlChar *name);
1.24      daniel    101: xmlEntityPtr           xmlGetDtdEntity         (xmlDocPtr doc,
1.25      daniel    102:                                                 const xmlChar *name);
1.24      daniel    103: xmlEntityPtr           xmlGetParameterEntity   (xmlDocPtr doc,
1.25      daniel    104:                                                 const xmlChar *name);
                    105: const xmlChar *                xmlEncodeEntities       (xmlDocPtr doc,
                    106:                                                 const xmlChar *input);
1.26      daniel    107: xmlChar *              xmlEncodeEntitiesReentrant(xmlDocPtr doc,
1.25      daniel    108:                                                 const xmlChar *input);
1.24      daniel    109: xmlEntitiesTablePtr    xmlCreateEntitiesTable  (void);
                    110: xmlEntitiesTablePtr    xmlCopyEntitiesTable    (xmlEntitiesTablePtr table);
                    111: void                   xmlFreeEntitiesTable    (xmlEntitiesTablePtr table);
                    112: void                   xmlDumpEntitiesTable    (xmlBufferPtr buf,
                    113:                                                 xmlEntitiesTablePtr table);
1.34      daniel    114: void                   xmlDumpEntityDecl       (xmlBufferPtr buf,
                    115:                                                 xmlEntityPtr ent);
1.24      daniel    116: xmlEntitiesTablePtr    xmlCopyEntitiesTable    (xmlEntitiesTablePtr table);
1.27      daniel    117: void                   xmlCleanupPredefinedEntities(void);
1.5       daniel    118: 
1.36    ! daniel    119: #ifdef WITH_EXTRA_ENT_DETECT
1.35      daniel    120: int                    xmlEntityAddReference   (xmlEntityPtr ent,
                    121:                                                 const xmlChar *to);
1.36    ! daniel    122: #endif
        !           123: 
1.5       daniel    124: #ifdef __cplusplus
                    125: }
                    126: #endif
1.1       httpng    127: 
                    128: # endif /* __XML_ENTITIES_H__ */

Webmaster