ROOT logo
// @(#)root/xml:$Id: TXMLEngine.cxx 25500 2008-09-22 20:19:46Z brun $
// Author: Sergey Linev  10.05.2004

/*************************************************************************
 * Copyright (C) 1995-2004, Rene Brun and Fons Rademakers.               *
 * All rights reserved.                                                  *
 *                                                                       *
 * For the licensing terms see $ROOTSYS/LICENSE.                         *
 * For the list of contributors see $ROOTSYS/README/CREDITS.             *
 *************************************************************************/

//________________________________________________________________________
//
//  TXMLEngine class is used to write and read ROOT XML files - TXMLFile.
//  It does not conform to complete xml standard and cannot be used
//  as parser for arbitrary XML files. For such cases TXMLParser should
//  be used. This class was introduced to exclude dependency from
//  external libraries (like libxml2) and improve speed / memory consumption.
//
//________________________________________________________________________

#include "TXMLEngine.h"

#include "Riostream.h"
#include "TString.h"
#include <stdlib.h>
#include <string.h>

ClassImp(TXMLEngine);

struct SXmlAttr_t {
   SXmlAttr_t  *fNext;
   char         fName; // this is first symbol of attribute name, if 0 this is special attribute
};

enum EXmlNodeType {
  kXML_NODE = 1,       // normal node with childs
  kXML_COMMENT = 2,    // comment (stored as value of node fName)
  kXML_PI_NODE = 3,    // processing instructions node (like <?name  attr="" ?>
  kXML_RAWLINE = 4     // just one line of xml code
};

struct SXmlNode_t {
   EXmlNodeType fType;    //  this is node type - node, comment, processing instruction and so on
   SXmlAttr_t  *fAttr;    // first attribute 
   SXmlAttr_t  *fNs;      // name space definition (if any)
   SXmlNode_t  *fNext;    // next node on the same level of hierarchy 
   SXmlNode_t  *fChild;   // first child node
   SXmlNode_t  *fLastChild; // last child node
   SXmlNode_t  *fParent;   // parent node
   char         fName;    // this is start of node name, if 0 next byte is start of content
};

struct SXmlDoc_t {
   SXmlNode_t  *fRootNode;
   char        *fDtdName;
   char        *fDtdRoot;
};

class TXMLOutputStream {
protected:

   std::ostream  *fOut;
   TString       *fOutStr;
   char          *fBuf;
   char          *fCurrent;
   char          *fMaxAddr;
   char          *fLimitAddr;

public:
   TXMLOutputStream(const char* filename, Int_t bufsize = 20000)
   {
      fOut = new std::ofstream(filename);
      fOutStr = 0;
      Init(bufsize);
   }

   TXMLOutputStream(TString* outstr, Int_t bufsize = 20000)
   {
      fOut = 0;
      fOutStr = outstr;
      Init(bufsize);
   }
   
   void Init(Int_t bufsize)
   {
      fBuf = (char*) malloc(bufsize);
      fCurrent = fBuf;
      fMaxAddr = fBuf + bufsize;
      fLimitAddr = fBuf + int(bufsize*0.75);
   }

   virtual ~TXMLOutputStream()
   {
      if (fCurrent!=fBuf) OutputCurrent();
      delete fOut;
   }

   void OutputCurrent()
   {
      if (fCurrent!=fBuf) {
         if (fOut!=0)
            fOut->write(fBuf, fCurrent-fBuf);
         else if (fOutStr!=0) 
            fOutStr->Append(fBuf, fCurrent-fBuf);
      }
      fCurrent = fBuf;
   }
   
   void OutputChar(char symb) 
   {
      if (fOut!=0) fOut->put(symb); else
      if (fOutStr!=0) fOutStr->Append(symb);
   }

   void Write(const char* str)
   {
      int len = strlen(str);
      if (fCurrent+len>=fMaxAddr) {
         OutputCurrent();
         fOut->write(str,len);
      } else {
         while (*str)
           *fCurrent++ = *str++;
         if (fCurrent>fLimitAddr)
            OutputCurrent();
      }
   }

   void Put(char symb, Int_t cnt=1)
   {
      if (fCurrent+cnt>=fMaxAddr)
         OutputCurrent();
      if (fCurrent+cnt>=fMaxAddr)
         for(int n=0;n<cnt;n++)
            OutputChar(symb);
      else {
         for(int n=0;n<cnt;n++)
            *fCurrent++ = symb;
         if (fCurrent>fLimitAddr)
            OutputCurrent();
      }
   }
};

class TXMLInputStream {
protected:

   std::istream  *fInp;
   const char    *fInpStr;
   Int_t          fInpStrLen;    
   
   char          *fBuf;
   Int_t          fBufSize;

   char          *fMaxAddr;
   char          *fLimitAddr;

   Int_t          fTotalPos;
   Int_t          fCurrentLine;
   
public:

   char           *fCurrent;

   TXMLInputStream(bool isfilename, const char* filename, Int_t ibufsize)
   {
      if (isfilename) {
         fInp = new std::ifstream(filename);
         fInpStr = 0;
         fInpStrLen = 0;
      } else {
         fInp = 0;
         fInpStr = filename;
         fInpStrLen = filename==0 ? 0 : strlen(filename);
      }
   
      fBufSize = ibufsize;
      fBuf = (char*) malloc(fBufSize);

      fCurrent = 0;
      fMaxAddr = 0;

      int len = DoRead(fBuf, fBufSize);
      fCurrent = fBuf;
      fMaxAddr = fBuf+len;
      fLimitAddr = fBuf + int(len*0.75);

      fTotalPos = 0;
      fCurrentLine = 1;
   }

   virtual ~TXMLInputStream()
   {
      delete fInp; fInp = 0;
      free(fBuf); fBuf = 0;
   }

   inline Bool_t EndOfFile() { return (fInp!=0) ? fInp->eof() : (fInpStrLen<=0); }
   
   inline Bool_t EndOfStream() { return EndOfFile() && (fCurrent>=fMaxAddr); }

   int DoRead(char* buf, int maxsize)
   {
      if (EndOfFile()) return 0;
      if (fInp!=0) {
         fInp->get(buf, maxsize, 0);
         maxsize = strlen(buf);
      } else {
         if (maxsize>fInpStrLen) maxsize = fInpStrLen;
         strncpy(buf, fInpStr, maxsize);
         fInpStr+=maxsize;
         fInpStrLen-=maxsize;
      }
      return maxsize;
   }

   Bool_t ExpandStream()
   {
      if (EndOfFile()) return kFALSE;
      fBufSize*=2;
      int curlength = fMaxAddr - fBuf;
      char* newbuf = (char*) realloc(fBuf, fBufSize);
      if (newbuf==0) return kFALSE;
      
      fMaxAddr = newbuf + (fMaxAddr - fBuf);
      fCurrent = newbuf + (fCurrent - fBuf);
      fLimitAddr = newbuf + (fLimitAddr - fBuf);
      fBuf = newbuf;
      
      int len = DoRead(fMaxAddr, fBufSize-curlength);
      if (len==0) return kFALSE;
      fMaxAddr += len;
      fLimitAddr += int(len*0.75);
      return kTRUE;
   }

   Bool_t ShiftStream()
   {
      if (fCurrent<fLimitAddr) return kTRUE; // everything ok, can cntinue
      if (EndOfFile()) return kTRUE;
      int rest_len = fMaxAddr - fCurrent;
      memmove(fBuf, fCurrent, rest_len); 
      int read_len = DoRead(fBuf + rest_len, fBufSize - rest_len);

      fCurrent = fBuf;
      fMaxAddr = fBuf + rest_len + read_len;
      fLimitAddr = fBuf + int((rest_len + read_len)*0.75);
      return kTRUE;
   }

   Int_t  TotalPos() { return fTotalPos; }

   Int_t CurrentLine() { return fCurrentLine; }

   Bool_t ShiftCurrent(Int_t sz = 1)
   {
      for(int n=0;n<sz;n++) {
         if (*fCurrent==10) fCurrentLine++;
         if (fCurrent>=fLimitAddr) {
            ShiftStream();
            if (fCurrent>=fMaxAddr) return kFALSE;
         }
         fCurrent++;
      }
      fTotalPos+=sz;
      return kTRUE;
   }

   Bool_t SkipSpaces(Bool_t tillendl = kFALSE)
   {
      do {
         char symb = *fCurrent;
         if ((symb>26) && (symb!=' ')) return kTRUE;

         if (!ShiftCurrent()) return kFALSE;

         if (tillendl && (symb==10)) return kTRUE;
      } while (fCurrent<fMaxAddr);
      return kFALSE;
   }

   Bool_t CheckFor(const char* str)
   {
      // Check if in current position we see specified string 
      int len = strlen(str);
      while (fCurrent+len>fMaxAddr)
         if (!ExpandStream()) return kFALSE;
      char* curr = fCurrent;
      while (*str != 0)
         if (*str++ != *curr++) return kFALSE;
      return ShiftCurrent(len);
   }

   Int_t SearchFor(const char* str)
   {
      // Serach for specified string in the stream
      // return number of symbols before string was found, -1 if error
      int len = strlen(str);
     
      char* curr = fCurrent;

      do {
         curr++; 
         while (curr+len>fMaxAddr)
            if (!ExpandStream()) return -1;
         char* chk0 = curr;
         const char* chk = str;
         Bool_t find = kTRUE;
         while (*chk != 0)
            if (*chk++ != *chk0++) { find = kFALSE; break; }
         // if string found, shift to the next symbol after string   
         if (find) return curr - fCurrent;
      } while (curr<fMaxAddr);
      return -1;
   }

   Int_t LocateIdentifier()
   {
      char symb = *fCurrent;
      Bool_t ok = (((symb>='a') && (symb<='z')) ||
                  ((symb>='A') && (symb<='Z')) ||
                  (symb=='_'));
      if (!ok) return 0;

      char* curr = fCurrent;

      do {
         curr++;
         if (curr>=fMaxAddr)
            if (!ExpandStream()) return 0;
         symb = *curr;
         ok = ((symb>='a') && (symb<='z')) ||
               ((symb>='A') && (symb<='Z')) ||
               ((symb>='0') && (symb<='9')) ||
               (symb==':') || (symb=='_') || (symb=='-');
         if (!ok) return curr-fCurrent;
      } while (curr<fMaxAddr);
      return 0;
   }

   Int_t LocateContent()
   {
      char* curr = fCurrent;
      while (curr<fMaxAddr) {
         char symb = *curr;
         if (symb=='<') return curr - fCurrent;
         curr++;
         if (curr>=fMaxAddr)
            if (!ExpandStream()) return -1;
      }
      return -1;
   }

   Int_t LocateAttributeValue(char* start)
   {
      char* curr = start;
      if (curr>=fMaxAddr)
         if (!ExpandStream()) return 0;
      if (*curr!='=') return 0;
      curr++;
      if (curr>=fMaxAddr)
         if (!ExpandStream()) return 0;
      if (*curr!='"') return 0;
      do {
         curr++;
         if (curr>=fMaxAddr)
            if (!ExpandStream()) return 0;
         if (*curr=='"') return curr-start+1;
      } while (curr<fMaxAddr);
      return 0;
   }
};

//______________________________________________________________________________
TXMLEngine::TXMLEngine()
{
   // default (normal) constructor of TXMLEngine class

}


//______________________________________________________________________________
TXMLEngine::~TXMLEngine()
{
   // destructor for TXMLEngine object

}

//______________________________________________________________________________
Bool_t TXMLEngine::HasAttr(XMLNodePointer_t xmlnode, const char* name)
{
   // checks if node has attribute of specified name

   if (xmlnode==0) return kFALSE;
   SXmlAttr_t* attr = ((SXmlNode_t*)xmlnode)->fAttr;
   while (attr!=0) {
      if (strcmp(&(attr->fName),name)==0) return kTRUE;
      attr = attr->fNext;
   }
   return kFALSE;
}

//______________________________________________________________________________
const char* TXMLEngine::GetAttr(XMLNodePointer_t xmlnode, const char* name)
{
   // returns value of attribute for xmlnode

   if (xmlnode==0) return 0;
   SXmlAttr_t* attr = ((SXmlNode_t*)xmlnode)->fAttr;
   while (attr!=0) {
      if (strcmp(&(attr->fName),name)==0)
         return &(attr->fName) + strlen(name) + 1;
      attr = attr->fNext;
   }
   return 0;
}

//______________________________________________________________________________
Int_t TXMLEngine::GetIntAttr(XMLNodePointer_t xmlnode, const char* name)
{
   // returns value of attribute as integer

   if (xmlnode==0) return 0;
   Int_t res = 0;
   const char* attr = GetAttr(xmlnode, name);
   if (attr) sscanf(attr, "%d", &res);
   return res;
}

//______________________________________________________________________________
XMLAttrPointer_t TXMLEngine::NewAttr(XMLNodePointer_t xmlnode, XMLNsPointer_t,
                                         const char* name, const char* value)
{
   // creates new attribute for xmlnode,
   // namespaces are not supported for attributes

   if (xmlnode==0) return 0;

   int namelen = strlen(name), valuelen = strlen(value);
   SXmlAttr_t* attr = (SXmlAttr_t*) AllocateAttr(namelen, valuelen, xmlnode);

   char* attrname = &(attr->fName);
   strcpy(attrname, name);
   attrname += (namelen + 1);
   if ((value!=0) && (valuelen>0))
      strcpy(attrname, value);
   else
      *attrname=0;

   return (XMLAttrPointer_t) attr;
}

//______________________________________________________________________________
XMLAttrPointer_t TXMLEngine::NewIntAttr(XMLNodePointer_t xmlnode,
                                      const char* name,
                                      Int_t value)
{
   // create node attribute with integer value

   char sbuf[30];
   sprintf(sbuf,"%d",value);
   return NewAttr(xmlnode, 0, name, sbuf);
}

