39   static inline char *
Name(
void *arg) { 
return (
char *)arg + 
sizeof(
SXmlAttr_t); }
 
 
   60   static inline char *
Name(
void *arg) { 
return (
char *)arg + 
sizeof(
SXmlNode_t); }
 
 
   71   std::ostream *
fOut{
nullptr};
 
  150         for (
int n = 0; 
n < cnt; 
n++)
 
  153         for (
int n = 0; 
n < cnt; 
n++)
 
 
 
  354      for (
int n = 0; 
n < 
sz; 
n++) {
 
 
  399         if (*str++ != *
curr++)
 
 
  419         const char *
chk = str;
 
 
  439      return (((
symb >= 
'a') && (
symb <= 
'z')) || ((
symb >= 
'A') && (
symb <= 
'Z')) || (
symb == 
'_') ||
 
 
  505      if ((*
curr != 
'\"') && (*
curr != 
'\''))
 
 
 
  658   node->
fAttr = 
nullptr;
 
 
  746   char *
nsname = 
new char[namelen + 7];
 
  750   node->
fAttr = 
nullptr;
 
 
  800   if (!parent || !
child)
 
  809   if (!
pnode->fLastChild) {
 
 
  825   if (!parent || !
child)
 
  838   if (!
pnode->fLastChild)
 
 
  857      Error(
"InsertChildAfter", 
"Specified afternode is not in childs list of parent node");
 
 
  958   const char *
nodename = 
"xml-stylesheet";
 
  969      NewAttr(node, 
nullptr, 
"title", title);
 
 
 1015   if (parent->
fChild == node) {
 
 1021      while (ch->
fNext != node)
 
 1029   node->
fNext = 
nullptr;
 
 
 1265   doc->fDtdName = 
nullptr;
 
 1266   doc->fDtdRoot = 
nullptr;
 
 
 1278   delete[] 
doc->fDtdName;
 
 1280   delete[] 
doc->fDtdRoot;
 
 
 1293   delete[] 
doc->fDtdName;
 
 1294   delete[] 
doc->fDtdRoot;
 
 
 1398      if (!
inp->EndOfStream())
 
 1401      if (
inp->EndOfStream()) {
 
 
 1492   char *res = 
new char[
len + 1];
 
 
 1502   if (!str || (
len == 0))
 
 1504   char *res = 
new char[
len + 1];
 
 
 1521   node->
fNs = 
nullptr;
 
 1522   node->
fAttr = 
nullptr;
 
 1525   node->
fNext = 
nullptr;
 
 
 1544   attr->fNext = 
nullptr;
 
 
 1610                    (*(
source + 4) == 
';')) {
 
 
 1647   char *find = 
nullptr;
 
 1648   while ((find = 
strpbrk(last, 
"<&>\"")) != 
nullptr) {
 
 1656      else if (
symb == 
'>')
 
 1658      else if (
symb == 
'&')
 
 1659         out->Write(
"&");
 
 1660      else if (
symb == 
'\'')
 
 1661         out->Write(
"'");
 
 1663         out->Write(
""");
 
 
 1681      out->Put(
' ', level);
 
 1752         out->Put(
' ', level);
 
 
 1781   if (!
inp->SkipSpaces()) {
 
 1790   while (
inp->CheckFor(
"<!--")) {
 
 1810      if (!
inp->SkipSpaces() && !
inp->EndOfStream()) {
 
 1819   if (*
inp->fCurrent != 
'<') {
 
 1837      if (
inp->NumEntities() <= 0) {
 
 1846      while (*
curr != 0) {
 
 1866            if (
entity->IsSystem()) {
 
 1905      if (!
inp->ShiftCurrent())
 
 1909   if (*
inp->fCurrent == 
'/') {
 
 1911      if (!
inp->ShiftCurrent())
 
 1913      if (!
inp->SkipSpaces())
 
 1931      if (!
inp->ShiftCurrent(
len))
 
 1934      if (!
inp->SkipSpaces())
 
 1936      if (*
inp->fCurrent != 
'>')
 
 1938      if (!
inp->ShiftCurrent())
 
 1949   if (*
inp->fCurrent == 
'!') {
 
 1951      if (!
inp->ShiftCurrent())
 
 1953      if (!
inp->CheckFor(
"DOCTYPE")) {
 
 1957      if (!
inp->SkipSpaces()) {
 
 1968      if (!
inp->ShiftCurrent(
len)) {
 
 1972      if (!
inp->SkipSpaces()) {
 
 1978      if (
inp->CheckFor(
"[")) {
 
 1979         if (!
inp->SkipSpaces())
 
 1982            if (
inp->CheckFor(
"<!ENTITY")) {
 
 1984               if (!
inp->SkipSpaces()) {
 
 1988               Int_t namelen = 
inp->LocateIdentifier();
 
 1994               if (!
inp->ShiftCurrent(namelen)) {
 
 1998               if (!
inp->SkipSpaces()) {
 
 2003               if (
inp->CheckFor(
"SYSTEM")) {
 
 2004                  if (!
inp->SkipSpaces()) {
 
 2024               if (*
inp->fCurrent != 
'>') {
 
 2028               if (!
inp->ShiftCurrent()) {
 
 2038            if (
inp->CheckFor(
"<!ELEMENT")) {
 
 2040               if (!
inp->SkipSpaces()) {
 
 2044               Int_t namelen = 
inp->LocateIdentifier();
 
 2050               if (!
inp->ShiftCurrent(namelen)) {
 
 2054               if (!
inp->SkipSpaces()) {
 
 2059               if (!
inp->CheckFor(
"(")) {
 
 2063               if (
inp->SearchFor(
")") <= 0) {
 
 2069               if (*
inp->fCurrent != 
'>') {
 
 2073               if (!
inp->ShiftCurrent()) {
 
 2085         if (!
inp->CheckFor(
"]")) {
 
 2091      if (!
inp->CheckFor(
">")) {
 
 2105   if (*
inp->fCurrent == 
'?') {
 
 2106      if (!
inp->ShiftCurrent())
 
 2113   if (!
inp->SkipSpaces())
 
 2127   if (
colon && parent) {
 
 2133   if (!
inp->ShiftCurrent(
len))
 
 2137      if (!
inp->SkipSpaces())
 
 2143         if (!
inp->ShiftCurrent())
 
 2145         if (*
inp->fCurrent == 
'>') {
 
 2146            if (!
inp->ShiftCurrent())
 
 2163         if (!
inp->ShiftCurrent())
 
 
 2225   case -14: 
Error(
"ParseFile", 
"Error include external XML file at line %d", 
linenumber); 
break;
 
 2226   case -13: 
Error(
"ParseFile", 
"Error processing DTD part of XML file at line %d", 
linenumber); 
break;
 
 2227   case -12: 
Error(
"ParseFile", 
"DOCTYPE missing after <! at line %d", 
linenumber); 
break;
 
 2229      Error(
"ParseFile", 
"Node cannot be closed with > symbol at line %d, for instance <?xml ... ?> node", 
linenumber);
 
 2232      Error(
"ParseFile", 
"Error in xml comments definition at line %d, must be <!-- comments -->", 
linenumber);
 
 2234   case -9: 
Error(
"ParseFile", 
"Multiple namespace definitions not allowed, line %d", 
linenumber); 
break;
 
 2235   case -8: 
Error(
"ParseFile", 
"Invalid namespace specification, line %d", 
linenumber); 
break;
 
 2236   case -7: 
Error(
"ParseFile", 
"Invalid attribute value, line %d", 
linenumber); 
break;
 
 2237   case -6: 
Error(
"ParseFile", 
"Invalid identifier for node attribute, line %d", 
linenumber); 
break;
 
 2238   case -5: 
Error(
"ParseFile", 
"Mismatch between open and close nodes, line %d", 
linenumber); 
break;
 
 2239   case -4: 
Error(
"ParseFile", 
"Unexpected close node, line %d", 
linenumber); 
break;
 
 2240   case -3: 
Error(
"ParseFile", 
"Valid identifier for close node is missing, line %d", 
linenumber); 
break;
 
 2241   case -2: 
Error(
"ParseFile", 
"No multiple content entries allowed, line %d", 
linenumber); 
break;
 
 2242   case -1: 
Error(
"ParseFile", 
"Unexpected end of xml file"); 
break;
 
 2243   default: 
Error(
"ParseFile", 
"XML syntax error at line %d", 
linenumber); 
break;
 
 
ROOT::Detail::TRangeCast< T, true > TRangeDynCast
TRangeDynCast is an adapter class that allows the typed iteration through a TCollection.
 
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t Int_t Int_t Window_t TString Int_t GCValues_t GetPrimarySelectionOwner GetDisplay GetScreen GetColormap GetNativeEvent const char const char dpyName wid window const char font_name cursor keysym reg const char only_if_exist regb h Point_t winding char text const char depth char const char Int_t count const char ColorStruct_t color const char filename
 
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t Int_t Int_t Window_t TString Int_t GCValues_t GetPrimarySelectionOwner GetDisplay GetScreen GetColormap GetNativeEvent const char const char dpyName wid window const char font_name cursor keysym reg const char only_if_exist regb h Point_t winding char text const char depth char const char Int_t count const char ColorStruct_t color const char Pixmap_t Pixmap_t PictureAttributes_t attr const char char ret_data h unsigned char height h Atom_t Int_t ULong_t ULong_t unsigned char prop_list Atom_t Atom_t target
 
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t Int_t Int_t Window_t child
 
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void value
 
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t Int_t Int_t Window_t TString Int_t GCValues_t GetPrimarySelectionOwner GetDisplay GetScreen GetColormap GetNativeEvent const char const char dpyName wid window const char font_name cursor keysym reg const char only_if_exist regb h Point_t winding char text const char depth char const char Int_t count const char ColorStruct_t color const char Pixmap_t Pixmap_t PictureAttributes_t attr const char char ret_data h unsigned char height h Atom_t Int_t ULong_t ULong_t unsigned char prop_list Atom_t Atom_t Atom_t Time_t UChar_t len
 
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t attr
 
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t src
 
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t Int_t Int_t Window_t TString Int_t GCValues_t GetPrimarySelectionOwner GetDisplay GetScreen GetColormap GetNativeEvent const char const char dpyName wid window const char font_name cursor keysym reg const char only_if_exist regb h Point_t winding char text const char depth char const char Int_t count const char ColorStruct_t color const char Pixmap_t Pixmap_t PictureAttributes_t attr const char char ret_data h unsigned char height h Atom_t Int_t ULong_t ULong_t unsigned char prop_list Atom_t Atom_t Atom_t Time_t type
 
virtual void SetOwner(Bool_t enable=kTRUE)
Set whether this collection is the owner (enable==true) of its content.
 
The TNamed class is the base class for all named ROOT classes.
 
Int_t GetLast() const override
Return index of last object in array.
 
void Add(TObject *obj) override
 
virtual void Error(const char *method, const char *msgfmt,...) const
Issue error message.
 
TString & Append(const char *cs)
 
Bool_t AddRawLine(XMLNodePointer_t parent, const char *line)
Add just line into xml file Line should has correct xml syntax that later it can be decoded by xml pa...
 
XMLNodePointer_t AllocateNode(int namelen, XMLNodePointer_t parent)
Allocates new xml node with specified name length.
 
const char * GetNSName(XMLNsPointer_t ns)
return name id of namespace
 
XMLNodePointer_t NewChild(XMLNodePointer_t parent, XMLNsPointer_t ns, const char *name, const char *content=nullptr)
create new child element for parent node
 
XMLNodePointer_t GetChild(XMLNodePointer_t xmlnode, Bool_t realnode=kTRUE)
returns first child of xmlnode
 
XMLAttrPointer_t NewAttr(XMLNodePointer_t xmlnode, XMLNsPointer_t, const char *name, const char *value)
creates new attribute for xmlnode, namespaces are not supported for attributes
 
void SaveSingleNode(XMLNodePointer_t xmlnode, TString *res, Int_t layout=1)
convert single xmlnode (and its child node) to string if layout<=0, no any spaces or newlines will be...
 
void SaveDoc(XMLDocPointer_t xmldoc, const char *filename, Int_t layout=1)
store document content to file if layout<=0, no any spaces or newlines will be placed between xmlnode...
 
void DisplayError(Int_t error, Int_t linenumber)
Displays xml parsing error.
 
Bool_t AddComment(XMLNodePointer_t parent, const char *comment)
Adds comment line to the node.
 
void CleanNode(XMLNodePointer_t xmlnode)
remove all children node from xmlnode
 
void UnlinkNode(XMLNodePointer_t node)
unlink (detach) xmlnode from parent
 
void AssignDtd(XMLDocPointer_t xmldoc, const char *dtdname, const char *rootname)
assigns dtd filename to document
 
void FreeDoc(XMLDocPointer_t xmldoc)
frees allocated document data and deletes document itself
 
XMLNodePointer_t DocGetRootElement(XMLDocPointer_t xmldoc)
returns root node of document
 
void AddChild(XMLNodePointer_t parent, XMLNodePointer_t child)
add child element to xmlnode
 
Bool_t AddStyleSheet(XMLNodePointer_t parent, const char *href, const char *type="text/css", const char *title=nullptr, int alternate=-1, const char *media=nullptr, const char *charset=nullptr)
Adds style sheet definition to the specified node Creates <?xml-stylesheet alternate="yes" title="com...
 
XMLAttrPointer_t NewIntAttr(XMLNodePointer_t xmlnode, const char *name, Int_t value)
create node attribute with integer value
 
Bool_t AddDocComment(XMLDocPointer_t xmldoc, const char *comment)
add comment line to the top of the document
 
~TXMLEngine() override
destructor for TXMLEngine object
 
void AddNodeContent(XMLNodePointer_t xmlnode, const char *content, Int_t len=0)
add new content of the xmlnode old content will be preserved, one could mix content with child nodes
 
Bool_t HasAttr(XMLNodePointer_t xmlnode, const char *name)
checks if node has attribute of specified name
 
char * Makestr(const char *str)
creates char* variable with copy of provided string
 
Bool_t IsXmlNode(XMLNodePointer_t xmlnode)
return kTRUE is this is normal xmlnode
 
void SaveNode(XMLNodePointer_t xmlnode, TXMLOutputStream *out, Int_t layout, Int_t level)
stream data of xmlnode to output
 
Bool_t IsContentNode(XMLNodePointer_t xmlnode)
return kTRUE is this is special node with content
 
XMLAttrPointer_t GetNextAttr(XMLAttrPointer_t xmlattr)
return next attribute in the list
 
XMLDocPointer_t ParseStream(TXMLInputStream *input)
parses content of the stream and tries to produce xml structures
 
XMLNodePointer_t ReadSingleNode(const char *src)
read single xmlnode from provided string
 
const char * GetNSReference(XMLNsPointer_t ns)
return reference id of namespace
 
char * Makenstr(const char *start, int len)
creates char* variable with copy of len symbols from provided string
 
Bool_t ValidateVersion(XMLDocPointer_t doc, const char *version=nullptr)
check that first node is xml processing instruction with correct xml version number
 
void SetNodeContent(XMLNodePointer_t xmlnode, const char *content, Int_t len=0)
set content of the xmlnode if old node content was exists, it will be replaced
 
const char * GetNodeContent(XMLNodePointer_t xmlnode)
get contents (if any) of xmlnode
 
XMLNsPointer_t GetNS(XMLNodePointer_t xmlnode)
return namespace attribute (if exists)
 
Bool_t IsEmptyNode(XMLNodePointer_t xmlnode)
return kTRUE is this is node with special data like comments to data processing instructions
 
Bool_t IsCommentNode(XMLNodePointer_t xmlnode)
return kTRUE is this is special node with content
 
const char * GetAttrName(XMLAttrPointer_t xmlattr)
return name of the attribute
 
XMLAttrPointer_t GetFirstAttr(XMLNodePointer_t xmlnode)
return first attribute in the list, namespace (if exists) will be skipped
 
const char * GetNodeName(XMLNodePointer_t xmlnode)
returns name of xmlnode
 
Bool_t 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 deco...
 
XMLNodePointer_t ReadNode(XMLNodePointer_t xmlparent, TXMLInputStream *inp, Int_t &resvalue)
Tries to construct xml node from input stream.
 
void FreeAttr(XMLNodePointer_t xmlnode, const char *name)
remove attribute from xmlnode
 
void OutputValue(char *value, TXMLOutputStream *out)
output value to output stream if symbols '<' '&' '>' '"' ''' appears in the string,...
 
const char * GetAttr(XMLNodePointer_t xmlnode, const char *name)
returns value of attribute for xmlnode
 
void AddChildAfter(XMLNodePointer_t parent, XMLNodePointer_t child, XMLNodePointer_t afternode)
Insert new child node after already existing node.
 
Bool_t AddDocStyleSheet(XMLDocPointer_t xmldoc, const char *href, const char *type="text/css", const char *title=nullptr, int alternate=-1, const char *media=nullptr, const char *charset=nullptr)
Add style sheet definition on the top of document.
 
XMLNsPointer_t NewNS(XMLNodePointer_t xmlnode, const char *reference, const char *name=nullptr)
create namespace attribute for xmlnode.
 
Int_t GetIntAttr(XMLNodePointer_t node, const char *name)
returns value of attribute as integer
 
XMLDocPointer_t NewDoc(const char *version="1.0")
creates new xml document with provided version
 
XMLNsPointer_t FindNs(XMLNodePointer_t xmlnode, const char *nsname)
define if namespace of that name exists for xmlnode
 
void UnlinkFreeNode(XMLNodePointer_t xmlnode)
combined operation. Unlink node and free used memory
 
XMLDocPointer_t ParseFile(const char *filename, Int_t maxbuf=100000)
Parses content of file and tries to produce xml structures.
 
TXMLEngine()
if true, do not create comments nodes in document during parsing
 
XMLAttrPointer_t AllocateAttr(int namelen, int valuelen, XMLNodePointer_t xmlnode)
Allocate new attribute with specified name length and value length.
 
void TruncateNsExtension(XMLNodePointer_t xmlnode)
removes namespace extension of nodename
 
void UnpackSpecialCharacters(char *target, const char *source, int srclen)
unpack special symbols, used in xml syntax to code characters these symbols: '<' - <,...
 
void FreeAllAttr(XMLNodePointer_t xmlnode)
Free all attributes of the node.
 
XMLDocPointer_t ParseString(const char *xmlstring)
parses content of string and tries to produce xml structures
 
void FreeNode(XMLNodePointer_t xmlnode)
release all memory, allocated from this node and destroys node itself
 
const char * GetAttrValue(XMLAttrPointer_t xmlattr)
return value of attribute
 
XMLNodePointer_t GetNext(XMLNodePointer_t xmlnode, Bool_t realnode=kTRUE)
return next to xmlnode node if realnode==kTRUE, any special nodes in between will be skipped
 
void SkipEmpty(XMLNodePointer_t &xmlnode)
Skip all current empty nodes and locate on first "true" node.
 
void ShiftToNext(XMLNodePointer_t &xmlnode, Bool_t realnode=kTRUE)
shifts specified node to next if realnode==kTRUE, any special nodes in between will be skipped
 
void DocSetRootElement(XMLDocPointer_t xmldoc, XMLNodePointer_t xmlnode)
set main (root) node for document
 
XMLNodePointer_t GetParent(XMLNodePointer_t xmlnode)
returns parent of xmlnode
 
void AddChildFirst(XMLNodePointer_t parent, XMLNodePointer_t child)
add node as first child
 
TXMLEntity(const TString &name, const TString &value, Bool_t sys)
 
TXMLEntity()
is system (file)
 
TXMLOutputStream(TString *outstr, Int_t bufsize=20000)
 
void OutputChar(char symb)
 
void Put(char symb, Int_t cnt=1)
 
void Write(const char *str)
 
TXMLOutputStream(const char *filename, Int_t bufsize=20000)
 
virtual ~TXMLOutputStream()
 
static char * Name(void *arg)
 
static char * Name(void *arg)