00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028 #ifndef _xmlcpg_h_
00029 #define _xmlcpg_h_
00030
00031
00032 #include <stdio.h>
00033
00034 #include "printstream.h"
00035
00036
00037
00042 typedef enum
00043 {
00044 xmlcpgpair, xmlcpgdocument, xmlcpgprolog, xmlcpgelement,
00045 xmlcpglist, xmlcpgchardata, xmlcpgcomment, xmlcpgpi, xmlcpgcdata,
00046 xmlcpgxmldecl, xmlcpgdoctypedecl, xmlcpgpereference, xmlcpgattribute,
00047 xmlcpgcontent, xmlcpgelementdecl, xmlcpgempty, xmlcpgany,
00048 xmlcpgchildrenopt, xmlcpgchildrenstar, xmlcpgchildrenplus, xmlcpgchildrenalt,
00049 xmlcpgchildrenseq, xmlcpgpcdata, xmlcpgstring, xmlcpgattlistdecl,
00050 xmlcpgattdef, xmlcpgid, xmlcpgidref, xmlcpgidrefs, xmlcpgentity,
00051 xmlcpgentities, xmlcpgnmtoken, xmlcpgnmtokens, xmlcpgnotationtype,
00052 xmlcpgenumeration, xmlcpgrequired, xmlcpgimplied, xmlcpgfixed,
00053 xmlcpgattvalue, xmlcpgcharref, xmlcpgentityref, xmlcpggedecl, xmlcpgpedecl,
00054 xmlcpgentityvalue, xmlcpgexternalid, xmlcpgsystemexternalid,
00055 xmlcpgpublicexternalid, xmlcpgndatadecl, xmlcpgnotationdecl, xmlcpgpublicid,
00056 xmlcpglistiterator, xmlcpgmap, xmlcpgmapiterator, xmlcpgmapentry,
00057 xmlcpgfileinputstream, xmlcpggzipinputstream, xmlcpgfileoutputstream,
00058 xmlcpggzipoutputstream, xmlcpgprintstream
00059 } xmlcpgObjectTag;
00060
00061
00062
00066 typedef enum
00067 {
00068 xmlcpgvalidity = 1, xmlcpgwellformed = 2
00069 } xmlcpgOptionTag;
00070
00071
00072
00076 extern int xmlcpgUserOptions;
00077
00078
00079
00083 typedef struct
00084 {
00085 xmlcpgObjectTag tag;
00086 } xmlcpgObject;
00087
00088
00092 typedef struct
00093 {
00094 xmlcpgObjectTag tag;
00095 xmlcpgObject *head;
00096 xmlcpgObject *tail;
00097 } xmlcpgPair;
00098
00106 extern xmlcpgPair* xmlcpgnewPair (xmlcpgObject *hea, xmlcpgObject *tai);
00107
00113 extern xmlcpgObject* xmlcpggetPairHead (xmlcpgPair *obj);
00114
00120 extern void xmlcpgsetPairHead (xmlcpgPair *op, xmlcpgObject *obj);
00121
00127 extern xmlcpgObject* xmlcpggetPairTail (xmlcpgPair *obj);
00128
00134 extern void xmlcpgsetPairTail (xmlcpgPair *op, xmlcpgObject *obj);
00135
00136
00137 typedef struct
00138 {
00139 xmlcpgObjectTag tag;
00140 xmlcpgPair *begin;
00141 } xmlcpgList;
00142
00143
00144 typedef struct
00145 {
00146 xmlcpgObjectTag tag;
00147 } xmlcpgIterator;
00148
00149
00150 typedef struct
00151 {
00152 xmlcpgObjectTag tag;
00153 xmlcpgObject *pos;
00154 xmlcpgObject *last;
00155 } xmlcpgListIterator;
00156
00162 extern int xmlcpghasNext (xmlcpgIterator *iterator);
00163
00170 extern xmlcpgObject* xmlcpgnext (xmlcpgIterator *iterator);
00171
00178 extern int xmlcpghasnextElementType(xmlcpgIterator *iterator, char* name);
00179
00187 extern xmlcpgObject* xmlcpgnextElementType (xmlcpgIterator *iterator, char* name);
00188
00194 extern void xmlcpgremove (xmlcpgIterator *iterator);
00195
00201 extern xmlcpgList* xmlcpgnewList ();
00202
00209 extern void xmlcpgadd (xmlcpgList *list, xmlcpgObject *obj);
00210
00217 extern void xmlcpgaddLast (xmlcpgList *list, xmlcpgObject *obj);
00218
00225 extern xmlcpgObject* xmlcpggetListLast (xmlcpgList *list);
00226
00233 extern xmlcpgIterator* xmlcpgnewIterator (xmlcpgObject *coll);
00234
00235
00236 typedef struct
00237 {
00238 xmlcpgObjectTag tag;
00239 char *str;
00240 } xmlcpgString;
00241
00248 extern xmlcpgString* xmlcpgnewString (char *s);
00249
00256 extern char* xmlcpggetStringStr (xmlcpgString *obj);
00257
00264 extern void xmlcpgsetStringStr (xmlcpgString *obj, char *val);
00265
00272 extern xmlcpgString* xmlcpgconcatString (xmlcpgString *obj, const char *str);
00273
00280 extern xmlcpgString* xmlcpgconcatChar (xmlcpgString *obj, char c);
00281
00289 extern xmlcpgString* xmlcpgtrimString (xmlcpgString *obj);
00290
00294 typedef struct
00295 {
00296 xmlcpgObjectTag tag;
00297 xmlcpgObject *prolog;
00298 xmlcpgObject *element;
00299 xmlcpgList *misc;
00300 } xmlcpgDocument;
00301
00310 extern xmlcpgDocument* xmlcpgnewDocument (xmlcpgObject *pro, xmlcpgObject *ele, xmlcpgList *mis);
00311
00318 extern xmlcpgObject* xmlcpggetDocumentProlog (xmlcpgDocument *doc);
00319
00327 extern void xmlcpgsetDocumentProlog (xmlcpgDocument *doc, xmlcpgObject *obj);
00328
00335 extern xmlcpgObject* xmlcpggetDocumentElement (xmlcpgDocument *doc);
00336
00344 extern void xmlcpgsetDocumentElement (xmlcpgDocument *doc, xmlcpgObject *obj);
00345
00352 extern xmlcpgList* xmlcpggetDocumentMisc (xmlcpgDocument *doc);
00353
00361 extern void xmlcpgsetDocumentMisc (xmlcpgDocument *doc, xmlcpgList *list);
00362
00363
00367 typedef struct
00368 {
00369 xmlcpgObjectTag tag;
00370 xmlcpgString *str;
00371 } xmlcpgCharData;
00372
00379 extern xmlcpgCharData* xmlcpgnewCharData (xmlcpgString *s);
00380
00387 extern xmlcpgString* xmlcpggetCharDataString (xmlcpgCharData *cd);
00388
00396 extern void xmlcpgsetCharDataString (xmlcpgCharData *cd, xmlcpgString *s);
00397
00398
00402 typedef struct
00403 {
00404 xmlcpgObjectTag tag;
00405 xmlcpgString *str;
00406 } xmlcpgComment;
00407
00414 extern xmlcpgComment* xmlcpgnewComment (xmlcpgString *s);
00415
00422 extern xmlcpgString* xmlcpggetCommentString (xmlcpgComment *obj);
00423
00431 extern void xmlcpgsetCommentString (xmlcpgComment *obj, xmlcpgString *s);
00432
00433
00437 typedef struct
00438 {
00439 xmlcpgObjectTag tag;
00440 xmlcpgString *pitarget;
00441 xmlcpgString *piparam;
00442 } xmlcpgPI;
00443
00451 extern xmlcpgPI* xmlcpgnewPI (xmlcpgString *pit, xmlcpgString *pip);
00452
00460 extern xmlcpgString* xmlcpggetPITarget (xmlcpgPI *obj);
00461
00469 extern void xmlcpgsetPITarget (xmlcpgPI *obj, xmlcpgString *s);
00470
00478 extern xmlcpgString* xmlcpggetPIParameters (xmlcpgPI *obj);
00479
00487 extern void xmlcpgsetPIParameters (xmlcpgPI *obj, xmlcpgString *s);
00488
00489
00493 typedef struct
00494 {
00495 xmlcpgObjectTag tag;
00496 xmlcpgString *data;
00497 } xmlcpgCData;
00498
00505 extern xmlcpgCData* xmlcpgnewCData (xmlcpgString *dat);
00506
00513 extern xmlcpgString* xmlcpggetCDataString (xmlcpgCData *obj);
00514
00522 extern void xmlcpgsetCDataString (xmlcpgCData *obj, xmlcpgString *s);
00523
00524
00528 typedef struct
00529 {
00530 xmlcpgObjectTag tag;
00531 xmlcpgObject* xmldecl;
00532 xmlcpgList* misc1;
00533 xmlcpgObject* dtddecl;
00534 xmlcpgList* misc2;
00535 } xmlcpgProlog;
00536
00545 extern xmlcpgProlog* xmlcpgnewProlog (xmlcpgObject *xml, xmlcpgList *m, xmlcpgObject *dtd);
00546
00554 extern xmlcpgObject* xmlcpggetPrologXmlDecl (xmlcpgProlog *obj);
00555
00563 extern void xmlcpgsetPrologXmlDecl (xmlcpgProlog *obj, xmlcpgObject *val);
00564
00571 extern xmlcpgList* xmlcpggetPrologMisc1 (xmlcpgProlog *obj);
00572
00580 extern void xmlcpgsetPrologMisc1 (xmlcpgProlog *obj, xmlcpgList *val);
00581
00589 extern xmlcpgObject* xmlcpggetPrologDtdDecl (xmlcpgProlog *obj);
00590
00598 extern void xmlcpgsetPrologDtdDecl (xmlcpgProlog *obj, xmlcpgObject *val);
00599
00606 extern xmlcpgList* xmlcpggetPrologMisc2 (xmlcpgProlog *obj);
00607
00615 extern void xmlcpgsetPrologMisc2 (xmlcpgProlog *obj, xmlcpgList *val);
00616
00617
00622 typedef struct
00623 {
00624 xmlcpgObjectTag tag;
00625 xmlcpgString *version;
00626 xmlcpgString *encoding;
00627 int sddecl;
00628 } xmlcpgXMLDecl;
00629
00638 extern xmlcpgXMLDecl* xmlcpgnewXMLDecl (xmlcpgString *v, xmlcpgString *e, int s);
00639
00646 extern xmlcpgXMLDecl* xmlcpgbuildXMLDecl ();
00647
00654 extern xmlcpgString* xmlcpggetXMLDeclVersion (xmlcpgXMLDecl *obj);
00655
00663 extern void xmlcpgsetXMLDeclVersion (xmlcpgXMLDecl *obj, xmlcpgString *s);
00664
00671 extern xmlcpgString* xmlcpggetXMLDeclEncoding (xmlcpgXMLDecl *obj);
00672
00680 extern void xmlcpgsetXMLDeclEncoding (xmlcpgXMLDecl *obj, xmlcpgString *s);
00681
00688 extern int xmlcpggetXMLDeclStandalone (xmlcpgXMLDecl *obj);
00689
00696 extern void xmlcpgsetXMLDeclStandalone (xmlcpgXMLDecl *obj, int s);
00697
00701 typedef struct
00702 {
00703 xmlcpgObjectTag tag;
00704 xmlcpgString *name;
00705 xmlcpgObject *externalid;
00706 xmlcpgList *markupdecl;
00707 } xmlcpgDocTypeDecl;
00708
00709
00718 extern xmlcpgDocTypeDecl* xmlcpgnewDocTypeDecl (xmlcpgString *n, xmlcpgObject *e, xmlcpgList *m);
00719
00726 extern xmlcpgString* xmlcpggetDocTypeDeclName (xmlcpgDocTypeDecl *obj);
00727
00735 extern void xmlcpgsetDocTypeDeclName (xmlcpgDocTypeDecl *obj, xmlcpgString *s);
00736
00743 extern xmlcpgObject* xmlcpggetDocTypeDeclExternalID (xmlcpgDocTypeDecl *obj);
00744
00751 extern void xmlcpgsetDocTypeDeclExternalID (xmlcpgDocTypeDecl *obj, xmlcpgObject *e);
00752
00759 extern xmlcpgList* xmlcpggetDocTypeDeclMarkupDecl (xmlcpgDocTypeDecl *obj);
00760
00768 extern void xmlcpgsetDocTypeDeclMarkupDecl (xmlcpgDocTypeDecl *obj, xmlcpgList *val);
00769
00773 typedef struct
00774 {
00775 xmlcpgObjectTag tag;
00776 xmlcpgString *name;
00777 } xmlcpgPEReference;
00778
00785 extern xmlcpgPEReference* xmlcpgnewPEReference (xmlcpgString *p);
00786
00793 extern xmlcpgString* xmlcpggetPEReferenceName (xmlcpgPEReference *obj);
00794
00802 extern void xmlcpgsetPEReferenceName (xmlcpgPEReference *obj, xmlcpgString *s);
00803
00804
00808 typedef struct
00809 {
00810 xmlcpgObjectTag tag;
00811 xmlcpgString *name;
00812 xmlcpgList *attributes;
00813 xmlcpgObject *content;
00814 } xmlcpgElement;
00815
00824 extern xmlcpgElement* xmlcpgnewElement (xmlcpgString *n, xmlcpgList *a, xmlcpgObject *c);
00825
00832 extern xmlcpgElement* xmlcpgnewElementWithName (const char *name);
00833
00840 extern xmlcpgString* xmlcpggetElementName (xmlcpgElement *obj);
00841
00849 extern void xmlcpgsetElementName (xmlcpgElement *obj, xmlcpgString *s);
00850
00857 extern xmlcpgList* xmlcpggetElementAttributes (xmlcpgElement *obj);
00858
00865 extern void xmlcpgsetElementAttributes (xmlcpgElement *obj, xmlcpgList *val);
00866
00873 extern xmlcpgString* xmlcpggetElementAttributeByName (xmlcpgElement *obj, xmlcpgString *s);
00874
00882 extern void xmlcpgaddAttribute (xmlcpgElement* ele, const char *nameAtt, const char *valAtt, int idType);
00883
00890 extern xmlcpgObject* xmlcpggetElementContent (xmlcpgElement *obj);
00891
00901 extern xmlcpgIterator* xmlcpggetSpecificContent(xmlcpgElement* rnaml, char* content);
00902
00909 extern void xmlcpgsetElementContent (xmlcpgElement *obj, xmlcpgObject *val);
00910
00916 extern void xmlcpgaddContentElement (xmlcpgElement* ele, xmlcpgObject* cont);
00917
00925 extern void xmlcpgaddContentPCData (xmlcpgElement* ele, const char *cont);
00926
00927
00931 typedef struct
00932 {
00933 xmlcpgObjectTag tag;
00934 xmlcpgString *name;
00935 xmlcpgString *value;
00936 } xmlcpgAttribute;
00937
00945 extern xmlcpgAttribute* xmlcpgnewAttribute (xmlcpgString *n, xmlcpgString *v);
00946
00953 extern xmlcpgString* xmlcpggetAttributeName (xmlcpgAttribute *obj);
00954
00962 extern void xmlcpgsetAttributeName (xmlcpgAttribute *obj, xmlcpgString *s);
00963
00970 extern xmlcpgString* xmlcpggetAttributeValue (xmlcpgAttribute *obj);
00971
00979 extern void xmlcpgsetAttributeValue (xmlcpgAttribute *obj, xmlcpgString *s);
00980
00981
00985 typedef struct
00986 {
00987 xmlcpgObjectTag tag;
00988 xmlcpgList *list;
00989 } xmlcpgContent;
00990
00997 extern xmlcpgContent* xmlcpgnewContent (xmlcpgList *l);
00998
01005 extern xmlcpgList* xmlcpggetContentList (xmlcpgContent *obj);
01006
01013 extern void xmlcpgsetContentList (xmlcpgContent *obj, xmlcpgList *val);
01014
01015
01019 typedef struct
01020 {
01021 xmlcpgObjectTag tag;
01022 xmlcpgString *name;
01023 xmlcpgObject *contentspec;
01024 int isExtern;
01025 } xmlcpgElementDecl;
01026
01034 extern xmlcpgElementDecl* xmlcpgnewElementDecl (xmlcpgString *n, xmlcpgObject *c,int ext);
01035
01042 extern xmlcpgString* xmlcpggetElementDeclName (xmlcpgElementDecl *obj);
01043
01051 extern void xmlcpgsetElementDeclName (xmlcpgElementDecl *obj, xmlcpgString *s);
01052
01060 extern xmlcpgObject* xmlcpggetElementDeclContentSpec (xmlcpgElementDecl *obj);
01061
01069 extern void xmlcpgsetElementDeclContentSpec (xmlcpgElementDecl *obj, xmlcpgObject *val);
01070
01071 extern int xmlcpggetElementDeclisExtern (xmlcpgElementDecl *obj);
01072
01073 extern void xmlcpgsetElementDeclisExtern (xmlcpgElementDecl *obj,int val);
01074
01078 typedef struct
01079 {
01080 xmlcpgObjectTag tag;
01081 } xmlcpgEmpty;
01082
01088 extern xmlcpgEmpty* xmlcpgnewEmpty ();
01089
01090
01094 typedef struct
01095 {
01096 xmlcpgObjectTag tag;
01097 } xmlcpgAny;
01098
01104 extern xmlcpgAny* xmlcpgnewAny ();
01105
01106
01110 typedef struct
01111 {
01112 xmlcpgObjectTag tag;
01113 xmlcpgObject *child;
01114 } xmlcpgChildrenOpt;
01115
01122 extern xmlcpgChildrenOpt* xmlcpgnewChildrenOpt (xmlcpgObject *c);
01123
01130 extern xmlcpgObject* xmlcpggetChildrenOptChild (xmlcpgChildrenOpt *obj);
01131
01138 extern void xmlcpgsetChildrenOptChild (xmlcpgChildrenOpt *obj, xmlcpgObject *val);
01139
01140
01144 typedef struct
01145 {
01146 xmlcpgObjectTag tag;
01147 xmlcpgObject *child;
01148 } xmlcpgChildrenStar;
01149
01156 extern xmlcpgChildrenStar* xmlcpgnewChildrenStar (xmlcpgObject *c);
01157
01164 extern xmlcpgObject* xmlcpggetChildrenStarChild (xmlcpgChildrenStar *obj);
01165
01172 extern void xmlcpgsetChildrenStarChild (xmlcpgChildrenStar *obj, xmlcpgObject *val);
01173
01174
01178 typedef struct
01179 {
01180 xmlcpgObjectTag tag;
01181 xmlcpgObject *child;
01182 } xmlcpgChildrenPlus;
01183
01190 extern xmlcpgChildrenPlus* xmlcpgnewChildrenPlus (xmlcpgObject *c);
01191
01198 extern xmlcpgObject* xmlcpggetChildrenPlusChild (xmlcpgChildrenPlus *obj);
01199
01206 extern void xmlcpgsetChildrenPlusChild (xmlcpgChildrenPlus *obj, xmlcpgObject *val);
01207
01208
01212 typedef struct
01213 {
01214 xmlcpgObjectTag tag;
01215 xmlcpgList *childlist;
01216 } xmlcpgChildrenAlt;
01217
01224 extern xmlcpgChildrenAlt* xmlcpgnewChildrenAlt (xmlcpgList *c);
01225
01232 extern xmlcpgList* xmlcpggetChildrenAltChildList (xmlcpgChildrenAlt *obj);
01233
01240 extern void xmlcpgsetChildrenAltChildList (xmlcpgChildrenAlt *obj, xmlcpgList *val);
01241
01242
01246 typedef struct
01247 {
01248 xmlcpgObjectTag tag;
01249 xmlcpgList *childlist;
01250 } xmlcpgChildrenSeq;
01251
01258 extern xmlcpgChildrenSeq* xmlcpgnewChildrenSeq (xmlcpgList *c);
01259
01266 extern xmlcpgList* xmlcpggetChildrenSeqChildList (xmlcpgChildrenSeq *obj);
01267
01274 extern void xmlcpgsetChildrenSeqChildList (xmlcpgChildrenSeq *obj, xmlcpgList *val);
01275
01276
01277 typedef struct
01278 {
01279 xmlcpgObjectTag tag;
01280 } xmlcpgPCData;
01281
01287 extern xmlcpgPCData* xmlcpgnewPCData ();
01288
01289
01290 typedef struct
01291 {
01292 xmlcpgObjectTag tag;
01293 xmlcpgString *name;
01294 xmlcpgList *attdefs;
01295 int isExtern;
01296 } xmlcpgAttlistDecl;
01297
01305 extern xmlcpgAttlistDecl* xmlcpgnewAttlistDecl (xmlcpgString *n, xmlcpgList *defs, int ext);
01306
01313 extern xmlcpgString* xmlcpggetAttlistDeclName (xmlcpgAttlistDecl *obj);
01314
01321 extern void xmlcpgsetAttlistDeclName (xmlcpgAttlistDecl *obj, xmlcpgString *val);
01322
01329 extern xmlcpgList* xmlcpggetAttlistDeclAttdefs (xmlcpgAttlistDecl *obj);
01330
01337 extern void xmlcpgsetAttlistDeclAttdefs (xmlcpgAttlistDecl *obj, xmlcpgList *val);
01345 extern int xmlcpggetAttlistDeclIsExtern (xmlcpgAttlistDecl *obj);
01346
01353 extern void xmlcpgsetAttlistDeclIsExtern (xmlcpgAttlistDecl *obj, int ext);
01354
01355
01356 typedef struct
01357 {
01358 xmlcpgObjectTag tag;
01359 xmlcpgString *name;
01360 xmlcpgObject *attType;
01361 xmlcpgObject *defaultDecl;
01362 } xmlcpgAttDef;
01363
01372 extern xmlcpgAttDef* xmlcpgnewAttDef (xmlcpgString *n, xmlcpgObject *type, xmlcpgObject *decl);
01373
01380 extern xmlcpgString* xmlcpggetAttDefName (xmlcpgAttDef *obj);
01381
01388 extern void xmlcpgsetAttDefName (xmlcpgAttDef *obj, xmlcpgString *val);
01389
01396 extern xmlcpgObject* xmlcpggetAttDefAttType (xmlcpgAttDef *obj);
01397
01404 extern void xmlcpgsetAttDefAttType (xmlcpgAttDef *obj, xmlcpgObject *val);
01405
01412 extern xmlcpgObject* xmlcpggetAttDefDefaultDecl (xmlcpgAttDef *obj);
01413
01420 extern void xmlcpgsetAttDefDefaultDecl (xmlcpgAttDef *obj, xmlcpgObject *val);
01421
01422
01423 typedef struct
01424 {
01425 xmlcpgObjectTag tag;
01426 } xmlcpgId;
01427
01433 extern xmlcpgId* xmlcpgnewId ();
01434
01435
01436 typedef struct
01437 {
01438 xmlcpgObjectTag tag;
01439 } xmlcpgIdRef;
01440
01446 extern xmlcpgIdRef* xmlcpgnewIdRef ();
01447
01448
01449 typedef struct
01450 {
01451 xmlcpgObjectTag tag;
01452 } xmlcpgIdRefs;
01453
01459 extern xmlcpgIdRefs* xmlcpgnewIdRefs ();
01460
01461
01462 typedef struct
01463 {
01464 xmlcpgObjectTag tag;
01465 } xmlcpgEntity;
01466
01472 extern xmlcpgEntity* xmlcpgnewEntity ();
01473
01474
01475 typedef struct
01476 {
01477 xmlcpgObjectTag tag;
01478 } xmlcpgEntities;
01479
01485 extern xmlcpgEntities* xmlcpgnewEntities ();
01486
01487
01488 typedef struct
01489 {
01490 xmlcpgObjectTag tag;
01491 } xmlcpgNmToken;
01492
01498 extern xmlcpgNmToken* xmlcpgnewNmToken ();
01499
01500
01501 typedef struct
01502 {
01503 xmlcpgObjectTag tag;
01504 } xmlcpgNmTokens;
01505
01511 extern xmlcpgNmTokens* xmlcpgnewNmTokens ();
01512
01513
01514 typedef struct
01515 {
01516 xmlcpgObjectTag tag;
01517 xmlcpgList *names;
01518 } xmlcpgNotationType;
01519
01526 extern xmlcpgNotationType* xmlcpgnewNotationType (xmlcpgList *n);
01527
01534 extern xmlcpgList* xmlcpggetNotationTypeNames (xmlcpgNotationType *obj);
01535
01542 extern void xmlcpgsetNotationTypeNames (xmlcpgNotationType *obj, xmlcpgList *val);
01543
01544
01545 typedef struct
01546 {
01547 xmlcpgObjectTag tag;
01548 xmlcpgList *nmTokens;
01549 } xmlcpgEnumeration;
01550
01557 extern xmlcpgEnumeration* xmlcpgnewEnumeration (xmlcpgList *n);
01558
01565 extern xmlcpgList* xmlcpggetEnumerationNmTokens (xmlcpgEnumeration *obj);
01566
01573 extern void xmlcpgsetEnumerationNmTokens (xmlcpgEnumeration *obj, xmlcpgList *val);
01574
01575
01576 typedef struct
01577 {
01578 xmlcpgObjectTag tag;
01579 } xmlcpgRequired;
01580
01586 extern xmlcpgRequired* xmlcpgnewRequired ();
01587
01588
01589 typedef struct
01590 {
01591 xmlcpgObjectTag tag;
01592 } xmlcpgImplied;
01593
01599 extern xmlcpgImplied* xmlcpgnewImplied ();
01600
01601
01602 typedef struct
01603 {
01604 xmlcpgObjectTag tag;
01605 xmlcpgString *attribute;
01606 } xmlcpgFixed;
01607
01614 extern xmlcpgFixed* xmlcpgnewFixed (xmlcpgString *att);
01615
01622 extern xmlcpgString* xmlcpggetFixedAttribute (xmlcpgFixed *obj);
01623
01630 extern void xmlcpgsetFixedAttribute (xmlcpgFixed *obj, xmlcpgString *val);
01631
01632
01633 typedef struct
01634 {
01635 xmlcpgObjectTag tag;
01636 xmlcpgString *attribute;
01637 } xmlcpgAttValue;
01638
01645 extern xmlcpgAttValue* xmlcpgnewAttValue (xmlcpgString *att);
01646
01653 extern xmlcpgString* xmlcpggetAttValueAttribute (xmlcpgAttValue *obj);
01654
01661 extern void xmlcpgsetAttValueAttribute (xmlcpgAttValue *obj, xmlcpgString *val);
01662
01663
01664 typedef struct
01665 {
01666 xmlcpgObjectTag tag;
01667 char cr;
01668 } xmlcpgChar;
01669
01676 extern xmlcpgChar* xmlcpgnewChar (char c);
01677
01684 extern char xmlcpggetCharCr (xmlcpgChar *obj);
01685
01692 extern void xmlcpgsetCharCr (xmlcpgChar *obj, char val);
01693
01694
01695 typedef struct
01696 {
01697 xmlcpgObjectTag tag;
01698 xmlcpgString *name;
01699 } xmlcpgEntityRef;
01700
01707 extern xmlcpgEntityRef* xmlcpgnewEntityRef (xmlcpgString *n);
01708
01715 extern xmlcpgString* xmlcpggetEntityRefName (xmlcpgEntityRef *obj);
01716
01723 extern void xmlcpgsetEntityRefName (xmlcpgEntityRef *obj, xmlcpgString *val);
01724
01725
01726 typedef struct
01727 {
01728 xmlcpgObjectTag tag;
01729 xmlcpgString *name;
01730 xmlcpgObject *entityDef;
01731 int isExtern;
01732 } xmlcpgGEDecl;
01733
01741 extern xmlcpgGEDecl* xmlcpgnewGEDecl (xmlcpgString *n, xmlcpgObject *def,int ext);
01742
01749 extern xmlcpgString* xmlcpggetGEDeclName (xmlcpgGEDecl *obj);
01750
01757 extern void xmlcpgsetGEDeclName (xmlcpgGEDecl *obj, xmlcpgString *val);
01758
01765 extern xmlcpgObject* xmlcpggetGEDeclEntityDef (xmlcpgGEDecl *obj);
01766
01773 extern void xmlcpgsetGEDeclEntityDef (xmlcpgGEDecl *obj, xmlcpgObject *val);
01780 extern int xmlcpggetGEDeclEntityIsExtern (xmlcpgGEDecl *obj);
01781
01788 extern void xmlcpgsetGEDeclEntityIsExtern (xmlcpgGEDecl *obj, int isExt);
01789
01790
01791 typedef struct
01792 {
01793 xmlcpgObjectTag tag;
01794 xmlcpgString *name;
01795 xmlcpgObject *peDef;
01796 int isExtern;
01797 } xmlcpgPEDecl;
01798
01806 extern xmlcpgPEDecl* xmlcpgnewPEDecl (xmlcpgString *n, xmlcpgObject *def,int ext);
01807
01814 extern xmlcpgString* xmlcpggetPEDeclName (xmlcpgPEDecl *obj);
01815
01822 extern void xmlcpgsetPEDeclName (xmlcpgPEDecl *obj, xmlcpgString *val);
01823
01830 extern xmlcpgObject* xmlcpggetPEDeclPeDef (xmlcpgPEDecl *obj);
01831
01838 extern void xmlcpgsetPEDeclPeDef (xmlcpgPEDecl *obj, xmlcpgObject *val);
01845 extern int xmlcpggetPEDeclIsExtern (xmlcpgPEDecl *obj);
01846
01853 extern void xmlcpgsetPEDeclIsExtern (xmlcpgPEDecl *obj, int ext);
01854
01855
01856 typedef struct
01857 {
01858 xmlcpgObjectTag tag;
01859 xmlcpgString *value;
01860 } xmlcpgEntityValue;
01861
01868 extern xmlcpgEntityValue* xmlcpgnewEntityValue (xmlcpgString *v);
01869
01876 extern xmlcpgString* xmlcpggetEntityValueValue (xmlcpgEntityValue *obj);
01877
01884 extern void xmlcpgsetEntityValueValue (xmlcpgEntityValue *obj, xmlcpgString *val);
01885
01886
01887 typedef struct
01888 {
01889 xmlcpgObjectTag tag;
01890 xmlcpgObject *id;
01891 xmlcpgObject *ndata;
01892 } xmlcpgExternalID;
01893
01901 extern xmlcpgExternalID* xmlcpgnewExternalID (xmlcpgObject *i, xmlcpgObject *data);
01902
01909 extern xmlcpgObject* xmlcpggetExternalIDId (xmlcpgExternalID *obj);
01910
01917 extern void xmlcpgsetExternalIDId (xmlcpgExternalID *obj, xmlcpgObject *val);
01918
01925 extern xmlcpgObject* xmlcpggetExternalIDNdata (xmlcpgExternalID *obj);
01926
01933 extern void xmlcpgsetExternalIDNdata (xmlcpgExternalID *obj, xmlcpgObject *val);
01934
01935
01936 typedef struct
01937 {
01938 xmlcpgObjectTag tag;
01939 xmlcpgString *name;
01940 } xmlcpgSystemExternalID;
01941
01948 extern xmlcpgSystemExternalID* xmlcpgnewSystemExternalID (xmlcpgString *n);
01949
01956 extern xmlcpgString* xmlcpggetSystemExternalIDName (xmlcpgSystemExternalID *obj);
01957
01964 extern void xmlcpgsetSystemExternalIDName (xmlcpgSystemExternalID *obj, xmlcpgString *val);
01965
01966
01967 typedef struct
01968 {
01969 xmlcpgObjectTag tag;
01970 xmlcpgString *Public;
01971 xmlcpgString *system;
01972 } xmlcpgPublicExternalID;
01973
01981 extern xmlcpgPublicExternalID* xmlcpgnewPublicExternalID (xmlcpgString *p, xmlcpgString *s);
01982
01989 extern xmlcpgString* xmlcpggetPublicExternalIDPublic (xmlcpgPublicExternalID *obj);
01990
01997 extern void xmlcpgsetPublicExternalIDPublic (xmlcpgPublicExternalID *obj, xmlcpgString *val);
01998
02005 extern xmlcpgString* xmlcpggetPublicExternalIDSystem (xmlcpgPublicExternalID *obj);
02006
02013 extern void xmlcpgsetPublicExternalIDSystem (xmlcpgPublicExternalID *obj, xmlcpgString *val);
02014
02015
02016 typedef struct
02017 {
02018 xmlcpgObjectTag tag;
02019 xmlcpgString *name;
02020 } xmlcpgNDataDecl;
02021
02028 extern xmlcpgNDataDecl* xmlcpgnewNDataDecl (xmlcpgString *n);
02029
02036 extern xmlcpgString* xmlcpggetNDataDeclName (xmlcpgNDataDecl *obj);
02037
02044 extern void xmlcpgsetNDataDeclName (xmlcpgNDataDecl *obj, xmlcpgString *val);
02045
02046
02047 typedef struct
02048 {
02049 xmlcpgObjectTag tag;
02050 xmlcpgString *name;
02051 xmlcpgObject *id;
02052 int isExtern;
02053 } xmlcpgNotationDecl;
02054
02062 extern xmlcpgNotationDecl* xmlcpgnewNotationDecl (xmlcpgString *n, xmlcpgObject *i, int isExt);
02063
02070 extern xmlcpgString* xmlcpggetNotationDeclName (xmlcpgNotationDecl *obj);
02071
02078 extern void xmlcpgsetNotationDeclName (xmlcpgNotationDecl *obj, xmlcpgString *val);
02079
02086 extern xmlcpgObject* xmlcpggetNotationDeclId (xmlcpgNotationDecl *obj);
02087
02094 extern void xmlcpgsetNotationDeclId (xmlcpgNotationDecl *obj, xmlcpgObject *val);
02101 extern int xmlcpggetNotationDeclIsExtern (xmlcpgNotationDecl *obj);
02102
02109 extern void xmlcpgsetNotationDeclIsExtern (xmlcpgNotationDecl *obj, int ext);
02110
02111
02112 typedef struct
02113 {
02114 xmlcpgObjectTag tag;
02115 xmlcpgString *name;
02116 } xmlcpgPublicID;
02117
02124 extern xmlcpgPublicID* xmlcpgnewPublicID (xmlcpgString *n);
02125
02132 extern xmlcpgString* xmlcpggetPublicIDName (xmlcpgPublicID *obj);
02133
02140 extern void xmlcpgsetPublicIDName (xmlcpgPublicID *obj, xmlcpgString *val);
02141
02146 typedef struct
02147 {
02148 xmlcpgObjectTag tag;
02149 xmlcpgList *assoc;
02150 } xmlcpgMap;
02151
02157 extern xmlcpgMap* xmlcpgnewMap ();
02158
02170 extern xmlcpgObject* xmlcpgget (xmlcpgMap *map, const xmlcpgObject *key);
02171
02183 extern xmlcpgObject* xmlcpgput (xmlcpgMap *map, xmlcpgObject *key, xmlcpgObject *value);
02184
02185
02189 typedef struct
02190 {
02191 xmlcpgObjectTag tag;
02192 xmlcpgObject *pos;
02193 xmlcpgObject *last;
02194 } xmlcpgMapIterator;
02195
02196
02197 typedef struct xmlcpgMAPENTRY xmlcpgMapEntry;
02198
02204 extern xmlcpgObject* xmlcpggetKey (const xmlcpgMapEntry *me);
02205
02211 extern xmlcpgObject* xmlcpggetValue (const xmlcpgMapEntry *me);
02212
02218 extern xmlcpgObject* xmlcpgsetValue (xmlcpgMapEntry *me, xmlcpgObject *obj);
02219
02225 extern xmlcpgObject* xmlcpgclone (const xmlcpgObject *obj);
02226
02233 extern int xmlcpgcontains (xmlcpgObject *container, xmlcpgObject *obj);
02234
02241 extern int xmlcpgcontainsKey (xmlcpgObject *container, xmlcpgObject *key);
02242
02247 extern void xmlcpgdelete (xmlcpgObject *obj);
02248
02255 extern void xmlcpgdeletelight (xmlcpgObject *obj, int light);
02256
02261 extern void xmlcpgclear (xmlcpgObject *obj);
02262
02270 extern void xmlcpgclearlight (xmlcpgObject *obj, int light);
02271
02278 extern int xmlcpgequals (const xmlcpgObject *obj1, const xmlcpgObject *obj2);
02279
02287 extern int xmlcpgisEmpty (xmlcpgObject *obj);
02288
02294 extern unsigned int xmlcpgsize (const xmlcpgObject *obj);
02295
02302 extern void xmlcpgprint (FILE *f, const xmlcpgObject *obj);
02303
02309 extern void xmlcpgprintObject (xmlcpgPrintStream *ps, const xmlcpgObject *obj);
02310
02317 extern void xmlcpgprettyPrint (FILE *f, const xmlcpgObject *obj);
02318
02324 extern void xmlcpgprettyPrintObject (xmlcpgPrintStream *ps, const xmlcpgObject *obj);
02325
02336 extern xmlcpgObject* xmlcpgRemove (xmlcpgObject *container, xmlcpgObject *obj);
02337
02342 extern void xmlcpgfatalError (const char *message);
02343
02350 extern void xmlcpginternalError (const char *message, const char *file, int line);
02351
02367 extern char* xmlcpgEOLNormalisation (const char *str);
02368
02374 extern char* xmlcpgattributeQuoteReplacement (const char *str);
02375
02379 extern xmlcpgObject *xmlcpgast;
02380
02381
02382
02383 extern FILE *xmlcpgin;
02384
02385
02386
02390 extern int xmlcpgparse ();
02391 extern void xmlcpgflushBuffer ();
02392
02396 extern int isExtern;
02397 extern int xmlcpgLineNo;
02398 extern void xmlcpgswitchToBuffer ();
02399 extern void xmlcpgsaveBuffer ();
02400
02404 typedef xmlcpgMap ReferenceTable;
02405
02411 extern ReferenceTable* xmlcpgnewReferenceTable ();
02412
02420 extern const char* xmlcpggetReferenceTable (ReferenceTable *table, const char *key);
02421
02429 extern void xmlcpgputReferenceTable (ReferenceTable *table, const char *key, xmlcpgObject *value);
02430
02436 extern void xmlcpgremoveReferenceTable (ReferenceTable *table, const char *key);
02437
02443 extern void xmlcpgclearReferenceTable (ReferenceTable *table);
02444
02449 extern void xmlcpginit ();
02450
02455 extern void xmlcpgdestroy ();
02456
02457 #endif