//______________________________________________________________________________
void TXMLEngine::FreeAttr(XMLNodePointer_t xmlnode, const char* name)
{
   // remove attribute from xmlnode

   if (xmlnode==0) return;
   SXmlAttr_t* attr = ((SXmlNode_t*) xmlnode)->fAttr;
   SXmlAttr_t* prev = 0;
   while (attr!=0) {
      if (strcmp(&(attr->fName),name)==0) {
         if (prev!=0)
            prev->fNext = attr->fNext;
         else
            ((SXmlNode_t*) xmlnode)->fAttr = attr->fNext;
         //fNumNodes--;
         free(attr);
         return;
      }

      prev = attr;
      attr = attr->fNext;
   }
}

//______________________________________________________________________________
void TXMLEngine::FreeAllAttr(XMLNodePointer_t xmlnode)
{
   // Free all attributes of the node
   if (xmlnode==0) return;
   
   SXmlNode_t* node = (SXmlNode_t*) xmlnode;
   SXmlAttr_t* attr = node->fAttr;
   while (attr!=0) {
      SXmlAttr_t* next = attr->fNext;
      free(attr);
      attr = next;
   }
   node->fAttr = 0;
}


//______________________________________________________________________________
XMLAttrPointer_t TXMLEngine::GetFirstAttr(XMLNodePointer_t xmlnode)
{
   // return first attribute in the list, namespace (if exists) will be skiped
   
   if (xmlnode==0) return 0;
   SXmlNode_t* node = (SXmlNode_t*) xmlnode;

   SXmlAttr_t* attr = node->fAttr;
   if ((attr!=0) && (node->fNs==attr)) attr = attr->fNext;
   
   return (XMLAttrPointer_t) attr;
}

//______________________________________________________________________________
XMLAttrPointer_t TXMLEngine::GetNextAttr(XMLAttrPointer_t xmlattr)
{
   // return next attribute in the list
   
   if (xmlattr==0) return 0;
   
   return (XMLAttrPointer_t) ((SXmlAttr_t*) xmlattr)->fNext;
}

//______________________________________________________________________________
const char* TXMLEngine::GetAttrName(XMLAttrPointer_t xmlattr)
{
   // return name of the attribute

   if (xmlattr==0) return 0;

   return &(((SXmlAttr_t*) xmlattr)->fName);
   
}

//______________________________________________________________________________
const char* TXMLEngine::GetAttrValue(XMLAttrPointer_t xmlattr)
{
   // return value of attribute
   
   if (xmlattr==0) return 0;
   
   const char* attrname = &(((SXmlAttr_t*) xmlattr)->fName);
   return attrname + strlen(attrname) + 1;
}

//______________________________________________________________________________
XMLNodePointer_t TXMLEngine::NewChild(XMLNodePointer_t parent, XMLNsPointer_t ns,
                                      const char* name, const char* content)
{
   // create new child element for parent node

   SXmlNode_t* node = (SXmlNode_t*) AllocateNode(strlen(name), parent);

   strcpy(&(node->fName), name);
   node->fNs = (SXmlAttr_t*) ns;
   if (content!=0) {
      int contlen = strlen(content);
      if (contlen>0) {
         SXmlNode_t* contnode = (SXmlNode_t*) AllocateNode(contlen+1, node);
         char* cptr = &(contnode->fName);
         // first zero indicate that this is just content value
         *cptr = 0;
         cptr++;
         strcpy(cptr,content);
      }
   }

   return (XMLNodePointer_t) node;
}

//______________________________________________________________________________
XMLNsPointer_t TXMLEngine::NewNS(XMLNodePointer_t xmlnode, const char* reference, const char* name)
{
   // create namespace attribute for xmlnode.
   // namespace attribute will be always the first in list of node attributes

   SXmlNode_t* node = (SXmlNode_t*) xmlnode;
   if (name==0) name = &(node->fName);
   char* nsname = new char[strlen(name)+7];
   strcpy(nsname, "xmlns:");
   strcat(nsname, name);

   SXmlAttr_t* first = node->fAttr;
   node->fAttr = 0;

   SXmlAttr_t* nsattr = (SXmlAttr_t*) NewAttr(xmlnode, 0, nsname, reference);

   node->fAttr = nsattr;
   nsattr->fNext = first;

   node->fNs = nsattr;
   delete[] nsname;
   return (XMLNsPointer_t) nsattr;
}

//______________________________________________________________________________
XMLNsPointer_t TXMLEngine::GetNS(XMLNodePointer_t xmlnode)
{
   // return namespace attribute  (if exists)
   
   if (xmlnode==0) return 0;
   SXmlNode_t* node = (SXmlNode_t*) xmlnode;

   return (XMLNsPointer_t) node->fNs;
}

//______________________________________________________________________________
const char* TXMLEngine::GetNSName(XMLNsPointer_t ns)
{
   // return name id of namespace
   
   const char* nsname = GetAttrName((XMLAttrPointer_t)ns);
   
   if ((nsname!=0) && (strncmp(nsname,"xmlns:",6)==0)) nsname+=6;
   
   return nsname;
}

//______________________________________________________________________________
const char* TXMLEngine::GetNSReference(XMLNsPointer_t ns)
{
   // return reference id of namespace
   
   return GetAttrValue((XMLAttrPointer_t)ns);
}


//______________________________________________________________________________
void TXMLEngine::AddChild(XMLNodePointer_t parent, XMLNodePointer_t child)
{
   // add child element to xmlnode

   if ((parent==0) || (child==0)) return;
   SXmlNode_t* pnode = (SXmlNode_t*) parent;
   SXmlNode_t* cnode = (SXmlNode_t*) child;
   cnode->fParent = pnode;
   if (pnode->fLastChild==0) {
      pnode->fChild = cnode;
      pnode->fLastChild = cnode;
   } else {
      //SXmlNode_t* ch = pnode->fChild;
      //while (ch->fNext!=0) ch=ch->fNext;
      pnode->fLastChild->fNext = cnode;
      pnode->fLastChild = cnode;
   }
}

//______________________________________________________________________________
void TXMLEngine::AddChildFirst(XMLNodePointer_t parent, XMLNodePointer_t child)
{
   // add node as first child 
   
   if ((parent==0) || (child==0)) return;
   SXmlNode_t* pnode = (SXmlNode_t*) parent;
   SXmlNode_t* cnode = (SXmlNode_t*) child;
   cnode->fParent = pnode;
   
   cnode->fNext = pnode->fChild;
   pnode->fChild = cnode;
   
   if (pnode->fLastChild==0) pnode->fLastChild = cnode;
}


//______________________________________________________________________________
Bool_t TXMLEngine::AddComment(XMLNodePointer_t xmlnode, const char* comment)
{
   // Adds comment line to the node
   
   if ((xmlnode==0) || (comment==0)) return kFALSE;
   
   SXmlNode_t* node = (SXmlNode_t*) AllocateNode(strlen(comment), xmlnode);
   node->fType = kXML_COMMENT;
   strcpy(&(node->fName), comment);
   
   return kTRUE;
}

//______________________________________________________________________________
Bool_t TXMLEngine::AddDocComment(XMLDocPointer_t xmldoc, const char* comment)
{
   // add comment line to the top of the document
   
   if (xmldoc==0) return kFALSE;
   
   XMLNodePointer_t rootnode = DocGetRootElement(xmldoc);
   UnlinkNode(rootnode);
   
   bool res = AddComment(((SXmlDoc_t*)xmldoc)->fRootNode, comment);
   
   AddChild((XMLNodePointer_t) ((SXmlDoc_t*)xmldoc)->fRootNode, rootnode);
    
   return res; 
}

//______________________________________________________________________________
Bool_t TXMLEngine::AddRawLine(XMLNodePointer_t xmlnode, const char* line)
{
   // Add just line into xml file
   // Line should has correct xml syntax that later it can be decoded by xml parser 
   // For instance, it can be comment or processing instructions

   if ((xmlnode==0) || (line==0)) return kFALSE;
   
   SXmlNode_t* node = (SXmlNode_t*) AllocateNode(strlen(line), xmlnode);
   node->fType = kXML_RAWLINE;
   strcpy(&(node->fName), line);
   
   return kTRUE;
}

//______________________________________________________________________________
Bool_t TXMLEngine::AddDocRawLine(XMLDocPointer_t xmldoc, const char* line)
{
   // Add just line on the top of xml document
   // Line should has correct xml syntax that later it can be decoded by xml parser 

   XMLNodePointer_t rootnode = DocGetRootElement(xmldoc);
   UnlinkNode(rootnode);
   
   bool res = AddRawLine(((SXmlDoc_t*)xmldoc)->fRootNode, line);
   
   AddChild((XMLNodePointer_t) ((SXmlDoc_t*)xmldoc)->fRootNode, rootnode);
    
   return res; 

}


//______________________________________________________________________________
Bool_t TXMLEngine::AddStyleSheet(XMLNodePointer_t xmlnode, 
                                 const char* href, 
                                 const char* type,
                                 const char* title,
                                 int alternate,
                                 const char* media,
                                 const char* charset)
{
   // Adds style sheet definition to the specified node
   // Creates <?xml-stylesheet alternate="yes" title="compact" href="small-base.css" type="text/css"?>
   // Attributes href and type must be supplied, 
   //  other attributes: title, alternate, media, charset are optional
   // if alternate==0, attribyte alternate="no" will be created,
   // if alternate>0, attribute alternate="yes"
   // if alternate<0, attribute will not be created

   if ((xmlnode==0) || (href==0) || (type==0)) return kFALSE;
   
   const char* nodename = "xml-stylesheet";
   
   SXmlNode_t* node = (SXmlNode_t*) AllocateNode(strlen(nodename), xmlnode);
   node->fType = kXML_PI_NODE;
   strcpy(&(node->fName), nodename);
   
   if (alternate>=0)
     NewAttr(node, 0, "alternate", (alternate>0) ? "yes" : "no");
     
   if (title!=0) NewAttr(node, 0, "title", title); 
   
   NewAttr(node, 0, "href", href);
   NewAttr(node, 0, "type", type);

   if (media!=0) NewAttr(node, 0, "media", media); 
   if (charset!=0) NewAttr(node, 0, "charset", charset); 

   return kTRUE;
}                                 


//______________________________________________________________________________
Bool_t TXMLEngine::AddDocStyleSheet(XMLDocPointer_t xmldoc, 
                                    const char* href, 
                                    const char* type,
                                    const char* title,
                                    int alternate,
                                    const char* media,
                                    const char* charset)
{
   // Add style sheet definition on the top of document 

   if (xmldoc==0) return kFALSE;
   
   XMLNodePointer_t rootnode = DocGetRootElement(xmldoc);
   UnlinkNode(rootnode);
   
   bool res = AddStyleSheet(((SXmlDoc_t*)xmldoc)->fRootNode, 
                            href,type,title,alternate,media,charset);
   
   AddChild((XMLNodePointer_t) ((SXmlDoc_t*)xmldoc)->fRootNode, rootnode);
    
   return res; 
}

//______________________________________________________________________________
void TXMLEngine::UnlinkNode(XMLNodePointer_t xmlnode)
{
   // unlink (dettach) xml node from parent

   if (xmlnode==0) return;
   SXmlNode_t* node = (SXmlNode_t*) xmlnode;

   SXmlNode_t* parent = node->fParent;

   if (parent==0) return;

   if (parent->fChild==node) {
      parent->fChild = node->fNext;
      if (parent->fLastChild==node)
         parent->fLastChild = node->fNext;
   } else {
      SXmlNode_t* ch = parent->fChild;
      while (ch->fNext!=node) ch = ch->fNext;
      ch->fNext = node->fNext;
      if (parent->fLastChild == node)
         parent->fLastChild = ch;
   }
}

//______________________________________________________________________________
void TXMLEngine::FreeNode(XMLNodePointer_t xmlnode)
{
   // release all memory, allocated fro this node and
   // destroyes node itself

   if (xmlnode==0) return;
   SXmlNode_t* node = (SXmlNode_t*) xmlnode;

   SXmlNode_t* child = node->fChild;
   while (child!=0) {
      SXmlNode_t* next = child->fNext;
      FreeNode((XMLNodePointer_t)child);
      child = next;
   }

   SXmlAttr_t* attr = node->fAttr;
   while (attr!=0) {
      SXmlAttr_t* next = attr->fNext;
      //fNumNodes--;
      free(attr);
      attr = next;
   }

   //delete[] node->fName;
   // delete[] node->content;
   free(node);

   //fNumNodes--;
}

//______________________________________________________________________________
void TXMLEngine::UnlinkFreeNode(XMLNodePointer_t xmlnode)
{
   // combined operation. Unlink node and free used memory

   UnlinkNode(xmlnode);
   FreeNode(xmlnode);
}

//______________________________________________________________________________
const char* TXMLEngine::GetNodeName(XMLNodePointer_t xmlnode)
{
   // returns name of xmlnode

   return xmlnode==0 ? 0 : & (((SXmlNode_t*) xmlnode)->fName);
}

//______________________________________________________________________________
const char* TXMLEngine::GetNodeContent(XMLNodePointer_t xmlnode)
{
   // get contents (if any) of xml node

   if (xmlnode==0) return 0;
   SXmlNode_t* node = (SXmlNode_t*) xmlnode;
   if ((node->fChild==0) || (node->fChild->fName!=0)) return 0;
   return &(node->fChild->fName) + 1;
}

//______________________________________________________________________________
XMLNodePointer_t TXMLEngine::GetChild(XMLNodePointer_t xmlnode)
{
   // returns first child of xml node

   SXmlNode_t* res = xmlnode==0 ? 0 :((SXmlNode_t*) xmlnode)->fChild;
   // skip content node
   if ((res!=0) && (res->fName==0)) res = res->fNext;
   return (XMLNodePointer_t) res;
}

//______________________________________________________________________________
XMLNodePointer_t TXMLEngine::GetParent(XMLNodePointer_t xmlnode)
{
   // returns parent of xmlnode

   return xmlnode==0 ? 0 : (XMLNodePointer_t) ((SXmlNode_t*) xmlnode)->fParent;
}

