00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef __GZ_XML_H__
00023 #define __GZ_XML_H__
00024
00025 #include "gzLex.h"
00026 #include "gzObject.h"
00027
00028
00029
00030 #define XML_READ_RULE(n) GZ_BASE_EXPORT gzParseResult XML_read_##n()
00031 #define XML_READ_RULE_10 XML_READ_RULE(01);XML_READ_RULE(02);XML_READ_RULE(03);XML_READ_RULE(04);XML_READ_RULE(05);XML_READ_RULE(06);XML_READ_RULE(07);XML_READ_RULE(08);XML_READ_RULE(09);XML_READ_RULE(10);
00032 #define XML_READ_RULE_20 XML_READ_RULE(11);XML_READ_RULE(12);XML_READ_RULE(13);XML_READ_RULE(14);XML_READ_RULE(15);XML_READ_RULE(16);XML_READ_RULE(17);XML_READ_RULE(18);XML_READ_RULE(19);XML_READ_RULE(20);
00033 #define XML_READ_RULE_30 XML_READ_RULE(21);XML_READ_RULE(22);XML_READ_RULE(23);XML_READ_RULE(24);XML_READ_RULE(25);XML_READ_RULE(26);XML_READ_RULE(27);XML_READ_RULE(28);XML_READ_RULE(29);XML_READ_RULE(30);
00034 #define XML_READ_RULE_40 XML_READ_RULE(31);XML_READ_RULE(32);XML_READ_RULE(33);XML_READ_RULE(34);XML_READ_RULE(35);XML_READ_RULE(36);XML_READ_RULE(37);XML_READ_RULE(38);XML_READ_RULE(39);XML_READ_RULE(40);
00035 #define XML_READ_RULE_50 XML_READ_RULE(41);XML_READ_RULE(42);XML_READ_RULE(43);XML_READ_RULE(45);XML_READ_RULE(46);XML_READ_RULE(47);XML_READ_RULE(48);XML_READ_RULE(49);XML_READ_RULE(50);
00036 #define XML_READ_RULE_60 XML_READ_RULE(51);XML_READ_RULE(52);XML_READ_RULE(53);XML_READ_RULE(54);XML_READ_RULE(55);XML_READ_RULE(56);XML_READ_RULE(57);XML_READ_RULE(58);XML_READ_RULE(59);XML_READ_RULE(60);
00037 #define XML_READ_RULE_70 XML_READ_RULE(61);XML_READ_RULE(62);XML_READ_RULE(63);XML_READ_RULE(64);XML_READ_RULE(65);XML_READ_RULE(66);XML_READ_RULE(67);XML_READ_RULE(68);XML_READ_RULE(69);XML_READ_RULE(70);
00038 #define XML_READ_RULE_80 XML_READ_RULE(71);XML_READ_RULE(72);XML_READ_RULE(73);XML_READ_RULE(74);XML_READ_RULE(75);XML_READ_RULE(76);XML_READ_RULE(77);XML_READ_RULE(78);XML_READ_RULE(79);XML_READ_RULE(80);
00039 #define XML_READ_RULE_90 XML_READ_RULE(81);XML_READ_RULE(82);XML_READ_RULE(83);XML_READ_RULE(84);XML_READ_RULE(85);XML_READ_RULE(86);XML_READ_RULE(87);XML_READ_RULE(88);XML_READ_RULE(89);XML_READ_RULE(90);
00040 #define XML_READ_RULE_100 XML_READ_RULE(91);XML_READ_RULE(92);XML_READ_RULE(93);
00041 #define XML_READ_RULES XML_READ_RULE_10 XML_READ_RULE_20 XML_READ_RULE_30 XML_READ_RULE_40 XML_READ_RULE_50 XML_READ_RULE_60 XML_READ_RULE_70 XML_READ_RULE_80 XML_READ_RULE_90 XML_READ_RULE_100
00042
00043
00044 enum gzXmlItemType
00045 {
00046 XML_ITEM_ELEMENT = 1<<0,
00047 XML_ITEM_ELEMENT_CONTENTS = 1<<1,
00048 XML_ITEM_ATTRIBUTE = 1<<2,
00049 XML_ITEM_ELEMENT_ATTRIBUTE_END = 1<<3,
00050 XML_ITEM_HEADER = 1<<4,
00051 XML_ITEM_CHAR_DATA = 1<<5,
00052 XML_ITEM_CDATA = 1<<6,
00053 XML_ITEM_COMMENT = 1<<7,
00054 XML_ITEM_PI = 1<<8,
00055 XML_ITEM_DEFAULT = XML_ITEM_ELEMENT|XML_ITEM_ATTRIBUTE|XML_ITEM_HEADER|XML_ITEM_CHAR_DATA|XML_ITEM_CDATA|XML_ITEM_COMMENT|XML_ITEM_PI
00056 };
00057
00058 enum gzXmlWriteState
00059 {
00060 XML_WRITE_STATE_IDLE,
00061 XML_WRITE_STATE_DTD,
00062 XML_WRITE_STATE_ELEMENT,
00063 XML_WRITE_STATE_ELEMENT_CONTENTS,
00064 XML_WRITE_STATE_ELEMENT_START,
00065 XML_WRITE_STATE_ELEMENT_END,
00066 XML_WRITE_STATE_ATTRIBUTE,
00067 };
00068
00069 GZ_USE_BIT_LOGIC(gzXmlItemType);
00070
00071 class gzXmlDynamicTypeInterface;
00072 class gzXmlObjectInterface;
00073 class gzXmlCustomDataInterface;
00074
00075
00076 const gzString XML_PI_INCLUDE = "include";
00077
00078
00079
00080
00081
00082
00083
00084
00085
00086
00087
00088
00089
00090
00091
00092 class gzXmlSax : public gzBasicParser , public gzSerializeData
00093 {
00094 public:
00095
00096 GZ_BASE_EXPORT gzXmlSax();
00097 GZ_BASE_EXPORT virtual ~gzXmlSax();
00098
00099 GZ_BASE_EXPORT virtual gzVoid write(gzSerializeAdapter *adapter);
00100 GZ_BASE_EXPORT virtual gzVoid read(gzSerializeAdapter *adapter);
00101 GZ_BASE_EXPORT virtual gzVoid pushBack(gzSerializeAdapter *adapter);
00102 GZ_BASE_EXPORT virtual gzULong getDataSize(gzSerializeAdapter *adapter=NULL) const;
00103
00104
00105 GZ_BASE_EXPORT static gzVoid registerDynamicTypeInterface(const gzString &typeName , gzXmlDynamicTypeInterface *iface);
00106 GZ_BASE_EXPORT static gzVoid unregisterDynamicTypeInterface(gzXmlDynamicTypeInterface *iface);
00107 GZ_BASE_EXPORT static gzXmlDynamicTypeInterface *getDynamicTypeInterface(const gzString &type);
00108
00109
00110 GZ_BASE_EXPORT static gzVoid registerObjectInterface(const gzString &typeName , gzXmlObjectInterface *iface);
00111 GZ_BASE_EXPORT static gzVoid unregisterObjectInterface(gzXmlObjectInterface *iface);
00112 GZ_BASE_EXPORT static gzXmlObjectInterface *getObjectInterface(const gzString &typeName);
00113
00114
00115 GZ_BASE_EXPORT static gzVoid registerCustomDataInterface(const gzString &typeName , gzXmlCustomDataInterface *iface);
00116 GZ_BASE_EXPORT static gzVoid unregisterCustomDataInterface(gzXmlCustomDataInterface *iface);
00117 GZ_BASE_EXPORT static gzXmlCustomDataInterface *getCustomDataInterface(const gzString &typeName);
00118
00119
00120
00121 GZ_BASE_EXPORT gzVoid enableNotifyItemType(gzXmlItemType types=XML_ITEM_DEFAULT);
00122 GZ_BASE_EXPORT gzVoid disableNotifyItemType(gzXmlItemType types);
00123
00124 GZ_BASE_EXPORT gzBool isNotifyingItemType(gzXmlItemType type);
00125
00126
00127 GZ_BASE_EXPORT const gzString & getVersion();
00128 GZ_BASE_EXPORT const gzString & getEncoding();
00129 GZ_BASE_EXPORT gzBool isStandalone();
00130 GZ_BASE_EXPORT gzBool isPlainOutput();
00131
00132
00133 GZ_BASE_EXPORT gzVoid setVersion(const gzString &version);
00134 GZ_BASE_EXPORT gzVoid setEncoding(const gzString &encoding);
00135 GZ_BASE_EXPORT gzVoid setStandalone(gzBool standalone);
00136 GZ_BASE_EXPORT gzVoid setPlainOutput(gzBool plain);
00137
00138
00139
00140
00141
00142 GZ_BASE_EXPORT virtual gzBool onVersion(const gzString &version){return TRUE;}
00143 GZ_BASE_EXPORT virtual gzBool onEncoding(const gzString &encoding){return TRUE;}
00144 GZ_BASE_EXPORT virtual gzBool onStandalone(gzBool standalone){return TRUE;}
00145
00146
00147 GZ_BASE_EXPORT virtual gzBool onElementStart(const gzString &elementName,gzULong level){return TRUE;}
00148 GZ_BASE_EXPORT virtual gzBool onElementAttributeEnd(const gzString &elementName,gzULong level){return TRUE;}
00149 GZ_BASE_EXPORT virtual gzBool onElementContents(const gzString &contents,gzULong level){return TRUE;}
00150 GZ_BASE_EXPORT virtual gzBool onElementEnd(const gzString &elementName,gzULong level){return TRUE;}
00151 GZ_BASE_EXPORT virtual gzBool onAttribute(const gzString &attributeName,const gzString &attributeValue,gzULong level){return TRUE;}
00152 GZ_BASE_EXPORT virtual gzBool onCharData(const gzString &charData,gzULong level){return TRUE;}
00153 GZ_BASE_EXPORT virtual gzBool onProcessingInstruction(const gzString &target,const gzString &data,gzULong level){return TRUE;}
00154 GZ_BASE_EXPORT virtual gzBool onCDATA(const gzString &CDATA,gzULong level){return TRUE;}
00155 GZ_BASE_EXPORT virtual gzBool onComment(const gzString &comment,gzULong level){return TRUE;}
00156 GZ_BASE_EXPORT virtual gzBool onDynamicType(const gzDynamicType &data,const gzString &name,gzULong level){return TRUE;}
00157 GZ_BASE_EXPORT virtual gzBool onObject(gzObject *object,const gzString &name,gzULong level){return TRUE;}
00158 GZ_BASE_EXPORT virtual gzBool onCustomData(gzReference *data,const gzString &elementName,gzULong level){return TRUE;}
00159
00160
00161
00162 GZ_BASE_EXPORT virtual gzVoid onWrite(){};
00163
00164
00165
00166 GZ_BASE_EXPORT gzVoid writeXmlHeader();
00167 GZ_BASE_EXPORT gzVoid writeElementStart(const gzString &elementName);
00168 GZ_BASE_EXPORT gzVoid writeAttribute(const gzString &attributeName,const gzString &attributeValue);
00169 GZ_BASE_EXPORT gzVoid writeElementEnd();
00170 GZ_BASE_EXPORT gzVoid writeCharData(const gzString &charData);
00171 GZ_BASE_EXPORT gzVoid writePI(const gzString &target,const gzString &data);
00172 GZ_BASE_EXPORT gzVoid writeCDATA(const gzString &CDATA);
00173 GZ_BASE_EXPORT gzVoid writeDynamicType(const gzDynamicType &data,const gzString &attribName=GZ_EMPTY_STRING);
00174 GZ_BASE_EXPORT gzVoid writeObject(const gzObject *object,const gzString &objectName=GZ_EMPTY_STRING);
00175 GZ_BASE_EXPORT gzVoid writeComment(const gzString &comment);
00176 GZ_BASE_EXPORT gzVoid writeCustomData(const gzString &elementName,const gzReference *data);
00177 GZ_BASE_EXPORT gzVoid writeCharDataElement(const gzString &elementName,const gzString &elementData);
00178
00179
00180
00181 GZ_BASE_EXPORT gzString getCurrentAttribute(const gzString &attributeName);
00182
00183 XML_READ_RULES;
00184
00185 GZ_BASE_EXPORT gzVoid beginElementContents();
00186
00187 GZ_BASE_EXPORT gzBool useBase64();
00188 GZ_BASE_EXPORT gzVoid useBase64(gzBool on);
00189
00190 GZ_BASE_EXPORT gzString getCurrentElementName();
00191 GZ_BASE_EXPORT gzRefDict<gzString,gzRefData<gzString> > getCurrentAttributeSet();
00192
00193 private:
00194
00195 gzString getItemStartString(gzULong level);
00196
00197
00198 gzDynamicArray<gzString> m_currentElement;
00199 gzString m_currentVersion;
00200 gzString m_currentEncoding;
00201
00202 gzXmlItemType m_notifyTypes;
00203
00204 gzULong m_elementLevel;
00205
00206 gzBool m_isStandalone:1;
00207 gzBool m_writeUnicode:1;
00208 gzBool m_gotBase64Attribute:1;
00209 gzBool m_gotHexAttribute:1;
00210 gzBool m_useBase64:1;
00211 gzBool m_plainOutput:1;
00212
00213 gzXmlWriteState m_state;
00214
00215 gzDynamicArray<gzRefDict<gzString,gzRefData<gzString> > > m_currentAttributes;
00216
00217 };
00218
00219 const gzDebugFlags GZ_DEBUG_XML_HIERARCHY =(gzDebugFlags)(1<<0);
00220 const gzDebugFlags GZ_DEBUG_XML_ATTRIBUTES =(gzDebugFlags)(1<<1);
00221 const gzDebugFlags GZ_DEBUG_XML_CHAR_DATA =(gzDebugFlags)(1<<2);
00222 const gzDebugFlags GZ_DEBUG_XML_CDATA =(gzDebugFlags)(1<<3);
00223 const gzDebugFlags GZ_DEBUG_XML_PI_DATA =(gzDebugFlags)(1<<4);
00224
00225
00226
00227
00228
00229
00230
00231
00232
00233
00234
00235
00236
00237
00238
00239
00240 class gzXmlItem : public gzReference , public gzNameInterface , public gzDebugInterface
00241 {
00242 public:
00243 GZ_BASE_EXPORT gzXmlItem(const gzString &name);
00244 GZ_BASE_EXPORT gzXmlItem(const gzXmlItem ©);
00245 GZ_BASE_EXPORT virtual ~gzXmlItem();
00246
00247 GZ_DECLARE_TYPE_INTERFACE_EXPORT(GZ_BASE_EXPORT);
00248
00249 GZ_BASE_EXPORT gzVoid addChild(gzXmlItem *child);
00250 GZ_BASE_EXPORT gzVoid removeChild(gzXmlItem *child);
00251 GZ_BASE_EXPORT gzVoid removeChildren();
00252
00253 GZ_BASE_EXPORT gzXmlItem * getParent();
00254 GZ_BASE_EXPORT gzXmlItem * getNextChild();
00255 GZ_BASE_EXPORT gzVoid resetChildIterator();
00256
00257 GZ_BASE_EXPORT virtual gzVoid write(gzXmlSax *writer);
00258
00260 GZ_BASE_EXPORT virtual gzXmlItem *findItem(const gzString &path);
00261
00262
00263 GZ_BASE_EXPORT virtual gzVoid addItem(const gzString &path,gzXmlItem *item);
00264
00265 GZ_BASE_EXPORT virtual gzULong indexEvalExpression(const gzString &item,const gzString &expression);
00266
00267
00268 GZ_BASE_EXPORT virtual gzVoid debugOutput(gzString base , gzString anchor , gzDebugFlags features);
00269 GZ_BASE_EXPORT virtual gzVoid debugOutputTraverse(gzString base , gzString anchor , gzDebugFlags features);
00270
00271
00272
00273 private:
00274
00275 gzXmlItem * m_parent;
00276 gzRefList<gzXmlItem> m_childList;
00277 gzListIterator<gzXmlItem> m_iterator;
00278 };
00279
00280
00281
00282
00283
00284
00285
00286
00287
00288
00289
00290
00291
00292
00293
00294 class gzXmlElement : public gzXmlItem
00295 {
00296 public:
00297 GZ_BASE_EXPORT gzXmlElement(const gzString &name);
00298 GZ_BASE_EXPORT virtual ~gzXmlElement();
00299
00300 GZ_DECLARE_TYPE_INTERFACE_EXPORT(GZ_BASE_EXPORT);
00301
00302 GZ_BASE_EXPORT gzVoid setAttribute(const gzString &name,const gzString &value);
00303 GZ_BASE_EXPORT gzString getAttribute(const gzString &name,const gzString &defaultValue=GZ_EMPTY_STRING);
00304 GZ_BASE_EXPORT gzBool hasAttribute(const gzString &name);
00305
00306 GZ_BASE_EXPORT gzBool getNextAttribute(gzString &data);
00307 GZ_BASE_EXPORT gzVoid resetAttributeIterator();
00308
00309 GZ_BASE_EXPORT virtual gzVoid write(gzXmlSax *writer);
00310
00311
00312 GZ_BASE_EXPORT virtual gzVoid debugOutput(gzString base , gzString anchor , gzDebugFlags features);
00313
00314 private:
00315
00316 gzRefDict<gzString,gzRefData<gzString> > m_attributes;
00317 gzDictIterator<gzString,gzRefData<gzString> > m_iterator;
00318
00319 };
00320
00321
00322
00323
00324
00325
00326
00327
00328
00329
00330
00331
00332
00333
00334
00335 class gzXmlCharData : public gzXmlItem
00336 {
00337 public:
00338 GZ_BASE_EXPORT gzXmlCharData();
00339 GZ_BASE_EXPORT virtual ~gzXmlCharData();
00340
00341 GZ_DECLARE_TYPE_INTERFACE_EXPORT(GZ_BASE_EXPORT);
00342
00343 GZ_BASE_EXPORT gzVoid setCharData(const gzString &data);
00344 GZ_BASE_EXPORT const gzString & getCharData();
00345
00346 GZ_BASE_EXPORT virtual gzVoid write(gzXmlSax *writer);
00347
00348
00349 GZ_BASE_EXPORT virtual gzVoid debugOutput(gzString base , gzString anchor , gzDebugFlags features);
00350
00351 private:
00352
00353 gzString m_charData;
00354 };
00355
00356
00357
00358
00359
00360
00361
00362
00363
00364
00365
00366
00367
00368
00369
00370
00371 class gzXmlPI : public gzXmlItem
00372 {
00373 public:
00374 GZ_BASE_EXPORT gzXmlPI();
00375 GZ_BASE_EXPORT virtual ~gzXmlPI();
00376
00377 GZ_DECLARE_TYPE_INTERFACE_EXPORT(GZ_BASE_EXPORT);
00378
00379 GZ_BASE_EXPORT gzVoid setTarget(const gzString &target);
00380 GZ_BASE_EXPORT const gzString & getTarget();
00381
00382 GZ_BASE_EXPORT gzVoid setData(const gzString &data);
00383 GZ_BASE_EXPORT const gzString & getData();
00384
00385 GZ_BASE_EXPORT virtual gzVoid write(gzXmlSax *writer);
00386
00387
00388 GZ_BASE_EXPORT virtual gzVoid debugOutput(gzString base , gzString anchor , gzDebugFlags features);
00389
00390 private:
00391
00392 gzString m_target;
00393 gzString m_data;
00394 };
00395
00396
00397
00398
00399
00400
00401
00402
00403
00404
00405
00406
00407
00408
00409
00410 class gzXmlCDATA : public gzXmlItem
00411 {
00412 public:
00413 GZ_BASE_EXPORT gzXmlCDATA();
00414 GZ_BASE_EXPORT virtual ~gzXmlCDATA();
00415
00416 GZ_DECLARE_TYPE_INTERFACE_EXPORT(GZ_BASE_EXPORT);
00417
00418 GZ_BASE_EXPORT gzVoid setCDATA(const gzString &data);
00419 GZ_BASE_EXPORT const gzString & getCDATA();
00420
00421 GZ_BASE_EXPORT virtual gzVoid write(gzXmlSax *writer);
00422
00423
00424 GZ_BASE_EXPORT virtual gzVoid debugOutput(gzString base , gzString anchor , gzDebugFlags features);
00425
00426 private:
00427
00428 gzString m_CDATA;
00429 };
00430
00431
00432
00433
00434
00435
00436
00437
00438
00439
00440
00441
00442
00443
00444
00445 class gzXmlComment : public gzXmlItem
00446 {
00447 public:
00448 GZ_BASE_EXPORT gzXmlComment();
00449 GZ_BASE_EXPORT virtual ~gzXmlComment();
00450
00451 GZ_DECLARE_TYPE_INTERFACE_EXPORT(GZ_BASE_EXPORT);
00452
00453 GZ_BASE_EXPORT gzVoid setComment(const gzString &data);
00454 GZ_BASE_EXPORT const gzString & getComment();
00455
00456 GZ_BASE_EXPORT virtual gzVoid write(gzXmlSax *writer);
00457
00458
00459 GZ_BASE_EXPORT virtual gzVoid debugOutput(gzString base , gzString anchor , gzDebugFlags features);
00460
00461 private:
00462
00463 gzString m_comment;
00464 };
00465
00466
00467
00468
00469
00470
00471
00472
00473
00474
00475
00476
00477
00478
00479
00480 class gzXmlDynamicType : public gzXmlItem
00481 {
00482 public:
00483 GZ_BASE_EXPORT gzXmlDynamicType(const gzString &name);
00484 GZ_BASE_EXPORT virtual ~gzXmlDynamicType();
00485
00486 GZ_DECLARE_TYPE_INTERFACE_EXPORT(GZ_BASE_EXPORT);
00487
00488 GZ_BASE_EXPORT gzVoid setDynamicType(const gzDynamicType &data);
00489 GZ_BASE_EXPORT const gzDynamicType & getDynamicType();
00490
00491 GZ_BASE_EXPORT virtual gzVoid write(gzXmlSax *writer);
00492
00493
00494 GZ_BASE_EXPORT virtual gzVoid debugOutput(gzString base , gzString anchor , gzDebugFlags features);
00495
00496 private:
00497
00498 gzDynamicType m_data;
00499 };
00500
00501
00502
00503
00504
00505
00506
00507
00508
00509
00510
00511
00512
00513
00514
00515 class gzXmlObject : public gzXmlItem
00516 {
00517 public:
00518 GZ_BASE_EXPORT gzXmlObject(const gzString &name);
00519 GZ_BASE_EXPORT virtual ~gzXmlObject();
00520
00521 GZ_DECLARE_TYPE_INTERFACE_EXPORT(GZ_BASE_EXPORT);
00522
00523 GZ_BASE_EXPORT gzVoid setObject(gzObject *object);
00524 GZ_BASE_EXPORT gzObject * getObject();
00525
00526 GZ_BASE_EXPORT virtual gzVoid write(gzXmlSax *writer);
00527
00528
00529 GZ_BASE_EXPORT virtual gzVoid debugOutput(gzString base , gzString anchor , gzDebugFlags features);
00530
00531 private:
00532
00533 gzRefPointer<gzObject> m_object;
00534 };
00535
00536
00537
00538
00539
00540
00541
00542
00543
00544
00545
00546
00547
00548
00549
00550 class gzXmlCustomData : public gzXmlElement
00551 {
00552 public:
00553 GZ_BASE_EXPORT gzXmlCustomData(const gzString &name);
00554 GZ_BASE_EXPORT gzXmlCustomData(const gzXmlElement ©);
00555 GZ_BASE_EXPORT virtual ~gzXmlCustomData();
00556
00557 GZ_DECLARE_TYPE_INTERFACE_EXPORT(GZ_BASE_EXPORT);
00558
00559 GZ_PROPERTY_EXPORT(gzRefPointer<gzReference>, Data, GZ_BASE_EXPORT);
00560
00561 GZ_BASE_EXPORT virtual gzVoid write(gzXmlSax *writer);
00562
00563
00564 GZ_BASE_EXPORT virtual gzVoid debugOutput(gzString base , gzString anchor , gzDebugFlags features);
00565 };
00566
00567
00568
00569
00570
00571
00572
00573
00574
00575
00576
00577
00578
00579
00580
00581
00582 class gzXmlDom : public gzXmlSax , public gzXmlItem
00583 {
00584 public:
00585
00586 GZ_BASE_EXPORT gzXmlDom();
00587 GZ_BASE_EXPORT virtual ~gzXmlDom();
00588
00589 GZ_DECLARE_TYPE_INTERFACE_EXPORT(GZ_BASE_EXPORT);
00590
00591 GZ_BASE_EXPORT virtual gzVoid write(gzSerializeAdapter *adapter);
00592 GZ_BASE_EXPORT virtual gzVoid read(gzSerializeAdapter *adapter);
00593 GZ_BASE_EXPORT virtual gzVoid pushBack(gzSerializeAdapter *adapter);
00594 GZ_BASE_EXPORT virtual gzULong getDataSize(gzSerializeAdapter *adapter=NULL) const;
00595
00596
00597 GZ_BASE_EXPORT virtual gzBool onVersion(const gzString &version);
00598 GZ_BASE_EXPORT virtual gzBool onEncoding(const gzString &encoding);
00599 GZ_BASE_EXPORT virtual gzBool onStandalone(gzBool standalone);
00600
00601
00602 GZ_BASE_EXPORT virtual gzBool onElementStart(const gzString &elementName,gzULong level);
00603 GZ_BASE_EXPORT virtual gzBool onElementContents(const gzString &contents,gzULong level);
00604 GZ_BASE_EXPORT virtual gzBool onElementEnd(const gzString &elementName,gzULong level);
00605 GZ_BASE_EXPORT virtual gzBool onAttribute(const gzString &attributeName,const gzString &attributeValue,gzULong level);
00606 GZ_BASE_EXPORT virtual gzBool onCharData(const gzString &charData,gzULong level);
00607 GZ_BASE_EXPORT virtual gzBool onCDATA(const gzString &CDATA,gzULong level);
00608 GZ_BASE_EXPORT virtual gzBool onProcessingInstruction(const gzString &target,const gzString &data,gzULong level);
00609 GZ_BASE_EXPORT virtual gzBool onComment(const gzString &comment,gzULong level);
00610 GZ_BASE_EXPORT virtual gzBool onDynamicType(const gzDynamicType &data,const gzString &name,gzULong level);
00611 GZ_BASE_EXPORT virtual gzBool onObject(gzObject *object,const gzString &name,gzULong level);
00612 GZ_BASE_EXPORT virtual gzBool onCustomData(gzReference *data,const gzString &elementName,gzULong level);
00613
00614 GZ_PROPERTY_EXPORT(gzBool, SkipWhiteSpaceCharData, GZ_BASE_EXPORT);
00615 GZ_PROPERTY_EXPORT(gzBool, WriteIncludedXml, GZ_BASE_EXPORT);
00616 GZ_PROPERTY_EXPORT(gzBool, ReadIncludedXml, GZ_BASE_EXPORT);
00617
00618
00619
00620 GZ_BASE_EXPORT virtual gzVoid onWrite();
00621 GZ_BASE_EXPORT virtual gzVoid write(gzXmlSax *writer);
00622
00623 private:
00624
00625 gzDynamicArray<gzRefPointer<gzXmlItem> > m_itemStack;
00626
00627 };
00628
00629
00630
00631
00632
00633
00634
00635
00636
00637
00638
00639
00640
00641
00642
00643
00644 class GZ_BASE_EXPORT gzXmlDynamicTypeInterface : public gzReference
00645 {
00646 public:
00647 gzXmlDynamicTypeInterface(){};
00648 virtual ~gzXmlDynamicTypeInterface(){};
00649
00650 virtual gzParseResult read(gzXmlSax *sax,const gzString &type,gzDynamicType &value)=0;
00651
00652 virtual gzVoid write(gzXmlSax *sax,const gzDynamicType &data)=0;
00653
00654 virtual gzULong getDataSize(gzXmlSax *sax,const gzDynamicType &data) const=0;
00655 };
00656
00657
00658
00659
00660
00661
00662
00663
00664
00665
00666
00667
00668
00669
00670
00671 class GZ_BASE_EXPORT gzXmlObjectInterface : public gzReference
00672 {
00673 public:
00674 gzXmlObjectInterface(){};
00675 virtual ~gzXmlObjectInterface(){};
00676
00677 virtual gzParseResult read(gzXmlSax *sax,const gzString &type,gzRefPointer<gzObject> &value)=0;
00678
00679 virtual gzVoid write(gzXmlSax *sax,const gzObject *object)=0;
00680
00681 virtual gzULong getDataSize(gzXmlSax *sax,const gzObject *object) const=0;
00682 };
00683
00684
00685
00686
00687
00688
00689
00690
00691
00692
00693
00694
00695
00696
00697
00698 class GZ_BASE_EXPORT gzXmlCustomDataInterface : public gzReference
00699 {
00700 public:
00701 gzXmlCustomDataInterface(){};
00702 virtual ~gzXmlCustomDataInterface(){};
00703
00704 virtual gzParseResult read(gzXmlSax *sax,gzRefPointer<gzReference> &value)=0;
00705
00706 virtual gzVoid write(gzXmlSax *sax,const gzReference *data)=0;
00707
00708 virtual gzULong getDataSize(gzXmlSax *sax,const gzReference *data) const=0;
00709 };
00710
00711
00712
00713 const gzString GZ_XML_NAME_CHAR_DATA = "<char_data>";
00714 const gzString GZ_XML_NAME_CDATA = "<cdata>";
00715 const gzString GZ_XML_NAME_COMMENT = "<comment>";
<