Main Page | Class Hierarchy | Class List | Directories | File List | Class Members | File Members | Related Pages

GXmlTree.h

Go to the documentation of this file.
00001 
00002 
00003 #ifndef _GXMLTREE_H_
00004 #define _GXMLTREE_H_
00005 
00007 #define GXT_NO_ENTITIES                     0x0001
00008 
00009 #define GXT_NO_PRETTY_WHITESPACE            0x0002
00010 
00011 #define GXT_KEEP_WHITESPACE                 0x0004
00012 
00013 #define GXT_NO_DOM                          0x0008
00014 
00015 class GXmlTreePrivate;
00016 
00018 class LgiClass GXmlAttr
00019 {
00020 public:
00022     char *Name;
00024     char *Value;
00025     
00026     GXmlAttr()
00027     {
00028         Name = 0;
00029         Value = 0;
00030     }
00031     
00032     GXmlAttr(char *n, char *v, bool ownmem = true)
00033     {
00034         OwnMem = ownmem;
00035         Name = ownmem ? NewStr(n) : n;
00036         Value = ownmem ? NewStr(v) : v;
00037     }
00038     
00039     ~GXmlAttr()
00040     {
00041         if (OwnMem)
00042         {
00043             DeleteArray(Name);
00044             DeleteArray(Value);
00045         }
00046     }
00047 
00048 private:
00049     bool OwnMem;
00050 };
00051 
00058 class LgiClass GXmlTag : public GDom
00059 {
00060     friend class GXmlTree;
00061 
00062 protected:
00063     bool Write;
00064     GXmlAttr *_Attr(char *Name, bool Write);
00065     bool GetVariant(char *Name, GVariant &Value, char *Array);
00066     bool SetVariant(char *Name, GVariant &Value, char *Array);
00067 
00068 public:
00071     char *Tag;
00073     char *Content;
00075     GXmlTag *Parent;
00077     List<GXmlAttr> Attr;
00080     List<GXmlTag> Children;
00081     
00083     GXmlTag
00084     (
00086         char *tag = 0
00087     );  
00088     virtual ~GXmlTag();
00089 
00091     bool Dump(int Depth = 0);
00092 
00094     char *GetAttr(char *Name);
00096     int GetAsInt(char *Name);
00098     bool SetAttr(char *Name, char *Value);
00100     bool SetAttr(char *Name, int Value);
00102     bool DelAttr(char *Name);
00103 
00105     bool SerializeAttr(char *Attr, int &Int);   
00107     bool SerializeAttr(char *Attr, char *&Str);
00109     bool SerializeAttr(char *Attr, double &Dbl);
00110         
00112     virtual bool Serialize() { return false; }
00114     GXmlTag *GetTag(char *Name, bool Create = false);
00116     GXmlTag *CreateTag(char *Name) { return GetTag(Name, true); }
00118     virtual void InsertTag(GXmlTag *t);
00120     virtual void RemoveTag();
00121 
00123     GXmlTag &operator =(GXmlTag &t);
00124 };
00125 
00130 class GXmlFactory
00131 {
00132 public:
00134     virtual GXmlTag *Create(char *Tag) = 0;
00135 };
00136 
00138 class LgiClass GXmlTree
00139 {
00140     GXmlTreePrivate *d;
00141     
00142     GXmlTag *Parse(GXmlTag *Tag, char *&t, bool &NoChildren, bool InTypeDef);
00143     void Output(GXmlTag *t, int Depth);
00144 
00145 public:
00147     GXmlTree
00148     (
00150         int Flags = 0
00151     );
00152     ~GXmlTree();
00153     
00155     bool Read
00156     (
00158         GXmlTag *Root,
00160         GStream *File,
00163         GXmlFactory *Factory
00164     );
00166     bool Write
00167     (
00169         GXmlTag *Root,
00171         GStream *File
00172     );
00174     char *GetErrorMsg();
00175 };
00176 
00177 #endif

Generated on Tue May 2 10:24:43 2006 for Lgi by  doxygen 1.4.1