//______________________________________________________________________________
XMLNodePointer_t TXMLEngine::GetNext(XMLNodePointer_t xmlnode)
{
   // return next to xmlnode node

   return xmlnode==0 ? 0 : (XMLNodePointer_t) ((SXmlNode_t*) xmlnode)->fNext;
}

//______________________________________________________________________________
void TXMLEngine::ShiftToNext(XMLNodePointer_t &xmlnode, bool tonode)
{
   // shifts specified node to next

   do {
      xmlnode = xmlnode==0 ? 0 : (XMLNodePointer_t) ((SXmlNode_t*) xmlnode)->fNext;
      if ((xmlnode==0) || !tonode) return;
      
   } while (((SXmlNode_t*) xmlnode)->fType != kXML_NODE);
}

//______________________________________________________________________________
Bool_t TXMLEngine::IsEmptyNode(XMLNodePointer_t xmlnode)
{
   // return kTRUE is this is node with special data like comments to data processing instructions 
   
   return xmlnode==0 ? kTRUE : (((SXmlNode_t*) xmlnode)->fType != kXML_NODE);
}

//______________________________________________________________________________
void TXMLEngine::SkipEmpty(XMLNodePointer_t &xmlnode)
{
   // Skip all current empty nodes and locate on first "true" node
   
   if (IsEmptyNode(xmlnode)) ShiftToNext(xmlnode);
}


//______________________________________________________________________________
void TXMLEngine::CleanNode(XMLNodePointer_t xmlnode)
{
   // remove all childs node from xmlnode

   if (xmlnode==0) return;
   SXmlNode_t* node = (SXmlNode_t*) xmlnode;

   SXmlNode_t* child = node->fChild;
   while (child!=0) {
      SXmlNode_t* next = child->fNext;
      FreeNode((XMLNodePointer_t)child);
      child = next;
   }

   node->fChild = 0;
   node->fLastChild = 0;
}

//______________________________________________________________________________
XMLDocPointer_t TXMLEngine::NewDoc(const char* version)
{
   // creates new xml document with provided version

   SXmlDoc_t* doc = new SXmlDoc_t;
   doc->fRootNode = (SXmlNode_t*) NewChild(0, 0, "??DummyTopNode??", 0);
   
   if (version!=0) {
      XMLNodePointer_t vernode = NewChild( (XMLNodePointer_t) doc->fRootNode, 0, "xml");
      ((SXmlNode_t*) vernode)->fType = kXML_PI_NODE;
      NewAttr(vernode, 0, "version", version);
   }
   
   doc->fDtdName = 0;
   doc->fDtdRoot = 0;
   return (XMLDocPointer_t) doc;
}

//______________________________________________________________________________
void TXMLEngine::AssignDtd(XMLDocPointer_t xmldoc, const char* dtdname, const char* rootname)
{
   // assignes dtd filename to document

   if (xmldoc==0) return;
   SXmlDoc_t* doc = (SXmlDoc_t*) xmldoc;
   delete[] doc->fDtdName;
   doc->fDtdName = Makestr(dtdname);
   delete[] doc->fDtdRoot;
   doc->fDtdRoot = Makestr(rootname);
}

//______________________________________________________________________________
void TXMLEngine::FreeDoc(XMLDocPointer_t xmldoc)
{
   // frees allocated document data and deletes document itself

   if (xmldoc==0) return;
   SXmlDoc_t* doc = (SXmlDoc_t*) xmldoc;
   FreeNode((XMLNodePointer_t) doc->fRootNode);
   delete[] doc->fDtdName;
   delete[] doc->fDtdRoot;
   delete doc;
}

//______________________________________________________________________________
void TXMLEngine::SaveDoc(XMLDocPointer_t xmldoc, const char* filename, Int_t layout)
{
   // store document content to file
   // if layout<=0, no any spaces or newlines will be placed between
   // xmlnodes. Xml file will have minimum size, but nonreadable structure
   // if (layout>0) each node will be started from new line,
   // and number of spaces will correspond to structure depth.

   if (xmldoc==0) return;

   SXmlDoc_t* doc = (SXmlDoc_t*) xmldoc;

   TXMLOutputStream out(filename, 100000);
   
   XMLNodePointer_t child = GetChild((XMLNodePointer_t) doc->fRootNode);
   
   do {
      SaveNode(child, &out, layout, 0);
      ShiftToNext(child, false);
   } while (child!=0);    
   
}

//______________________________________________________________________________
void TXMLEngine::DocSetRootElement(XMLDocPointer_t xmldoc, XMLNodePointer_t xmlnode)
{
   // set main (root) node for document

   if (xmldoc==0) return;
   
   FreeNode(DocGetRootElement(xmldoc));
   
   AddChild((XMLNodePointer_t) ((SXmlDoc_t*)xmldoc)->fRootNode, xmlnode);
}

//______________________________________________________________________________
XMLNodePointer_t TXMLEngine::DocGetRootElement(XMLDocPointer_t xmldoc)
{
   // returns root node of document

   if (xmldoc==0) return 0;
   
   XMLNodePointer_t xmlnode = (XMLNodePointer_t) ((SXmlDoc_t*)xmldoc)->fRootNode;
   
   xmlnode = GetChild(xmlnode);
   
   ShiftToNext(xmlnode);
   
   return xmlnode;
}

//______________________________________________________________________________
XMLDocPointer_t TXMLEngine::ParseFile(const char* filename)
{
   // parses content of file and tries to produce xml structures

   if ((filename==0) || (strlen(filename)==0)) return 0;
   TXMLInputStream inp(true, filename, 100000);

   XMLDocPointer_t xmldoc = NewDoc(0);
   
   bool success = false;
   
   Int_t resvalue = 0;
   
   do {
      ReadNode(((SXmlDoc_t*) xmldoc)->fRootNode, &inp, resvalue);
      
      if (resvalue!=2) break;

      if (!inp.EndOfStream()) inp.SkipSpaces();

      if (inp.EndOfStream()) {
         success = true; 
         break;
      }
   } while (true);
   
   if (!success) {
      DisplayError(resvalue, inp.CurrentLine());
      FreeDoc(xmldoc);
      return 0;
   }
   
   return xmldoc;
}

//______________________________________________________________________________
Bool_t TXMLEngine::ValidateVersion(XMLDocPointer_t xmldoc, const char* version)
{
   // check that first node is xml processing instruction with correct xml version number
    
   if (xmldoc==0) return kFALSE;

   XMLNodePointer_t vernode = GetChild((XMLNodePointer_t) ((SXmlDoc_t*) xmldoc)->fRootNode);
   if (vernode==0) return kFALSE;
   
   if (((SXmlNode_t*) vernode)->fType!=kXML_PI_NODE) return kFALSE;
   if (strcmp(GetNodeName(vernode), "xml")!=0) return kFALSE;
   
   const char* value = GetAttr(vernode,"version");
   if (value==0) return kFALSE; 
   if (version==0) version = "1.0";
   
   return strcmp(version,value)==0;
}

//______________________________________________________________________________
void TXMLEngine::SaveSingleNode(XMLNodePointer_t xmlnode, TString* res, Int_t layout)
{
   // convert single xml node (and its child node) to string 
   // if layout<=0, no any spaces or newlines will be placed between
   // xmlnodes. Xml file will have minimum size, but nonreadable structure
   // if (layout>0) each node will be started from new line,
   // and number of spaces will correspond to structure depth.
   
   if ((res==0) || (xmlnode==0)) return; 
   
   TXMLOutputStream out(res, 10000);

   SaveNode(xmlnode, &out, layout, 0);
}

//______________________________________________________________________________
XMLNodePointer_t TXMLEngine::ReadSingleNode(const char* src)
{
   // read snigle xml node from provided string
    
   if (src==0) return 0;
   
   TXMLInputStream inp(false, src, 10000);

   Int_t resvalue;

   XMLNodePointer_t xmlnode = ReadNode(0, &inp, resvalue);

   if (resvalue<=0) {
      DisplayError(resvalue, inp.CurrentLine());
      FreeNode(xmlnode);
      return 0;
   }
   
   return xmlnode; 
}

//______________________________________________________________________________
char* TXMLEngine::Makestr(const char* str)
{
   // creates char* variable with copy of provided string

   if (str==0) return 0;
   int len = strlen(str);
   if (len==0) return 0;
   char* res = new char[len+1];
   strcpy(res, str);
   return res;
}

//______________________________________________________________________________
char* TXMLEngine::Makenstr(const char* str, int len)
{
   // creates char* variable with copy of len symbols from provided string

   if ((str==0) || (len==0)) return 0;
   char* res = new char[len+1];
   strncpy(res, str, len);
   *(res+len) = 0;
   return res;
}

//______________________________________________________________________________
XMLNodePointer_t TXMLEngine::AllocateNode(int namelen, XMLNodePointer_t parent)
{
   // Allocates new xml node with specified namelength

   //fNumNodes++;

   SXmlNode_t* node = (SXmlNode_t*) malloc(sizeof(SXmlNode_t) + namelen);

   node->fType = kXML_NODE;
   node->fParent = 0;
   node->fNs = 0;
   node->fAttr = 0;
   node->fChild = 0;
   node->fLastChild = 0;
   node->fNext = 0;

   if (parent!=0)
      AddChild(parent, (XMLNodePointer_t) node);

   return (XMLNodePointer_t) node;
}

//______________________________________________________________________________
XMLAttrPointer_t TXMLEngine::AllocateAttr(int namelen, int valuelen, XMLNodePointer_t xmlnode)
{
   // Allocate new attribute with specified name length and value length

   //fNumNodes++;

   SXmlAttr_t* attr = (SXmlAttr_t*) malloc(sizeof(SXmlAttr_t) + namelen + valuelen + 1);

   SXmlNode_t* node = (SXmlNode_t*) xmlnode;

   attr->fNext = 0;

   if (node->fAttr==0)
      node->fAttr = attr;
   else {
      SXmlAttr_t* d = node->fAttr;
      while (d->fNext!=0) d = d->fNext;
      d->fNext = attr;
   }

   return (XMLAttrPointer_t) attr;
}

//______________________________________________________________________________
XMLNsPointer_t TXMLEngine::FindNs(XMLNodePointer_t xmlnode, const char* name)
{
   // define if namespace of that name exists for xmlnode

   SXmlNode_t* node = (SXmlNode_t*) xmlnode;
   while (node!=0) {
      if (node->fNs!=0) {
         const char* nsname = &(node->fNs->fName) + 6;
         if (strcmp(nsname, name)==0) return node->fNs;
      }
      node = node->fParent;
   }
   return 0;
}

//______________________________________________________________________________
void TXMLEngine::TruncateNsExtension(XMLNodePointer_t xmlnode)
{
   // removes namespace extension of nodename

   SXmlNode_t* node = (SXmlNode_t*) xmlnode;
   if (node==0) return;
   char* colon = strchr(&(node->fName),':');
   if (colon==0) return;

   char* copyname = &(node->fName);

   while (*colon!=0)
     *(copyname++) = *(++colon);
}

//______________________________________________________________________________
void TXMLEngine::UnpackSpecialCharacters(char* target, const char* source, int srclen)
{
   // unpack special symbols, used in xml syntax to code characters
   // these symbols: '<' - &lt, '>' - &gt, '&' - &amp, '"' - &quot

   while (srclen>0) {
      if (*source=='&') {
         if ((*(source+1)=='l') && (*(source+2)=='t') && (*(source+3)==';')) {
            *target++ = '<'; source+=4; srclen-=4;
         } else
         if ((*(source+1)=='g') && (*(source+2)=='t') && (*(source+3)==';')) {
            *target++ = '>'; source+=4; srclen-=4;
         } else
         if ((*(source+1)=='a') && (*(source+2)=='m') && (*(source+3)=='p') && (*(source+4)==';')) {
            *target++ = '&'; source+=5; srclen-=5;
         } else
         if ((*(source+1)=='q') && (*(source+2)=='u') && (*(source+3)=='o') && (*(source+4)=='t') && (*(source+5)==';')) {
            *target++ = '\"'; source+=6; srclen-=6;
         } else {
            *target++ = *source++; srclen--;
         }
      } else {
         *target++ = *source++;
         srclen--;
      }
   }
   *target = 0;
}

//______________________________________________________________________________
void TXMLEngine::OutputValue(char* value, TXMLOutputStream* out)
{
   // output value to output stream
   // if symbols '<' '&' '>' '"' appears in the string, they
   // will be encoded to appropriate xml symbols: &lt, &amp, &gt, &quot

   if (value==0) return;

   char* last = value;
   char* find = 0;
   while ((find=strpbrk(last,"<&>\"")) !=0 ) {
      char symb = *find;
      *find = 0;
      out->Write(last);
      *find = symb;
      last = find+1;
      if (symb=='<')      out->Write("&lt;"); 
      else if (symb=='>') out->Write("&gt;"); 
      else if (symb=='&') out->Write("&amp;"); 
      else                out->Write("&quot;");
   }
   if (*last!=0)
      out->Write(last);
}

