52 #define DOLOOP for(Int_t k=0; k<narr; ++k) 54 #define ReadBasicTypeElem(name,index) \ 56 name *x=(name*)(arr[index]+ioffset); \ 60 #define ReadBasicType(name) \ 62 ReadBasicTypeElem(name,0); \ 65 #define ReadBasicTypeLoop(name) \ 67 for(Int_t k=0; k<narr; ++k) ReadBasicTypeElem(name,k); \ 70 #define ReadBasicArrayElem(name,index) \ 72 name *x=(name*)(arr[index]+ioffset); \ 73 b.ReadFastArray(x,compinfo[i]->fLength); \ 76 #define ReadBasicArray(name) \ 78 ReadBasicArrayElem(name,0); \ 81 #define ReadBasicArrayLoop(name) \ 83 for(Int_t k=0; k<narr; ++k) ReadBasicArrayElem(name,k) \ 86 #define ReadBasicPointerElem(name,index) \ 90 Int_t *l = (Int_t*)(arr[index]+imethod); \ 91 if (*l < 0 || *l > b.BufferSize()) continue; \ 92 name **f = (name**)(arr[index]+ioffset); \ 94 if (isArray) for(j=0;j<compinfo[i]->fLength;j++) { \ 96 f[j] = 0; if (*l <=0) continue; \ 97 f[j] = new name[*l]; \ 98 b.ReadFastArray(f[j],*l); \ 100 else for(j=0;j<compinfo[i]->fLength;j++) { \ 106 #define ReadBasicPointer(name) \ 108 const int imethod = compinfo[i]->fMethod+eoffset; \ 109 ReadBasicPointerElem(name,0); \ 112 #define ReadBasicPointerLoop(name) \ 114 int imethod = compinfo[i]->fMethod+eoffset; \ 115 for(int k=0; k<narr; ++k) { \ 116 ReadBasicPointerElem(name,k); \ 120 #define SkipCBasicType(name) \ 123 DOLOOP{ b >> dummy; } \ 127 #define SkipCFloat16(name) \ 130 DOLOOP { b.ReadFloat16(&dummy,aElement); } \ 134 #define SkipCDouble32(name) \ 137 DOLOOP { b.ReadDouble32(&dummy,aElement); }\ 141 #define SkipCBasicArray(name,ReadArrayFunc) \ 143 name* readbuf = new name[compinfo->fLength]; \ 145 b.ReadArrayFunc(readbuf, compinfo->fLength); \ 151 #define SkipCBasicPointer(name,ReadArrayFunc) \ 153 Int_t addCounter = -111; \ 154 if ((imethod>0) && (compinfo->fMethod>0)) addCounter = -1; \ 155 if((addCounter<-1) && (aElement!=0) && (aElement->IsA()==TStreamerBasicPointer::Class())) { \ 156 TStreamerElement* elemCounter = (TStreamerElement*) thisVar->GetElements()->FindObject(((TStreamerBasicPointer*)aElement)->GetCountName()); \ 157 if (elemCounter) addCounter = elemCounter->GetTObjectOffset(); \ 159 if (addCounter>=-1) { \ 160 int len = aElement->GetArrayDim()?aElement->GetArrayLength():1; \ 164 char *arr_k = arr[k]; \ 165 Int_t *l = (addCounter==-1 && arr_k) ? (Int_t*)(arr_k+imethod) : &addCounter; \ 167 name* readbuf = new name[*l]; \ 168 for (int j=0;j<len;j++) \ 169 b.ReadArrayFunc(readbuf, *l); \ 262 char* readbuf =
new char[nch];
295 DOLOOP{ refjunk.Streamer(b);}
384 #define ConvCBasicType(name,stream) \ 389 switch(compinfo->fNewType) { \ 390 case TStreamerInfo::kBool: {Bool_t *x=(Bool_t*)(arr[k]+ioffset); *x = (Bool_t)u; break;} \ 391 case TStreamerInfo::kChar: {Char_t *x=(Char_t*)(arr[k]+ioffset); *x = (Char_t)u; break;} \ 392 case TStreamerInfo::kShort: {Short_t *x=(Short_t*)(arr[k]+ioffset); *x = (Short_t)u; break;} \ 393 case TStreamerInfo::kInt: {Int_t *x=(Int_t*)(arr[k]+ioffset); *x = (Int_t)u; break;} \ 394 case TStreamerInfo::kLong: {Long_t *x=(Long_t*)(arr[k]+ioffset); *x = (Long_t)u; break;} \ 395 case TStreamerInfo::kLong64: {Long64_t *x=(Long64_t*)(arr[k]+ioffset); *x = (Long64_t)u; break;} \ 396 case TStreamerInfo::kFloat: {Float_t *x=(Float_t*)(arr[k]+ioffset); *x = (Float_t)u; break;} \ 397 case TStreamerInfo::kFloat16: {Float_t *x=(Float_t*)(arr[k]+ioffset); *x = (Float_t)u; break;} \ 398 case TStreamerInfo::kDouble: {Double_t *x=(Double_t*)(arr[k]+ioffset); *x = (Double_t)u; break;} \ 399 case TStreamerInfo::kDouble32:{Double_t *x=(Double_t*)(arr[k]+ioffset); *x = (Double_t)u; break;} \ 400 case TStreamerInfo::kUChar: {UChar_t *x=(UChar_t*)(arr[k]+ioffset); *x = (UChar_t)u; break;} \ 401 case TStreamerInfo::kUShort: {UShort_t *x=(UShort_t*)(arr[k]+ioffset); *x = (UShort_t)u; break;} \ 402 case TStreamerInfo::kUInt: {UInt_t *x=(UInt_t*)(arr[k]+ioffset); *x = (UInt_t)u; break;} \ 403 case TStreamerInfo::kULong: {ULong_t *x=(ULong_t*)(arr[k]+ioffset); *x = (ULong_t)u; break;} \ 404 case TStreamerInfo::kULong64: {ULong64_t*x=(ULong64_t*)(arr[k]+ioffset);*x = (ULong64_t)u;break;} \ 409 #define ConvCBasicArrayTo(newtype) \ 411 newtype *f=(newtype*)(arr[k]+ioffset); \ 412 for (j=0;j<len;j++) f[j] = (newtype)readbuf[j]; \ 416 #define ConvCBasicArray(name,ReadArrayFunc) \ 418 int j, len = compinfo->fLength; \ 419 name* readbuf = new name[len]; \ 420 int newtype = compinfo->fNewType%20; \ 422 b.ReadArrayFunc(readbuf, len); \ 424 case TStreamerInfo::kBool: ConvCBasicArrayTo(Bool_t); \ 425 case TStreamerInfo::kChar: ConvCBasicArrayTo(Char_t); \ 426 case TStreamerInfo::kShort: ConvCBasicArrayTo(Short_t); \ 427 case TStreamerInfo::kInt: ConvCBasicArrayTo(Int_t); \ 428 case TStreamerInfo::kLong: ConvCBasicArrayTo(Long_t); \ 429 case TStreamerInfo::kLong64: ConvCBasicArrayTo(Long64_t); \ 430 case TStreamerInfo::kFloat: ConvCBasicArrayTo(Float_t); \ 431 case TStreamerInfo::kFloat16: ConvCBasicArrayTo(Float_t); \ 432 case TStreamerInfo::kDouble: ConvCBasicArrayTo(Double_t); \ 433 case TStreamerInfo::kDouble32: ConvCBasicArrayTo(Double_t); \ 434 case TStreamerInfo::kUChar: ConvCBasicArrayTo(UChar_t); \ 435 case TStreamerInfo::kUShort: ConvCBasicArrayTo(UShort_t); \ 436 case TStreamerInfo::kUInt: ConvCBasicArrayTo(UInt_t); \ 437 case TStreamerInfo::kULong: ConvCBasicArrayTo(ULong_t); \ 438 case TStreamerInfo::kULong64: ConvCBasicArrayTo(ULong64_t); \ 445 #define ConvCBasicPointerToOutOfRange(newtype,ReadArrayFunc) \ 447 newtype **f=(newtype**)(arr[k]+ioffset); \ 448 for (j=0;j<len;j++) { \ 455 #define ConvCBasicPointerTo(newtype,ReadArrayFunc) \ 457 newtype **f=(newtype**)(arr[k]+ioffset); \ 458 for (j=0;j<len;j++) { \ 460 f[j] = new newtype[*l]; \ 461 newtype *af = f[j]; \ 462 b.ReadArrayFunc(readbuf, *l); \ 463 for (jj=0;jj<*l;jj++) af[jj] = (newtype)readbuf[jj]; \ 468 #define ConvCBasicPointer(name,ReadArrayFunc) \ 471 int j, jj, len = aElement->GetArrayDim()?aElement->GetArrayLength():1; \ 473 int newtype = compinfo->fNewType %20; \ 474 Int_t imethod = compinfo->fMethod+eoffset; \ 477 Int_t *l = (Int_t*)(arr[k]+imethod); \ 478 if (*l>0 && *l < b.BufferSize()) { \ 479 readbuf = new name[*l]; \ 481 case TStreamerInfo::kBool: ConvCBasicPointerTo(Bool_t,ReadArrayFunc); \ 482 case TStreamerInfo::kChar: ConvCBasicPointerTo(Char_t,ReadArrayFunc); \ 483 case TStreamerInfo::kShort: ConvCBasicPointerTo(Short_t,ReadArrayFunc); \ 484 case TStreamerInfo::kInt: ConvCBasicPointerTo(Int_t,ReadArrayFunc); \ 485 case TStreamerInfo::kLong: ConvCBasicPointerTo(Long_t,ReadArrayFunc); \ 486 case TStreamerInfo::kLong64: ConvCBasicPointerTo(Long64_t,ReadArrayFunc); \ 487 case TStreamerInfo::kFloat: ConvCBasicPointerTo(Float_t,ReadArrayFunc); \ 488 case TStreamerInfo::kFloat16: ConvCBasicPointerTo(Float_t,ReadArrayFunc); \ 489 case TStreamerInfo::kDouble: ConvCBasicPointerTo(Double_t,ReadArrayFunc); \ 490 case TStreamerInfo::kDouble32: ConvCBasicPointerTo(Double_t,ReadArrayFunc); \ 491 case TStreamerInfo::kUChar: ConvCBasicPointerTo(UChar_t,ReadArrayFunc); \ 492 case TStreamerInfo::kUShort: ConvCBasicPointerTo(UShort_t,ReadArrayFunc); \ 493 case TStreamerInfo::kUInt: ConvCBasicPointerTo(UInt_t,ReadArrayFunc); \ 494 case TStreamerInfo::kULong: ConvCBasicPointerTo(ULong_t,ReadArrayFunc); \ 495 case TStreamerInfo::kULong64: ConvCBasicPointerTo(ULong64_t,ReadArrayFunc); \ 500 case TStreamerInfo::kBool: ConvCBasicPointerToOutOfRange(Bool_t,ReadArrayFunc); \ 501 case TStreamerInfo::kChar: ConvCBasicPointerToOutOfRange(Char_t,ReadArrayFunc); \ 502 case TStreamerInfo::kShort: ConvCBasicPointerToOutOfRange(Short_t,ReadArrayFunc); \ 503 case TStreamerInfo::kInt: ConvCBasicPointerToOutOfRange(Int_t,ReadArrayFunc); \ 504 case TStreamerInfo::kLong: ConvCBasicPointerToOutOfRange(Long_t,ReadArrayFunc); \ 505 case TStreamerInfo::kLong64: ConvCBasicPointerToOutOfRange(Long64_t,ReadArrayFunc); \ 506 case TStreamerInfo::kFloat: ConvCBasicPointerToOutOfRange(Float_t,ReadArrayFunc); \ 507 case TStreamerInfo::kFloat16: ConvCBasicPointerToOutOfRange(Float_t,ReadArrayFunc); \ 508 case TStreamerInfo::kDouble: ConvCBasicPointerToOutOfRange(Double_t,ReadArrayFunc); \ 509 case TStreamerInfo::kDouble32: ConvCBasicPointerToOutOfRange(Double_t,ReadArrayFunc); \ 510 case TStreamerInfo::kUChar: ConvCBasicPointerToOutOfRange(UChar_t,ReadArrayFunc); \ 511 case TStreamerInfo::kUShort: ConvCBasicPointerToOutOfRange(UShort_t,ReadArrayFunc); \ 512 case TStreamerInfo::kUInt: ConvCBasicPointerToOutOfRange(UInt_t,ReadArrayFunc); \ 513 case TStreamerInfo::kULong: ConvCBasicPointerToOutOfRange(ULong_t,ReadArrayFunc); \ 514 case TStreamerInfo::kULong64: ConvCBasicPointerToOutOfRange(ULong64_t,ReadArrayFunc); \ 533 for(
Int_t k=0; k<narr; ++k) {
534 rawfunc( arr[k], b );
547 for(
Int_t k=0; k<narr; ++k) {
549 readfunc(arr[k]+eoffset, &obj);
553 for(
Int_t k=0; k<narr; ++k) {
554 readfunc(arr[k]+eoffset, &obj);
594 #if defined(_MSC_VER) && (_MSC_VER <= 1200) 602 #if defined(_MSC_VER) && (_MSC_VER <= 1200) 623 uid = ( obj->
GetUniqueID() & 0xffffff) + (gpid<<24);
670 #if defined(_MSC_VER) && (_MSC_VER <= 1200) 678 #if defined(_MSC_VER) && (_MSC_VER <= 1200) 705 #if defined(_MSC_VER) && (_MSC_VER <= 1200) 713 #if defined(_MSC_VER) && (_MSC_VER <= 1200) 756 Bool_t needIncrement = !( arrayMode & 2 );
757 arrayMode = arrayMode & (~2);
766 static const int kHaveLoop = 1024;
767 const Int_t typeOffset = arrayMode ? kHaveLoop : 0;
772 Int_t isPreAlloc = 0;
773 for (
Int_t i=first;i<last;i++) {
781 if (R__TestUseCache<T>(aElement)) {
784 Warning(
"ReadBuffer",
"Skipping %s::%s because the cache is missing.",thisVar->
GetName(),aElement->
GetName());
788 printf(
"ReadBuffer, class:%s, name=%s, fType[%d]=%d," 789 " %s, bufpos=%d, arr=%p, eoffset=%d, Redirect=%p\n",
801 printf(
"ReadBuffer, class:%s, name=%s, fType[%d]=%d," 802 " %s, bufpos=%d, arr=%p, offset=%d\n",
809 switch (kase + typeOffset) {
850 for(
Int_t k=0; k<narr; ++k) {
857 for(
Int_t k=0; k<narr; ++k) {
901 for(
Int_t k=0; k<narr; ++k) {
907 for(
Int_t k=0; k<narr; ++k) {
930 const int imethod = compinfo[i]->
fMethod+eoffset;
934 for(j=0;j<compinfo[i]->
fLength;j++) {
936 f[j] = 0;
if (*l <=0)
continue;
945 const int imethod = compinfo[i]->
fMethod+eoffset;
949 for(j=0;j<compinfo[i]->
fLength;j++) {
951 f[j] = 0;
if (*l <=0)
continue;
972 const int imethod = compinfo[i]->
fMethod+eoffset;
973 for(
Int_t k=0; k<narr; ++k) {
979 for(j=0;j<compinfo[i]->
fLength;j++) {
981 f[j] = 0;
if (*l <=0)
continue;
989 const int imethod = compinfo[i]->
fMethod+eoffset;
990 for(
Int_t k=0; k<narr; ++k) {
996 for(j=0;j<compinfo[i]->
fLength;j++) {
998 f[j] = 0;
if (*l <=0)
continue;
1012 char **
f = (
char**)(arr[k]+ioffset);
1034 uid = ( obj->
GetUniqueID() & 0xffffff) + (gpid<<24);
1063 cle = compinfo[i]->
fClass;
1080 b.
ReadFastArray((
void**)(arr[k]+ioffset),cle,compinfo[i]->fLength,isPreAlloc,pstreamer);
1144 if( vers < 9 && newClass && newClass!=oldClass ) {
1145 Error(
"ReadBuffer",
"Unfortunately, version %d of TStreamerInfo (used in %s) did not record enough information to convert a %s into a %s.",
1164 newProxy = oldProxy;
1169 void **contp = (
void**)(arr[k]+ioffset);
1171 for(j=0;j<compinfo[i]->
fLength;j++) {
1172 void *cont = contp[j];
1174 contp[j] = cle->
New();
1180 env = newProxy->
Allocate(nobjects,
true);
1189 if (pstreamer == 0) {
1191 void **contp = (
void**)(arr[k]+ioffset);
1193 for(j=0;j<compinfo[i]->
fLength;j++) {
1194 void *cont = contp[j];
1200 contp[j] = cle->
New();
1226 if( vers < 8 && newClass && newClass!=oldClass ) {
1227 Error(
"ReadBuffer",
"Unfortunately, version %d of TStreamerInfo (used in %s) did not record enough information to convert a %s into a %s.",
1238 if (valueClass == 0) {
1256 newProxy = oldProxy;
1260 int objectSize = cle->
Size();
1261 char *obj = arr[k]+ioffset;
1262 char *end = obj + compinfo[i]->
fLength*objectSize;
1264 for(; obj<end; obj+=objectSize) {
1268 void* env = newProxy->
Allocate(nobjects,
true);
1282 }
else if (vers==0) {
1286 if (pstreamer == 0) {
1310 DOLOOP {(*pstreamer)(
b,arr[k]+ioffset,0);}
1333 b.
ReadFastArray((
void*)(arr[k]+ioffset),cle,compinfo[i]->fLength,pstreamer);
1340 if (!(arrayMode&1)) {
1368 b.
ReadFastArray((
void*)(arr[k]+ioffset),cle,compinfo[i]->fLength,pstreamer);
1389 if (pstreamer == 0) {
1390 Error(
"ReadBuffer",
"Streamer for %s is null\n",aElement->
GetName());
1392 aElement->
ls();
continue;
1424 for (
Int_t k = 0; k < narr; ++k) {
1425 Int_t* counter = (
Int_t*) (arr[k] + eoffset + compinfo[i]->fMethod );
1427 (*pstreamer)(
b, arr[k] + ioffset , *counter);
1445 if (fileVersion > 51508) {
1448 for (
Int_t k = 0; k < narr; ++k) {
1450 Int_t vlen = *((
Int_t*) (arr[k] + eoffset + compinfo[i]->fMethod ));
1457 char** pp = (
char**) (arr[k] + ioffset );
1462 for (
Int_t ndx = 0; ndx < compinfo[i]->
fLength; ++ndx) {
1503 pp[ndx] = (
char*) cl->
NewArray(vlen);
1505 Error(
"ReadBuffer",
"Memory allocation failed!\n");
1512 pp[ndx] = (
char*)
new char*[vlen];
1514 Error(
"ReadBuffer",
"Memory allocation failed!\n");
1518 memset(pp[ndx], 0, vlen *
sizeof(
char*));
1534 for (
Int_t k = 0; k < narr; ++k) {
1536 Int_t vlen = *((
Int_t*) (arr[k] + eoffset + compinfo[i]->fMethod ));
1543 char** pp = (
char**) (arr[k] + ioffset );
1548 for (
Int_t ndx = 0; ndx < compinfo[i]->
fLength; ++ndx) {
1589 pp[ndx] = (
char*) cl->
NewArray(vlen);
1591 Error(
"ReadBuffer",
"Memory allocation failed!\n");
1598 pp[ndx] = (
char*)
new char*[vlen];
1600 Error(
"ReadBuffer",
"Memory allocation failed!\n");
1604 memset(pp[ndx], 0, vlen *
sizeof(
char*));
1617 char**
r = (
char**) pp[ndx];
1621 r[
v] = (
char*) cl->
New();
1663 ans = thisVar->
ReadBufferConv(b,arr,compinfo[i],kase,aElement,narr,eoffset);
1664 if (ans==0)
continue;
1667 ans = thisVar->
ReadBufferSkip(b,arr,compinfo[i],kase,aElement,narr,eoffset);
1668 if (ans==0)
continue;
1673 if (ans==0)
continue;
1676 Error(
"ReadBuffer",
"The element %s::%s type %d (%s) is not supported yet\n",
1679 Error(
"ReadBuffer",
"The TStreamerElement for %s %d is missing!\n",
1709 template Int_t TStreamerInfo::ReadBufferArtificial<char**>(
TBuffer &
b,
char**
const &arr,
1719 template Int_t TStreamerInfo::ReadBuffer<char**>(
TBuffer &
b,
char**
const &arr,
1735 if (!nc && v7)
return 0;
Describe Streamer information for one class version.
virtual const char * GetName() const
Returns name of object.
void SetBufferOffset(Int_t offset=0)
virtual UInt_t GetUniqueID() const
Return the unique object id.
void PutObjectWithID(TObject *obj, UInt_t uid=0)
stores the object at the uid th slot in the table of objects The object uniqued is set as well as its...
Int_t ReadBufferSkip(TBuffer &b, const T &arrptr, const TCompInfo *compinfo, Int_t kase, TStreamerElement *aElement, Int_t narr, Int_t eoffset)
Skip an element.
void(* ReadRawFuncPtr_t)(char *, TBuffer &)
TClass * fNewClass
Not Owned.
virtual void * Allocate(UInt_t n, Bool_t forceDelete)=0
The concrete implementation of TBuffer for writing/reading to/from a ROOT file or socket...
Version_t fOldVersion
! Version of the TStreamerInfo object read from the file
Equal to TDataType's kchar.
TVirtualStreamerInfo * GetConversionStreamerInfo(const char *onfile_classname, Int_t version) const
Return a Conversion StreamerInfo from the class 'classname' for version number 'version' to this clas...
virtual TClass * GetValueClass() const =0
TObject * GetParent() const
Return pointer to parent of this buffer.
#define SkipCFloat16(name)
virtual TClass * GetClassPointer() const
Returns a pointer to the TClass of this element.
#define ConvCBasicType(name, stream)
TVirtualStreamerInfo * GetStreamerInfo(Int_t version=0) const
returns a pointer to the TVirtualStreamerInfo object for version If the object does not exist...
A ROOT file is a suite of consecutive data records (TKey instances) with a well defined format...
virtual void Commit(void *)=0
virtual void ReadCharStar(char *&s)=0
Buffer base class used for serializing objects.
#define ReadBasicTypeLoop(name)
virtual Int_t CheckByteCount(UInt_t startpos, UInt_t bcnt, const TClass *clss)=0
R__ALWAYS_INLINE Bool_t TestBit(UInt_t f) const
TVirtualCollectionProxy * GetCollectionProxy() const
Return the proxy describing the collection (if any).
Bool_t IsStartingWithTObject() const
Returns true if this class inherits from TObject and if the start of the TObject parts is at the very...
Cache the value in memory than is not part of the object but is accessible via a SchemaRule.
virtual UShort_t GetPidOffset() const =0
TObject ** GetObjectRef() const
TCompInfo ** fCompFull
![fElements->GetEntries()]
#define ConvCBasicArray(name, ReadArrayFunc)
void DeleteArray(void *ary, Bool_t dtorOnly=kFALSE)
Explicitly call operator delete[] for an array.
Persistent Reference link to a TObject A TRef is a lightweight object pointing to any TObject...
virtual const char * ClassName() const
Returns name of class to which the object belongs.
char * GetObjectAt(UInt_t ind) const
virtual TProcessID * ReadProcessID(UShort_t pidf)=0
Return the current Process-ID.
The TNamed class is the base class for all named ROOT classes.
virtual void SetStreamerElementNumber(TStreamerElement *elem, Int_t comp_type)=0
Int_t ReadBufferClones(TBuffer &b, TClonesArray *clones, Int_t nc, Int_t first, Int_t eoffset)
Read for TClonesArray.
#define SkipCBasicArray(name, ReadArrayFunc)
TMemberStreamer * fStreamer
Not Owned.
Int_t fNfulldata
!number of elements
void * NewArray(Long_t nElements, ENewType defConstructor=kClassNew) const
Return a pointer to a newly allocated array of objects of this class.
A TProcessID identifies a ROOT job in a unique way in time and space.
virtual void ls(Option_t *option="") const
Print the content of the element.
virtual void SkipObjectAny()=0
virtual void SetUniqueID(UInt_t uid)
Set the unique object id.
virtual Version_t ReadVersionForMemberWise(const TClass *cl=0)=0
TClass * fClass
!pointer to class
#define SkipCDouble32(name)
Int_t ReadBufferConv(TBuffer &b, const T &arrptr, const TCompInfo *compinfo, Int_t kase, TStreamerElement *aElement, Int_t narr, Int_t eoffset)
Convert elements of a TClonesArray.
Wrapper around an object and giving indirect access to its content even if the object is not of a cla...
virtual void ReadFastArrayDouble32(Double_t *d, Int_t n, TStreamerElement *ele=0)=0
Int_t ReadBuffer(TBuffer &b, const T &arrptr, TCompInfo *const *const compinfo, Int_t first, Int_t last, Int_t narr=1, Int_t eoffset=0, Int_t mode=0)
Deserialize information from buffer b into object at pointer if (arrayMode & 1) ptr is a pointer to a...
Int_t ReadBufferArtificial(TBuffer &b, const T &arrptr, TStreamerElement *aElement, Int_t narr, Int_t eoffset)
Handle Artificial StreamerElement.
virtual void ReadFastArrayFloat16(Float_t *f, Int_t n, TStreamerElement *ele=0)=0
virtual void Error(const char *method, const char *msgfmt,...) const
Issue error message.
Int_t Size() const
Return size of object of this class.
The ROOT global object gROOT contains a list of all defined classes.
#define ReadBasicArrayLoop(name)
static TStreamerElement *& CurrentElement()
#define ReadBasicPointerLoop(name)
TClass * fClass
Not Owned.
virtual void ReadFastArray(Bool_t *b, Int_t n)=0
void Streamer(void *obj, TBuffer &b, const TClass *onfile_class=0) const
#define SkipCBasicType(name)
virtual void ReadFloat16(Float_t *f, TStreamerElement *ele=0)=0
virtual void DecrementLevel(TVirtualStreamerInfo *)=0
Wrapper around an object and giving indirect access to its content even if the object is not of a cla...
void(* ReadFuncPtr_t)(char *, TVirtualObject *)
virtual const char * GetFullName() const
Return element name including dimensions, if any Note that this function stores the name into a stati...
unsigned long long ULong64_t
static RooMathCoreReg dummy
virtual Bool_t IsBase() const
Return kTRUE if the element represent a base class.
static constexpr double s
#define ReadBasicPointer(name)
virtual void SetTObjectOffset(Int_t tobjoffset)
#define ReadBasicType(name)
Mother of all ROOT objects.
virtual void ReadDouble32(Double_t *d, TStreamerElement *ele=0)=0
static TStreamerElement * GetCurrentElement()
static function returning a pointer to the current TStreamerElement fgElement points to the current T...
An array of clone (identical) objects.
const char * GetTypeName() const
TClass * GetNewClass() const
ROOT::TSchemaRule::ReadFuncPtr_t GetReadFunc()
you should not use this method at all Int_t Int_t Double_t Double_t Double_t Int_t Double_t Double_t Double_t Double_t b
if object is referenced by a TRef or TRefArray
#define SkipCBasicPointer(name, ReadArrayFunc)
#define ConvCBasicPointer(name, ReadArrayFunc)
#define ReadBasicArray(name)
virtual void IncrementLevel(TVirtualStreamerInfo *info)=0
ROOT::TSchemaRule::ReadRawFuncPtr_t GetReadRawFunc()
virtual const char * GetName() const
Returns name of object.
Int_t ReadBufferSTL(TBuffer &b, TVirtualCollectionProxy *cont, Int_t nc, Int_t eoffset, Bool_t v7=kTRUE)
The STL vector/list is deserialized from the buffer b.
virtual void Warning(const char *method, const char *msgfmt,...) const
Issue warning message.
virtual Version_t ReadVersion(UInt_t *start=0, UInt_t *bcnt=0, const TClass *cl=0)=0
void * New(ENewType defConstructor=kClassNew, Bool_t quiet=kFALSE) const
Return a pointer to a newly allocated object of this class.