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 );
546 for(
Int_t k=0; k<narr; ++k) {
548 readfunc(arr[k]+eoffset, &obj);
552 for(
Int_t k=0; k<narr; ++k) {
553 readfunc(arr[k]+eoffset, &obj);
593 #if defined(_MSC_VER) && (_MSC_VER <= 1200) 601 #if defined(_MSC_VER) && (_MSC_VER <= 1200) 622 uid = ( obj->
GetUniqueID() & 0xffffff) + (gpid<<24);
669 #if defined(_MSC_VER) && (_MSC_VER <= 1200) 677 #if defined(_MSC_VER) && (_MSC_VER <= 1200) 704 #if defined(_MSC_VER) && (_MSC_VER <= 1200) 712 #if defined(_MSC_VER) && (_MSC_VER <= 1200) 755 Bool_t needIncrement = !( arrayMode & 2 );
756 arrayMode = arrayMode & (~2);
765 static const int kHaveLoop = 1024;
766 const Int_t typeOffset = arrayMode ? kHaveLoop : 0;
771 Int_t isPreAlloc = 0;
772 for (
Int_t i=first;i<last;i++) {
780 if (R__TestUseCache<T>(aElement)) {
783 Warning(
"ReadBuffer",
"Skipping %s::%s because the cache is missing.",thisVar->
GetName(),aElement->
GetName());
787 printf(
"ReadBuffer, class:%s, name=%s, fType[%d]=%d," 788 " %s, bufpos=%d, arr=%p, eoffset=%d, Redirect=%p\n",
800 printf(
"ReadBuffer, class:%s, name=%s, fType[%d]=%d," 801 " %s, bufpos=%d, arr=%p, offset=%d\n",
808 switch (kase + typeOffset) {
849 for(
Int_t k=0; k<narr; ++k) {
856 for(
Int_t k=0; k<narr; ++k) {
900 for(
Int_t k=0; k<narr; ++k) {
906 for(
Int_t k=0; k<narr; ++k) {
929 const int imethod = compinfo[i]->
fMethod+eoffset;
933 for(j=0;j<compinfo[i]->
fLength;j++) {
935 f[j] = 0;
if (*l <=0)
continue;
944 const int imethod = compinfo[i]->
fMethod+eoffset;
948 for(j=0;j<compinfo[i]->
fLength;j++) {
950 f[j] = 0;
if (*l <=0)
continue;
971 const int imethod = compinfo[i]->
fMethod+eoffset;
972 for(
Int_t k=0; k<narr; ++k) {
978 for(j=0;j<compinfo[i]->
fLength;j++) {
980 f[j] = 0;
if (*l <=0)
continue;
988 const int imethod = compinfo[i]->
fMethod+eoffset;
989 for(
Int_t k=0; k<narr; ++k) {
995 for(j=0;j<compinfo[i]->
fLength;j++) {
997 f[j] = 0;
if (*l <=0)
continue;
1011 char **
f = (
char**)(arr[k]+ioffset);
1033 uid = ( obj->
GetUniqueID() & 0xffffff) + (gpid<<24);
1062 cle = compinfo[i]->
fClass;
1079 b.
ReadFastArray((
void**)(arr[k]+ioffset),cle,compinfo[i]->fLength,isPreAlloc,pstreamer);
1143 if( vers < 9 && newClass && newClass!=oldClass ) {
1144 Error(
"ReadBuffer",
"Unfortunately, version %d of TStreamerInfo (used in %s) did not record enough information to convert a %s into a %s.",
1163 newProxy = oldProxy;
1168 void **contp = (
void**)(arr[k]+ioffset);
1170 for(j=0;j<compinfo[i]->
fLength;j++) {
1171 void *cont = contp[j];
1173 contp[j] = cle->
New();
1179 env = newProxy->
Allocate(nobjects,
true);
1188 if (pstreamer == 0) {
1190 void **contp = (
void**)(arr[k]+ioffset);
1192 for(j=0;j<compinfo[i]->
fLength;j++) {
1193 void *cont = contp[j];
1199 contp[j] = cle->
New();
1225 if( vers < 8 && newClass && newClass!=oldClass ) {
1226 Error(
"ReadBuffer",
"Unfortunately, version %d of TStreamerInfo (used in %s) did not record enough information to convert a %s into a %s.",
1237 if (valueClass == 0) {
1255 newProxy = oldProxy;
1259 int objectSize = cle->
Size();
1260 char *obj = arr[k]+ioffset;
1261 char *end = obj + compinfo[i]->
fLength*objectSize;
1263 for(; obj<end; obj+=objectSize) {
1267 void* env = newProxy->
Allocate(nobjects,
true);
1281 }
else if (vers==0) {
1285 if (pstreamer == 0) {
1309 DOLOOP {(*pstreamer)(
b,arr[k]+ioffset,0);}
1332 b.
ReadFastArray((
void*)(arr[k]+ioffset),cle,compinfo[i]->fLength,pstreamer);
1339 if (!(arrayMode&1)) {
1367 b.
ReadFastArray((
void*)(arr[k]+ioffset),cle,compinfo[i]->fLength,pstreamer);
1388 if (pstreamer == 0) {
1389 Error(
"ReadBuffer",
"Streamer for %s is null\n",aElement->
GetName());
1391 aElement->
ls();
continue;
1423 for (
Int_t k = 0; k < narr; ++k) {
1424 Int_t* counter = (
Int_t*) (arr[k] + eoffset + compinfo[i]->fMethod );
1426 (*pstreamer)(
b, arr[k] + ioffset , *counter);
1444 if (fileVersion > 51508) {
1447 for (
Int_t k = 0; k < narr; ++k) {
1449 Int_t vlen = *((
Int_t*) (arr[k] + eoffset + compinfo[i]->fMethod ));
1456 char** pp = (
char**) (arr[k] + ioffset );
1461 for (
Int_t ndx = 0; ndx < compinfo[i]->
fLength; ++ndx) {
1502 pp[ndx] = (
char*) cl->
NewArray(vlen);
1504 Error(
"ReadBuffer",
"Memory allocation failed!\n");
1511 pp[ndx] = (
char*)
new char*[vlen];
1513 Error(
"ReadBuffer",
"Memory allocation failed!\n");
1517 memset(pp[ndx], 0, vlen *
sizeof(
char*));
1533 for (
Int_t k = 0; k < narr; ++k) {
1535 Int_t vlen = *((
Int_t*) (arr[k] + eoffset + compinfo[i]->fMethod ));
1542 char** pp = (
char**) (arr[k] + ioffset );
1547 for (
Int_t ndx = 0; ndx < compinfo[i]->
fLength; ++ndx) {
1588 pp[ndx] = (
char*) cl->
NewArray(vlen);
1590 Error(
"ReadBuffer",
"Memory allocation failed!\n");
1597 pp[ndx] = (
char*)
new char*[vlen];
1599 Error(
"ReadBuffer",
"Memory allocation failed!\n");
1603 memset(pp[ndx], 0, vlen *
sizeof(
char*));
1616 char**
r = (
char**) pp[ndx];
1620 r[
v] = (
char*) cl->
New();
1662 ans = thisVar->
ReadBufferConv(b,arr,compinfo[i],kase,aElement,narr,eoffset);
1663 if (ans==0)
continue;
1666 ans = thisVar->
ReadBufferSkip(b,arr,compinfo[i],kase,aElement,narr,eoffset);
1667 if (ans==0)
continue;
1672 if (ans==0)
continue;
1675 Error(
"ReadBuffer",
"The element %s::%s type %d (%s) is not supported yet\n",
1678 Error(
"ReadBuffer",
"The TStreamerElement for %s %d is missing!\n",
1708 template Int_t TStreamerInfo::ReadBufferArtificial<char**>(
TBuffer &
b,
char**
const &arr,
1718 template Int_t TStreamerInfo::ReadBuffer<char**>(
TBuffer &
b,
char**
const &arr,
1734 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.
XYZVector ans(TestRotation const &t, XYZVector const &v_in)
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)
Bool_t TestBit(UInt_t f) const
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
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.
#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.