12 #ifndef ROOT_TXMLEngine 
   13 #define ROOT_TXMLEngine 
   17 typedef void *XMLNodePointer_t;
 
   18 typedef void *XMLNsPointer_t;
 
   19 typedef void *XMLAttrPointer_t;
 
   20 typedef void *XMLDocPointer_t;
 
   22 class TXMLInputStream;
 
   23 class TXMLOutputStream;
 
   26 class TXMLEngine : 
public TObject {
 
   29    char *Makestr(
const char *str);
 
   30    char *Makenstr(
const char *start, 
int len);
 
   31    XMLNodePointer_t AllocateNode(
int namelen, XMLNodePointer_t parent);
 
   32    XMLAttrPointer_t AllocateAttr(
int namelen, 
int valuelen, XMLNodePointer_t xmlnode);
 
   33    XMLNsPointer_t FindNs(XMLNodePointer_t xmlnode, 
const char *nsname);
 
   34    void TruncateNsExtension(XMLNodePointer_t xmlnode);
 
   35    void UnpackSpecialCharacters(
char *target, 
const char *source, 
int srclen);
 
   36    void OutputValue(
char *value, TXMLOutputStream *out);
 
   37    void SaveNode(XMLNodePointer_t xmlnode, TXMLOutputStream *out, Int_t layout, Int_t level);
 
   38    XMLNodePointer_t ReadNode(XMLNodePointer_t xmlparent, TXMLInputStream *inp, Int_t &resvalue);
 
   39    void DisplayError(Int_t error, Int_t linenumber);
 
   40    XMLDocPointer_t ParseStream(TXMLInputStream *input);
 
   46    virtual ~TXMLEngine();
 
   48    void SetSkipComments(Bool_t on = kTRUE) { fSkipComments = on; }
 
   49    Bool_t GetSkipComments()
 const { 
return fSkipComments; }
 
   51    Bool_t HasAttr(XMLNodePointer_t xmlnode, 
const char *name);
 
   52    const char *GetAttr(XMLNodePointer_t xmlnode, 
const char *name);
 
   53    Int_t GetIntAttr(XMLNodePointer_t node, 
const char *name);
 
   54    XMLAttrPointer_t NewAttr(XMLNodePointer_t xmlnode, XMLNsPointer_t, 
const char *name, 
const char *value);
 
   55    XMLAttrPointer_t NewIntAttr(XMLNodePointer_t xmlnode, 
const char *name, Int_t value);
 
   56    void FreeAttr(XMLNodePointer_t xmlnode, 
const char *name);
 
   57    void FreeAllAttr(XMLNodePointer_t xmlnode);
 
   58    XMLAttrPointer_t GetFirstAttr(XMLNodePointer_t xmlnode);
 
   59    XMLAttrPointer_t GetNextAttr(XMLAttrPointer_t xmlattr);
 
   60    const char *GetAttrName(XMLAttrPointer_t xmlattr);
 
   61    const char *GetAttrValue(XMLAttrPointer_t xmlattr);
 
   62    XMLNodePointer_t NewChild(XMLNodePointer_t parent, XMLNsPointer_t ns, 
const char *name, 
const char *content = 
nullptr);
 
   63    XMLNsPointer_t NewNS(XMLNodePointer_t xmlnode, 
const char *reference, 
const char *name = 
nullptr);
 
   64    XMLNsPointer_t GetNS(XMLNodePointer_t xmlnode);
 
   65    const char *GetNSName(XMLNsPointer_t ns);
 
   66    const char *GetNSReference(XMLNsPointer_t ns);
 
   67    void AddChild(XMLNodePointer_t parent, XMLNodePointer_t child);
 
   68    void AddChildFirst(XMLNodePointer_t parent, XMLNodePointer_t child);
 
   69    void AddChildAfter(XMLNodePointer_t parent, XMLNodePointer_t child, XMLNodePointer_t afternode);
 
   70    Bool_t AddComment(XMLNodePointer_t parent, 
const char *comment);
 
   71    Bool_t AddDocComment(XMLDocPointer_t xmldoc, 
const char *comment);
 
   72    Bool_t AddRawLine(XMLNodePointer_t parent, 
const char *line);
 
   73    Bool_t AddDocRawLine(XMLDocPointer_t xmldoc, 
const char *line);
 
   74    Bool_t AddStyleSheet(XMLNodePointer_t parent, 
const char *href, 
const char *type = 
"text/css", 
const char *title = 
nullptr,
 
   75                         int alternate = -1, 
const char *media = 
nullptr, 
const char *charset = 
nullptr);
 
   76    Bool_t AddDocStyleSheet(XMLDocPointer_t xmldoc, 
const char *href, 
const char *type = 
"text/css",
 
   77                            const char *title = 
nullptr, 
int alternate = -1, 
const char *media = 
nullptr, 
const char *charset = 
nullptr);
 
   78    void UnlinkNode(XMLNodePointer_t node);
 
   79    void FreeNode(XMLNodePointer_t xmlnode);
 
   80    void UnlinkFreeNode(XMLNodePointer_t xmlnode);
 
   81    const char *GetNodeName(XMLNodePointer_t xmlnode);
 
   82    const char *GetNodeContent(XMLNodePointer_t xmlnode);
 
   83    void SetNodeContent(XMLNodePointer_t xmlnode, 
const char *content, Int_t len = 0);
 
   84    void AddNodeContent(XMLNodePointer_t xmlnode, 
const char *content, Int_t len = 0);
 
   85    XMLNodePointer_t GetChild(XMLNodePointer_t xmlnode, Bool_t realnode = kTRUE);
 
   86    XMLNodePointer_t GetParent(XMLNodePointer_t xmlnode);
 
   87    XMLNodePointer_t GetNext(XMLNodePointer_t xmlnode, Bool_t realnode = kTRUE);
 
   88    void ShiftToNext(XMLNodePointer_t &xmlnode, Bool_t realnode = kTRUE);
 
   89    Bool_t IsXmlNode(XMLNodePointer_t xmlnode);
 
   90    Bool_t IsEmptyNode(XMLNodePointer_t xmlnode);
 
   91    Bool_t IsContentNode(XMLNodePointer_t xmlnode);
 
   92    Bool_t IsCommentNode(XMLNodePointer_t xmlnode);
 
   93    void SkipEmpty(XMLNodePointer_t &xmlnode);
 
   94    void CleanNode(XMLNodePointer_t xmlnode);
 
   95    XMLDocPointer_t NewDoc(
const char *version = 
"1.0");
 
   96    void AssignDtd(XMLDocPointer_t xmldoc, 
const char *dtdname, 
const char *rootname);
 
   97    void FreeDoc(XMLDocPointer_t xmldoc);
 
   98    void SaveDoc(XMLDocPointer_t xmldoc, 
const char *filename, Int_t layout = 1);
 
   99    void DocSetRootElement(XMLDocPointer_t xmldoc, XMLNodePointer_t xmlnode);
 
  100    XMLNodePointer_t DocGetRootElement(XMLDocPointer_t xmldoc);
 
  101    XMLDocPointer_t ParseFile(
const char *filename, Int_t maxbuf = 100000);
 
  102    XMLDocPointer_t ParseString(
const char *xmlstring);
 
  103    Bool_t ValidateVersion(XMLDocPointer_t doc, 
const char *version = 
nullptr);
 
  104    Bool_t ValidateDocument(XMLDocPointer_t, Bool_t = kFALSE) { 
return kFALSE; } 
 
  105    void SaveSingleNode(XMLNodePointer_t xmlnode, TString *res, Int_t layout = 1);
 
  106    XMLNodePointer_t ReadSingleNode(
const char *src);
 
  108    ClassDef(TXMLEngine, 1);