59 :
TBufferText(), fSQL(nullptr), fIOVersion(1), fStructure(nullptr), fStk(0), fReadBuffer(), fErrorFlag(0),
60 fCompressLevel(
ROOT::RCompressionSetting::EAlgorithm::kUseGlobal), fReadVersionBuffer(-1), fObjIdCounter(1), fIgnoreVerification(
kFALSE),
61 fCurrentData(nullptr), fObjectsInfos(nullptr), fFirstObjId(0), fLastObjId(0), fPoolsMap(nullptr)
71 :
TBufferText(mode,
file), fSQL(nullptr), fIOVersion(1), fStructure(nullptr), fStk(0), fReadBuffer(), fErrorFlag(0),
72 fCompressLevel(
ROOT::RCompressionSetting::EAlgorithm::kUseGlobal), fReadVersionBuffer(-1), fObjIdCounter(1), fIgnoreVerification(
kFALSE),
73 fCurrentData(nullptr), fObjectsInfos(nullptr), fFirstObjId(0), fLastObjId(0), fPoolsMap(nullptr)
119 std::cout <<
"==== Printout of Sql structures ===== " << std::endl;
121 std::cout <<
"=========== End printout ============ " << std::endl;
170 if ((shift >= 0) && (shift <= fObjectsInfos->GetLast())) {
178 Info(
"SqlObjectInfo",
"Standard not works %lld", objid);
222 Info(
"SqlObjectData",
"After request res = 0x%lx", (
Long_t)alldata);
238 Error(
"SqlObjectData",
"Missmatch in pools map !!! CANNOT BE !!!");
246 Error(
"SqlObjectData",
"Can not find row for objid = %lld in table %s", objid, sqlinfo->
GetClassTableName());
257 return new TSQLObjectData(sqlinfo, objid, classdata, classrow, blobdata, blobstmt);
266 Int_t streamer_index)
269 Info(
"SqlWriteObject",
"Object: %p Class: %s", obj, (cl ? cl->
GetName() :
"null"));
287 Info(
"SqlWriteObject",
"Find objectid %ld", (
long)objid);
303 (*streamer)(*
this, (
void *)obj, streamer_index);
305 ((
TClass *)cl)->Streamer((
void *)obj, *
this);
308 Info(
"SqlWriteObject",
"Done write of %s", cl->
GetName());
319 const TClass *onFileClass)
330 if ((refid == 0) || (strlen(refid) == 0)) {
331 Error(
"SqlReadObject",
"Invalid object reference value");
345 }
else if (objid == -1) {
348 void *obj1 =
nullptr;
359 if ((
gDebug > 3) && findptr)
360 Info(
"SqlReadObject",
"Found pointer %p cl %s", obj, ((cl && *cl) ? (*cl)->GetName() :
"null"));
369 Error(
"SqlReadObject",
"Object reference or pointer is not found in blob data");
376 if ((
gDebug > 2) || (objid < 0))
377 Info(
"SqlReadObject",
"Found object reference %ld", (
long)objid);
396 Info(
"SqlReadObjectDirect",
"objid = %lld clname = %s ver = %d", objid, clname.
Data(), version);
404 if (!objClass || !sqlinfo) {
405 Error(
"SqlReadObjectDirect",
"Class %s is not known", clname.
Data());
410 obj = objClass->
New();
437 Error(
"SqlReadObjectDirect",
"No found raw data for obj %lld in class %s version %d table", objid,
438 clname.
Data(), version);
450 (*streamer)(*
this, (
void *)obj, streamer_index);
452 objClass->
Streamer((
void *)obj, *
this, onFileClass);
458 Info(
"SqlReadObjectDirect",
"Read object of class %s done", objClass->
GetName());
482 Info(
"IncrementLevel",
"Info: %s", info->
GetName());
493 if (
Stack()->GetElement())
501 Info(
"DecrementLevel",
"Info: %s", info->
GetName());
511 if (
Stack()->GetElement())
517 Error(
"SetStreamerElementNumber",
"Error in structures stack");
558 if (classversion < 0)
598 Error(
"ClassMember",
"Invalid member name");
607 if (strcmp(typeName,
"raw:data") == 0)
618 if (strcmp(
name, typeName) == 0) {
626 if (tname[tname.
Length() - 1] ==
'*') {
632 Error(
"ClassMember",
"Invalid class specifier %s", typeName);
657 }
else if ((typ_id > 0) && (typ_id < 20)) {
673 Error(
"ClassMember",
"Invalid combination name = %s type = %s",
name, typeName);
709 sobjid.
Form(
"%lld", objid);
714 Error(
"WorkWithClass",
"cannot define object id");
721 Error(
"WorkWithClass",
"Can not find table for class %s version %d", classname, classversion);
728 Error(
"WorkWithClass",
"Request error for data of object %lld for class %s version %d", objid, classname,
749 Info(
"WorkWithElement",
"elem = %s", elem->
GetName());
763 Error(
"WorkWithElement",
"Object data is lost");
773 Error(
"WorkWithElement",
"Cannot locate correct column in the table");
817 Info(
"ReadVersion",
"from buffer = %d", (
int)res);
825 Error(
"ReadVersion",
"No correspondent tags to read version");
871 Info(
"WriteObjectClass",
"class %s", (actualClass ? actualClass->
GetName() :
" null"));
882 Info(
"SqlReadArrayContent",
"size %d", (
int)(arrsize));
886 while (indx < arrsize) {
894 if ((
first != indx) || (last <
first) || (last >= arrsize)) {
895 Error(
"SqlReadArrayContent",
"Error reading array content %s",
name);
901 arr[indx++] = arr[
first];
904 while (indx < arrsize)
909 Info(
"SqlReadArrayContent",
"done");
1138template <
typename T>
1161 if (!buf || (
n <= 0))
1163 Int_t size = strlen(buf);
1166 memcpy(
c, buf, size);
1276 const TClass *onFileClass)
1279 Info(
"ReadFastArray",
"(void *");
1287 int objectSize = cl->
Size();
1288 char *obj = (
char *)start;
1289 char *end = obj +
n * objectSize;
1291 for (; obj < end; obj += objectSize) {
1304 const TClass *onFileClass)
1307 Info(
"ReadFastArray",
"(void ** pre = %d n = %d", isPreAlloc,
n);
1320 for (
Int_t j = 0; j <
n; j++) {
1322 start[j] = ((
TClass *)cl)->New();
1326 (*streamer)(*
this, (
void *)start,
n);
1334 for (
Int_t j = 0; j <
n; j++) {
1337 start[j] = ((
TClass *)cl)->New();
1338 ((
TClass *)cl)->Streamer(start[j], *
this);
1350 for (
Int_t j = 0; j <
n; j++) {
1352 start[j] = ((
TClass *)cl)->New();
1358 Info(
"ReadFastArray",
"(void ** Done");
1370 if (!value || (strlen(value) == 0))
1372 Int_t sz = atoi(value);
1376template <
typename T>
1379 if (!withsize && (arrsize <= 0))
1384 while (indx < arrsize) {
1385 Int_t curr = indx++;
1386 while ((indx < arrsize) && (arr[indx] == arr[curr]))
1392 for (; indx < arrsize; indx++) {
1523 for (
int i = 0; i <
n; i++)
1651 char *obj = (
char *)start;
1654 int size = cl->
Size();
1656 for (
Int_t j = 0; j <
n; j++, obj += size)
1680 (*streamer)(*
this, (
void *)start,
n);
1692 for (
Int_t j = 0; j <
n; j++) {
1694 if (!strInfo && !start[j] && !oldStyle)
1698 ((
TClass *)cl)->Streamer(start[j], *
this);
1706 for (
Int_t j = 0; j <
n; j++) {
1708 start[j] = ((
TClass *)cl)->New();
1725 ((
TObject *)obj)->TObject::Streamer(*
this);
1728 ((
TNamed *)obj)->TNamed::Streamer(*
this);
1734 Info(
"StreamObject",
"class %s", (cl ? cl->
GetName() :
"none"));
1745 const TClass *onFileClass)
1751 Info(
"StreamObjectExtra",
"class = %s", cl->
GetName());
1893 char *data =
new char[nbig];
1921 const char *data =
s.Data();
1935 Error(
"ReadStdString",
"The std::string address is nullptr but should not");
1950 obj->resize(nbig,
'\0');
1953 obj->resize(nwh,
'\0');
1975 Int_t nbig = obj->length();
2001 s =
new char[nch + 1];
2140 snprintf(buf,
sizeof(buf),
"%d", value);
2150 snprintf(buf,
sizeof(buf),
"%hd", value);
2160 snprintf(buf,
sizeof(buf),
"%d", value);
2170 snprintf(buf,
sizeof(buf),
"%ld", value);
2179 std::string buf = std::to_string(value);
2217 snprintf(buf,
sizeof(buf),
"%u", value);
2227 snprintf(buf,
sizeof(buf),
"%hu", value);
2237 snprintf(buf,
sizeof(buf),
"%u", value);
2247 snprintf(buf,
sizeof(buf),
"%lu", value);
2256 std::string buf = std::to_string(value);
2279 sscanf(res,
"%d", &
n);
2292 sscanf(res,
"%hd", &value);
2304 sscanf(res,
"%d", &value);
2316 sscanf(res,
"%ld", &value);
2340 sscanf(res,
"%f", &value);
2352 sscanf(res,
"%lf", &value);
2377 sscanf(res,
"%ud", &
n);
2390 sscanf(res,
"%hud", &value);
2402 sscanf(res,
"%u", &value);
2414 sscanf(res,
"%lu", &value);
2440 Error(
"SqlReadValue",
"No object data to read from");
2514 while ((depth-- > 0) && curr)
unsigned long long ULong64_t
void ForceWriteInfo(TVirtualStreamerInfo *info, Bool_t force) override
force writing the TStreamerInfo to the file
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...
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.
Converts data to SQL statements or read data from SQL tables.
Long64_t fObjIdCounter
! counter of objects id
void SetStreamerElementNumber(TStreamerElement *elem, Int_t comp_type) final
Function is called from TStreamerInfo WriteBuffer and Readbuffer functions and add/verify next elemen...
TSQLStructure * PopStack()
Pop stack.
Bool_t SqlObjectInfo(Long64_t objid, TString &clname, Version_t &version)
Returns object info like classname and version Should be taken from buffer, which is produced in the ...
void ClassBegin(const TClass *, Version_t=-1) final
This method inform buffer data of which class now will be streamed.
void StreamObjectExtra(void *obj, TMemberStreamer *streamer, const TClass *cl, Int_t n=0, const TClass *onFileClass=nullptr)
Stream object to/from buffer.
R__ALWAYS_INLINE void SqlWriteArray(T *arr, Int_t arrsize, Bool_t withsize=kFALSE)
void ReadUShort(UShort_t &s) final
Reads UShort_t value from buffer.
Long64_t fFirstObjId
! id of first object to be read from the database
Bool_t SqlWriteBasic(Char_t value)
converts Char_t to string and creates correspondent sql structure
TSQLObjectData * fCurrentData
!
Int_t fErrorFlag
! Error id value
void WriteShort(Short_t s) final
Writes Short_t value to buffer.
void DecrementLevel(TVirtualStreamerInfo *) final
Function is called from TStreamerInfo WriteBuffer and Readbuffer functions and decrease level in sql ...
void WriteULong64(ULong64_t l) final
Writes ULong64_t value to buffer.
void WriteChar(Char_t c) final
Writes Char_t value to buffer.
void WriteCharStar(char *s) final
Write a char* string.
virtual ~TBufferSQL2()
Destroy sql buffer.
void WriteCharP(const Char_t *c) final
Writes array of characters to buffer.
Long64_t fLastObjId
! id of last object correspond to this key
void WriteInt(Int_t i) final
Writes Int_t value to buffer.
TSQLStructure * PushStack()
Push stack with structural information about streamed object.
void * ReadObjectAny(const TClass *clCast) final
Read object from buffer. Only used from TBuffer.
void ReadLong64(Long64_t &l) final
Reads Long64_t value from buffer.
void WriteULong(ULong_t l) final
Writes ULong_t value to buffer.
void WriteUInt(UInt_t i) final
Writes UInt_t value to buffer.
void ReadLong(Long_t &l) final
Reads Long_t value from buffer.
void WriteLong(Long_t l) final
Writes Long_t value to buffer.
Int_t fIOVersion
! I/O version from TSQLFile
void WriteUShort(UShort_t s) final
Writes UShort_t value to buffer.
TSQLFile * fSQL
! instance of TSQLFile
Int_t ReadStaticArray(Bool_t *b) final
Read array of Bool_t from buffer.
void WriteStdString(const std::string *s) final
Write a std::string.
Int_t fReadVersionBuffer
! buffer, used to by ReadVersion method
void ReadFastArray(Bool_t *b, Int_t n) final
Read array of Bool_t from buffer.
void StreamObject(void *obj, const TClass *cl, const TClass *onFileClass=nullptr) final
Stream object to/from buffer.
Bool_t fIgnoreVerification
! ignore verification of names
void ReadUChar(UChar_t &c) final
Reads UChar_t value from buffer.
void ReadShort(Short_t &s) final
Reads Short_t value from buffer.
void ReadBool(Bool_t &b) final
Reads Bool_t value from buffer.
R__ALWAYS_INLINE Int_t SqlReadArray(T *&arr, Bool_t is_static=kFALSE)
void ReadTString(TString &s) final
Read a TString.
TBufferSQL2()
Default constructor, should not be used.
R__ALWAYS_INLINE void SqlReadFastArray(T *arr, Int_t arrsize)
Template method to read content of array, which not include size of array.
void ReadFastArrayString(Char_t *c, Int_t n) final
Read array of n characters from the I/O buffer.
TVirtualStreamerInfo * GetInfo() final
Return current streamer info element.
void WriteFastArrayString(const Char_t *c, Int_t n) final
Write array of n characters into the I/O buffer.
TSQLStructure * fStructure
! structures, created by object storing
void WriteBool(Bool_t b) final
Writes Bool_t value to buffer.
TClass * ReadClass(const TClass *cl=nullptr, UInt_t *objTag=nullptr) final
Suppressed function of TBuffer.
UInt_t WriteVersion(const TClass *cl, Bool_t useBcnt=kFALSE) final
Copies class version to buffer, but not writes it to sql immidiately Version will be used to produce ...
void ReadCharP(Char_t *c) final
Reads array of characters from buffer.
TMap * fPoolsMap
! map of pools with data from different tables
TSQLStructure * Stack(Int_t depth=0)
returns head of stack
void ClassEnd(const TClass *) final
Method indicates end of streaming of classdata in custom streamer.
void ReadFloat(Float_t &f) final
Reads Float_t value from buffer.
void SetCompressionLevel(int level)
const char * SqlReadValue(const char *tname)
Read string value from current stack node.
TString fReadBuffer
! Buffer for read value
TSQLStructure * fStk
! pointer on current active structure (stack head)
void ReadUInt(UInt_t &i) final
Reads UInt_t value from buffer.
const char * SqlReadCharStarValue()
Read CharStar value, if it has special code, request it from large table.
friend class TSQLStructure
void WriteClass(const TClass *cl) final
Suppressed function of TBuffer.
Int_t SqlReadArraySize()
Reads array size, written in raw data table.
void * SqlReadObject(void *obj, TClass **cl=nullptr, TMemberStreamer *streamer=nullptr, Int_t streamer_index=0, const TClass *onFileClass=nullptr)
Read object from the buffer.
void WorkWithClass(const char *classname, Version_t classversion)
This function is a part of IncrementLevel method.
void IncrementLevel(TVirtualStreamerInfo *) final
Function is called from TStreamerInfo WriteBuffer and Readbuffer functions and indent new level in da...
Int_t ReadArray(Bool_t *&b) final
Read array of Bool_t from buffer.
void ReadChar(Char_t &c) final
Reads Char_t value from buffer.
Int_t SqlWriteObject(const void *obj, const TClass *objClass, Bool_t cacheReuse, TMemberStreamer *streamer=nullptr, Int_t streamer_index=0)
Write object to buffer.
void WriteArray(const Bool_t *b, Int_t n) final
Write array of Bool_t to buffer.
void ReadStdString(std::string *s) final
Read a std::string.
void ReadDouble(Double_t &d) final
Reads Double_t value from buffer.
void ReadCharStar(char *&s) final
Read a char* string.
void ReadInt(Int_t &i) final
Reads Int_t value from buffer.
void SkipObjectAny() final
?????? Skip any kind of object from buffer !!!!!! fix me, not yet implemented Should be just skip of ...
Bool_t SqlWriteValue(const char *value, const char *tname)
void WriteTString(const TString &s) final
Write a TString.
void * SqlReadObjectDirect(void *obj, TClass **cl, Long64_t objid, TMemberStreamer *streamer=nullptr, Int_t streamer_index=0, const TClass *onFileClass=nullptr)
Read object data.
void WriteFloat(Float_t f) final
Writes Float_t value to buffer.
void WorkWithElement(TStreamerElement *elem, Int_t comp_type)
This function is a part of SetStreamerElementNumber method.
void WriteFastArray(const Bool_t *b, Int_t n) final
Write array of Bool_t to buffer.
void WriteObjectClass(const void *actualObjStart, const TClass *actualClass, Bool_t cacheReuse) final
Write object to buffer. Only used from TBuffer.
TSQLObjectData * SqlObjectData(Long64_t objid, TSQLClassInfo *sqlinfo)
Creates TSQLObjectData for specified object id and specified class.
TSQLStructure * SqlWriteAny(const void *obj, const TClass *cl, Long64_t objid)
Convert object of any class to sql structures Return pointer on created TSQLStructure TSQLStructure o...
void WriteDouble(Double_t d) final
Writes Double_t value to buffer.
void ReadULong64(ULong64_t &l) final
Reads ULong64_t value from buffer.
void WriteUChar(UChar_t c) final
Writes UChar_t value to buffer.
void * SqlReadAny(Long64_t keyid, Long64_t objid, TClass **cl, void *obj=nullptr)
Recreate object from sql structure.
Version_t ReadVersion(UInt_t *start=nullptr, UInt_t *bcnt=nullptr, const TClass *cl=nullptr) final
Read version value from buffer actually version is normally defined by table name and kept in interme...
TObjArray * fObjectsInfos
! array of objects info for selected key
R__ALWAYS_INLINE void SqlReadArrayContent(T *arr, Int_t arrsize, Bool_t withsize)
Template method to read array content.
void WriteLong64(Long64_t l) final
Writes Long64_t value to buffer.
void SqlReadBasic(Char_t &value)
Read current value from table and convert it to Char_t value.
void ClassMember(const char *name, const char *typeName=0, Int_t arrsize1=-1, Int_t arrsize2=-1) final
Method indicates name and typename of class memeber, which should be now streamed in custom streamer ...
Int_t fCompressLevel
! compress level used to minimize size of data in database
void ReadULong(ULong_t &l) final
Reads ULong_t value from buffer.
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
TClass instances represent classes, structs and namespaces in the ROOT type system.
void * New(ENewType defConstructor=kClassNew, Bool_t quiet=kFALSE) const
Return a pointer to a newly allocated object of this class.
Int_t Size() const
Return size of object of this class.
Bool_t IsTObject() const
Return kTRUE is the class inherits from TObject.
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).
TMap implements an associative array of (key,value) pairs using a THashTable for efficient retrieval ...
void Add(TObject *obj)
This function may not be used (but we need to provide it since it is a pure virtual in TCollection).
void DeleteValues()
Remove all (key,value) pairs from the map AND delete the values when they are allocated on the heap.
TObject * GetValue(const char *keyname) const
Returns a pointer to the value associated with keyname as name of the key.
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
TObject * Last() const
Return the object in the last filled slot. Returns 0 if no entries.
virtual void Delete(Option_t *option="")
Remove all objects from the array AND delete all heap based objects.
Int_t GetLast() const
Return index of last object in array.
TObject * At(Int_t idx) 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.
Contains information about tables specific to one class and version.
Bool_t IsClassTableExist() const
const char * GetClassTableName() const
Access an SQL db via the TFile interface.
Int_t IsLongStringCode(Long64_t objid, const char *value)
Checks if this is long string code returns 0, if not or string id.
TSQLClassInfo * FindSQLClassInfo(const char *clname, Int_t version)
Return (if exists) TSQLClassInfo for specified class name and version.
TObjArray * SQLObjectsInfo(Long64_t keyid)
Produce array of TSQLObjectInfo objects for all objects, belong to that key Array should be deleted b...
TSQLStatement * GetBlobClassDataStmt(Long64_t objid, TSQLClassInfo *sqlinfo)
Method return request results for specified objid from streamer classtable Data returned in form of s...
TSQLResult * GetBlobClassData(Long64_t objid, TSQLClassInfo *sqlinfo)
Method return request results for specified objid from streamer classtable.
TSQLResult * GetNormalClassDataAll(Long64_t minobjid, Long64_t maxobjid, TSQLClassInfo *sqlinfo)
Return data for several objects from the range from normal class table.
Bool_t GetLongString(Long64_t objid, Int_t strid, TString &value)
Returns value of string, extracted from special table, where long strings are stored.
TSQLRow * GetObjectRow(Long64_t objid)
Returns single sql row with object data for that class.
TSQLResult * GetClassData() const
TSQLClassInfo * GetSqlInfo() const
TSQLObjectData is used in TBufferSQL2 class in reading procedure.
const char * GetLocatedField() const
void ShiftToNextValue()
shift to next column or next row in blob data
Bool_t IsBlobData() const
const char * GetValue() const
const char * GetBlobPrefixName() const
Bool_t PrepareForRawData()
prepare to read data from raw table
Bool_t VerifyDataType(const char *tname, Bool_t errormsg=kTRUE)
checks if data type corresponds to that stored in raw table
Info (classname, version) about object in database.
Version_t GetObjVersion() const
const char * GetObjClassName() const
Long64_t GetObjId() const
This is hierarchical structure, which is created when data is written by TBufferSQL2.
TSQLStructure * GetParent() const
Int_t LocateElementColumn(TSQLFile *f, TBufferSQL2 *buf, TSQLObjectData *data)
find column in TSQLObjectData object, which correspond to current element
virtual void Print(Option_t *option="") const
print content of complete structure
void Add(TSQLStructure *child)
Add child structure.
void AddVersion(const TClass *cl, Int_t version=-100)
add child as version
void SetObjectPointer(Long64_t ptrid)
set structure type as kSqlPointer
void SetArray(Int_t sz=-1)
Set structure as array element.
TSQLObjectData * GetObjectData(Bool_t search=false)
searches for objects data
TStreamerInfo * GetStreamerInfo() const
return TStreamerInfo* if type is kSqlStreamerInfo
void SetCustomClass(const TClass *cl, Version_t version)
set structure type as kSqlCustomClass
static Bool_t UnpackTString(TSQLFile *f, TBufferSQL2 *buf, TSQLObjectData *data, Long64_t objid, Int_t clversion)
Unpack TString data in form, accepted by custom TString streamer.
void SetStreamerInfo(const TStreamerInfo *info)
set structure type as kSqlStreamerInfo
void AddObjectData(TSQLObjectData *objdata)
add element with pointer to object data
static Bool_t UnpackTObject(TSQLFile *f, TBufferSQL2 *buf, TSQLObjectData *data, Long64_t objid, Int_t clversion)
Unpack TObject data in form, accepted by custom TObject streamer.
void ChangeValueOnly(const char *value)
change value of this structure used as "workaround" to keep object id in kSqlElement node
void SetCustomElement(TStreamerElement *elem)
set structure type as kSqlCustomElement
void SetObjectRef(Long64_t refid, const TClass *cl)
set structure type as kSqlObject
Long64_t DefineObjectId(Bool_t recursive=kTRUE)
defines current object id, to which this structure belong make life complicated, because some objects...
TStreamerElement * GetElement() const
return TStremerElement* if type is kSqlElement
void AddValue(const char *value, const char *tname=0)
Add child structure as value.
void SetStreamerElement(const TStreamerElement *elem, Int_t number)
set structure type as kSqlElement
void ChildArrayIndex(Int_t index, Int_t cnt=1)
set array index for last child element if (cnt<=1) return;
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
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.
void Form(const char *fmt,...)
Formats a string using a printf style format descriptor.
Abstract Interface class describing Streamer information for one class.
static Bool_t CanDelete()
static function returning true if ReadBuffer can delete object
virtual Int_t GetClassVersion() const =0
Type GetType(const std::string &Name)
static constexpr double s