175   fh << 
"// generated header file" << std::endl << std::endl;
 
  176   fh << 
"#ifndef " << 
filename << 
"_h" << std::endl;
 
  177   fh << 
"#define " << 
filename << 
"_h" << std::endl << std::endl;
 
  181   fs << 
"// generated source file" << std::endl << std::endl;
 
  182   fs << 
"#include \"" << 
filename << 
".h\"" << std::endl << std::endl;
 
  189   while ((cl = (
TClass *)iter()) != 
nullptr) {
 
  204   while ((cl = (
TClass *)iter()) != 
nullptr) {
 
  207         << 
" &buf, void* ptr = 0, bool checktypes = true);" << std::endl
 
  213   fh << 
"#endif" << std::endl << std::endl;
 
  214   fs << std::endl << std::endl;
 
 
  228      switch (
member->GetDataType()->GetType()) {
 
  231      case kInt_t: 
return "int";
 
  239         char first = 
member->GetDataType()->GetTypeName()[0];
 
  240         if ((first == 
'B') || (first == 
'b'))
 
  242         return "unsigned char";
 
  246      case kUInt_t: 
return "unsigned int";
 
  247      case kULong_t: 
return "unsigned long";
 
  254   return member->GetTypeName();
 
 
  265   switch (
el->GetType() % 20) {
 
  276      char first = 
el->GetTypeNameBasic()[0];
 
  277      if ((first == 
'B') || (first == 
'b'))
 
  279      return "unsigned char";
 
 
  371      if (
member->IsaPointer() || (
member->GetArrayDim() > 0))
 
 
  411      if (
member->GetArrayDim() == 0)
 
 
  438   fs << 
"//__________________________________________________________________________" << std::endl;
 
  441   fs << 
"{" << std::endl;
 
  444   fs << 
tab1 << 
"if (buf.IsReading()) { " << std::endl;
 
  450   while ((
c1 = (
TClass *)iter()) != 
nullptr) {
 
  453      if (!
c1->GetListOfBases()->FindObject(cl->
GetName()))
 
  456         fs << 
tab2 << 
"if (checktypes) {" << std::endl;
 
  461      fs << 
"res = " << 
GetStreamerName(
c1) << 
"(buf, dynamic_cast<" << 
c1->GetName() << 
"*>(obj));" << std::endl;
 
  462      fs << 
tab3 << 
"if (res) return dynamic_cast<" << cl->
GetName() << 
"*>((" << 
c1->GetName() << 
" *) res);" 
  466      fs << 
tab2 << 
"}" << std::endl;
 
  468   fs << 
tab2 << 
"if (!buf.CheckClassNode(\"" << cl->
GetName() << 
"\", " << 
info->GetClassVersion() << 
")) return 0;" 
  471   fs << 
tab2 << 
"if (obj==0) obj = new " << cl->
GetName() << 
";" << std::endl;
 
  524         fs << 
", " << 
el->GetArrayLength() << 
", \"" << 
el->GetName() << 
"\");" << std::endl;
 
  546            std::cout << 
"fatal error with TStreamerBasicPointer" << std::endl;
 
  554         fs << 
", \"" << 
el->GetName() << 
"\", true)" << 
endch << 
";" << std::endl;
 
  562         fs << 
", \"" << 
el->GetName() << 
"\")" << 
endch << 
";" << std::endl;
 
  568            << 
el->GetClassPointer()->GetName() << 
"*>(obj), false);" << std::endl;
 
  575         if (
el->GetArrayLength() > 0) {
 
  577            fs << 
", " << 
el->GetArrayLength() << 
", -1" 
  578               << 
", \"" << 
el->GetName() << 
"\", " << 
GetStreamerName(
el->GetClassPointer()) << 
");" << std::endl;
 
  581            fs << 
", \"" << 
el->GetName() << 
"\", " << 
GetStreamerName(
el->GetClassPointer()) << 
");" << std::endl;
 
  589         if (
el->GetArrayLength() > 0) {
 
  590            fs << 
tab2 << 
"for (int n=0;n<" << 
el->GetArrayLength() << 
";n++) " 
  591               << 
"delete (" << 
ElementGetter(cl, 
el->GetName()) << 
")[n];" << std::endl;
 
  593            fs << 
", " << 
el->GetArrayLength() << 
", \"" << 
el->GetName() << 
"\", " 
  600            fs << 
"(" << 
el->GetClassPointer()->GetName() << 
"*) buf.ReadObjectPtr(\"" << 
el->GetName() << 
"\", " 
  609         fs << 
", \"" << 
el->GetName() << 
"\", " << 
GetStreamerName(
el->GetClassPointer()) << 
");" << std::endl;
 
  616         fs << 
", " << 
el->GetArrayLength() << 
", sizeof(" << 
el->GetClassPointer()->GetName() << 
"), \"" 
  633         fs << 
tab2 << 
"// STL type = " << 
elstl->GetSTLtype() << std::endl;
 
  637      fs << 
tab2 << 
"buf.SkipMember(\"" << 
el->GetName() << 
"\");   // sinfo type " << 
el->GetType() << 
" of class " 
  638         << 
el->GetClassPointer()->GetName() << 
" not supported" << std::endl;
 
  641   fs << 
tab2 << 
"buf.EndClassNode();" << std::endl;
 
  643   fs << 
tab1 << 
"} else {" << std::endl;
 
  647   fs << 
tab2 << 
"if (obj==0) return 0;" << std::endl;
 
  651   while ((
c1 = (
TClass *)iter()) != 
nullptr) {
 
  654      if (!
c1->GetListOfBases()->FindObject(cl->
GetName()))
 
  658         fs << 
tab2 << 
"if (checktypes) {" << std::endl;
 
  660      fs << 
tab3 << 
"if (dynamic_cast<" << 
c1->GetName() << 
"*>(obj))" << std::endl;
 
  665      fs << 
tab2 << 
"}" << std::endl;
 
  667   fs << 
tab2 << 
"buf.StartClassNode(\"" << cl->
GetName() << 
"\", " << 
info->GetClassVersion() << 
");" << std::endl;
 
  695         fs << 
tab2 << 
"buf.WriteValue(";
 
  700         fs << 
", \"" << 
el->GetName() << 
"\");" << std::endl;
 
  721         fs << 
", " << 
el->GetArrayLength() << 
", \"" << 
el->GetName() << 
"\");" << std::endl;
 
  742            std::cout << 
"fatal error with TStreamerBasicPointer" << std::endl;
 
  746         fs << 
", " << 
ElementGetter(cl, 
elp->GetCountName()) << 
", \"" << 
el->GetName() << 
"\", true);" << std::endl;
 
  758            << 
el->GetClassPointer()->GetName() << 
"*>(obj), false);" << std::endl;
 
  765         if (
el->GetArrayLength() > 0) {
 
  767            fs << 
", " << 
el->GetArrayLength() << 
", -1" 
  768               << 
", \"" << 
el->GetName() << 
"\", " << 
GetStreamerName(
el->GetClassPointer()) << 
");" << std::endl;
 
  771            fs << 
", \"" << 
el->GetName() << 
"\", " << 
GetStreamerName(
el->GetClassPointer()) << 
");" << std::endl;
 
  779         if (
el->GetArrayLength() > 0) {
 
  781            fs << 
", " << 
el->GetArrayLength() << 
", \"" << 
el->GetName() << 
"\", " 
  785            fs << 
", \"" << 
el->GetName() << 
"\", " << 
GetStreamerName(
el->GetClassPointer()) << 
");" << std::endl;
 
  792         fs << 
", \"" << 
el->GetName() << 
"\", " << 
GetStreamerName(
el->GetClassPointer()) << 
");" << std::endl;
 
  798         fs << 
", " << 
el->GetArrayLength() << 
", sizeof(" << 
el->GetClassPointer()->GetName() << 
"), \"" 
  814         fs << 
tab2 << 
"// STL type = " << 
elstl->GetSTLtype() << std::endl;
 
  818      fs << 
tab2 << 
"buf.MakeEmptyMember(\"" << 
el->GetName() << 
"\");   // sinfo type " << 
el->GetType()
 
  819         << 
" of class " << 
el->GetClassPointer()->GetName() << 
" not supported" << std::endl;
 
  822   fs << 
tab2 << 
"buf.EndClassNode();" << std::endl;
 
  824   fs << 
tab1 << 
"}" << std::endl;
 
  825   fs << 
tab1 << 
"return obj;" << std::endl;
 
  826   fs << 
"}" << std::endl << std::endl;
 
 
  859         << 
"(" << 
argcl->GetName() << 
"*)" 
  874         << 
"buf.ReadSTLstring();" << std::endl;
 
  886   default: 
fs << 
"/* argument " << 
argname << 
" not supported */";
 
 
  912      fs << 
"buf.WriteValue(" << 
accname << 
", 0);" << std::endl;
 
  917      fs << 
"buf.WriteObjectPtr(";
 
  927      fs << 
"buf.WriteSTLstring(";
 
  932      fs << 
");" << std::endl;
 
  936   default: 
fs << 
"/* argument not supported */" << std::endl;
 
 
  983      default: 
return false;
 
  986      for (
int n = 0; 
n < 
narg; 
n++) {
 
 1011         if (buf.
Index(
"const ") == 0) {
 
 1013            while ((buf.
Length() > 0) && (buf[0] == 
' '))
 
 1020         else if (buf == 
"string")
 
 1065         fs << 
"*dynamic_cast<" << 
contcl->GetName() << 
"*>(obj);" << std::endl;
 
 1069      if (
isarr && 
el->GetArrayLength()) {
 
 1071         fs << 
tab3 << 
"for(int n=0;n<" << 
el->GetArrayLength() << 
";n++) {" << std::endl;
 
 1079         fs << 
tabs << 
"if (" << (
isarr ? 
"*cont" : 
"cont") << 
"==0) {" << std::endl;
 
 1080         fs << 
tabs2 << 
"buf.WriteSTLsize(0" << (
isstr ? 
",true);" : 
");") << std::endl;
 
 1081         fs << 
tabs << 
"} else {" << std::endl;
 
 1084      fs << 
tabs2 << 
"buf.WriteSTLsize(" << 
accname << (
isstr ? 
"length(), true);" : 
"size());") << std::endl;
 
 1087         fs << 
tabs2 << 
"buf.WriteSTLstringData(" << 
accname << 
"c_str());" << std::endl;
 
 1091            fs << 
tabs2 << 
"int k = 0;" << std::endl;
 
 1094         fs << 
tabs2 << 
contcl->GetName() << 
"::const_iterator iter;" << std::endl;
 
 1097            fs << std::endl << 
tabs2 << 
tab1 << 
"arr[k++] = *iter;" << std::endl;
 
 1098            fs << 
tabs2 << 
"buf.WriteArray(arr, " << 
accname << 
"size(), 0, false);" << std::endl;
 
 1099            fs << 
tabs2 << 
"delete[] arr;" << std::endl;
 
 1100         } 
else if (
narg == 1) {
 
 1103         } 
else if (
narg == 2) {
 
 1104            fs << 
" {" << std::endl;
 
 1109            fs << 
tabs2 << 
"}" << std::endl;
 
 1114         fs << 
tabs << 
"}" << std::endl;
 
 1116      if (
isarr && 
el->GetArrayLength()) {
 
 1118            fs << 
tabs << 
"cont++;" << std::endl;
 
 1120            fs << 
tabs << 
"(void*) cont = (char*) cont + sizeof(" << 
contcl->GetName() << 
");" << std::endl;
 
 1121         fs << 
tab3 << 
"}" << std::endl;
 
 1124      fs << 
tab3 << 
"buf.EndSTLnode();" << std::endl;
 
 1125      fs << 
tab2 << 
"}" << std::endl;
 
 1154         fs << 
"*dynamic_cast<" << 
contcl->GetName() << 
"*>(obj);" << std::endl;
 
 1158      if (
isarr && 
el->GetArrayLength()) {
 
 1160         fs << 
tab3 << 
"for(int n=0;n<" << 
el->GetArrayLength() << 
";n++) {" << std::endl;
 
 1164      fs << 
tabs << 
"int size = buf.ReadSTLsize(" << (
isstr ? 
"true);" : 
");") << std::endl;
 
 1168         fs << 
tabs << 
"if (size==0) " << 
accptr << 
" = 0;" << std::endl;
 
 1169         fs << 
tabs << 
"        else " << 
accptr << 
" = new " << 
contcl->GetName() << 
";" << std::endl;
 
 1173            fs << 
"cont" << 
endch << 
";" << std::endl;
 
 1180         fs << 
tabs << 
"if (size>0) " << 
accname << 
"assign(buf.ReadSTLstringData(size));" << std::endl;
 
 1184            fs << 
tabs << 
"buf.ReadArray(arr, size, 0, false);" << std::endl;
 
 1187         fs << 
tabs << 
"for(int k=0;k<size;k++)";
 
 1195            fs << 
"(arr[k]);" << std::endl;
 
 1196            fs << 
tabs << 
"delete[] arr;" << std::endl;
 
 1197         } 
else if (
narg == 1) {
 
 1209            fs << 
"(" << 
arg1 << 
");" << std::endl;
 
 1210            fs << 
tabs << 
"}" << std::endl;
 
 1211         } 
else if (
narg == 2) {
 
 1220            fs << 
accname << 
"insert(make_pair(" << 
arg1 << 
", " << 
arg2 << 
"));" << std::endl;
 
 1221            fs << 
tabs << 
"}" << std::endl;
 
 1225      if (
isarr && 
el->GetArrayLength()) {
 
 1227            fs << 
tabs << 
"cont++;" << std::endl;
 
 1229            fs << 
tabs << 
"(void*) cont = (char*) cont + sizeof(" << 
contcl->GetName() << 
");" << std::endl;
 
 1230         fs << 
tab3 << 
"}" << std::endl;
 
 1233      fs << 
tab3 << 
"buf.EndSTLnode();" << std::endl;
 
 1234      fs << 
tab2 << 
"}" << std::endl;
 
 
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 fs
 
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
 
const char * names_xmlfileclass
 
TClass instances represent classes, structs and namespaces in the ROOT type system.
 
TVirtualStreamerInfo * GetStreamerInfo(Int_t version=0, Bool_t isTransient=kFALSE) const
returns a pointer to the TVirtualStreamerInfo object for version If the object does not exist,...
 
TClass * GetBaseDataMember(const char *datamember)
Return pointer to (base) class that contains datamember.
 
const char * GetDeclFileName() const
Return name of the file containing the declaration of this class.
 
static TClass * GetClass(const char *name, Bool_t load=kTRUE, Bool_t silent=kFALSE)
Static method returning pointer to TClass of the specified class name.
 
All ROOT classes may have RTTI (run time type identification) support added.
 
Basic data type descriptor (datatype information is obtained from CINT).
 
Method or function calling interface.
 
The TNamed class is the base class for all named ROOT classes.
 
const char * GetName() const override
Returns name of object.
 
TObject * At(Int_t idx) const override
 
Int_t GetLast() const override
Return index of last object in array.
 
Mother of all ROOT objects.
 
const char * Data() const
 
TString & Remove(Ssiz_t pos)
 
Ssiz_t Index(const char *pat, Ssiz_t i=0, ECaseCompare cmp=kExact) const
 
Abstract Interface class describing Streamer information for one class.
 
TString GetMemberTypeName(TDataMember *member)
returns name of simple data type for given data member
 
Bool_t ProduceCode(TList *cllist, const char *filename)
Produce streamers for provide class list TList should include list of classes, for which code should ...
 
TString GetStreamerName(TClass *cl)
returns streamer function name for given class
 
TString fSetterName
buffer for name of getter method
 
const char * ElementGetter(TClass *cl, const char *membername, int specials=0)
produce code to access member of given class.
 
TXMLSetup fXmlSetup
buffer for name of setter method
 
~TXMLPlayer() override
destructor of TXMLPlayer object
 
TString GetBasicTypeName(TStreamerElement *el)
return simple data types for given TStreamerElement object
 
void ReadSTLarg(std::ostream &fs, TString &argname, int argtyp, Bool_t isargptr, TClass *argcl, TString &tname, TString &ifcond)
Produce code to read argument of stl container from xml file.
 
TXMLPlayer()
default constructor
 
TString GetBasicTypeReaderMethodName(Int_t type, const char *realname)
return functions name to read simple data type from xml file
 
void ProduceStreamerSource(std::ostream &fs, TClass *cl, TList *cllist)
Produce source code of streamer function for specified class.
 
Bool_t ProduceSTLstreamer(std::ostream &fs, TClass *cl, TStreamerSTL *el, Bool_t isWriting)
Produce code of xml streamer for data member of stl type.
 
const char * ElementSetter(TClass *cl, const char *membername, char *endch)
Produce code to set value to given data member.
 
void WriteSTLarg(std::ostream &fs, const char *accname, int argtyp, Bool_t isargptr, TClass *argcl)
Produce code to write argument of stl container to xml file.
 
const char * XmlGetElementName(const TStreamerElement *el)
return converted name for TStreamerElement
 
ROOT::ESTLType IsSTLCont(std::string_view type)
type : type name: vector<list<classA,allocator>,allocator> result: 0 : not stl container code of cont...
 
int GetSplit(const char *type, std::vector< std::string > &output, int &nestedLoc, EModType mode=TClassEdit::kNone)
Stores in output (after emptying it) the split type.