//______________________________________________________________________________
void TXMLEngine::SaveNode(XMLNodePointer_t xmlnode, TXMLOutputStream* out, Int_t layout, Int_t level)
{
   // stream data of xmlnode to output

   if (xmlnode==0) return;
   SXmlNode_t* node = (SXmlNode_t*) xmlnode;

   // this is output for content
   if (node->fName==0) {
      out->Write(&(node->fName)+1);
      return;
   }
   
   Bool_t issingleline = (node->fChild==0);

   if (layout>0) out->Put(' ', level);

   if (node->fType==kXML_COMMENT) {
      out->Write("<!--");
      out->Write(&(node->fName));
      out->Write("-->");
      if (layout>0) out->Put('\n');
      return;
   } else
   if (node->fType==kXML_RAWLINE) {
      out->Write(&(node->fName));
      if (layout>0) out->Put('\n');
      return; 
   }

   out->Put('<');
   if (node->fType==kXML_PI_NODE) out->Put('?');
   
   // we suppose that ns is always first attribute
   if ((node->fNs!=0) && (node->fNs!=node->fAttr)) {
      out->Write(&(node->fNs->fName)+6);
      out->Put(':');
   }
   out->Write(&(node->fName));

   SXmlAttr_t* attr = node->fAttr;
   while (attr!=0) {
      out->Put(' ');
      char* attrname = &(attr->fName);
      out->Write(attrname);
      out->Write("=\"");
      attrname += strlen(attrname) + 1;
      OutputValue(attrname, out);
      out->Put('\"');
      attr = attr->fNext;
   }

   // if single line, close node with "/>" and return
   if (issingleline) {
      if (node->fType==kXML_PI_NODE) out->Write("?>");
                              else out->Write("/>");
      if (layout>0) out->Put('\n');
      return;
   }
   
   out->Put('>');
   
   // go to next line only if no content inside
   const char* content = GetNodeContent(xmlnode);
   if ((content==0) && (layout>0)) 
      out->Put('\n');

   if (content!=0) out->Write(content);
      
   SXmlNode_t* child = (SXmlNode_t*) GetChild(xmlnode);
   while (child!=0) {
      if (content!=0) {
         content = 0;
         if (layout>0) out->Put('\n');
      }
      SaveNode((XMLNodePointer_t) child, out, layout, level+2);
      child = child->fNext;
   }

   // add starting spaces 
   if ((content==0) && (layout>0)) out->Put(' ',level);
   
   out->Write("</");
   // we suppose that ns is always first attribute
   if ((node->fNs!=0) && (node->fNs!=node->fAttr)) {
      out->Write(&(node->fNs->fName)+6);
      out->Put(':');
   }
   out->Write(&(node->fName));
   out->Put('>');
   if (layout>0) out->Put('\n');
}

//______________________________________________________________________________
XMLNodePointer_t TXMLEngine::ReadNode(XMLNodePointer_t xmlparent, TXMLInputStream* inp, Int_t& resvalue)
{
   // Tries to construct xml node from input stream. Node should be
   // child of xmlparent node or it can be closing tag of xmlparent.
   // resvalue <= 0 if error
   // resvalue == 1 if this is endnode of parent
   // resvalue == 2 if this is child

   resvalue = 0;

   if (inp==0) return 0;
   if (!inp->SkipSpaces()) { resvalue = -1; return 0; }
   SXmlNode_t* parent = (SXmlNode_t*) xmlparent;

   SXmlNode_t* node = 0;

   // process comments before we start to analyse any node symbols   
   while (inp->CheckFor("<!--")) {
      Int_t commentlen = inp->SearchFor("-->");
      if (commentlen<=0) { resvalue = -10; return 0; }

      node = (SXmlNode_t*) AllocateNode(commentlen, xmlparent);
      char* nameptr = &(node->fName);
      node->fType = kXML_COMMENT;
      strncpy(nameptr, inp->fCurrent, commentlen);
      nameptr+=commentlen;
      *nameptr = 0;
      
      if (!inp->ShiftCurrent(commentlen+3)) { resvalue = -1; return node; }
      if (!inp->SkipSpaces()) { resvalue = -1; return node; }
      resvalue = 2;
      
      return node;
   }

   if (*inp->fCurrent!='<') {
      // here should be reading of element content
      // only one entry for content is supported, only before any other childs
      if ((parent==0) || (parent->fChild!=0)) { resvalue = -2; return 0; }
      int contlen = inp->LocateContent();
      if (contlen<0) return 0;

      SXmlNode_t* contnode = (SXmlNode_t*) AllocateNode(contlen+1, xmlparent);
      char* contptr = &(contnode->fName);
      *contptr = 0;
      contptr++;
      UnpackSpecialCharacters(contptr, inp->fCurrent, contlen);
      if (!inp->ShiftCurrent(contlen)) return 0;
      resvalue = 2;
      return contnode;
   } else
      // skip "<" symbol
      if (!inp->ShiftCurrent()) return 0;

   if (*inp->fCurrent=='/') {
      // this is a starting of closing node
      if (!inp->ShiftCurrent()) return 0;
      if (!inp->SkipSpaces()) return 0;
      Int_t len = inp->LocateIdentifier();
      if (len<=0) { resvalue = -3; return 0; }

      if (parent==0) { resvalue = -4; return 0; }

      if (strncmp(&(parent->fName), inp->fCurrent, len)!=0) {
         resvalue = -5;
         return 0;
      }

      if (!inp->ShiftCurrent(len)) return 0;

      if (!inp->SkipSpaces())   return 0;
      if (*inp->fCurrent!='>')  return 0;
      if (!inp->ShiftCurrent()) return 0;

      if (parent->fNs!=0)
         TruncateNsExtension((XMLNodePointer_t)parent);

      inp->SkipSpaces(kTRUE); // locate start of next string
      resvalue = 1;
      return 0;
   }
   
   EXmlNodeType nodetype = kXML_NODE;
   bool canhaschilds = true;
   char endsymbol = '/';
   
   // this is case of processing instructions node
   if (*inp->fCurrent=='?') {
      if (!inp->ShiftCurrent()) return 0;
      nodetype = kXML_PI_NODE;
      canhaschilds = false;
      endsymbol = '?';
   }

   if (!inp->SkipSpaces()) return 0;
   Int_t len = inp->LocateIdentifier();
   if (len<=0) return 0;
   node = (SXmlNode_t*) AllocateNode(len, xmlparent);
   char* nameptr = &(node->fName);
   node->fType = nodetype;

   strncpy(nameptr, inp->fCurrent, len);
   nameptr+=len;
   *nameptr = 0;
   
   char* colon = strchr(&(node->fName),':');
   if ((colon!=0) && (parent!=0)) {
      *colon = 0;
      node->fNs = (SXmlAttr_t*) FindNs(xmlparent, &(node->fName));
      *colon =':';
   }

   if (!inp->ShiftCurrent(len)) return 0;

   do {
      if (!inp->SkipSpaces()) return 0;

      char nextsymb = *inp->fCurrent;

      if (nextsymb==endsymbol) {  // this is end of short node like <node ... />
         if (!inp->ShiftCurrent()) return 0;
         if (*inp->fCurrent=='>') {
            if (!inp->ShiftCurrent()) return 0;

            if (node->fNs!=0)
               TruncateNsExtension((XMLNodePointer_t) node);

            inp->SkipSpaces(kTRUE); // locate start of next string
            resvalue = 2;
            return node;
         } else return 0;
      } else
      if (nextsymb=='>') { // this is end of parent node, lets find all childs
         if (!canhaschilds) { resvalue = -11; return 0; }

         if (!inp->ShiftCurrent()) return 0;

         do {
            ReadNode(node, inp, resvalue);
         } while (resvalue==2);

         if (resvalue==1) {
            resvalue = 2;
            return node;
         } else return 0;
      } else {
         Int_t attrlen = inp->LocateIdentifier();
         if (attrlen<=0) { resvalue = -6; return 0; }

         char* valuestart = inp->fCurrent+attrlen;

         int valuelen = inp->LocateAttributeValue(valuestart);
         if (valuelen<3) { resvalue = -7; return 0; }

         SXmlAttr_t* attr = (SXmlAttr_t*) AllocateAttr(attrlen, valuelen-3, (XMLNodePointer_t) node);

         char* attrname = &(attr->fName);
         strncpy(attrname, inp->fCurrent, attrlen);
         attrname+=attrlen;
         *attrname = 0;
         attrname++;
         UnpackSpecialCharacters(attrname, valuestart+2, valuelen-3);

         if (!inp->ShiftCurrent(attrlen+valuelen)) return 0;

         attrname = &(attr->fName);

         if ((strlen(attrname)>6) && (strstr(attrname,"xmlns:")==attrname)) {
            if (strcmp(&(node->fName), attrname + 6)!=0) {
               resvalue = -8;
               //return 0;
            }
            if (node->fNs!=0) {
               resvalue = -9;
               //return 0;
            }
            node->fNs = attr;
         }
      }
   } while (true);

   return 0;
}

