107 TClass *clActual =
nullptr;
108 void *ptr = (
void *)obj;
118 return ConvertToXML(ptr, clActual, GenericLayout, UseNamespaces);
169 return (
TObject *)(((
char *)obj) + delta);
190 void *obj = buf.
XmlReadAny(xmlnode,
nullptr, cl);
204 TClass *objClass =
nullptr;
207 if (!res || !objClass)
210 if (objClass == expectedClass)
215 ::Error(
"TBufferXML::ConvertFromXMLChecked",
"expected class %s is not base for read class %s",
221 return (
char *)res - offset;
301 current =
fXML->GetChild(current);
302 fXML->SkipEmpty(current);
305 fStack.emplace_back(std::make_unique<TXMLStackObj>(current));
306 return fStack.back().get();
316 return fStack.size() > 0 ?
fStack.back().get() :
nullptr;
325 return stack ? stack->
fNode :
nullptr;
337 Info(
"ShiftStack",
"%s to node %s", errinfo,
fXML->GetNodeName(stack->
fNode));
416 if (refvalue.
Length() > 0) {
456 Error(
"ExtractPointer",
"not found ptr %s result %p %s", ptrid, ptr, (cl ? cl->
GetName() :
"null"));
475 Error(
"ExtractReference",
"Reference tag %s not started from %s", refid,
xmlio::IdBase);
484 Info(
"ExtractReference",
"Find reference %s for object %p class %s", refid, ptr, (cl ? cl->
GetName() :
"null"));
495 if (strcmp(
fXML->GetNodeName(node),
name) != 0) {
497 Error(
"VerifyNode",
"Reading XML file (%s). Get: %s, expects: %s", errinfo,
fXML->GetNodeName(node),
name);
518 if (!node || !
name || !value)
521 const char *cont =
fXML->GetAttr(node,
name);
522 if ((!cont || (strcmp(cont, value) != 0))) {
524 Error(
"VerifyAttr",
"%s : attr %s = %s, expected: %s", errinfo,
name, cont, value);
643 ((
TClass *)cl)->Streamer((
void *)obj, *
this);
648 Info(
"XmlWriteObject",
"Done write for class: %s", cl ? cl->
GetName() :
"null");
672 TClass *objClass =
nullptr;
687 Error(
"XmlReadObject",
"Cannot find class %s", clname.
Data());
693 Info(
"XmlReadObject",
"Reading object of class %s", clname.
Data());
696 obj = objClass->
New();
702 objClass->
Streamer((
void *)obj, *
this);
709 Info(
"XmlReadObject",
"Reading object of class %s done", clname.
Data());
744 Info(
"IncrementLevel",
"Class: %s", clname.
Data());
754 if (compressClassNode) {
759 fXML->NewAttr(classnode,
nullptr,
"name", clname);
776 if (!compressClassNode) {
789 stack->
fInfo = sinfo;
814 stack->
fInfo =
nullptr;
849 Error(
"SetStreamerElementNumber",
"stack is empty");
862 Error(
"SetStreamerElementNumber",
"Lost of stack");
867 Error(
"SetStreamerElementNumber",
"Problem in Inc/Dec level");
874 Error(
"SetStreamerElementNumber",
"Problem in Inc/Dec level");
880 Info(
"SetStreamerElementNumber",
" Next element %s", elem->
GetName());
893 Info(
"SetStreamerElementNumber",
" Expects base class %s with standard streamer",
976 Error(
"ClassMember",
"Invalid member name");
983 Int_t typ_id(-1), comp_type(-1);
985 if (strcmp(typeName,
"raw:data") == 0)
996 if (strcmp(
name, typeName) == 0) {
1004 if (tname[tname.
Length() - 1] ==
'*') {
1010 Error(
"ClassMember",
"Invalid class specifier %s", typeName);
1035 }
else if ((typ_id > 0) && (typ_id < 20)) {
1052 Error(
"ClassMember",
"Invalid combination name = %s type = %s",
name, typeName);
1079 if (!elem || !elemnode)
1085 fXML->SkipEmpty(node);
1087 XMLNodePointer_t nodecharstar(
nullptr), nodeuchar(
nullptr), nodeint(
nullptr), nodestring(
nullptr);
1090 const char *
name =
fXML->GetNodeName(node);
1106 nodecharstar = node;
1109 fXML->ShiftToNext(node);
1119 fXML->UnlinkFreeNode(nodeuchar);
1120 fXML->UnlinkFreeNode(nodeint);
1121 fXML->UnlinkFreeNode(nodecharstar);
1125 fXML->UnlinkFreeNode(nodestring);
1128 fXML->NewAttr(elemnode,
nullptr,
"str", str);
1131 fXML->SkipEmpty(node);
1133 XMLNodePointer_t vnode =
nullptr, idnode =
nullptr, bitsnode =
nullptr, prnode =
nullptr;
1136 const char *
name =
fXML->GetNodeName(node);
1155 fXML->ShiftToNext(node);
1158 if (!vnode || !idnode || !bitsnode)
1162 fXML->NewAttr(elemnode,
nullptr,
"fUniqueID", str);
1166 sscanf(str.Data(),
"%u", &bits);
1170 snprintf(sbuf,
sizeof(sbuf),
"%x", bits);
1171 fXML->NewAttr(elemnode,
nullptr,
"fBits", sbuf);
1175 fXML->NewAttr(elemnode,
nullptr,
"fProcessID", str);
1178 fXML->UnlinkFreeNode(vnode);
1179 fXML->UnlinkFreeNode(idnode);
1180 fXML->UnlinkFreeNode(bitsnode);
1181 fXML->UnlinkFreeNode(prnode);
1193 if (!elem || !elemnode)
1198 if (!
fXML->HasAttr(elemnode,
"str"))
1201 fXML->FreeAttr(elemnode,
"str");
1204 Int_t len = str.Length();
1207 snprintf(sbuf,
sizeof(sbuf),
"%d", len);
1224 if (!
fXML->HasAttr(elemnode,
"fUniqueID"))
1226 if (!
fXML->HasAttr(elemnode,
"fBits"))
1229 TString idstr =
fXML->GetAttr(elemnode,
"fUniqueID");
1230 TString bitsstr =
fXML->GetAttr(elemnode,
"fBits");
1231 TString prstr =
fXML->GetAttr(elemnode,
"fProcessID");
1233 fXML->FreeAttr(elemnode,
"fUniqueID");
1234 fXML->FreeAttr(elemnode,
"fBits");
1235 fXML->FreeAttr(elemnode,
"fProcessID");
1244 sscanf(bitsstr.
Data(),
"%x", &bits);
1247 snprintf(sbuf,
sizeof(sbuf),
"%u", bits);
1252 if (prstr.
Length() > 0) {
1273 const char *clname =
nullptr;
1279 Info(
"ReadClass",
"Try to read class %s", clname ? clname :
"---");
1281 return clname ?
gROOT->GetClass(clname) :
nullptr;
1290 Info(
"WriteClass",
"Try to write class %s", cl->
GetName());
1316 Error(
"ReadVersion",
"No correspondent tags to read version");
1321 Info(
"ReadVersion",
"Version = %d", res);
1388 Info(
"WriteObject",
"Class %s", (actualClass ? actualClass->
GetName() :
" null"));
1395template <
typename T>
1398 Int_t indx = 0, cnt, curr;
1399 while (indx < arrsize) {
1406 arr[indx++] = arr[curr];
1414template <
typename T>
1431 ShiftStack(is_static ?
"readstatarr" :
"readarr");
1648template <
typename T>
1682 memcpy(
c, buf,
size);
1792 const TClass *onFileClass)
1796 (*streamer)(*
this,
start, 0);
1800 int objectSize = cl->
Size();
1801 char *obj = (
char *)
start;
1802 char *end = obj +
n * objectSize;
1804 for (; obj < end; obj += objectSize)
1805 ((
TClass *)cl)->Streamer(obj, *
this, onFileClass);
1816 const TClass *onFileClass)
1830 for (
Int_t j = 0; j <
n; j++) {
1836 (*streamer)(*
this, (
void *)
start, oldStyle ?
n : 0);
1842 for (
Int_t j = 0; j <
n; j++) {
1850 void *old =
start[j];
1876 for (
Int_t j = 0; j <
n; j++) {
1879 ((
TClass *)cl)->Streamer(
start[j], *
this, onFileClass);
1884template <
typename T>
1889 while (indx < arrsize) {
1891 Int_t curr = indx++;
1892 while ((indx < arrsize) && (arr[indx] == arr[curr]))
1894 if (indx - curr > 1)
1898 for (
Int_t indx = 0; indx < arrsize; indx++)
1907template <
typename T>
2028template <
typename T>
2034 if (
n > std::numeric_limits<Int_t>::max()) {
2035 Fatal(
"XmlWriteFastArray",
"Array larger than 2^31 elements cannot be stored in XML");
2184 (*streamer)(*
this,
start, 0);
2188 char *obj = (
char *)
start;
2194 ((
TClass *)cl)->Streamer(obj, *
this);
2221 (*streamer)(*
this, (
void *)
start, oldStyle ?
n : 0);
2233 if (!strInfo && !
start[j] && !oldStyle) {
2268 ((
TObject *)obj)->TObject::Streamer(*
this);
2271 ((
TNamed *)obj)->TNamed::Streamer(*
this);
2278 Info(
"StreamObject",
"Class: %s", (cl ? cl->
GetName() :
"none"));
2432 char *data =
new char[nbig+1];
2453 Error(
"ReadStdString",
"The std::string address is nullptr but should not");
2468 obj->resize(nbig,
'\0');
2471 obj->resize(nwh,
'\0');
2494 s =
new char[nch + 1];
2643 const char *data = s.
Data();
2664 Int_t nbig = obj->length();
2701 snprintf(buf,
sizeof(buf),
"%d", value);
2711 snprintf(buf,
sizeof(buf),
"%hd", value);
2721 snprintf(buf,
sizeof(buf),
"%d", value);
2731 snprintf(buf,
sizeof(buf),
"%ld", value);
2740 std::string buf = std::to_string(value);
2778 snprintf(buf,
sizeof(buf),
"%u", value);
2788 snprintf(buf,
sizeof(buf),
"%hu", value);
2798 snprintf(buf,
sizeof(buf),
"%u", value);
2808 snprintf(buf,
sizeof(buf),
"%lu", value);
2817 std::string buf = std::to_string(value);
2848 sscanf(res,
"%d", &
n);
2861 sscanf(res,
"%hd", &value);
2873 sscanf(res,
"%d", &value);
2885 sscanf(res,
"%ld", &value);
2909 sscanf(res,
"%f", &value);
2921 sscanf(res,
"%lf", &value);
2946 sscanf(res,
"%ud", &
n);
2959 sscanf(res,
"%hud", &value);
2971 sscanf(res,
"%u", &value);
2983 sscanf(res,
"%lu", &value);
size_t size(const MatrixT &matrix)
retrieve the size of a square matrix
unsigned short UShort_t
Unsigned Short integer 2 bytes (unsigned short).
int Int_t
Signed integer 4 bytes (int).
long Longptr_t
Integer large enough to hold a pointer (platform-dependent).
short Version_t
Class version identifier (short).
unsigned char UChar_t
Unsigned Character 1 byte (unsigned char).
char Char_t
Character 1 byte (char).
unsigned int UInt_t
Unsigned integer 4 bytes (unsigned int).
unsigned long ULong_t
Unsigned long integer 4 bytes (unsigned long). Size depends on architecture.
long Long_t
Signed long integer 4 bytes (long). Size depends on architecture.
bool Bool_t
Boolean (0=false, 1=true) (bool).
short Short_t
Signed Short integer 2 bytes (short).
double Double_t
Double 8 bytes.
long long Long64_t
Portable signed long integer 8 bytes.
unsigned long long ULong64_t
Portable unsigned long integer 8 bytes.
float Float_t
Float 4 bytes (float).
void InitMap() override
Create the fMap container and initialize them with the null object.
void ForceWriteInfo(TVirtualStreamerInfo *info, Bool_t force) override
force writing the TStreamerInfo to the file
TExMap * fMap
Map containing object,offset pairs for reading/writing.
void MapObject(const TObject *obj, UInt_t offset=1) override
Add object to the fMap container.
Long64_t GetObjectTag(const void *obj)
Returns tag for specified object from objects map (if exists) Returns 0 if object not included into o...
static ULong_t Void_Hash(const void *ptr)
Return hash value for provided object.
void GetMappedObject(UInt_t tag, void *&ptr, TClass *&ClassPtr) const override
Retrieve the object stored in the buffer's object map at 'tag' Set ptr and ClassPtr respectively to t...
Int_t WriteObjectAny(const void *obj, const TClass *ptrClass, Bool_t cacheReuse=kTRUE) override
Write object to I/O buffer.
static const char * ConvertFloat(Float_t v, char *buf, unsigned len, Bool_t not_optimize=kFALSE)
convert float to string with configured format
TBufferText()
Default constructor.
static const char * ConvertDouble(Double_t v, char *buf, unsigned len, Bool_t not_optimize=kFALSE)
convert float to string with configured format
Bool_t ProcessPointer(const void *ptr, XMLNodePointer_t node)
Add "ptr" attribute to node, if ptr is null or if ptr is pointer on object, which is already saved in...
void WriteLong(Long_t l) final
Writes Long_t value to buffer.
void SetXML(TXMLEngine *xml)
Int_t GetCompressionSettings() const
TXMLStackObj * PushStack(XMLNodePointer_t current, Bool_t simple=kFALSE)
Add new level to xml stack.
Bool_t VerifyAttr(XMLNodePointer_t node, const char *name, const char *value, const char *errinfo=nullptr)
Checks, that attribute of specified name exists and has specified value.
void WorkWithClass(TStreamerInfo *info, const TClass *cl=nullptr)
Prepares buffer to stream data of specified class.
Bool_t VerifyStackNode(const char *name, const char *errinfo=nullptr)
Check, if stack node has specified name.
void ReadUShort(UShort_t &s) final
Reads UShort_t value from buffer.
void XmlWriteFastArray(const T *arr, Long64_t n)
Write array without size attribute Also treat situation, when instead of one single array chain of se...
void ReadUInt(UInt_t &i) final
Reads UInt_t value from buffer.
Int_t fCompressLevel
! Compression level and algorithm
void SetCompressionSettings(Int_t settings=ROOT::RCompressionSetting::EDefaults::kUseCompiledDefault)
Used to specify the compression level and algorithm.
Int_t XmlReadArray(T *&arr, bool is_static=false)
Template method to read array with size attribute If necessary, array is created.
TString fValueBuf
! Current value buffer
void StreamObject(void *obj, const TClass *cl, const TClass *onFileClass=nullptr) final
Stream object to/from buffer.
void WriteStdString(const std::string *s) final
Writes a std::string.
void ReadDouble(Double_t &d) final
Reads Double_t value from buffer.
TBufferXML(TBuffer::EMode mode)
Creates buffer object to serialize/deserialize data to/from xml.
Bool_t VerifyNode(XMLNodePointer_t node, const char *name, const char *errinfo=nullptr)
Check if node has specified name.
void ReadFastArrayString(Char_t *c, Int_t n) final
Read array of n characters from the I/O buffer.
void WriteLong64(Long64_t l) final
Writes Long64_t value to buffer.
void WriteChar(Char_t c) final
Writes Char_t value to buffer.
TXMLEngine * fXML
! instance of TXMLEngine for working with XML structures
std::deque< std::unique_ptr< TXMLStackObj > > fStack
! Stack of processed objects
static TString ConvertToXML(const TObject *obj, Bool_t GenericLayout=kFALSE, Bool_t UseNamespaces=kFALSE)
Converts object, inherited from TObject class, to XML string GenericLayout defines layout choice for ...
void WriteFloat(Float_t f) final
Writes Float_t value to buffer.
void ReadTString(TString &s) final
Reads a TString.
void WriteTString(const TString &s) final
Writes a TString.
void IncrementLevel(TVirtualStreamerInfo *) final
Function is called from TStreamerInfo WriteBuffer and ReadBuffer functions and indent new level in xm...
void SetIOVersion(Int_t v)
void WriteArray(const Bool_t *b, Int_t n) final
Write array of Bool_t to buffer.
XMLNodePointer_t XmlWriteAny(const void *obj, const TClass *cl)
Convert object of any class to xml structures Return pointer on top xml element.
void XmlReadBasic(Char_t &value)
Reads string from current xml node and convert it to Char_t value.
void ReadULong(ULong_t &l) final
Reads ULong_t value from buffer.
Int_t GetIOVersion() const
XMLNodePointer_t XmlWriteValue(const char *value, const char *name)
Create xml node with specified name and adds it to stack node.
void SkipObjectAny() final
Skip any kind of object from buffer Actually skip only one node on current level of xml structure.
Bool_t VerifyStackAttr(const char *name, const char *value, const char *errinfo=nullptr)
Checks stack attribute.
void ReadFloat(Float_t &f) final
Reads Float_t value from buffer.
void ReadULong64(ULong64_t &l) final
Reads ULong64_t value from buffer.
XMLNodePointer_t XmlWriteBasic(Char_t value)
Converts Char_t to string and add xml node to buffer.
void ShiftStack(const char *info=nullptr)
Shift stack node to next.
void PerformPreProcessing(const TStreamerElement *elem, XMLNodePointer_t elemnode)
Function is unpack TObject and TString structures to be able read them from custom streamers of this ...
void ReadShort(Short_t &s) final
Reads Short_t value from buffer.
void BeforeIOoperation()
Function is called before any IO operation of TBuffer Now is used to store version value if no proper...
TClass * ReadClass(const TClass *cl=nullptr, UInt_t *objTag=nullptr) final
Function to read class from buffer, used in old-style streamers.
Int_t fErrorFlag
! Error flag
void ReadChar(Char_t &c) final
Reads Char_t value from buffer.
void XmlWriteArrayContent(const T *arr, Int_t arrsize)
void ClassEnd(const TClass *) final
Should be called at the end of custom streamer See TBufferXML::ClassBegin for more details.
void ReadLong64(Long64_t &l) final
Reads Long64_t value from buffer.
Version_t fVersionBuf
! Current version buffer
void ClassBegin(const TClass *, Version_t=-1) final
Should be called at the beginning of custom class streamer.
void XmlWriteArray(const T *arr, Int_t arrsize)
Write array, including it size Content may be compressed.
void * XmlReadObject(void *obj, TClass **cl=nullptr)
Read object from the buffer.
void XmlReadArrayContent(T *arr, Int_t arrsize)
Template method to read array content.
void ReadCharP(Char_t *c) final
Reads array of characters from buffer.
Bool_t fCanUseCompact
! Flag indicate that basic type (like Int_t) can be placed in the same tag
void ReadStdString(std::string *s) final
Reads a std::string.
void WriteFastArrayString(const Char_t *c, Long64_t n) final
Write array of n characters into the I/O buffer.
void ReadBool(Bool_t &b) final
Reads Bool_t value from buffer.
void WriteUShort(UShort_t s) final
Writes UShort_t value to buffer.
void WriteClass(const TClass *cl) final
Function to write class into buffer, used in old-style streamers.
void WriteCharStar(char *s) final
Write a char* string.
const char * XmlReadValue(const char *name)
read string value from current stack node
Bool_t ExtractPointer(XMLNodePointer_t node, void *&ptr, TClass *&cl)
Searches for "ptr" attribute and returns pointer to object and class, if "ptr" attribute reference to...
void ReadFastArray(Bool_t *b, Int_t n) final
Read array of Bool_t from buffer.
void DecrementLevel(TVirtualStreamerInfo *) final
Function is called from TStreamerInfo WriteBuffer and ReadBuffer functions and decrease level in xml ...
void XmlReadFastArray(T *arr, Int_t n)
Template method to read content of array, which not include size of array Also treated situation,...
void PerformPostProcessing()
Function is converts TObject and TString structures to more compact representation.
void SetStreamerElementNumber(TStreamerElement *elem, Int_t comp_type) final
Function is called from TStreamerInfo WriteBuffer and ReadBuffer functions and add/verify next elemen...
void WriteCharP(const Char_t *c) final
Writes array of characters to buffer.
static TObject * ConvertFromXML(const char *str, Bool_t GenericLayout=kFALSE, Bool_t UseNamespaces=kFALSE)
Read object from XML, produced by ConvertToXML() method.
void ClassMember(const char *name, const char *typeName=nullptr, Int_t arrsize1=-1, Int_t arrsize2=-1) final
Method indicates name and typename of class member, which should be now streamed in custom streamer.
Int_t ReadStaticArray(Bool_t *b) final
Read array of Bool_t from buffer.
void * XmlReadAny(XMLNodePointer_t node, void *obj, TClass **cl)
Recreate object from xml structure.
XMLNodePointer_t StackNode()
Return pointer on current xml node.
void WriteObjectClass(const void *actualObjStart, const TClass *actualClass, Bool_t cacheReuse) final
Write object to buffer. Only used from TBuffer.
Bool_t VerifyItemNode(const char *name, const char *errinfo=nullptr)
Checks, if stack node is item and has specified name.
static void * ConvertFromXMLChecked(const char *xml, const TClass *expectedClass, Bool_t GenericLayout=kFALSE, Bool_t UseNamespaces=kFALSE)
Convert from XML and check if object derived from specified class When possible, cast to given class.
void * ReadObjectAny(const TClass *clCast) final
Read object from buffer. Only used from TBuffer.
void ReadLong(Long_t &l) final
Reads Long_t value from buffer.
void ExtractReference(XMLNodePointer_t node, const void *ptr, const TClass *cl)
Analyze if node has "ref" attribute and register it to object map.
void SetCompressionLevel(Int_t level=ROOT::RCompressionSetting::ELevel::kUseMin)
See comments for function SetCompressionSettings.
Version_t ReadVersion(UInt_t *start=nullptr, UInt_t *bcnt=nullptr, const TClass *cl=nullptr) final
Read version value from buffer.
void ReadInt(Int_t &i) final
Reads Int_t value from buffer.
Int_t ReadArray(Bool_t *&b) final
Read array of Bool_t from buffer.
void SetCompressionAlgorithm(Int_t algorithm=ROOT::RCompressionSetting::EAlgorithm::kUseGlobal)
See comments for function SetCompressionSettings.
void WriteDouble(Double_t d) final
Writes Double_t value to buffer.
void CheckVersionBuf()
Checks buffer, filled by WriteVersion if next data is arriving, version should be stored in buffer.
XMLNodePointer_t XmlWriteObject(const void *obj, const TClass *objClass, Bool_t cacheReuse)
Write object to buffer If object was written before, only pointer will be stored Return pointer to to...
TXMLFile * XmlFile()
Returns pointer to TXMLFile object.
TVirtualStreamerInfo * GetInfo() final
Return current streamer info element.
void WriteUInt(UInt_t i) final
Writes UInt_t value to buffer.
void WorkWithElement(TStreamerElement *elem, Int_t comp_type)
This function is a part of SetStreamerElementNumber method.
void WriteBool(Bool_t b) final
Writes Bool_t value to buffer.
TClass * fExpectedBaseClass
! Pointer to class, which should be stored as parent of current
void WriteShort(Short_t s) final
Writes Short_t value to buffer.
void WriteULong64(ULong64_t l) final
Writes ULong64_t value to buffer.
TXMLStackObj * Stack(UInt_t depth=0)
XMLNodePointer_t CreateItemNode(const char *name)
Create item node of specified name.
void WriteULong(ULong_t l) final
Writes ULong_t value to buffer.
TXMLStackObj * PopStack()
Remove one level from xml stack.
void CreateElemNode(const TStreamerElement *elem)
Create xml node correspondent to TStreamerElement object.
static void * ConvertFromXMLAny(const char *str, TClass **cl=nullptr, Bool_t GenericLayout=kFALSE, Bool_t UseNamespaces=kFALSE)
Read object of any class from XML, produced by ConvertToXML() method.
~TBufferXML() override
Destroy xml buffer.
Bool_t VerifyElemNode(const TStreamerElement *elem)
Checks if stack node correspond to TStreamerElement object.
void ReadCharStar(char *&s) final
Read a char* string.
void ReadUChar(UChar_t &c) final
Reads UChar_t value from buffer.
void WriteFastArray(const Bool_t *b, Long64_t n) final
Write array of Bool_t to buffer.
UInt_t WriteVersion(const TClass *cl, Bool_t useBcnt=kFALSE) final
Copies class version to buffer, but not writes it to xml Version will be written with next I/O operat...
void WriteUChar(UChar_t c) final
Writes UChar_t value to buffer.
void WriteInt(Int_t i) final
Writes Int_t value to buffer.
TObject * GetParent() const
Return pointer to parent of this buffer.
TClass instances represent classes, structs and namespaces in the ROOT type system.
void Streamer(void *obj, TBuffer &b, const TClass *onfile_class=nullptr) const
void * New(ENewType defConstructor=kClassNew, Bool_t quiet=kFALSE) const
Return a pointer to a newly allocated object of this class.
void Destructor(void *obj, Bool_t dtorOnly=kFALSE)
Explicitly call destructor for object.
Int_t Size() const
Return size of object of this class.
Bool_t IsTObject() const
Return kTRUE is the class inherits from TObject.
Int_t GetBaseClassOffset(const TClass *toBase, void *address=nullptr, bool isDerivedObject=true)
Long_t Property() const override
Returns the properties of the TClass as a bit field stored as a Long_t value.
Version_t GetClassVersion() const
TClass * GetActualClass(const void *object) const
Return a pointer to the real class of the object.
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.
Basic data type descriptor (datatype information is obtained from CINT).
virtual void SetOnFileClass(const TClass *cl)
The TNamed class is the base class for all named ROOT classes.
const char * GetName() const override
Returns name of object.
Int_t IndexOf(const TObject *obj) const override
Mother of all ROOT objects.
@ kIsOnHeap
object is on heap
@ kNotDeleted
object has not been deleted
virtual void Error(const char *method, const char *msgfmt,...) const
Issue error message.
virtual void Fatal(const char *method, const char *msgfmt,...) const
Issue fatal error message.
virtual void Info(const char *method, const char *msgfmt,...) const
Issue info message.
Describe one element (data member) to be Streamed.
virtual TClass * GetClassPointer() const
Returns a pointer to the TClass of this element and updates fClassObject.
virtual void SetArrayDim(Int_t dim)
Set number of array dimensions.
virtual void SetMaxIndex(Int_t dim, Int_t max)
set maximum index for array with dimension dim
Describes a persistent version of a class.
TClass * GetClass() const override
TObjArray * GetElements() const override
Int_t Atoi() const
Return integer value of string.
const char * Data() const
void Resize(Ssiz_t n)
Resize the string. Truncate or add blanks as necessary.
Abstract Interface class describing Streamer information for one class.
static Bool_t CanDelete()
static function returning true if ReadBuffer can delete object
virtual TClass * GetClass() const =0
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...
XMLNodePointer_t ReadSingleNode(const char *src)
read single xmlnode from provided string
void FreeNode(XMLNodePointer_t xmlnode)
release all memory, allocated from this node and destroys node itself
TClass * XmlDefineClass(const char *xmlClassName)
define class for the converted class name, where special symbols were replaced by '_'
const char * XmlClassNameSpaceRef(const TClass *cl)
produce string which used as reference in class namespace definition
EXMLLayout GetXmlLayout() const
virtual void SetUseNamespaces(Bool_t iUseNamespaces=kTRUE)
const char * XmlConvertClassName(const char *name)
convert class name to exclude any special symbols like ':', '<' '>' ',' and spaces
Int_t AtoI(const char *sbuf, Int_t def=0, const char *errinfo=nullptr)
converts string to integer.
const char * XmlGetElementName(const TStreamerElement *el)
return converted name for TStreamerElement
Int_t GetNextRefCounter()
Bool_t IsUseNamespaces() const
virtual void SetXmlLayout(EXMLLayout layout)
Bool_t fCompressedClassNode
Bool_t IsStreamerInfo() const
TXMLStackObj(XMLNodePointer_t node)
const char * ClassVersion
@ kUndefined
Undefined compression algorithm (must be kept the last of the list in case a new algorithm is added).
@ kUseMin
Compression level reserved when we are not sure what to use (1 is for the fastest compression).