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 
00012 class LgiClass GXmlAttr
00013 {
00014 public:
00016     char *Name;
00018     char *Value;
00019     
00020     GXmlAttr()
00021     {
00022         Name = 0;
00023         Value = 0;
00024     }
00025     
00026     GXmlAttr(char *n, char *v)
00027     {
00028         Name = NewStr(n);
00029         Value = NewStr(v);
00030     }
00031     
00032     ~GXmlAttr()
00033     {
00034         DeleteArray(Name);
00035         DeleteArray(Value);
00036     }
00037 };
00038 
00045 class LgiClass GXmlTag : public GDom
00046 {
00047     friend class GXmlTree;
00048 
00049 protected:
00050     bool Write;
00051     GXmlAttr *_Attr(char *Name, bool Write);
00052     bool GetVariant(char *Name, GVariant &Value, char *Array);
00053     bool SetVariant(char *Name, GVariant &Value, char *Array);
00054 
00055 public:
00058     char *Tag;
00060     char *Content;
00062     GXmlTag *Parent;
00064     List<GXmlAttr> Attr;
00067     List<GXmlTag> Children;
00068     
00070     GXmlTag
00071     (
00073         char *tag = 0
00074     );  
00075     virtual ~GXmlTag();
00076 
00078     bool Dump(int Depth = 0);
00079 
00081     char *GetAttr(char *Name);
00083     int GetAsInt(char *Name);
00085     bool SetAttr(char *Name, char *Value);
00087     bool SetAttr(char *Name, int Value);
00088 
00090     bool SerializeAttr(char *Attr, int &Int);   
00092     bool SerializeAttr(char *Attr, char *&Str);
00094     bool SerializeAttr(char *Attr, double &Dbl);
00095         
00097     virtual bool Serialize() { return false; }
00099     GXmlTag *GetTag(char *Name, bool Create = false);
00101     GXmlTag *CreateTag(char *Name) { return GetTag(Name, true); }
00103     virtual void InsertTag(GXmlTag *t);
00105     virtual void RemoveTag();
00106 };
00107 
00112 class GXmlFactory
00113 {
00114 public:
00116     virtual GXmlTag *Create(char *Tag) = 0;
00117 };
00118 
00120 class LgiClass GXmlTree
00121 {
00122     class GXmlTreePrivate *d;
00123     
00124     GXmlTag *Parse(GXmlTag *Tag, char *&t, bool &NoChildren, bool InTypeDef);
00125     void Output(GXmlTag *t, int Depth);
00126 
00127 public:
00129     GXmlTree
00130     (
00132         int Flags = 0
00133     );
00134     ~GXmlTree();
00135     
00137     bool Read
00138     (
00140         GXmlTag *Root,
00142         GStream *File,
00145         GXmlFactory *Factory
00146     );
00148     bool Write
00149     (
00151         GXmlTag *Root,
00153         GStream *File
00154     );
00156     char *GetErrorMsg();
00157 };
00158 
00159 #endif

Generated on Wed Oct 26 14:46:50 2005 for Lgi by  doxygen 1.4.1