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 BTXML_H_
00029 #define BTXML_H_
00030
00031
00032 namespace BAL {
00033
00034 class BTXMLNode;
00035 class BTXMLDoc;
00036 class BTXMLNs;
00037 class BTXMLDict;
00038
00039 #define BTXML_ELEMENT_NODE 1
00040 #define BTXML_TEXT_NODE 3
00041 #define BTXML_HTML_DOCUMENT_NODE 13
00042 #define BTXML_CHAR_ENCODING_UTF16LE 2
00043 #define BTXML_CHAR_ENCODING_UTF16BE 3
00044 #define BTXML_ENTITY_DECL 17
00045 #define BTXML_INTERNAL_PREDEFINED_ENTITY 6
00046 #define BTXML_SAX2_MAGIC 0xDEEDBEAF
00047
00048 typedef enum {
00049 BTXML_PARSE_RECOVER = 1<<0,
00050 BTXML_PARSE_NOENT = 1<<1,
00051 BTXML_PARSE_DTDLOAD = 1<<2,
00052 BTXML_PARSE_DTDATTR = 1<<3,
00053 BTXML_PARSE_DTDVALID = 1<<4,
00054 BTXML_PARSE_NOERROR = 1<<5,
00055 BTXML_PARSE_NOWARNING = 1<<6,
00056 BTXML_PARSE_PEDANTIC = 1<<7,
00057 BTXML_PARSE_NOBLANKS = 1<<8,
00058 BTXML_PARSE_SAX1 = 1<<9,
00059 BTXML_PARSE_XINCLUDE = 1<<10,
00060 BTXML_PARSE_NONET = 1<<11,
00061 BTXML_PARSE_NODICT = 1<<12,
00062 BTXML_PARSE_NSCLEAN = 1<<13,
00063 BTXML_PARSE_NOCDATA = 1<<14,
00064 BTXML_PARSE_NOXINCNODE= 1<<15,
00065 BTXML_PARSE_COMPACT = 1<<16
00066 } BTXMLParserOption;
00067
00068 class BTXMLDoc
00069 {
00070 public:
00071 BTXMLDoc();
00072 BTXMLDoc( int t, BTXMLNode *c, const unsigned char *e );
00073 ~BTXMLDoc();
00074
00075 int type;
00076 BTXMLNode *children;
00077 const unsigned char *encoding;
00078 };
00079
00080 class BTXMLNs
00081 {
00082 public:
00083 BTXMLNs();
00084 BTXMLNs(const unsigned char *ref);
00085 ~BTXMLNs();
00086
00087 const unsigned char *href;
00088 };
00089
00090
00091 class BTXMLAttr
00092 {
00093 public:
00094 BTXMLAttr();
00095 BTXMLAttr( BTXMLNode *p );
00096 ~BTXMLAttr();
00097
00098 BTXMLNode *parent;
00099 };
00100
00101
00102 class BTXMLNode
00103 {
00104 public:
00105 BTXMLNode();
00106 BTXMLNode(int t, const unsigned char *na, BTXMLNode *c, BTXMLNode *n, BTXMLNs *_ns, unsigned char *co );
00107 ~BTXMLNode();
00108
00109 int type;
00110 const unsigned char *name;
00111 BTXMLNode *children;
00112 BTXMLNode *next;
00113
00114
00115 BTXMLNs *ns;
00116 unsigned char *content;
00117 };
00118
00119 class BTXMLHashTable
00120 {
00121 public:
00122 BTXMLHashTable(){};
00123 ~BTXMLHashTable(){};
00124
00125 };
00126
00127 class BTXMLDict
00128 {
00129 public:
00130 BTXMLDict(){};
00131 ~BTXMLDict(){};
00132
00133 };
00134
00151 typedef int (* BTXMLCharEncodingInputFunc)(unsigned char *out, int *outlen,
00152 const unsigned char *in, int *inlen);
00153
00172 typedef int (* BTXMLCharEncodingOutputFunc)(unsigned char *out, int *outlen,
00173 const unsigned char *in, int *inlen);
00174
00175 class BTXMLCharEncodingHandler
00176 {
00177 public:
00178 BTXMLCharEncodingHandler();
00179 ~BTXMLCharEncodingHandler();
00180
00181 };
00182
00183
00194 typedef int (* BTXMLOutputWriteCallback) (void * context, const char * buffer, int len);
00195
00196
00197 class BTXMLBuffer
00198 {
00199 public:
00200 BTXMLBuffer();
00201 BTXMLBuffer( unsigned char *c );
00202 ~BTXMLBuffer();
00203
00204 unsigned char *content;
00205 };
00206
00207 class BTXMLOutputBuffer
00208 {
00209 public:
00210 BTXMLOutputBuffer();
00211 BTXMLOutputBuffer( void *c, BTXMLOutputWriteCallback wc );
00212 ~BTXMLOutputBuffer();
00213
00214 void* context;
00215 BTXMLOutputWriteCallback writecallback;
00216 };
00217
00218
00219 class BTXMLParserInput
00220 {
00221 public:
00222 BTXMLParserInput();
00223 BTXMLParserInput( int l, int c);
00224 ~BTXMLParserInput();
00225
00226 int line;
00227 int col;
00228 };
00229
00230
00240 typedef void (*BTXMLGenericErrorFunc) (void *ctx, const char *msg, ...);
00241
00242 class BTXMLParserCtxt
00243 {
00244 public :
00245
00246 BTXMLParserCtxt();
00247 BTXMLParserCtxt(void *_p, int r, BTXMLNode *n, BTXMLDoc *d, BTXMLParserInput *pi );
00248 ~BTXMLParserCtxt();
00249
00250 void *_private;
00251 int replaceEntities;
00252 BTXMLNode *node;
00253 BTXMLDoc *myDoc;
00254 BTXMLParserInput *input;
00255 };
00256
00265 typedef void (*BTErrorSAXFunc) (void *ctx, const char *msg, ...);
00266
00277 typedef void (*BTFatalErrorSAXFunc) (void *ctx, const char *msg, ...);
00278
00287 typedef void (*BTCharactersSAXFunc) (void *ctx, const unsigned char *ch, int len);
00288
00297 typedef void (*BTProcessingInstructionSAXFunc) (void *ctx, const unsigned char *target, const unsigned char *data);
00298
00299
00308 typedef void (*BTCdataBlockSAXFunc) ( void *ctx, const unsigned char *value, int len);
00309
00317 typedef void (*BTCommentSAXFunc) (void *ctx, const unsigned char *value);
00318
00327 typedef void (*BTWarningSAXFunc) (void *ctx, const char *msg, ...);
00328
00348 typedef void (*BTStartElementNsSAX2Func) (void *ctx,
00349 const unsigned char *localname,
00350 const unsigned char *prefix,
00351 const unsigned char *URI,
00352 int nb_namespaces,
00353 const unsigned char **namespaces,
00354 int nb_attributes,
00355 int nb_defaulted,
00356 const unsigned char **attributes);
00357
00369 typedef void (*BTEndElementNsSAX2Func) (void *ctx,
00370 const unsigned char *localname,
00371 const unsigned char *prefix,
00372 const unsigned char *URI);
00373
00380 typedef void (*BTStartDocumentSAXFunc) (void *ctx);
00381
00382 class BTXMLEntity;
00392 typedef BTXMLEntity* (*BTGetEntitySAXFunc) (void *ctx, const unsigned char *name);
00393
00403 typedef void (*BTInternalSubsetSAXFunc) (void *ctx,
00404 const unsigned char *name,
00405 const unsigned char *ExternalID,
00406 const unsigned char *SystemID);
00407
00417 typedef void (*BTExternalSubsetSAXFunc) (void *ctx,
00418 const unsigned char *name,
00419 const unsigned char *ExternalID,
00420 const unsigned char *SystemID);
00421
00431 typedef void (*BTIgnorableWhitespaceSAXFunc) (void *ctx,
00432 const unsigned char *ch,
00433 int len);
00434
00446 typedef void (*BTEntityDeclSAXFunc) (void *ctx,
00447 const unsigned char *name,
00448 int type,
00449 const unsigned char *publicId,
00450 const unsigned char *systemId,
00451 unsigned char *content);
00452
00453
00454 class BTXMLSAXHandler
00455 {
00456 public:
00457 BTXMLSAXHandler();
00458 ~BTXMLSAXHandler();
00459
00460 BTErrorSAXFunc error;
00461 BTFatalErrorSAXFunc fatalError;
00462 BTCharactersSAXFunc characters;
00463 BTProcessingInstructionSAXFunc processingInstruction;
00464 BTCdataBlockSAXFunc cdataBlock;
00465 BTCommentSAXFunc comment;
00466 BTWarningSAXFunc warning;
00467 BTStartElementNsSAX2Func startElementNs;
00468 BTEndElementNsSAX2Func endElementNs;
00469 BTGetEntitySAXFunc getEntity;
00470 BTStartDocumentSAXFunc startDocument;
00471 BTInternalSubsetSAXFunc internalSubset;
00472 BTExternalSubsetSAXFunc externalSubset;
00473 BTIgnorableWhitespaceSAXFunc ignorableWhitespace;
00474 BTEntityDeclSAXFunc entityDecl;
00475 unsigned int initialized;
00476 };
00477
00488 typedef int (*BTXMLInputMatchCallback) (char const *filename);
00489
00499 typedef void * (*BTXMLInputOpenCallback) (char const *filename);
00500
00511 typedef int (*BTXMLInputReadCallback) (void * context, char * buffer, int len);
00512
00521 typedef int (*BTXMLInputCloseCallback) (void * context);
00522
00523
00534 typedef int (*BTXMLOutputMatchCallback) (char const *filename);
00543 typedef void * (*BTXMLOutputOpenCallback) (char const *filename);
00554 typedef int (*BTXMLOutputWriteCallback) (void * context, const char * buffer, int len);
00563 typedef int (*BTXMLOutputCloseCallback) (void * context);
00564
00565
00566 class BTXMLEntity
00567 {
00568 public:
00569 BTXMLEntity();
00570 BTXMLEntity( int t, const unsigned char *n, unsigned char *o, unsigned char *ct, int l, int et );
00571 ~BTXMLEntity();
00572
00573 int type;
00574 const unsigned char *name;
00575 unsigned char *orig;
00576 unsigned char *content;
00577 int length;
00578 int etype;
00579 };
00580
00581 }
00582
00583 #endif // BTXML_H_
00584