//______________________________________________________________________________
void TXMLEngine::DisplayError(Int_t error, Int_t linenumber)
{
   // Dsiplays error, occured during parsing of xml file
   switch(error) {
      case -11: Error("ParseFile", "Node cannot be closed with > symbol at line %d, for instance <?xml ... ?> node", linenumber); break;
      case -10: Error("ParseFile", "Error in xml comments definition at line %d, must be <!-- comments -->", linenumber); break;
      case -9: Error("ParseFile", "Multiple name space definitions not allowed, line %d", linenumber); break;
      case -8: Error("ParseFile", "Invalid namespace specification, line %d", linenumber); break;
      case -7: Error("ParseFile", "Invalid attribute value, line %d", linenumber); break;
      case -6: Error("ParseFile", "Invalid identifier for node attribute, line %d", linenumber); break;
      case -5: Error("ParseFile", "Missmatch between open and close nodes, line %d", linenumber); break;
      case -4: Error("ParseFile", "Unexpected close node, line %d", linenumber); break;
      case -3: Error("ParseFile", "Valid identifier for close node is missing, line %d", linenumber); break;
      case -2: Error("ParseFile", "No multiple content entries allowed, line %d", linenumber); break;
      case -1: Error("ParseFile", "Unexpected end of xml file"); break;
      default: Error("ParseFile", "XML syntax error at line %d", linenumber); break;
   }
   
}

 TXMLEngine.cxx:1
 TXMLEngine.cxx:2
 TXMLEngine.cxx:3
 TXMLEngine.cxx:4
 TXMLEngine.cxx:5
 TXMLEngine.cxx:6
 TXMLEngine.cxx:7
 TXMLEngine.cxx:8
 TXMLEngine.cxx:9
 TXMLEngine.cxx:10
 TXMLEngine.cxx:11
 TXMLEngine.cxx:12
 TXMLEngine.cxx:13
 TXMLEngine.cxx:14
 TXMLEngine.cxx:15
 TXMLEngine.cxx:16
 TXMLEngine.cxx:17
 TXMLEngine.cxx:18
 TXMLEngine.cxx:19
 TXMLEngine.cxx:20
 TXMLEngine.cxx:21
 TXMLEngine.cxx:22
 TXMLEngine.cxx:23
 TXMLEngine.cxx:24
 TXMLEngine.cxx:25
 TXMLEngine.cxx:26
 TXMLEngine.cxx:27
 TXMLEngine.cxx:28
 TXMLEngine.cxx:29
 TXMLEngine.cxx:30
 TXMLEngine.cxx:31
 TXMLEngine.cxx:32
 TXMLEngine.cxx:33
 TXMLEngine.cxx:34
 TXMLEngine.cxx:35
 TXMLEngine.cxx:36
 TXMLEngine.cxx:37
 TXMLEngine.cxx:38
 TXMLEngine.cxx:39
 TXMLEngine.cxx:40
 TXMLEngine.cxx:41
 TXMLEngine.cxx:42
 TXMLEngine.cxx:43
 TXMLEngine.cxx:44
 TXMLEngine.cxx:45
 TXMLEngine.cxx:46
 TXMLEngine.cxx:47
 TXMLEngine.cxx:48
 TXMLEngine.cxx:49
 TXMLEngine.cxx:50
 TXMLEngine.cxx:51
 TXMLEngine.cxx:52
 TXMLEngine.cxx:53
 TXMLEngine.cxx:54
 TXMLEngine.cxx:55
 TXMLEngine.cxx:56
 TXMLEngine.cxx:57
 TXMLEngine.cxx:58
 TXMLEngine.cxx:59
 TXMLEngine.cxx:60
 TXMLEngine.cxx:61
 TXMLEngine.cxx:62
 TXMLEngine.cxx:63
 TXMLEngine.cxx:64
 TXMLEngine.cxx:65
 TXMLEngine.cxx:66
 TXMLEngine.cxx:67
 TXMLEngine.cxx:68
 TXMLEngine.cxx:69
 TXMLEngine.cxx:70
 TXMLEngine.cxx:71
 TXMLEngine.cxx:72
 TXMLEngine.cxx:73
 TXMLEngine.cxx:74
 TXMLEngine.cxx:75
 TXMLEngine.cxx:76
 TXMLEngine.cxx:77
 TXMLEngine.cxx:78
 TXMLEngine.cxx:79
 TXMLEngine.cxx:80
 TXMLEngine.cxx:81
 TXMLEngine.cxx:82
 TXMLEngine.cxx:83
 TXMLEngine.cxx:84
 TXMLEngine.cxx:85
 TXMLEngine.cxx:86
 TXMLEngine.cxx:87
 TXMLEngine.cxx:88
 TXMLEngine.cxx:89
 TXMLEngine.cxx:90
 TXMLEngine.cxx:91
 TXMLEngine.cxx:92
 TXMLEngine.cxx:93
 TXMLEngine.cxx:94
 TXMLEngine.cxx:95
 TXMLEngine.cxx:96
 TXMLEngine.cxx:97
 TXMLEngine.cxx:98
 TXMLEngine.cxx:99
 TXMLEngine.cxx:100
 TXMLEngine.cxx:101
 TXMLEngine.cxx:102
 TXMLEngine.cxx:103
 TXMLEngine.cxx:104
 TXMLEngine.cxx:105
 TXMLEngine.cxx:106
 TXMLEngine.cxx:107
 TXMLEngine.cxx:108
 TXMLEngine.cxx:109
 TXMLEngine.cxx:110
 TXMLEngine.cxx:111
 TXMLEngine.cxx:112
 TXMLEngine.cxx:113
 TXMLEngine.cxx:114
 TXMLEngine.cxx:115
 TXMLEngine.cxx:116
 TXMLEngine.cxx:117
 TXMLEngine.cxx:118
 TXMLEngine.cxx:119
 TXMLEngine.cxx:120
 TXMLEngine.cxx:121
 TXMLEngine.cxx:122
 TXMLEngine.cxx:123
 TXMLEngine.cxx:124
 TXMLEngine.cxx:125
 TXMLEngine.cxx:126
 TXMLEngine.cxx:127
 TXMLEngine.cxx:128
 TXMLEngine.cxx:129
 TXMLEngine.cxx:130
 TXMLEngine.cxx:131
 TXMLEngine.cxx:132
 TXMLEngine.cxx:133
 TXMLEngine.cxx:134
 TXMLEngine.cxx:135
 TXMLEngine.cxx:136
 TXMLEngine.cxx:137
 TXMLEngine.cxx:138
 TXMLEngine.cxx:139
 TXMLEngine.cxx:140
 TXMLEngine.cxx:141
 TXMLEngine.cxx:142
 TXMLEngine.cxx:143
 TXMLEngine.cxx:144
 TXMLEngine.cxx:145
 TXMLEngine.cxx:146
 TXMLEngine.cxx:147
 TXMLEngine.cxx:148
 TXMLEngine.cxx:149
 TXMLEngine.cxx:150
 TXMLEngine.cxx:151
 TXMLEngine.cxx:152
 TXMLEngine.cxx:153
 TXMLEngine.cxx:154
 TXMLEngine.cxx:155
 TXMLEngine.cxx:156
 TXMLEngine.cxx:157
 TXMLEngine.cxx:158
 TXMLEngine.cxx:159
 TXMLEngine.cxx:160
 TXMLEngine.cxx:161
 TXMLEngine.cxx:162
 TXMLEngine.cxx:163
 TXMLEngine.cxx:164
 TXMLEngine.cxx:165
 TXMLEngine.cxx:166
 TXMLEngine.cxx:167
 TXMLEngine.cxx:168
 TXMLEngine.cxx:169
 TXMLEngine.cxx:170
 TXMLEngine.cxx:171
 TXMLEngine.cxx:172
 TXMLEngine.cxx:173
 TXMLEngine.cxx:174
 TXMLEngine.cxx:175
 TXMLEngine.cxx:176
 TXMLEngine.cxx:177
 TXMLEngine.cxx:178
 TXMLEngine.cxx:179
 TXMLEngine.cxx:180
 TXMLEngine.cxx:181
 TXMLEngine.cxx:182
 TXMLEngine.cxx:183
 TXMLEngine.cxx:184
 TXMLEngine.cxx:185
 TXMLEngine.cxx:186
 TXMLEngine.cxx:187
 TXMLEngine.cxx:188
 TXMLEngine.cxx:189
 TXMLEngine.cxx:190
 TXMLEngine.cxx:191
 TXMLEngine.cxx:192
 TXMLEngine.cxx:193
 TXMLEngine.cxx:194
 TXMLEngine.cxx:195
 TXMLEngine.cxx:196
 TXMLEngine.cxx:197
 TXMLEngine.cxx:198
 TXMLEngine.cxx:199
 TXMLEngine.cxx:200
 TXMLEngine.cxx:201
 TXMLEngine.cxx:202
 TXMLEngine.cxx:203
 TXMLEngine.cxx:204
 TXMLEngine.cxx:205
 TXMLEngine.cxx:206
 TXMLEngine.cxx:207
 TXMLEngine.cxx:208
 TXMLEngine.cxx:209
 TXMLEngine.cxx:210
 TXMLEngine.cxx:211
 TXMLEngine.cxx:212
 TXMLEngine.cxx:213
 TXMLEngine.cxx:214
 TXMLEngine.cxx:215
 TXMLEngine.cxx:216
 TXMLEngine.cxx:217
 TXMLEngine.cxx:218
 TXMLEngine.cxx:219
 TXMLEngine.cxx:220
 TXMLEngine.cxx:221
 TXMLEngine.cxx:222
 TXMLEngine.cxx:223
 TXMLEngine.cxx:224
 TXMLEngine.cxx:225
 TXMLEngine.cxx:226
 TXMLEngine.cxx:227
 TXMLEngine.cxx:228
 TXMLEngine.cxx:229
 TXMLEngine.cxx:230
 TXMLEngine.cxx:231
 TXMLEngine.cxx:232
 TXMLEngine.cxx:233
 TXMLEngine.cxx:234
 TXMLEngine.cxx:235
 TXMLEngine.cxx:236
 TXMLEngine.cxx:237
 TXMLEngine.cxx:238
 TXMLEngine.cxx:239
 TXMLEngine.cxx:240
 TXMLEngine.cxx:241
 TXMLEngine.cxx:242
 TXMLEngine.cxx:243
 TXMLEngine.cxx:244
 TXMLEngine.cxx:245
 TXMLEngine.cxx:246
 TXMLEngine.cxx:247
 TXMLEngine.cxx:248
 TXMLEngine.cxx:249
 TXMLEngine.cxx:250
 TXMLEngine.cxx:251
 TXMLEngine.cxx:252
 TXMLEngine.cxx:253
 TXMLEngine.cxx:254
 TXMLEngine.cxx:255
 TXMLEngine.cxx:256
 TXMLEngine.cxx:257
 TXMLEngine.cxx:258
 TXMLEngine.cxx:259
 TXMLEngine.cxx:260
 TXMLEngine.cxx:261
 TXMLEngine.cxx:262
 TXMLEngine.cxx:263
 TXMLEngine.cxx:264
 TXMLEngine.cxx:265
 TXMLEngine.cxx:266
 TXMLEngine.cxx:267
 TXMLEngine.cxx:268
 TXMLEngine.cxx:269
 TXMLEngine.cxx:270
 TXMLEngine.cxx:271
 TXMLEngine.cxx:272
 TXMLEngine.cxx:273
 TXMLEngine.cxx:274
 TXMLEngine.cxx:275
 TXMLEngine.cxx:276
 TXMLEngine.cxx:277
 TXMLEngine.cxx:278
 TXMLEngine.cxx:279
 TXMLEngine.cxx:280
 TXMLEngine.cxx:281
 TXMLEngine.cxx:282
 TXMLEngine.cxx:283
 TXMLEngine.cxx:284
 TXMLEngine.cxx:285
 TXMLEngine.cxx:286
 TXMLEngine.cxx:287
 TXMLEngine.cxx:288
 TXMLEngine.cxx:289
 TXMLEngine.cxx:290
 TXMLEngine.cxx:291
 TXMLEngine.cxx:292
 TXMLEngine.cxx:293
 TXMLEngine.cxx:294
 TXMLEngine.cxx:295
 TXMLEngine.cxx:296
 TXMLEngine.cxx:297
 TXMLEngine.cxx:298
 TXMLEngine.cxx:299
 TXMLEngine.cxx:300
 TXMLEngine.cxx:301
 TXMLEngine.cxx:302
 TXMLEngine.cxx:303
 TXMLEngine.cxx:304
 TXMLEngine.cxx:305
 TXMLEngine.cxx:306
 TXMLEngine.cxx:307
 TXMLEngine.cxx:308
 TXMLEngine.cxx:309
 TXMLEngine.cxx:310
 TXMLEngine.cxx:311
 TXMLEngine.cxx:312
 TXMLEngine.cxx:313
 TXMLEngine.cxx:314
 TXMLEngine.cxx:315
 TXMLEngine.cxx:316
 TXMLEngine.cxx:317
 TXMLEngine.cxx:318
 TXMLEngine.cxx:319
 TXMLEngine.cxx:320
 TXMLEngine.cxx:321
 TXMLEngine.cxx:322
 TXMLEngine.cxx:323
 TXMLEngine.cxx:324
 TXMLEngine.cxx:325
 TXMLEngine.cxx:326
 TXMLEngine.cxx:327
 TXMLEngine.cxx:328
 TXMLEngine.cxx:329
 TXMLEngine.cxx:330
 TXMLEngine.cxx:331
 TXMLEngine.cxx:332
 TXMLEngine.cxx:333
 TXMLEngine.cxx:334
 TXMLEngine.cxx:335
 TXMLEngine.cxx:336
 TXMLEngine.cxx:337
 TXMLEngine.cxx:338
 TXMLEngine.cxx:339
 TXMLEngine.cxx:340
 TXMLEngine.cxx:341
 TXMLEngine.cxx:342
 TXMLEngine.cxx:343
 TXMLEngine.cxx:344
 TXMLEngine.cxx:345
 TXMLEngine.cxx:346
 TXMLEngine.cxx:347
 TXMLEngine.cxx:348
 TXMLEngine.cxx:349
 TXMLEngine.cxx:350
 TXMLEngine.cxx:351
 TXMLEngine.cxx:352
 TXMLEngine.cxx:353
 TXMLEngine.cxx:354
 TXMLEngine.cxx:355
 TXMLEngine.cxx:356
 TXMLEngine.cxx:357
 TXMLEngine.cxx:358
 TXMLEngine.cxx:359
 TXMLEngine.cxx:360
 TXMLEngine.cxx:361
 TXMLEngine.cxx:362
 TXMLEngine.cxx:363
 TXMLEngine.cxx:364
 TXMLEngine.cxx:365
 TXMLEngine.cxx:366
 TXMLEngine.cxx:367
 TXMLEngine.cxx:368
 TXMLEngine.cxx:369
 TXMLEngine.cxx:370
 TXMLEngine.cxx:371
 TXMLEngine.cxx:372
 TXMLEngine.cxx:373
 TXMLEngine.cxx:374
 TXMLEngine.cxx:375
 TXMLEngine.cxx:376
 TXMLEngine.cxx:377
 TXMLEngine.cxx:378
 TXMLEngine.cxx:379
 TXMLEngine.cxx:380
 TXMLEngine.cxx:381
 TXMLEngine.cxx:382
 TXMLEngine.cxx:383
 TXMLEngine.cxx:384
 TXMLEngine.cxx:385
 TXMLEngine.cxx:386
 TXMLEngine.cxx:387
 TXMLEngine.cxx:388
 TXMLEngine.cxx:389
 TXMLEngine.cxx:390
 TXMLEngine.cxx:391
 TXMLEngine.cxx:392
 TXMLEngine.cxx:393
 TXMLEngine.cxx:394
 TXMLEngine.cxx:395
 TXMLEngine.cxx:396
 TXMLEngine.cxx:397
 TXMLEngine.cxx:398
 TXMLEngine.cxx:399
 TXMLEngine.cxx:400
 TXMLEngine.cxx:401
 TXMLEngine.cxx:402
 TXMLEngine.cxx:403
 TXMLEngine.cxx:404
 TXMLEngine.cxx:405
 TXMLEngine.cxx:406
 TXMLEngine.cxx:407
 TXMLEngine.cxx:408
 TXMLEngine.cxx:409
 TXMLEngine.cxx:410
 TXMLEngine.cxx:411
 TXMLEngine.cxx:412
 TXMLEngine.cxx:413
 TXMLEngine.cxx:414
 TXMLEngine.cxx:415
 TXMLEngine.cxx:416
 TXMLEngine.cxx:417
 TXMLEngine.cxx:418
 TXMLEngine.cxx:419
 TXMLEngine.cxx:420
 TXMLEngine.cxx:421
 TXMLEngine.cxx:422
 TXMLEngine.cxx:423
 TXMLEngine.cxx:424
 TXMLEngine.cxx:425
 TXMLEngine.cxx:426
 TXMLEngine.cxx:427
 TXMLEngine.cxx:428
 TXMLEngine.cxx:429
 TXMLEngine.cxx:430
 TXMLEngine.cxx:431
 TXMLEngine.cxx:432
 TXMLEngine.cxx:433
 TXMLEngine.cxx:434
 TXMLEngine.cxx:435
 TXMLEngine.cxx:436
 TXMLEngine.cxx:437
 TXMLEngine.cxx:438
 TXMLEngine.cxx:439
 TXMLEngine.cxx:440
 TXMLEngine.cxx:441
 TXMLEngine.cxx:442
 TXMLEngine.cxx:443
 TXMLEngine.cxx:444
 TXMLEngine.cxx:445
 TXMLEngine.cxx:446
 TXMLEngine.cxx:447
 TXMLEngine.cxx:448
 TXMLEngine.cxx:449
 TXMLEngine.cxx:450
 TXMLEngine.cxx:451
 TXMLEngine.cxx:452
 TXMLEngine.cxx:453
 TXMLEngine.cxx:454
 TXMLEngine.cxx:455
 TXMLEngine.cxx:456
 TXMLEngine.cxx:457
 TXMLEngine.cxx:458
 TXMLEngine.cxx:459
 TXMLEngine.cxx:460
 TXMLEngine.cxx:461
 TXMLEngine.cxx:462
 TXMLEngine.cxx:463
 TXMLEngine.cxx:464
 TXMLEngine.cxx:465
 TXMLEngine.cxx:466
 TXMLEngine.cxx:467
 TXMLEngine.cxx:468
 TXMLEngine.cxx:469
 TXMLEngine.cxx:470
 TXMLEngine.cxx:471
 TXMLEngine.cxx:472
 TXMLEngine.cxx:473
 TXMLEngine.cxx:474
 TXMLEngine.cxx:475
 TXMLEngine.cxx:476
 TXMLEngine.cxx:477
 TXMLEngine.cxx:478
 TXMLEngine.cxx:479
 TXMLEngine.cxx:480
 TXMLEngine.cxx:481
 TXMLEngine.cxx:482
 TXMLEngine.cxx:483
 TXMLEngine.cxx:484
 TXMLEngine.cxx:485
 TXMLEngine.cxx:486
 TXMLEngine.cxx:487
 TXMLEngine.cxx:488
 TXMLEngine.cxx:489
 TXMLEngine.cxx:490
 TXMLEngine.cxx:491
 TXMLEngine.cxx:492
 TXMLEngine.cxx:493
 TXMLEngine.cxx:494
 TXMLEngine.cxx:495
 TXMLEngine.cxx:496
 TXMLEngine.cxx:497
 TXMLEngine.cxx:498
 TXMLEngine.cxx:499
 TXMLEngine.cxx:500
 TXMLEngine.cxx:501
 TXMLEngine.cxx:502
 TXMLEngine.cxx:503
 TXMLEngine.cxx:504
 TXMLEngine.cxx:505
 TXMLEngine.cxx:506
 TXMLEngine.cxx:507
 TXMLEngine.cxx:508
 TXMLEngine.cxx:509
 TXMLEngine.cxx:510
 TXMLEngine.cxx:511
 TXMLEngine.cxx:512
 TXMLEngine.cxx:513
 TXMLEngine.cxx:514
 TXMLEngine.cxx:515
 TXMLEngine.cxx:516
 TXMLEngine.cxx:517
 TXMLEngine.cxx:518
 TXMLEngine.cxx:519
 TXMLEngine.cxx:520
 TXMLEngine.cxx:521
 TXMLEngine.cxx:522
 TXMLEngine.cxx:523
 TXMLEngine.cxx:524
 TXMLEngine.cxx:525
 TXMLEngine.cxx:526
 TXMLEngine.cxx:527
 TXMLEngine.cxx:528
 TXMLEngine.cxx:529
 TXMLEngine.cxx:530
 TXMLEngine.cxx:531
 TXMLEngine.cxx:532
 TXMLEngine.cxx:533
 TXMLEngine.cxx:534
 TXMLEngine.cxx:535
 TXMLEngine.cxx:536
 TXMLEngine.cxx:537
 TXMLEngine.cxx:538
 TXMLEngine.cxx:539
 TXMLEngine.cxx:540
 TXMLEngine.cxx:541
 TXMLEngine.cxx:542
 TXMLEngine.cxx:543
 TXMLEngine.cxx:544
 TXMLEngine.cxx:545
 TXMLEngine.cxx:546
 TXMLEngine.cxx:547
 TXMLEngine.cxx:548
 TXMLEngine.cxx:549
 TXMLEngine.cxx:550
 TXMLEngine.cxx:551
 TXMLEngine.cxx:552
 TXMLEngine.cxx:553
 TXMLEngine.cxx:554
 TXMLEngine.cxx:555
 TXMLEngine.cxx:556
 TXMLEngine.cxx:557
 TXMLEngine.cxx:558
 TXMLEngine.cxx:559
 TXMLEngine.cxx:560
 TXMLEngine.cxx:561
 TXMLEngine.cxx:562
 TXMLEngine.cxx:563
 TXMLEngine.cxx:564
 TXMLEngine.cxx:565
 TXMLEngine.cxx:566
 TXMLEngine.cxx:567
 TXMLEngine.cxx:568
 TXMLEngine.cxx:569
 TXMLEngine.cxx:570
 TXMLEngine.cxx:571
 TXMLEngine.cxx:572
 TXMLEngine.cxx:573
 TXMLEngine.cxx:574
 TXMLEngine.cxx:575
 TXMLEngine.cxx:576
 TXMLEngine.cxx:577
 TXMLEngine.cxx:578
 TXMLEngine.cxx:579
 TXMLEngine.cxx:580
 TXMLEngine.cxx:581
 TXMLEngine.cxx:582
 TXMLEngine.cxx:583
 TXMLEngine.cxx:584
 TXMLEngine.cxx:585
 TXMLEngine.cxx:586
 TXMLEngine.cxx:587
 TXMLEngine.cxx:588
 TXMLEngine.cxx:589
 TXMLEngine.cxx:590
 TXMLEngine.cxx:591
 TXMLEngine.cxx:592
 TXMLEngine.cxx:593
 TXMLEngine.cxx:594
 TXMLEngine.cxx:595
 TXMLEngine.cxx:596
 TXMLEngine.cxx:597
 TXMLEngine.cxx:598
 TXMLEngine.cxx:599
 TXMLEngine.cxx:600
 TXMLEngine.cxx:601
 TXMLEngine.cxx:602
 TXMLEngine.cxx:603
 TXMLEngine.cxx:604
 TXMLEngine.cxx:605
 TXMLEngine.cxx:606
 TXMLEngine.cxx:607
 TXMLEngine.cxx:608
 TXMLEngine.cxx:609
 TXMLEngine.cxx:610
 TXMLEngine.cxx:611
 TXMLEngine.cxx:612
 TXMLEngine.cxx:613
 TXMLEngine.cxx:614
 TXMLEngine.cxx:615
 TXMLEngine.cxx:616
 TXMLEngine.cxx:617
 TXMLEngine.cxx:618
 TXMLEngine.cxx:619
 TXMLEngine.cxx:620
 TXMLEngine.cxx:621
 TXMLEngine.cxx:622
 TXMLEngine.cxx:623
 TXMLEngine.cxx:624
 TXMLEngine.cxx:625
 TXMLEngine.cxx:626
 TXMLEngine.cxx:627
 TXMLEngine.cxx:628
 TXMLEngine.cxx:629
 TXMLEngine.cxx:630
 TXMLEngine.cxx:631
 TXMLEngine.cxx:632
 TXMLEngine.cxx:633
 TXMLEngine.cxx:634
 TXMLEngine.cxx:635
 TXMLEngine.cxx:636
 TXMLEngine.cxx:637
 TXMLEngine.cxx:638
 TXMLEngine.cxx:639
 TXMLEngine.cxx:640
 TXMLEngine.cxx:641
 TXMLEngine.cxx:642
 TXMLEngine.cxx:643
 TXMLEngine.cxx:644
 TXMLEngine.cxx:645
 TXMLEngine.cxx:646
 TXMLEngine.cxx:647
 TXMLEngine.cxx:648
 TXMLEngine.cxx:649
 TXMLEngine.cxx:650
 TXMLEngine.cxx:651
 TXMLEngine.cxx:652
 TXMLEngine.cxx:653
 TXMLEngine.cxx:654
 TXMLEngine.cxx:655
 TXMLEngine.cxx:656
 TXMLEngine.cxx:657
 TXMLEngine.cxx:658
 TXMLEngine.cxx:659
 TXMLEngine.cxx:660
 TXMLEngine.cxx:661
 TXMLEngine.cxx:662
 TXMLEngine.cxx:663
 TXMLEngine.cxx:664
 TXMLEngine.cxx:665
 TXMLEngine.cxx:666
 TXMLEngine.cxx:667
 TXMLEngine.cxx:668
 TXMLEngine.cxx:669
 TXMLEngine.cxx:670
 TXMLEngine.cxx:671
 TXMLEngine.cxx:672
 TXMLEngine.cxx:673
 TXMLEngine.cxx:674
 TXMLEngine.cxx:675
 TXMLEngine.cxx:676
 TXMLEngine.cxx:677
 TXMLEngine.cxx:678
 TXMLEngine.cxx:679
 TXMLEngine.cxx:680
 TXMLEngine.cxx:681
 TXMLEngine.cxx:682
 TXMLEngine.cxx:683
 TXMLEngine.cxx:684
 TXMLEngine.cxx:685
 TXMLEngine.cxx:686
 TXMLEngine.cxx:687
 TXMLEngine.cxx:688
 TXMLEngine.cxx:689
 TXMLEngine.cxx:690
 TXMLEngine.cxx:691
 TXMLEngine.cxx:692
 TXMLEngine.cxx:693
 TXMLEngine.cxx:694
 TXMLEngine.cxx:695
 TXMLEngine.cxx:696
 TXMLEngine.cxx:697
 TXMLEngine.cxx:698
 TXMLEngine.cxx:699
 TXMLEngine.cxx:700
 TXMLEngine.cxx:701
 TXMLEngine.cxx:702
 TXMLEngine.cxx:703
 TXMLEngine.cxx:704
 TXMLEngine.cxx:705
 TXMLEngine.cxx:706
 TXMLEngine.cxx:707
 TXMLEngine.cxx:708
 TXMLEngine.cxx:709
 TXMLEngine.cxx:710
 TXMLEngine.cxx:711
 TXMLEngine.cxx:712
 TXMLEngine.cxx:713
 TXMLEngine.cxx:714
 TXMLEngine.cxx:715
 TXMLEngine.cxx:716
 TXMLEngine.cxx:717
 TXMLEngine.cxx:718
 TXMLEngine.cxx:719
 TXMLEngine.cxx:720
 TXMLEngine.cxx:721
 TXMLEngine.cxx:722
 TXMLEngine.cxx:723
 TXMLEngine.cxx:724
 TXMLEngine.cxx:725
 TXMLEngine.cxx:726
 TXMLEngine.cxx:727
 TXMLEngine.cxx:728
 TXMLEngine.cxx:729
 TXMLEngine.cxx:730
 TXMLEngine.cxx:731
 TXMLEngine.cxx:732
 TXMLEngine.cxx:733
 TXMLEngine.cxx:734
 TXMLEngine.cxx:735
 TXMLEngine.cxx:736
 TXMLEngine.cxx:737
 TXMLEngine.cxx:738
 TXMLEngine.cxx:739
 TXMLEngine.cxx:740
 TXMLEngine.cxx:741
 TXMLEngine.cxx:742
 TXMLEngine.cxx:743
 TXMLEngine.cxx:744
 TXMLEngine.cxx:745
 TXMLEngine.cxx:746
 TXMLEngine.cxx:747
 TXMLEngine.cxx:748
 TXMLEngine.cxx:749
 TXMLEngine.cxx:750
 TXMLEngine.cxx:751
 TXMLEngine.cxx:752
 TXMLEngine.cxx:753
 TXMLEngine.cxx:754
 TXMLEngine.cxx:755
 TXMLEngine.cxx:756
 TXMLEngine.cxx:757
 TXMLEngine.cxx:758
 TXMLEngine.cxx:759
 TXMLEngine.cxx:760
 TXMLEngine.cxx:761
 TXMLEngine.cxx:762
 TXMLEngine.cxx:763
 TXMLEngine.cxx:764
 TXMLEngine.cxx:765
 TXMLEngine.cxx:766
 TXMLEngine.cxx:767
 TXMLEngine.cxx:768
 TXMLEngine.cxx:769
 TXMLEngine.cxx:770
 TXMLEngine.cxx:771
 TXMLEngine.cxx:772
 TXMLEngine.cxx:773
 TXMLEngine.cxx:774
 TXMLEngine.cxx:775
 TXMLEngine.cxx:776
 TXMLEngine.cxx:777
 TXMLEngine.cxx:778
 TXMLEngine.cxx:779
 TXMLEngine.cxx:780
 TXMLEngine.cxx:781
 TXMLEngine.cxx:782
 TXMLEngine.cxx:783
 TXMLEngine.cxx:784
 TXMLEngine.cxx:785
 TXMLEngine.cxx:786
 TXMLEngine.cxx:787
 TXMLEngine.cxx:788
 TXMLEngine.cxx:789
 TXMLEngine.cxx:790
 TXMLEngine.cxx:791
 TXMLEngine.cxx:792
 TXMLEngine.cxx:793
 TXMLEngine.cxx:794
 TXMLEngine.cxx:795
 TXMLEngine.cxx:796
 TXMLEngine.cxx:797
 TXMLEngine.cxx:798
 TXMLEngine.cxx:799
 TXMLEngine.cxx:800
 TXMLEngine.cxx:801
 TXMLEngine.cxx:802
 TXMLEngine.cxx:803
 TXMLEngine.cxx:804
 TXMLEngine.cxx:805
 TXMLEngine.cxx:806
 TXMLEngine.cxx:807
 TXMLEngine.cxx:808
 TXMLEngine.cxx:809
 TXMLEngine.cxx:810
 TXMLEngine.cxx:811
 TXMLEngine.cxx:812
 TXMLEngine.cxx:813
 TXMLEngine.cxx:814
 TXMLEngine.cxx:815
 TXMLEngine.cxx:816
 TXMLEngine.cxx:817
 TXMLEngine.cxx:818
 TXMLEngine.cxx:819
 TXMLEngine.cxx:820
 TXMLEngine.cxx:821
 TXMLEngine.cxx:822
 TXMLEngine.cxx:823
 TXMLEngine.cxx:824
 TXMLEngine.cxx:825
 TXMLEngine.cxx:826
 TXMLEngine.cxx:827
 TXMLEngine.cxx:828
 TXMLEngine.cxx:829
 TXMLEngine.cxx:830
 TXMLEngine.cxx:831
 TXMLEngine.cxx:832
 TXMLEngine.cxx:833
 TXMLEngine.cxx:834
 TXMLEngine.cxx:835
 TXMLEngine.cxx:836
 TXMLEngine.cxx:837
 TXMLEngine.cxx:838
 TXMLEngine.cxx:839
 TXMLEngine.cxx:840
 TXMLEngine.cxx:841
 TXMLEngine.cxx:842
 TXMLEngine.cxx:843
 TXMLEngine.cxx:844
 TXMLEngine.cxx:845
 TXMLEngine.cxx:846
 TXMLEngine.cxx:847
 TXMLEngine.cxx:848
 TXMLEngine.cxx:849
 TXMLEngine.cxx:850
 TXMLEngine.cxx:851
 TXMLEngine.cxx:852
 TXMLEngine.cxx:853
 TXMLEngine.cxx:854
 TXMLEngine.cxx:855
 TXMLEngine.cxx:856
 TXMLEngine.cxx:857
 TXMLEngine.cxx:858
 TXMLEngine.cxx:859
 TXMLEngine.cxx:860
 TXMLEngine.cxx:861
 TXMLEngine.cxx:862
 TXMLEngine.cxx:863
 TXMLEngine.cxx:864
 TXMLEngine.cxx:865
 TXMLEngine.cxx:866
 TXMLEngine.cxx:867
 TXMLEngine.cxx:868
 TXMLEngine.cxx:869
 TXMLEngine.cxx:870
 TXMLEngine.cxx:871
 TXMLEngine.cxx:872
 TXMLEngine.cxx:873
 TXMLEngine.cxx:874
 TXMLEngine.cxx:875
 TXMLEngine.cxx:876
 TXMLEngine.cxx:877
 TXMLEngine.cxx:878
 TXMLEngine.cxx:879
 TXMLEngine.cxx:880
 TXMLEngine.cxx:881
 TXMLEngine.cxx:882
 TXMLEngine.cxx:883
 TXMLEngine.cxx:884
 TXMLEngine.cxx:885
 TXMLEngine.cxx:886
 TXMLEngine.cxx:887
 TXMLEngine.cxx:888
 TXMLEngine.cxx:889
 TXMLEngine.cxx:890
 TXMLEngine.cxx:891
 TXMLEngine.cxx:892
 TXMLEngine.cxx:893
 TXMLEngine.cxx:894
 TXMLEngine.cxx:895
 TXMLEngine.cxx:896
 TXMLEngine.cxx:897
 TXMLEngine.cxx:898
 TXMLEngine.cxx:899
 TXMLEngine.cxx:900
 TXMLEngine.cxx:901
 TXMLEngine.cxx:902
 TXMLEngine.cxx:903
 TXMLEngine.cxx:904
 TXMLEngine.cxx:905
 TXMLEngine.cxx:906
 TXMLEngine.cxx:907
 TXMLEngine.cxx:908
 TXMLEngine.cxx:909
 TXMLEngine.cxx:910
 TXMLEngine.cxx:911
 TXMLEngine.cxx:912
 TXMLEngine.cxx:913
 TXMLEngine.cxx:914
 TXMLEngine.cxx:915
 TXMLEngine.cxx:916
 TXMLEngine.cxx:917
 TXMLEngine.cxx:918
 TXMLEngine.cxx:919
 TXMLEngine.cxx:920
 TXMLEngine.cxx:921
 TXMLEngine.cxx:922
 TXMLEngine.cxx:923
 TXMLEngine.cxx:924
 TXMLEngine.cxx:925
 TXMLEngine.cxx:926
 TXMLEngine.cxx:927
 TXMLEngine.cxx:928
 TXMLEngine.cxx:929
 TXMLEngine.cxx:930
 TXMLEngine.cxx:931
 TXMLEngine.cxx:932
 TXMLEngine.cxx:933
 TXMLEngine.cxx:934
 TXMLEngine.cxx:935
 TXMLEngine.cxx:936
 TXMLEngine.cxx:937
 TXMLEngine.cxx:938
 TXMLEngine.cxx:939
 TXMLEngine.cxx:940
 TXMLEngine.cxx:941
 TXMLEngine.cxx:942
 TXMLEngine.cxx:943
 TXMLEngine.cxx:944
 TXMLEngine.cxx:945
 TXMLEngine.cxx:946
 TXMLEngine.cxx:947
 TXMLEngine.cxx:948
 TXMLEngine.cxx:949
 TXMLEngine.cxx:950
 TXMLEngine.cxx:951
 TXMLEngine.cxx:952
 TXMLEngine.cxx:953
 TXMLEngine.cxx:954
 TXMLEngine.cxx:955
 TXMLEngine.cxx:956
 TXMLEngine.cxx:957
 TXMLEngine.cxx:958
 TXMLEngine.cxx:959
 TXMLEngine.cxx:960
 TXMLEngine.cxx:961
 TXMLEngine.cxx:962
 TXMLEngine.cxx:963
 TXMLEngine.cxx:964
 TXMLEngine.cxx:965
 TXMLEngine.cxx:966
 TXMLEngine.cxx:967
 TXMLEngine.cxx:968
 TXMLEngine.cxx:969
 TXMLEngine.cxx:970
 TXMLEngine.cxx:971
 TXMLEngine.cxx:972
 TXMLEngine.cxx:973
 TXMLEngine.cxx:974
 TXMLEngine.cxx:975
 TXMLEngine.cxx:976
 TXMLEngine.cxx:977
 TXMLEngine.cxx:978
 TXMLEngine.cxx:979
 TXMLEngine.cxx:980
 TXMLEngine.cxx:981
 TXMLEngine.cxx:982
 TXMLEngine.cxx:983
 TXMLEngine.cxx:984
 TXMLEngine.cxx:985
 TXMLEngine.cxx:986
 TXMLEngine.cxx:987
 TXMLEngine.cxx:988
 TXMLEngine.cxx:989
 TXMLEngine.cxx:990
 TXMLEngine.cxx:991
 TXMLEngine.cxx:992
 TXMLEngine.cxx:993
 TXMLEngine.cxx:994
 TXMLEngine.cxx:995
 TXMLEngine.cxx:996
 TXMLEngine.cxx:997
 TXMLEngine.cxx:998
 TXMLEngine.cxx:999
 TXMLEngine.cxx:1000
 TXMLEngine.cxx:1001
 TXMLEngine.cxx:1002
 TXMLEngine.cxx:1003
 TXMLEngine.cxx:1004
 TXMLEngine.cxx:1005
 TXMLEngine.cxx:1006
 TXMLEngine.cxx:1007
 TXMLEngine.cxx:1008
 TXMLEngine.cxx:1009
 TXMLEngine.cxx:1010
 TXMLEngine.cxx:1011
 TXMLEngine.cxx:1012
 TXMLEngine.cxx:1013
 TXMLEngine.cxx:1014
 TXMLEngine.cxx:1015
 TXMLEngine.cxx:1016
 TXMLEngine.cxx:1017
 TXMLEngine.cxx:1018
 TXMLEngine.cxx:1019
 TXMLEngine.cxx:1020
 TXMLEngine.cxx:1021
 TXMLEngine.cxx:1022
 TXMLEngine.cxx:1023
 TXMLEngine.cxx:1024
 TXMLEngine.cxx:1025
 TXMLEngine.cxx:1026
 TXMLEngine.cxx:1027
 TXMLEngine.cxx:1028
 TXMLEngine.cxx:1029
 TXMLEngine.cxx:1030
 TXMLEngine.cxx:1031
 TXMLEngine.cxx:1032
 TXMLEngine.cxx:1033
 TXMLEngine.cxx:1034
 TXMLEngine.cxx:1035
 TXMLEngine.cxx:1036
 TXMLEngine.cxx:1037
 TXMLEngine.cxx:1038
 TXMLEngine.cxx:1039
 TXMLEngine.cxx:1040
 TXMLEngine.cxx:1041
 TXMLEngine.cxx:1042
 TXMLEngine.cxx:1043
 TXMLEngine.cxx:1044
 TXMLEngine.cxx:1045
 TXMLEngine.cxx:1046
 TXMLEngine.cxx:1047
 TXMLEngine.cxx:1048
 TXMLEngine.cxx:1049
 TXMLEngine.cxx:1050
 TXMLEngine.cxx:1051
 TXMLEngine.cxx:1052
 TXMLEngine.cxx:1053
 TXMLEngine.cxx:1054
 TXMLEngine.cxx:1055
 TXMLEngine.cxx:1056
 TXMLEngine.cxx:1057
 TXMLEngine.cxx:1058
 TXMLEngine.cxx:1059
 TXMLEngine.cxx:1060
 TXMLEngine.cxx:1061
 TXMLEngine.cxx:1062
 TXMLEngine.cxx:1063
 TXMLEngine.cxx:1064
 TXMLEngine.cxx:1065
 TXMLEngine.cxx:1066
 TXMLEngine.cxx:1067
 TXMLEngine.cxx:1068
 TXMLEngine.cxx:1069
 TXMLEngine.cxx:1070
 TXMLEngine.cxx:1071
 TXMLEngine.cxx:1072
 TXMLEngine.cxx:1073
 TXMLEngine.cxx:1074
 TXMLEngine.cxx:1075
 TXMLEngine.cxx:1076
 TXMLEngine.cxx:1077
 TXMLEngine.cxx:1078
 TXMLEngine.cxx:1079
 TXMLEngine.cxx:1080
 TXMLEngine.cxx:1081
 TXMLEngine.cxx:1082
 TXMLEngine.cxx:1083
 TXMLEngine.cxx:1084
 TXMLEngine.cxx:1085
 TXMLEngine.cxx:1086
 TXMLEngine.cxx:1087
 TXMLEngine.cxx:1088
 TXMLEngine.cxx:1089
 TXMLEngine.cxx:1090
 TXMLEngine.cxx:1091
 TXMLEngine.cxx:1092
 TXMLEngine.cxx:1093
 TXMLEngine.cxx:1094
 TXMLEngine.cxx:1095
 TXMLEngine.cxx:1096
 TXMLEngine.cxx:1097
 TXMLEngine.cxx:1098
 TXMLEngine.cxx:1099
 TXMLEngine.cxx:1100
 TXMLEngine.cxx:1101
 TXMLEngine.cxx:1102
 TXMLEngine.cxx:1103
 TXMLEngine.cxx:1104
 TXMLEngine.cxx:1105
 TXMLEngine.cxx:1106
 TXMLEngine.cxx:1107
 TXMLEngine.cxx:1108
 TXMLEngine.cxx:1109
 TXMLEngine.cxx:1110
 TXMLEngine.cxx:1111
 TXMLEngine.cxx:1112
 TXMLEngine.cxx:1113
 TXMLEngine.cxx:1114
 TXMLEngine.cxx:1115
 TXMLEngine.cxx:1116
 TXMLEngine.cxx:1117
 TXMLEngine.cxx:1118
 TXMLEngine.cxx:1119
 TXMLEngine.cxx:1120
 TXMLEngine.cxx:1121
 TXMLEngine.cxx:1122
 TXMLEngine.cxx:1123
 TXMLEngine.cxx:1124
 TXMLEngine.cxx:1125
 TXMLEngine.cxx:1126
 TXMLEngine.cxx:1127
 TXMLEngine.cxx:1128
 TXMLEngine.cxx:1129
 TXMLEngine.cxx:1130
 TXMLEngine.cxx:1131
 TXMLEngine.cxx:1132
 TXMLEngine.cxx:1133
 TXMLEngine.cxx:1134
 TXMLEngine.cxx:1135
 TXMLEngine.cxx:1136
 TXMLEngine.cxx:1137
 TXMLEngine.cxx:1138
 TXMLEngine.cxx:1139
 TXMLEngine.cxx:1140
 TXMLEngine.cxx:1141
 TXMLEngine.cxx:1142
 TXMLEngine.cxx:1143
 TXMLEngine.cxx:1144
 TXMLEngine.cxx:1145
 TXMLEngine.cxx:1146
 TXMLEngine.cxx:1147
 TXMLEngine.cxx:1148
 TXMLEngine.cxx:1149
 TXMLEngine.cxx:1150
 TXMLEngine.cxx:1151
 TXMLEngine.cxx:1152
 TXMLEngine.cxx:1153
 TXMLEngine.cxx:1154
 TXMLEngine.cxx:1155
 TXMLEngine.cxx:1156
 TXMLEngine.cxx:1157
 TXMLEngine.cxx:1158
 TXMLEngine.cxx:1159
 TXMLEngine.cxx:1160
 TXMLEngine.cxx:1161
 TXMLEngine.cxx:1162
 TXMLEngine.cxx:1163
 TXMLEngine.cxx:1164
 TXMLEngine.cxx:1165
 TXMLEngine.cxx:1166
 TXMLEngine.cxx:1167
 TXMLEngine.cxx:1168
 TXMLEngine.cxx:1169
 TXMLEngine.cxx:1170
 TXMLEngine.cxx:1171
 TXMLEngine.cxx:1172
 TXMLEngine.cxx:1173
 TXMLEngine.cxx:1174
 TXMLEngine.cxx:1175
 TXMLEngine.cxx:1176
 TXMLEngine.cxx:1177
 TXMLEngine.cxx:1178
 TXMLEngine.cxx:1179
 TXMLEngine.cxx:1180
 TXMLEngine.cxx:1181
 TXMLEngine.cxx:1182
 TXMLEngine.cxx:1183
 TXMLEngine.cxx:1184
 TXMLEngine.cxx:1185
 TXMLEngine.cxx:1186
 TXMLEngine.cxx:1187
 TXMLEngine.cxx:1188
 TXMLEngine.cxx:1189
 TXMLEngine.cxx:1190
 TXMLEngine.cxx:1191
 TXMLEngine.cxx:1192
 TXMLEngine.cxx:1193
 TXMLEngine.cxx:1194
 TXMLEngine.cxx:1195
 TXMLEngine.cxx:1196
 TXMLEngine.cxx:1197
 TXMLEngine.cxx:1198
 TXMLEngine.cxx:1199
 TXMLEngine.cxx:1200
 TXMLEngine.cxx:1201
 TXMLEngine.cxx:1202
 TXMLEngine.cxx:1203
 TXMLEngine.cxx:1204
 TXMLEngine.cxx:1205
 TXMLEngine.cxx:1206
 TXMLEngine.cxx:1207
 TXMLEngine.cxx:1208
 TXMLEngine.cxx:1209
 TXMLEngine.cxx:1210
 TXMLEngine.cxx:1211
 TXMLEngine.cxx:1212
 TXMLEngine.cxx:1213
 TXMLEngine.cxx:1214
 TXMLEngine.cxx:1215
 TXMLEngine.cxx:1216
 TXMLEngine.cxx:1217
 TXMLEngine.cxx:1218
 TXMLEngine.cxx:1219
 TXMLEngine.cxx:1220
 TXMLEngine.cxx:1221
 TXMLEngine.cxx:1222
 TXMLEngine.cxx:1223
 TXMLEngine.cxx:1224
 TXMLEngine.cxx:1225
 TXMLEngine.cxx:1226
 TXMLEngine.cxx:1227
 TXMLEngine.cxx:1228
 TXMLEngine.cxx:1229
 TXMLEngine.cxx:1230
 TXMLEngine.cxx:1231
 TXMLEngine.cxx:1232
 TXMLEngine.cxx:1233
 TXMLEngine.cxx:1234
 TXMLEngine.cxx:1235
 TXMLEngine.cxx:1236
 TXMLEngine.cxx:1237
 TXMLEngine.cxx:1238
 TXMLEngine.cxx:1239
 TXMLEngine.cxx:1240
 TXMLEngine.cxx:1241
 TXMLEngine.cxx:1242
 TXMLEngine.cxx:1243
 TXMLEngine.cxx:1244
 TXMLEngine.cxx:1245
 TXMLEngine.cxx:1246
 TXMLEngine.cxx:1247
 TXMLEngine.cxx:1248
 TXMLEngine.cxx:1249
 TXMLEngine.cxx:1250
 TXMLEngine.cxx:1251
 TXMLEngine.cxx:1252
 TXMLEngine.cxx:1253
 TXMLEngine.cxx:1254
 TXMLEngine.cxx:1255
 TXMLEngine.cxx:1256
 TXMLEngine.cxx:1257
 TXMLEngine.cxx:1258
 TXMLEngine.cxx:1259
 TXMLEngine.cxx:1260
 TXMLEngine.cxx:1261
 TXMLEngine.cxx:1262
 TXMLEngine.cxx:1263
 TXMLEngine.cxx:1264
 TXMLEngine.cxx:1265
 TXMLEngine.cxx:1266
 TXMLEngine.cxx:1267
 TXMLEngine.cxx:1268
 TXMLEngine.cxx:1269
 TXMLEngine.cxx:1270
 TXMLEngine.cxx:1271
 TXMLEngine.cxx:1272
 TXMLEngine.cxx:1273
 TXMLEngine.cxx:1274
 TXMLEngine.cxx:1275
 TXMLEngine.cxx:1276
 TXMLEngine.cxx:1277
 TXMLEngine.cxx:1278
 TXMLEngine.cxx:1279
 TXMLEngine.cxx:1280
 TXMLEngine.cxx:1281
 TXMLEngine.cxx:1282
 TXMLEngine.cxx:1283
 TXMLEngine.cxx:1284
 TXMLEngine.cxx:1285
 TXMLEngine.cxx:1286
 TXMLEngine.cxx:1287
 TXMLEngine.cxx:1288
 TXMLEngine.cxx:1289
 TXMLEngine.cxx:1290
 TXMLEngine.cxx:1291
 TXMLEngine.cxx:1292
 TXMLEngine.cxx:1293
 TXMLEngine.cxx:1294
 TXMLEngine.cxx:1295
 TXMLEngine.cxx:1296
 TXMLEngine.cxx:1297
 TXMLEngine.cxx:1298
 TXMLEngine.cxx:1299
 TXMLEngine.cxx:1300
 TXMLEngine.cxx:1301
 TXMLEngine.cxx:1302
 TXMLEngine.cxx:1303
 TXMLEngine.cxx:1304
 TXMLEngine.cxx:1305
 TXMLEngine.cxx:1306
 TXMLEngine.cxx:1307
 TXMLEngine.cxx:1308
 TXMLEngine.cxx:1309
 TXMLEngine.cxx:1310
 TXMLEngine.cxx:1311
 TXMLEngine.cxx:1312
 TXMLEngine.cxx:1313
 TXMLEngine.cxx:1314
 TXMLEngine.cxx:1315
 TXMLEngine.cxx:1316
 TXMLEngine.cxx:1317
 TXMLEngine.cxx:1318
 TXMLEngine.cxx:1319
 TXMLEngine.cxx:1320
 TXMLEngine.cxx:1321
 TXMLEngine.cxx:1322
 TXMLEngine.cxx:1323
 TXMLEngine.cxx:1324
 TXMLEngine.cxx:1325
 TXMLEngine.cxx:1326
 TXMLEngine.cxx:1327
 TXMLEngine.cxx:1328
 TXMLEngine.cxx:1329
 TXMLEngine.cxx:1330
 TXMLEngine.cxx:1331
 TXMLEngine.cxx:1332
 TXMLEngine.cxx:1333
 TXMLEngine.cxx:1334
 TXMLEngine.cxx:1335
 TXMLEngine.cxx:1336
 TXMLEngine.cxx:1337
 TXMLEngine.cxx:1338
 TXMLEngine.cxx:1339
 TXMLEngine.cxx:1340
 TXMLEngine.cxx:1341
 TXMLEngine.cxx:1342
 TXMLEngine.cxx:1343
 TXMLEngine.cxx:1344
 TXMLEngine.cxx:1345
 TXMLEngine.cxx:1346
 TXMLEngine.cxx:1347
 TXMLEngine.cxx:1348
 TXMLEngine.cxx:1349
 TXMLEngine.cxx:1350
 TXMLEngine.cxx:1351
 TXMLEngine.cxx:1352
 TXMLEngine.cxx:1353
 TXMLEngine.cxx:1354
 TXMLEngine.cxx:1355
 TXMLEngine.cxx:1356
 TXMLEngine.cxx:1357
 TXMLEngine.cxx:1358
 TXMLEngine.cxx:1359
 TXMLEngine.cxx:1360
 TXMLEngine.cxx:1361
 TXMLEngine.cxx:1362
 TXMLEngine.cxx:1363
 TXMLEngine.cxx:1364
 TXMLEngine.cxx:1365
 TXMLEngine.cxx:1366
 TXMLEngine.cxx:1367
 TXMLEngine.cxx:1368
 TXMLEngine.cxx:1369
 TXMLEngine.cxx:1370
 TXMLEngine.cxx:1371
 TXMLEngine.cxx:1372
 TXMLEngine.cxx:1373
 TXMLEngine.cxx:1374
 TXMLEngine.cxx:1375
 TXMLEngine.cxx:1376
 TXMLEngine.cxx:1377
 TXMLEngine.cxx:1378
 TXMLEngine.cxx:1379
 TXMLEngine.cxx:1380
 TXMLEngine.cxx:1381
 TXMLEngine.cxx:1382
 TXMLEngine.cxx:1383
 TXMLEngine.cxx:1384
 TXMLEngine.cxx:1385
 TXMLEngine.cxx:1386
 TXMLEngine.cxx:1387
 TXMLEngine.cxx:1388
 TXMLEngine.cxx:1389
 TXMLEngine.cxx:1390
 TXMLEngine.cxx:1391
 TXMLEngine.cxx:1392
 TXMLEngine.cxx:1393
 TXMLEngine.cxx:1394
 TXMLEngine.cxx:1395
 TXMLEngine.cxx:1396
 TXMLEngine.cxx:1397
 TXMLEngine.cxx:1398
 TXMLEngine.cxx:1399
 TXMLEngine.cxx:1400
 TXMLEngine.cxx:1401
 TXMLEngine.cxx:1402
 TXMLEngine.cxx:1403
 TXMLEngine.cxx:1404
 TXMLEngine.cxx:1405
 TXMLEngine.cxx:1406
 TXMLEngine.cxx:1407
 TXMLEngine.cxx:1408
 TXMLEngine.cxx:1409
 TXMLEngine.cxx:1410
 TXMLEngine.cxx:1411
 TXMLEngine.cxx:1412
 TXMLEngine.cxx:1413
 TXMLEngine.cxx:1414
 TXMLEngine.cxx:1415
 TXMLEngine.cxx:1416
 TXMLEngine.cxx:1417
 TXMLEngine.cxx:1418
 TXMLEngine.cxx:1419
 TXMLEngine.cxx:1420
 TXMLEngine.cxx:1421
 TXMLEngine.cxx:1422
 TXMLEngine.cxx:1423
 TXMLEngine.cxx:1424
 TXMLEngine.cxx:1425
 TXMLEngine.cxx:1426
 TXMLEngine.cxx:1427
 TXMLEngine.cxx:1428
 TXMLEngine.cxx:1429
 TXMLEngine.cxx:1430
 TXMLEngine.cxx:1431
 TXMLEngine.cxx:1432
 TXMLEngine.cxx:1433
 TXMLEngine.cxx:1434
 TXMLEngine.cxx:1435
 TXMLEngine.cxx:1436
 TXMLEngine.cxx:1437
 TXMLEngine.cxx:1438
 TXMLEngine.cxx:1439
 TXMLEngine.cxx:1440
 TXMLEngine.cxx:1441
 TXMLEngine.cxx:1442
 TXMLEngine.cxx:1443
 TXMLEngine.cxx:1444
 TXMLEngine.cxx:1445
 TXMLEngine.cxx:1446
 TXMLEngine.cxx:1447
 TXMLEngine.cxx:1448
 TXMLEngine.cxx:1449
 TXMLEngine.cxx:1450
 TXMLEngine.cxx:1451
 TXMLEngine.cxx:1452
 TXMLEngine.cxx:1453
 TXMLEngine.cxx:1454
 TXMLEngine.cxx:1455
 TXMLEngine.cxx:1456
 TXMLEngine.cxx:1457
 TXMLEngine.cxx:1458
 TXMLEngine.cxx:1459
 TXMLEngine.cxx:1460
 TXMLEngine.cxx:1461
 TXMLEngine.cxx:1462
 TXMLEngine.cxx:1463
 TXMLEngine.cxx:1464
 TXMLEngine.cxx:1465
 TXMLEngine.cxx:1466
 TXMLEngine.cxx:1467
 TXMLEngine.cxx:1468
 TXMLEngine.cxx:1469
 TXMLEngine.cxx:1470
 TXMLEngine.cxx:1471
 TXMLEngine.cxx:1472
 TXMLEngine.cxx:1473
 TXMLEngine.cxx:1474
 TXMLEngine.cxx:1475
 TXMLEngine.cxx:1476
 TXMLEngine.cxx:1477
 TXMLEngine.cxx:1478
 TXMLEngine.cxx:1479
 TXMLEngine.cxx:1480
 TXMLEngine.cxx:1481
 TXMLEngine.cxx:1482
 TXMLEngine.cxx:1483
 TXMLEngine.cxx:1484
 TXMLEngine.cxx:1485
 TXMLEngine.cxx:1486
 TXMLEngine.cxx:1487
 TXMLEngine.cxx:1488
 TXMLEngine.cxx:1489
 TXMLEngine.cxx:1490
 TXMLEngine.cxx:1491
 TXMLEngine.cxx:1492
 TXMLEngine.cxx:1493
 TXMLEngine.cxx:1494
 TXMLEngine.cxx:1495
 TXMLEngine.cxx:1496
 TXMLEngine.cxx:1497
 TXMLEngine.cxx:1498
 TXMLEngine.cxx:1499
 TXMLEngine.cxx:1500
 TXMLEngine.cxx:1501
 TXMLEngine.cxx:1502
 TXMLEngine.cxx:1503
 TXMLEngine.cxx:1504
 TXMLEngine.cxx:1505
 TXMLEngine.cxx:1506
 TXMLEngine.cxx:1507
 TXMLEngine.cxx:1508
 TXMLEngine.cxx:1509
 TXMLEngine.cxx:1510
 TXMLEngine.cxx:1511
 TXMLEngine.cxx:1512
 TXMLEngine.cxx:1513
 TXMLEngine.cxx:1514
 TXMLEngine.cxx:1515
 TXMLEngine.cxx:1516
 TXMLEngine.cxx:1517
 TXMLEngine.cxx:1518
 TXMLEngine.cxx:1519
 TXMLEngine.cxx:1520
 TXMLEngine.cxx:1521
 TXMLEngine.cxx:1522
 TXMLEngine.cxx:1523
 TXMLEngine.cxx:1524
 TXMLEngine.cxx:1525
 TXMLEngine.cxx:1526
 TXMLEngine.cxx:1527
 TXMLEngine.cxx:1528
 TXMLEngine.cxx:1529
 TXMLEngine.cxx:1530
 TXMLEngine.cxx:1531
 TXMLEngine.cxx:1532
 TXMLEngine.cxx:1533
 TXMLEngine.cxx:1534
 TXMLEngine.cxx:1535
 TXMLEngine.cxx:1536
 TXMLEngine.cxx:1537
 TXMLEngine.cxx:1538
 TXMLEngine.cxx:1539
 TXMLEngine.cxx:1540
 TXMLEngine.cxx:1541
 TXMLEngine.cxx:1542
 TXMLEngine.cxx:1543
 TXMLEngine.cxx:1544
 TXMLEngine.cxx:1545
 TXMLEngine.cxx:1546
 TXMLEngine.cxx:1547
 TXMLEngine.cxx:1548
 TXMLEngine.cxx:1549
 TXMLEngine.cxx:1550
 TXMLEngine.cxx:1551
 TXMLEngine.cxx:1552
 TXMLEngine.cxx:1553
 TXMLEngine.cxx:1554
 TXMLEngine.cxx:1555
 TXMLEngine.cxx:1556
 TXMLEngine.cxx:1557
 TXMLEngine.cxx:1558
 TXMLEngine.cxx:1559
 TXMLEngine.cxx:1560
 TXMLEngine.cxx:1561
 TXMLEngine.cxx:1562
 TXMLEngine.cxx:1563
 TXMLEngine.cxx:1564
 TXMLEngine.cxx:1565
 TXMLEngine.cxx:1566
 TXMLEngine.cxx:1567
 TXMLEngine.cxx:1568
 TXMLEngine.cxx:1569
 TXMLEngine.cxx:1570
 TXMLEngine.cxx:1571
 TXMLEngine.cxx:1572
 TXMLEngine.cxx:1573
 TXMLEngine.cxx:1574
 TXMLEngine.cxx:1575
 TXMLEngine.cxx:1576
 TXMLEngine.cxx:1577
 TXMLEngine.cxx:1578
 TXMLEngine.cxx:1579
 TXMLEngine.cxx:1580
 TXMLEngine.cxx:1581
 TXMLEngine.cxx:1582
 TXMLEngine.cxx:1583
 TXMLEngine.cxx:1584
 TXMLEngine.cxx:1585
 TXMLEngine.cxx:1586
 TXMLEngine.cxx:1587
 TXMLEngine.cxx:1588
 TXMLEngine.cxx:1589
 TXMLEngine.cxx:1590
 TXMLEngine.cxx:1591
 TXMLEngine.cxx:1592
 TXMLEngine.cxx:1593
 TXMLEngine.cxx:1594
 TXMLEngine.cxx:1595
 TXMLEngine.cxx:1596
 TXMLEngine.cxx:1597
 TXMLEngine.cxx:1598
 TXMLEngine.cxx:1599
 TXMLEngine.cxx:1600
 TXMLEngine.cxx:1601
 TXMLEngine.cxx:1602
 TXMLEngine.cxx:1603
 TXMLEngine.cxx:1604
 TXMLEngine.cxx:1605
 TXMLEngine.cxx:1606
 TXMLEngine.cxx:1607
 TXMLEngine.cxx:1608
 TXMLEngine.cxx:1609
 TXMLEngine.cxx:1610