60 fExpectedBaseClass(nullptr), fCompressLevel(0), fIOVersion(3)
70 fExpectedBaseClass(nullptr), fCompressLevel(0), fIOVersion(3)
81 fCanUseCompact(
kFALSE), fExpectedBaseClass(nullptr), fCompressLevel(0), fIOVersion(3)
121 TClass *clActual =
nullptr;
122 void *ptr = (
void *)obj;
132 return ConvertToXML(ptr, clActual, GenericLayout, UseNamespaces);
183 return (
TObject *)(((
char *)obj) + delta);
204 void *obj = buf.
XmlReadAny(xmlnode,
nullptr, cl);
218 TClass *objClass =
nullptr;
221 if (!res || !objClass)
224 if (objClass == expectedClass)
229 ::Error(
"TBufferXML::ConvertFromXMLChecked",
"expected class %s is not base for read class %s",
235 return (
char *)res - offset;
285class TXMLStackObj :
public TObject {
288 :
TObject(), fNode(node), fInfo(nullptr), fElem(nullptr), fElemNumber(0), fCompressedClassNode(
kFALSE),
289 fClassNs(nullptr), fIsStreamerInfo(
kFALSE), fIsElemOwner(
kFALSE)
293 virtual ~TXMLStackObj()
299 Bool_t IsStreamerInfo()
const {
return fIsStreamerInfo; }
305 Bool_t fCompressedClassNode;
321 TXMLStackObj *stack =
new TXMLStackObj(current);
343 TXMLStackObj *stack =
Stack();
344 return stack ? stack->fNode :
nullptr;
352 TXMLStackObj *stack =
Stack();
411 if (!node || (
Length() == 0))
414 const char *src =
Buffer();
417 char *fZipBuffer = 0;
423 if ((
Length() > 512) && (compressionLevel > 0)) {
424 int zipBufferSize =
Length();
425 fZipBuffer =
new char[zipBufferSize + 9];
427 int compressedSize = 0;
428 R__zipMultipleAlgorithm(compressionLevel, &dataSize,
Buffer(), &zipBufferSize, fZipBuffer, &compressedSize,
429 compressionAlgorithm);
430 if (compressedSize > 0) {
432 srcSize = compressedSize;
435 fZipBuffer =
nullptr;
445 while (srcCnt++ < srcSize) {
446 tgt += sprintf(tgt,
" %02x", (
unsigned char)*src);
448 if (block++ == 100) {
477 char *fUnzipBuffer =
nullptr;
480 Info(
"XmlReadBlock",
"Block size = %d, Length = %d, Compressed = %d", blockSize,
Length(), blockCompressed);
486 Int_t readSize = blockSize;
490 if (blockCompressed) {
492 fUnzipBuffer =
new char[zipSize];
498 char *ptr = (
char *)content.
Data();
501 Info(
"XmlReadBlock",
"Content %s", ptr);
503 for (
int i = 0; i < readSize; i++) {
504 while ((*ptr < 48) || ((*ptr > 57) && (*ptr < 97)) || (*ptr > 102))
507 int b_hi = (*ptr > 57) ? *ptr - 87 : *ptr - 48;
509 int b_lo = (*ptr > 57) ? *ptr - 87 : *ptr - 48;
512 *tgt = b_hi * 16 + b_lo;
516 Info(
"XmlReadBlock",
" Buf[%d] = %d", i, b_hi * 16 + b_lo);
521 int srcsize(0), tgtsize(0), unzipRes(0);
525 R__unzip(&readSize, (
unsigned char *)fUnzipBuffer, &blockSize, (
unsigned char *)
Buffer(), &unzipRes);
527 if (status != 0 || unzipRes != blockSize)
528 Error(
"XmlReadBlock",
"Decompression error %d", unzipRes);
530 Info(
"XmlReadBlock",
"Unzip ok");
532 delete[] fUnzipBuffer;
566 if (refvalue.
Length() > 0) {
606 Error(
"ExtractPointer",
"not found ptr %s result %p %s", ptrid, ptr, (cl ? cl->
GetName() :
"null"));
625 Error(
"ExtractReference",
"Reference tag %s not started from %s", refid,
xmlio::IdBase);
634 Info(
"ExtractReference",
"Find reference %s for object %p class %s", refid, ptr, (cl ? cl->
GetName() :
"null"));
668 if (!node || !
name || !value)
672 if ((!cont || (strcmp(cont, value) != 0))) {
674 Error(
"VerifyAttr",
"%s : attr %s = %s, expected: %s", errinfo,
name, cont, value);
741 TXMLStackObj *curr =
PushStack(elemnode);
793 ((
TClass *)cl)->Streamer((
void *)obj, *
this);
798 Info(
"XmlWriteObject",
"Done write for class: %s", cl ? cl->
GetName() :
"null");
822 TClass *objClass =
nullptr;
837 Error(
"XmlReadObject",
"Cannot find class %s", clname.
Data());
843 Info(
"XmlReadObject",
"Reading object of class %s", clname.
Data());
846 obj = objClass->
New();
852 objClass->
Streamer((
void *)obj, *
this);
859 Info(
"XmlReadObject",
"Reading object of class %s done", clname.
Data());
894 Info(
"IncrementLevel",
"Class: %s", clname.
Data());
899 TXMLStackObj *stack =
Stack();
904 if (compressClassNode) {
926 if (!compressClassNode) {
938 stack->fCompressedClassNode = compressClassNode;
939 stack->fInfo = sinfo;
940 stack->fIsStreamerInfo =
kTRUE;
956 TXMLStackObj *stack =
Stack();
958 if (!stack->IsStreamerInfo()) {
963 if (stack->fCompressedClassNode) {
964 stack->fInfo =
nullptr;
965 stack->fIsStreamerInfo =
kFALSE;
966 stack->fCompressedClassNode =
kFALSE;
997 TXMLStackObj *stack =
Stack();
999 Error(
"SetStreamerElementNumber",
"stack is empty");
1003 if (!stack->IsStreamerInfo()) {
1012 Error(
"SetStreamerElementNumber",
"Lost of stack");
1017 Error(
"SetStreamerElementNumber",
"Problem in Inc/Dec level");
1023 if (!stack->IsStreamerInfo()) {
1024 Error(
"SetStreamerElementNumber",
"Problem in Inc/Dec level");
1030 Info(
"SetStreamerElementNumber",
" Next element %s", elem->
GetName());
1043 Info(
"SetStreamerElementNumber",
" Expects base class %s with standard streamer",
1054 stack->fElemNumber = number;
1055 stack->fIsElemOwner = (number < 0);
1125 if (!
name || (strlen(
name) == 0)) {
1126 Error(
"ClassMember",
"Invalid member name");
1133 Int_t typ_id(-1), comp_type(-1);
1135 if (strcmp(typeName,
"raw:data") == 0)
1146 if (strcmp(
name, typeName) == 0) {
1154 if (tname[tname.
Length() - 1] ==
'*') {
1160 Error(
"ClassMember",
"Invalid class specifier %s", typeName);
1185 }
else if ((typ_id > 0) && (typ_id < 20)) {
1202 Error(
"ClassMember",
"Invalid combination name = %s type = %s",
name, typeName);
1229 if (!elem || !elemnode)
1237 XMLNodePointer_t nodecharstar(
nullptr), nodeuchar(
nullptr), nodeint(
nullptr), nodestring(
nullptr);
1256 nodecharstar = node;
1283 XMLNodePointer_t vnode =
nullptr, idnode =
nullptr, bitsnode =
nullptr, prnode =
nullptr;
1308 if (!vnode || !idnode || !bitsnode)
1312 fXML->
NewAttr(elemnode,
nullptr,
"fUniqueID", str);
1316 sscanf(str.
Data(),
"%u", &bits);
1319 snprintf(sbuf,
sizeof(sbuf),
"%x", bits);
1324 fXML->
NewAttr(elemnode,
nullptr,
"fProcessID", str);
1342 if (!elem || !elemnode)
1356 snprintf(sbuf,
sizeof(sbuf),
"%d", len);
1393 sscanf(bitsstr.
Data(),
"%x", &bits);
1395 snprintf(sbuf,
sizeof(sbuf),
"%u", bits);
1400 if (prstr.
Length() > 0) {
1421 const char *clname =
nullptr;
1427 Info(
"ReadClass",
"Try to read class %s", clname ? clname :
"---");
1429 return clname ?
gROOT->GetClass(clname) :
nullptr;
1438 Info(
"WriteClass",
"Try to write class %s", cl->
GetName());
1464 Error(
"ReadVersion",
"No correspondent tags to read version");
1469 Info(
"ReadVersion",
"Version = %d", res);
1536 Info(
"WriteObject",
"Class %s", (actualClass ? actualClass->
GetName() :
" null"));
1543template <
typename T>
1547 while (indx < arrsize) {
1554 arr[indx++] = arr[curr];
1562template <
typename T>
1579 ShiftStack(is_static ?
"readstatarr" :
"readarr");
1796template <
typename T>
1827 Int_t size = strlen(buf);
1830 memcpy(
c, buf, size);
1940 const TClass *onFileClass)
1944 (*streamer)(*
this, start, 0);
1948 int objectSize = cl->
Size();
1949 char *obj = (
char *)start;
1950 char *end = obj +
n * objectSize;
1952 for (; obj < end; obj += objectSize)
1953 ((
TClass *)cl)->Streamer(obj, *
this, onFileClass);
1964 const TClass *onFileClass)
1978 for (
Int_t j = 0; j <
n; j++) {
1980 start[j] = cl->
New();
1984 (*streamer)(*
this, (
void *)start, oldStyle ?
n : 0);
1990 for (
Int_t j = 0; j <
n; j++) {
1993 start[j] = ((
TClass *)cl)->New();
1994 ((
TClass *)cl)->Streamer(start[j], *
this);
1998 void *old = start[j];
2024 for (
Int_t j = 0; j <
n; j++) {
2026 start[j] = ((
TClass *)cl)->New();
2027 ((
TClass *)cl)->Streamer(start[j], *
this, onFileClass);
2032template <
typename T>
2037 while (indx < arrsize) {
2039 Int_t curr = indx++;
2040 while ((indx < arrsize) && (arr[indx] == arr[curr]))
2042 if (indx - curr > 1)
2046 for (
Int_t indx = 0; indx < arrsize; indx++)
2055template <
typename T>
2175template <
typename T>
2205 for (
int i = 0; i <
n; i++) {
2327 (*streamer)(*
this, start, 0);
2331 char *obj = (
char *)start;
2334 int size = cl->
Size();
2336 for (
Int_t j = 0; j <
n; j++, obj += size) {
2337 ((
TClass *)cl)->Streamer(obj, *
this);
2364 (*streamer)(*
this, (
void *)start, oldStyle ?
n : 0);
2374 for (
Int_t j = 0; j <
n; j++) {
2376 if (!strInfo && !start[j] && !oldStyle) {
2386 ((
TClass *)cl)->Streamer(start[j], *
this);
2394 for (
Int_t j = 0; j <
n; j++) {
2396 start[j] = ((
TClass *)cl)->New();
2397 ((
TClass *)cl)->Streamer(start[j], *
this);
2411 ((
TObject *)obj)->TObject::Streamer(*
this);
2414 ((
TNamed *)obj)->TNamed::Streamer(*
this);
2421 Info(
"StreamObject",
"Class: %s", (cl ? cl->
GetName() :
"none"));
2575 char *
data =
new char[nbig];
2596 Error(
"ReadStdString",
"The std::string address is nullptr but should not");
2611 obj->resize(nbig,
'\0');
2614 obj->resize(nwh,
'\0');
2637 s =
new char[nch + 1];
2786 const char *
data =
s.Data();
2807 Int_t nbig = obj->length();
2844 snprintf(buf,
sizeof(buf),
"%d", value);
2854 snprintf(buf,
sizeof(buf),
"%hd", value);
2864 snprintf(buf,
sizeof(buf),
"%d", value);
2874 snprintf(buf,
sizeof(buf),
"%ld", value);
2883 std::string buf = std::to_string(value);
2921 snprintf(buf,
sizeof(buf),
"%u", value);
2931 snprintf(buf,
sizeof(buf),
"%hu", value);
2941 snprintf(buf,
sizeof(buf),
"%u", value);
2951 snprintf(buf,
sizeof(buf),
"%lu", value);
2960 std::string buf = std::to_string(value);
2991 sscanf(res,
"%d", &
n);
3004 sscanf(res,
"%hd", &value);
3016 sscanf(res,
"%d", &value);
3028 sscanf(res,
"%ld", &value);
3052 sscanf(res,
"%f", &value);
3064 sscanf(res,
"%lf", &value);
3089 sscanf(res,
"%ud", &
n);
3102 sscanf(res,
"%hud", &value);
3114 sscanf(res,
"%u", &value);
3126 sscanf(res,
"%lu", &value);
3181 return Stack()->fInfo;
unsigned long long ULong64_t
void R__unzip(Int_t *nin, UChar_t *bufin, Int_t *lout, char *bufout, Int_t *nout)
int R__unzip_header(Int_t *nin, UChar_t *bufin, Int_t *lout)
virtual void GetMappedObject(UInt_t tag, void *&ptr, TClass *&ClassPtr) const
Retrieve the object stored in the buffer's object map at 'tag' Set ptr and ClassPtr respectively to t...
TExMap * fMap
Map containing object,offset pairs for reading/writing.
virtual void MapObject(const TObject *obj, UInt_t offset=1)
Add object to the fMap container.
virtual void ForceWriteInfo(TVirtualStreamerInfo *info, Bool_t force)
force writing the TStreamerInfo to the file
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 R__ALWAYS_INLINE ULong_t Void_Hash(const void *ptr)
Return hash value for provided object.
virtual Int_t WriteObjectAny(const void *obj, const TClass *ptrClass, Bool_t cacheReuse=kTRUE)
Write object to I/O buffer.
virtual void InitMap()
Create the fMap container and initialize them with the null object.
Base class for text-based streamers like TBufferJSON or TBufferXML Special actions list will use meth...
static const char * ConvertFloat(Float_t v, char *buf, unsigned len, Bool_t not_optimize=kFALSE)
convert float to string with configured format
static const char * ConvertDouble(Double_t v, char *buf, unsigned len, Bool_t not_optimize=kFALSE)
convert float to string with configured format
Class for serializing/deserializing object to/from xml.
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...
virtual void ReadDouble(Double_t &d)
Reads Double_t value from buffer.
virtual void ReadUChar(UChar_t &c)
Reads UChar_t value from buffer.
virtual Int_t ReadStaticArray(Bool_t *b)
Read array of Bool_t from buffer.
void SetXML(TXMLEngine *xml)
virtual void WriteDouble(Double_t d)
Writes Double_t value to buffer.
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.
Int_t GetCompressionAlgorithm() const
virtual void WriteObjectClass(const void *actualObjStart, const TClass *actualClass, Bool_t cacheReuse)
Write object to buffer. Only used from TBuffer.
Int_t fCompressLevel
! Compression level and algorithm
virtual void ReadCharStar(char *&s)
Read a char* string.
TString fValueBuf
! Current value buffer
Int_t GetCompressionLevel() const
virtual void WriteULong64(ULong64_t l)
Writes ULong64_t value to buffer.
Bool_t VerifyNode(XMLNodePointer_t node, const char *name, const char *errinfo=nullptr)
Check if node has specified name.
virtual void ReadChar(Char_t &c)
Reads Char_t value from buffer.
virtual void SetStreamerElementNumber(TStreamerElement *elem, Int_t comp_type)
Function is called from TStreamerInfo WriteBuffer and ReadBuffer functions and add/verify next elemen...
TXMLEngine * fXML
! instance of TXMLEngine for working with XML structures
virtual void ReadFastArray(Bool_t *b, Int_t n)
Read array of Bool_t from buffer.
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 ...
virtual void ClassEnd(const TClass *)
Should be called at the end of custom streamer See TBufferXML::ClassBegin for more details.
virtual Int_t ReadArray(Bool_t *&b)
Read array of Bool_t from buffer.
void SetIOVersion(Int_t v)
virtual void WriteShort(Short_t s)
Writes Short_t value 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.
Int_t GetIOVersion() const
R__ALWAYS_INLINE void XmlWriteArrayContent(const T *arr, Int_t arrsize)
XMLNodePointer_t XmlWriteValue(const char *value, const char *name)
Create xml node with specified name and adds it to stack node.
virtual void ReadFastArrayString(Char_t *c, Int_t n)
Read array of n characters from the I/O buffer.
std::deque< TXMLStackObj * > fStack
! Stack of processed objects
virtual void ReadULong64(ULong64_t &l)
Reads ULong64_t value from buffer.
virtual void WriteLong(Long_t l)
Writes Long_t value to buffer.
Bool_t VerifyStackAttr(const char *name, const char *value, const char *errinfo=nullptr)
Checks stack attribute.
virtual void WriteLong64(Long64_t l)
Writes Long64_t value to buffer.
virtual void WriteChar(Char_t c)
Writes Char_t value to buffer.
virtual void ReadShort(Short_t &s)
Reads Short_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.
virtual void ReadCharP(Char_t *c)
Reads array of characters from buffer.
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 ...
virtual void SkipObjectAny()
Skip any kind of object from buffer Actually skip only one node on current level of xml structure.
void BeforeIOoperation()
Function is called before any IO operation of TBuffer Now is used to store version value if no proper...
Int_t fErrorFlag
! Error flag
virtual void ReadInt(Int_t &i)
Reads Int_t value from buffer.
R__ALWAYS_INLINE void XmlReadArrayContent(T *arr, Int_t arrsize)
Template method to read array content.
virtual void * ReadObjectAny(const TClass *clCast)
Read object from buffer. Only used from TBuffer.
virtual void ReadLong64(Long64_t &l)
Reads Long64_t value from buffer.
virtual void StreamObject(void *obj, const TClass *cl, const TClass *onFileClass=nullptr)
Stream object to/from buffer.
virtual void ReadLong(Long_t &l)
Reads Long_t value from buffer.
virtual void WriteULong(ULong_t l)
Writes ULong_t value to buffer.
Version_t fVersionBuf
! Current version buffer
virtual void ReadTString(TString &s)
Reads a TString.
void XmlReadBlock(XMLNodePointer_t node)
Read binary block of data from xml.
void * XmlReadObject(void *obj, TClass **cl=nullptr)
Read object from the buffer.
Bool_t fCanUseCompact
! Flag indicate that basic type (like Int_t) can be placed in the same tag
R__ALWAYS_INLINE void XmlWriteArray(const T *arr, Int_t arrsize)
Write array, including it size Content may be compressed.
virtual UInt_t WriteVersion(const TClass *cl, Bool_t useBcnt=kFALSE)
Copies class version to buffer, but not writes it to xml Version will be written with next I/O operat...
virtual void WriteBool(Bool_t b)
Writes Bool_t value to buffer.
virtual TClass * ReadClass(const TClass *cl=nullptr, UInt_t *objTag=nullptr)
Function to read class from buffer, used in old-style streamers.
virtual void WriteCharStar(char *s)
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...
virtual void WriteStdString(const std::string *s)
Writes a std::string.
virtual void ReadUShort(UShort_t &s)
Reads UShort_t value from buffer.
R__ALWAYS_INLINE void XmlWriteFastArray(const T *arr, Int_t n)
Write array without size attribute Also treat situation, when instead of one single array chain of se...
virtual void ReadUInt(UInt_t &i)
Reads UInt_t value from buffer.
virtual void WriteFastArray(const Bool_t *b, Int_t n)
Write array of Bool_t to buffer.
void PerformPostProcessing()
Function is converts TObject and TString structures to more compact representation.
static TObject * ConvertFromXML(const char *str, Bool_t GenericLayout=kFALSE, Bool_t UseNamespaces=kFALSE)
Read object from XML, produced by ConvertToXML() method.
virtual void DecrementLevel(TVirtualStreamerInfo *)
Function is called from TStreamerInfo WriteBuffer and ReadBuffer functions and decrease level in xml ...
void * XmlReadAny(XMLNodePointer_t node, void *obj, TClass **cl)
Recreate object from xml structure.
virtual void ClassMember(const char *name, const char *typeName=nullptr, Int_t arrsize1=-1, Int_t arrsize2=-1)
Method indicates name and typename of class member, which should be now streamed in custom streamer.
XMLNodePointer_t StackNode()
Return pointer on current xml node.
R__ALWAYS_INLINE void XmlReadFastArray(T *arr, Int_t n)
Template method to read content of array, which not include size of array Also treated situation,...
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.
TBufferXML()
Default constructor.
virtual void WriteCharP(const Char_t *c)
Writes array of characters to buffer.
virtual void ReadULong(ULong_t &l)
Reads ULong_t value from buffer.
virtual void ClassBegin(const TClass *, Version_t=-1)
Should be called at the beginning of custom class streamer.
virtual void WriteTString(const TString &s)
Writes a TString.
virtual void ReadBool(Bool_t &b)
Reads Bool_t value from buffer.
virtual void WriteInt(Int_t i)
Writes Int_t value to buffer.
virtual Version_t ReadVersion(UInt_t *start=nullptr, UInt_t *bcnt=nullptr, const TClass *cl=nullptr)
Read version 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 SetCompressionSettings(Int_t settings=ROOT::RCompressionSetting::EDefaults::kUseGeneralPurpose)
Used to specify the compression level and algorithm.
virtual void WriteFloat(Float_t f)
Writes Float_t value to buffer.
void SetCompressionLevel(Int_t level=ROOT::RCompressionSetting::ELevel::kUseMin)
See comments for function SetCompressionSettings.
virtual void WriteArray(const Bool_t *b, Int_t n)
Write array of Bool_t to buffer.
void SetCompressionAlgorithm(Int_t algorithm=ROOT::RCompressionSetting::EAlgorithm::kUseGlobal)
See comments for function SetCompressionSettings.
virtual void WriteFastArrayString(const Char_t *c, Int_t n)
Write array of n characters into the I/O buffer.
virtual void WriteUChar(UChar_t c)
Writes UChar_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.
void WorkWithElement(TStreamerElement *elem, Int_t comp_type)
This function is a part of SetStreamerElementNumber method.
virtual void IncrementLevel(TVirtualStreamerInfo *)
Function is called from TStreamerInfo WriteBuffer and ReadBuffer functions and indent new level in xm...
virtual ~TBufferXML()
Destroy xml buffer.
virtual void WriteUShort(UShort_t s)
Writes UShort_t value to buffer.
virtual TVirtualStreamerInfo * GetInfo()
Return current streamer info element.
void XmlWriteBlock(XMLNodePointer_t node)
Write binary data block from buffer to xml.
TClass * fExpectedBaseClass
! Pointer to class, which should be stored as parent of current
TXMLStackObj * Stack(UInt_t depth=0)
virtual void WriteUInt(UInt_t i)
Writes UInt_t value to buffer.
XMLNodePointer_t CreateItemNode(const char *name)
Create item node of specified name.
virtual void ReadFloat(Float_t &f)
Reads Float_t value from 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.
Bool_t VerifyElemNode(const TStreamerElement *elem)
Checks if stack node correspond to TStreamerElement object.
R__ALWAYS_INLINE Int_t XmlReadArray(T *&arr, bool is_static=false)
Template method to read array with size attribute If necessary, array is created.
virtual void ReadStdString(std::string *s)
Reads a std::string.
virtual void WriteClass(const TClass *cl)
Function to write class into buffer, used in old-style streamers.
TObject * GetParent() const
Return pointer to parent of this buffer.
void Expand(Int_t newsize, Bool_t copy=kTRUE)
Expand (or shrink) the I/O buffer to newsize bytes.
The ROOT global object gROOT contains a list of all defined classes.
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=0, bool isDerivedObject=true)
Long_t Property() const
Set TObject::fBits and fStreamerType to cache information about the class.
void Streamer(void *obj, TBuffer &b, const TClass *onfile_class=0) const
Version_t GetClassVersion() const
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).
void Add(ULong64_t hash, Long64_t key, Long64_t value)
Add an (key,value) pair to the table. The key should be unique.
virtual void SetOnFileClass(const TClass *cl)
The TNamed class is the base class for all named ROOT classes.
virtual const char * GetName() const
Returns name of object.
Int_t IndexOf(const TObject *obj) const
Mother of all ROOT objects.
virtual void Error(const char *method, const char *msgfmt,...) const
Issue error message.
virtual void Info(const char *method, const char *msgfmt,...) const
Issue info message.
virtual TClass * GetClassPointer() const
Returns a pointer to the TClass of this element.
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
Describe Streamer information for one class version.
TObjArray * GetElements() const
TClass * GetClass() const
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
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
XMLNsPointer_t NewNS(XMLNodePointer_t xmlnode, const char *reference, const char *name=0)
create namespace attribute for xmlnode.
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 NewChild(XMLNodePointer_t parent, XMLNsPointer_t ns, const char *name, const char *content=0)
create new child element for parent node
XMLAttrPointer_t NewIntAttr(XMLNodePointer_t xmlnode, const char *name, Int_t value)
create node attribute with integer value
Bool_t HasAttr(XMLNodePointer_t xmlnode, const char *name)
checks if node has attribute of specified name
XMLNodePointer_t ReadSingleNode(const char *src)
read single xmlnode from provided string
const char * GetNodeContent(XMLNodePointer_t xmlnode)
get contents (if any) of xmlnode
const char * GetNodeName(XMLNodePointer_t xmlnode)
returns name of xmlnode
void FreeAttr(XMLNodePointer_t xmlnode, const char *name)
remove attribute from xmlnode
const char * GetAttr(XMLNodePointer_t xmlnode, const char *name)
returns value of attribute for xmlnode
Int_t GetIntAttr(XMLNodePointer_t node, const char *name)
returns value of attribute as integer
void UnlinkFreeNode(XMLNodePointer_t xmlnode)
combined operation. Unlink node and free used memory
void FreeNode(XMLNodePointer_t xmlnode)
release all memory, allocated from this node and destroys node itself
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
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=0)
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)
static constexpr double s
static constexpr double ns
const char * ClassVersion
EValues
Note: this is only temporarily a struct and will become a enum class hence the name.
@ kUndefined
Undefined compression algorithm (must be kept the last of the list in case a new algorithm is added).