22 #include "TClassEdit.h"
40 namespace std {}
using namespace std;
45 TTHREAD_TLS_DECL_ARG(TString,includeName,
kMaxLen);
67 if (!element)
return 0;
74 if (!rdCounter)
return 0;
79 if (!element)
return 0;
116 factor = xmin = xmax = 0;
117 if (!comments)
return;
118 const char *left = strstr(comments,
"[");
120 const char *right = strstr(left,
"]");
122 const char *comma = strstr(left,
",");
123 if (!comma || comma > right) {
125 left = strstr(right,
"[");
127 right = strstr(left,
"]");
129 comma = strstr(left,
",");
130 if (!comma || comma >right)
return;
133 const char *comma2 = 0;
134 if (comma) comma2 = strstr(comma+1,
",");
135 if (comma2 > right) comma2 = 0;
138 TString sbits(comma2+1,right-comma2-1);
139 sscanf(sbits.Data(),
"%d",&nbits);
140 if (nbits < 2 || nbits > 32) {
141 ::Error(
"GetRange",
"Illegal specification for the number of bits; %d. reset to 32.",nbits);
146 TString range(left+1,right-left-1);
147 TString sxmin(left+1,comma-left-1);
149 sxmin.ReplaceAll(
" ",
"");
150 if (sxmin.Contains(
"pi")) {
151 if (sxmin.Contains(
"2pi")) xmin = 2*kPi;
152 else if (sxmin.Contains(
"2*pi")) xmin = 2*kPi;
153 else if (sxmin.Contains(
"twopi")) xmin = 2*kPi;
154 else if (sxmin.Contains(
"pi/2")) xmin = kPi/2;
155 else if (sxmin.Contains(
"pi/4")) xmin = kPi/4;
156 else if (sxmin.Contains(
"pi")) xmin = kPi;
157 if (sxmin.Contains(
"-")) xmin = -xmin;
159 sscanf(sxmin.Data(),
"%lg",&
xmin);
161 TString sxmax(comma+1,right-comma-1);
163 sxmax.ReplaceAll(
" ",
"");
164 if (sxmax.Contains(
"pi")) {
165 if (sxmax.Contains(
"2pi")) xmax = 2*kPi;
166 else if (sxmax.Contains(
"2*pi")) xmax = 2*kPi;
167 else if (sxmax.Contains(
"twopi")) xmax = 2*kPi;
168 else if (sxmax.Contains(
"pi/2")) xmax = kPi/2;
169 else if (sxmax.Contains(
"pi/4")) xmax = kPi/4;
170 else if (sxmax.Contains(
"pi")) xmax = kPi;
171 if (sxmax.Contains(
"-")) xmax = -xmax;
173 sscanf(sxmax.Data(),
"%lg",&
xmax);
176 if (nbits < 32) bigint = 1<<nbits;
177 else bigint = 0xffffffff;
178 if (xmin < xmax) factor = bigint/(xmax-
xmin);
179 if (xmin >= xmax && nbits <15) xmin = nbits+0.1;
196 fClassObject = (
TClass*)(-1);
202 for (
Int_t i=0;i<5;i++) fMaxIndex[i] = 0;
217 if (typeName && !strcmp(typeName,
"BASE")) {
223 fTypeName = TClassEdit::ResolveTypedef(typeName);
284 if (className.Index(
"const ")==0) className.Remove(0,6);
297 if (strncmp(
fTypeName.Data(),
"TRef",4) != 0)
return 0;
304 char *action = (
char*)strstr(
GetTitle(),
"EXEC:");
305 if (!action)
return 0;
306 Int_t nch = strlen(action)+1;
307 char *caction =
new char[nch];
308 strlcpy(caction,action+5,nch);
309 char *blank = (
char*)strchr(caction,
' ');
310 if (blank) *blank = 0;
344 sequenceType.Clear();
347 if (!first) sequenceType +=
",";
349 sequenceType +=
"wholeObject";
353 sequenceType +=
"cached";
356 if (!first) sequenceType +=
",";
358 sequenceType +=
"repeat";
361 if (!first) sequenceType +=
",";
363 sequenceType +=
"nodelete";
366 if (!first) sequenceType +=
",";
368 sequenceType +=
"write";
396 if (fType < 1 || fType > 55)
return fTypeName.Data();
462 TString sequenceType;
464 if (sequenceType.Length()) {
465 sequenceType.Prepend(
" (");
466 sequenceType +=
") ";
468 printf(
" %-14s %-15s offset=%3d type=%2d %s%-20s\n",
488 if (dim < 0 || dim > 4)
return;
505 void TStreamerElement::Streamer(
TBuffer &R__b)
516 TNamed::Streamer(R__b);
541 if (type && fArrayLength) fSize = fArrayLength * type->
Size();
601 fBaseCheckSum( *( (
UInt_t*)&(fMaxIndex[1]) ) ),
602 fStreamerFunc(0), fConvStreamerFunc(0), fStreamerInfo(0)
606 fBaseClass = (
TClass*)(-1);
616 fBaseCheckSum( *( (
UInt_t*)&(fMaxIndex[1]) ) ),
617 fStreamerFunc(0), fConvStreamerFunc(0), fStreamerInfo(0)
663 if (cl)
return cl->
Size();
722 std::string shortname( TClassEdit::ShortType(
GetName(), 1 ) );
733 TString sequenceType;
735 if (sequenceType.Length()) {
736 sequenceType.Prepend(
" (");
737 sequenceType +=
") ";
763 (*extstrm)(
b, pointer);
771 (*extstrm)(
b, pointer);
783 void TStreamerBase::Streamer(
TBuffer &R__b)
792 TStreamerElement::Streamer(R__b);
857 (*extstrm)(
b, pointer);
866 (*extstrm)(
b, pointer);
938 if (fArrayLength)
return fArrayLength*
sizeof(
void *);
939 return sizeof(
void *);
966 void TStreamerBasicPointer::Streamer(
TBuffer &R__b)
978 TStreamerElement::Streamer(R__b);
1016 fCountVersion = countVersion;
1045 if (fArrayLength)
return fArrayLength*
sizeof(
void*);
1046 return sizeof(
void*);
1072 void TStreamerLoop::Streamer(
TBuffer &R__b)
1083 TStreamerElement::Streamer(R__b);
1148 void TStreamerBasicType::Streamer(
TBuffer &R__b)
1157 TStreamerElement::Streamer(R__b);
1252 std::string shortname( TClassEdit::ShortType(
GetTypeName(), 1 ) );
1264 Int_t classSize = 8;
1265 if (cl) classSize = cl->
Size();
1266 if (fArrayLength)
return fArrayLength*classSize;
1273 void TStreamerObject::Streamer(
TBuffer &R__b)
1283 TStreamerElement::Streamer(R__b);
1345 std::string shortname( TClassEdit::ShortType(
GetTypeName(), 1 ) );
1357 Int_t classSize = 8;
1358 if (cl) classSize = cl->
Size();
1359 if (fArrayLength)
return fArrayLength*classSize;
1366 void TStreamerObjectAny::Streamer(
TBuffer &R__b)
1376 TStreamerElement::Streamer(R__b);
1407 Int_t offset,
const char *typeName)
1442 std::string shortname( TClassEdit::ShortType(
GetTypeName(), 1 ) );
1454 if (fArrayLength)
return fArrayLength*
sizeof(
void *);
1455 return sizeof(
void *);
1471 void TStreamerObjectPointer::Streamer(
TBuffer &R__b)
1481 TStreamerElement::Streamer(R__b);
1511 Int_t offset,
const char *typeName)
1546 std::string shortname( TClassEdit::ShortType(
GetTypeName(), 1 ) );
1558 if (fArrayLength)
return fArrayLength*
sizeof(
void *);
1559 return sizeof(
void *);
1575 void TStreamerObjectAnyPointer::Streamer(
TBuffer &R__b)
1631 if (fArrayLength)
return fArrayLength*
sizeof(TString);
1632 return sizeof(TString);
1638 void TStreamerString::Streamer(
TBuffer &R__b)
1648 TStreamerElement::Streamer(R__b);
1682 || strcmp(name,typeName)==0) {
1691 if (
fSTLtype == ROOT::kSTLbitset) {
1707 const char *typeName,
const char *trueType,
Bool_t dmPointer)
1710 const char *t = trueType;
1711 if (!t || !*t) t = typeName;
1716 || strcmp(name,typeName)==0) {
1721 Int_t nch = strlen(t);
1722 char *s =
new char[nch+1];
1724 char *sopen = strchr(s,
'<');
1726 Fatal(
"TStreamerSTL",
"For %s, the type name (%s) is seemingly not a template (template argument not found)", name, s);
1729 *sopen = 0; sopen++;
1732 char* current=sopen;
1733 for(
int count = 0; *current!=
'\0'; current++) {
1734 if (*current==
'<') count++;
1735 if (*current==
'>') {
1736 if (count==0)
break;
1739 if (*current==
',' && count==0)
break;
1741 char *sclose = current; *sclose = 0; sclose--;
1742 char *sconst = strstr(sopen,
"const ");
1743 char *sbracket = strstr(sopen,
"<");
1744 if (sconst && (sbracket==0 || sconst < sbracket)) {
1746 char *pconst = sconst-1;
1747 if (*pconst ==
' ' || *pconst ==
'<' || *pconst ==
'*' || *pconst ==
'\0') sopen = sconst + 5;
1751 if (
fSTLtype == ROOT::kNotSTL) {
delete [] s;
return;}
1755 while (*sopen==
' ') sopen++;
1759 char *star = strrchr(sopen,
'>');
1760 if (star) star = strchr(star,
'*');
1761 else star = strchr(sopen,
'*');
1767 while (*sclose ==
' ') {*sclose = 0; sclose--;}
1771 if (
fSTLtype == ROOT::kSTLbitset) {
1786 if(strcmp(sopen,
"string")) {
1793 Warning(
"TStreamerSTL",
"For %s we could not find any information about the type %s %d %s",
fTypeName.Data(),sopen,
fSTLtype,s);
1835 if ( type_name[strlen(type_name)-1]==
'*' )
return kTRUE;
1863 Error(
"GetSize",
"Could not find the TClass for %s.\n"
1864 "This is likely to have been a typedef, if possible please declare it in CINT to work around the issue\n",
fTypeName.Data());
1871 if (fArrayLength)
return fArrayLength*size;
1887 TString sequenceType;
1889 if (sequenceType.Length()) {
1890 sequenceType.Prepend(
" (");
1891 sequenceType +=
") ";
1893 printf(
" %-14s %-15s offset=%3d type=%2d %s,stl=%d, ctype=%d, %-20s\n",
1931 void TStreamerSTL::Streamer(
TBuffer &R__b)
1940 TStreamerElement::Streamer(R__b);
1945 if (fSTLtype == ROOT::kSTLmultimap || fSTLtype == ROOT::kSTLset) {
1951 fSTLtype = ROOT::kSTLset;
1952 }
else if (
fTypeName.BeginsWith(
"std::multimap") ||
fTypeName.BeginsWith(
"multimap")) {
1953 fSTLtype = ROOT::kSTLmultimap;
1965 }
else if ( fSTLtype == ROOT::kSTLmap || fSTLtype == ROOT::kSTLmultimap) {
2002 const char *typeName,
Bool_t dmPointer)
2016 fSTLtype = ROOT::kSTLstring;
2017 fCtype = ROOT::kSTLstring;
2043 if (fArrayLength)
return fArrayLength*
sizeof(string);
2044 return sizeof(string);
2050 void TStreamerSTLstring::Streamer(
TBuffer &R__b)
2060 TStreamerSTL::Streamer(R__b);
2077 void TStreamerArtificial::Streamer(
TBuffer& )
TObject * GetParent() const
Return pointer to parent of this buffer.
const char * GetInclude() const
Return the proper include for this element.
virtual const char * GetTitle() const
Returns title of object.
void SetBufferOffset(Int_t offset=0)
TStreamerBasicType()
value of data member when referenced by an array
virtual Int_t GetCollectionType() const =0
virtual void Init(TVirtualStreamerInfo *obj=0)
Setup the element.
virtual ~TStreamerBase()
TStreamerBase dtor.
ROOT::TSchemaRule::ReadFuncPtr_t fReadFunc
TStreamerSTL()
Default ctor.
Bool_t CannotSplit() const
We can not split STL's which are inside a variable size array.
virtual void ClassBegin(const TClass *, Version_t=-1)=0
Int_t fNewType
base offset for TObject if the element inherits from it
virtual Int_t WriteClassBuffer(const TClass *cl, void *pointer)=0
Bool_t CanSplit() const
Return true if the data member of this TClass can be saved separately.
TString GetTypeName()
Get basic type of typedef, e,g.
const char * GetTypeName() const
ClassConvStreamerFunc_t fConvStreamerFunc
Pointer to a wrapper around a custom streamer member function.
virtual TClass * GetClass() const =0
virtual Bool_t CannotSplit() const
Returns true if the element cannot be split, false otherwise.
virtual TClass * GetValueClass() const =0
Bool_t IsaPointer() const
Return true if the data member is a pointer.
Double_t fXmin
pointer to element Streamer
All ROOT classes may have RTTI (run time type identification) support added.
R__EXTERN TVirtualMutex * gInterpreterMutex
virtual void Init(TVirtualStreamerInfo *obj=0)
Setup the element.
virtual void SetName(const char *name)
Set the name of the TNamed.
virtual Bool_t ClassInfo_IsEnum(const char *) const
Bool_t IsTObject() const
Return kTRUE is the class inherits from TObject.
virtual void SetArrayDim(Int_t dim)
Set number of array dimensions.
virtual ~TStreamerObjectAny()
TStreamerObjectAny dtor.
Buffer base class used for serializing objects.
TStreamerSTLstring()
Default ctor.
Int_t GetSize() const
Returns size of objectpointer in bytes.
virtual Int_t CheckByteCount(UInt_t startpos, UInt_t bcnt, const TClass *clss)=0
static TStreamerBasicType * InitCounter(const char *countClass, const char *countName, TVirtualStreamerInfo *directive)
Helper function to initialize the 'index/counter' value of the Pointer streamerElements.
virtual Bool_t IsTransient() const
Return kTRUE if the element represent an entity that is not written to the disk (transient members...
virtual Int_t GetSize() const
Returns size of this element in bytes.
TClass * fBaseClass
checksum of the base class (used during memberwise streaming)
virtual TObject * FindObject(const char *name) const
Find an object in this list using its name.
const char * GetInclude() const
Return the proper include for this element.
virtual ~TStreamerObjectAnyPointer()
TStreamerObjectAnyPointer dtor.
virtual void Init(TVirtualStreamerInfo *obj=0)
Setup the element.
ClassStreamerFunc_t fStreamerFunc
pointer to new base class if renamed
virtual Bool_t IsBase() const
Return kTRUE if the element represent a base class.
virtual void SetArrayDim(Int_t dim)
Set number of array dimensions.
virtual ~TStreamerElement()
TStreamerElement dtor.
TStreamerString()
Default ctor.
ULong_t GetMethod() const
return address of counter
virtual EDataType GetType() const =0
virtual Int_t ReadStaticArray(Bool_t *b)=0
virtual void SetMaxIndex(Int_t dim, Int_t max)
set maximum index for array with dimension dim
virtual ~TStreamerBasicType()
TStreamerBasicType dtor.
Int_t GetSize() const
Returns size of anyclass in bytes.
void SetBit(UInt_t f, Bool_t set)
Set or unset the user status bits as specified in f.
Bool_t IsVersioned() const
TList * GetListOfRealData() const
virtual void Init(TVirtualStreamerInfo *obj=0)
Setup the element.
virtual TObject * FindObject(const char *name) const
Find an object in this collection using its name.
Int_t GetBaseClassOffset(const TClass *toBase, void *address=0, bool isDerivedObject=true)
virtual void Fatal(const char *method, const char *msgfmt,...) const
Issue fatal error message.
virtual void ClassMember(const char *, const char *=0, Int_t=-1, Int_t=-1)=0
ClassConvStreamerFunc_t GetConvStreamerFunc() const
Get a wrapper/accessor function around this class custom conversion streamer (member function)...
virtual void Init(TVirtualStreamerInfo *obj=0)
Setup the element.
ULong_t GetMethod() const
return offset of counter
Int_t GetSize() const
Returns size of anyclass in bytes.
TStreamerObject()
Default ctor.
The TNamed class is the base class for all named ROOT classes.
const char * GetInclude() const
Return the proper include for this element.
Int_t GetSize() const
Returns size of counter in bytes.
virtual Bool_t IsaPointer() const
void(* ReadFuncPtr_t)(char *, TVirtualObject *)
static TString & IncludeNameBuffer()
const char * GetInclude() const
Return the proper include for this element.
Int_t GetSize() const
Returns size of baseclass in bytes.
const char * GetInclude() const
Return the proper include for this element.
virtual void Error(const char *method, const char *msgfmt,...) const
Issue error message.
virtual ~TStreamerObject()
TStreamerObject dtor.
Int_t WriteBuffer(TBuffer &b, void *pointer, const char *info="")
Function called by the Streamer functions to serialize object at p to buffer b.
virtual ~TStreamerString()
TStreamerString dtor.
virtual void SetOnFileClass(const TClass *cl)
static void GetRange(const char *comments, Double_t &xmin, Double_t &xmax, Double_t &factor)
Parse comments to search for a range specifier of the style: [xmin,xmax] or [xmin,xmax,nbits] [0,1] [-10,100]; [-pi,pi], [-pi/2,pi/4],[-2pi,2*pi] [-10,100,16] [0,0,8] if nbits is not specified, or nbits <2 or nbits>32 it is set to 32 if (xmin==0 and xmax==0 and nbits <=16) the double word will be converted to a float and its mantissa truncated to nbits significative bits.
static Int_t AddExec(const char *name)
If Exec with name does not exist in the list of Execs, it is created.
void Error(const char *location, const char *msgfmt,...)
virtual ~TStreamerBasicPointer()
TStreamerBasicPointer dtor.
Int_t GetArrayDim() const
TVirtualStreamerInfo * FindStreamerInfo(TObjArray *arr, UInt_t checksum) const
Find the TVirtualStreamerInfo in the StreamerInfos corresponding to checksum.
virtual void Update(const TClass *oldClass, TClass *newClass)
function called by the TClass constructor when replacing an emulated class by the real class ...
UInt_t GetCheckSum(ECheckSum code=kCurrentCheckSum) const
Call GetCheckSum with validity check.
Double_t fXmax
Minimum of data member if a range is specified [xmin,xmax,nbits].
virtual void ls(Option_t *option="") const
Print the content of the element.
virtual void SetStreamer(TMemberStreamer *streamer)
set pointer to Streamer function for this element
virtual void SetUniqueID(UInt_t uid)
Set the unique object id.
TStreamerObjectAnyPointer()
Default ctor.
Int_t fTObjectOffset
element offset in class
virtual void ls(Option_t *option="") const
Print the content of the element.
virtual ~TStreamerSTLstring()
TStreamerSTLstring dtor.
TVirtualStreamerInfo * FindConversionStreamerInfo(const char *onfile_classname, UInt_t checksum) const
Return a Conversion StreamerInfo from the class 'classname' for the layout represented by 'checksum' ...
TStreamerObjectPointer()
Default ctor.
Int_t GetSize() const
Returns size of basicpointer in bytes.
TVirtualStreamerInfo * GetStreamerInfo(Int_t version=0) const
returns a pointer to the TVirtualStreamerInfo object for version If the object does not exist...
virtual void Update(const TClass *oldClass, TClass *newClass)
Function called by the TClass constructor when replacing an emulated class by the real class...
TClass * GetClass() const
TStreamerBasicPointer()
pointer to basic type counter
Basic data type descriptor (datatype information is obtained from CINT).
const char * GetTypeNameBasic() const
Return type name of this element in case the type name is not a standard basic type, return the basic type name known to CINT.
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 Bool_t HasPointers() const =0
TStreamerLoop()
pointer to basic type counter
Int_t WriteBuffer(TBuffer &b, char *pointer)
Write the base class into the buffer.
Bool_t HasInterpreterInfo() const
Bool_t TestBit(UInt_t f) const
TStreamerElement()
Default ctor.
virtual Int_t GetExecID() const
Returns the TExec id for the EXEC instruction in the comment field of a TRef data member...
virtual void Init(TVirtualStreamerInfo *obj=0)
Setup the element.
The TRealData class manages the effective list of all data members for a given class.
virtual const char * GetName() const
Returns name of object.
ROOT::TSchemaRule::ReadRawFuncPtr_t fReadRawFunc
The ROOT global object gROOT contains a list of all defined classes.
ClassStreamerFunc_t GetStreamerFunc() const
Get a wrapper/accessor function around this class custom streamer (member function).
Version_t GetClassVersion() const
virtual ~TStreamerObjectPointer()
TStreamerObjectPointer dtor.
Int_t GetSize() const
Returns size of objectpointer in bytes.
virtual void ReadFastArray(Bool_t *b, Int_t n)=0
virtual void Init(TVirtualStreamerInfo *obj=0)
Initliaze the element.
#define R__LOCKGUARD2(mutex)
virtual Int_t ReadClassBuffer(const TClass *cl, void *pointer, const TClass *onfile_class=0)=0
Bool_t IsLoaded() const
Return true if the shared library of this class is currently in the a process's memory.
Int_t GetSize() const
Returns size of this element in bytes.
void(* ReadRawFuncPtr_t)(char *, TBuffer &)
virtual ~TStreamerLoop()
TStreamerLoop dtor.
virtual void SetStreamer(TMemberStreamer *streamer)
Set pointer to Streamer function for this element NOTE: we do not take ownership. ...
ULong_t GetMethod() const
return address of counter
virtual TObjArray * GetElements() const =0
virtual TClass * GetClassPointer() const
Returns a pointer to the TClass of this element.
virtual TClass * GetClassPointer() const
Returns a pointer to the TClass of this element.
const char * GetInclude() const
Return the proper include for this element.
unsigned long long ULong64_t
virtual void ls(Option_t *option="") const
Print the content of the element.
virtual void SetType(Int_t dtype)
virtual Bool_t IsOldFormat(const char *newTypeName)
The early 3.00/00 and 3.01/01 versions used to store dm->GetTypeName instead of dm->GetFullTypename i...
TClassStreamer * GetStreamer() const
Return the Streamer Class allowing streaming (if any).
Int_t GetSize() const
Returns size of object class in bytes.
TMemberStreamer * GetStreamer() const
Return the local streamer object.
static TClass * GetClass(const char *name, Bool_t load=kTRUE, Bool_t silent=kFALSE)
Static method returning pointer to TClass of the specified class name.
Bool_t IsBase() const
Return kTRUE if the element represent a base class.
Int_t GetSize() const
Returns size of STL container in bytes.
TClass * fNewClass
pointer to class of object
TMemberStreamer * fStreamer
new element class when reading
virtual UInt_t GetUniqueID() const
Return the unique object id.
Int_t Size() const
Get size of basic typedef'ed type.
const char * GetInclude() const
Return the proper include for this element.
Bool_t IsBase() const
Return kTRUE if the element represent a base class.
virtual void SetArrayDim(Int_t dim)
Set number of array dimensions.
const char * GetDeclFileName() const
void GetSequenceType(TString &type) const
Fill type with the string representation of sequence information including 'cached','repeat','write' or 'nodelete'.
void SetArrayDim(Int_t dim)
Set number of array dimensions.
virtual void ClassEnd(const TClass *)=0
const char * GetInclude() const
Return the proper include for this element.
ROOT::TSchemaRule::ReadFuncPtr_t GetReadFunc()
static TStreamerBasicType * GetElementCounter(const char *countName, TClass *cl)
Get pointer to a TStreamerBasicType in TClass *cl static function.
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
Int_t ReadBuffer(TBuffer &b, char *pointer)
Read the content of the buffer.
Double_t fFactor
Maximum of data member if a range is specified [xmin,xmax,nbits].
virtual void Init(TVirtualStreamerInfo *obj=0)
Setup the element.
TDataMember * GetDataMember() const
ROOT::TSchemaRule::ReadRawFuncPtr_t GetReadRawFunc()
virtual const char * GetFullName() const
Return element name including dimensions, if any Note that this function stores the name into a stati...
TStreamerBasicType * fCounter
R__EXTERN TInterpreter * gCling
Abstract Interface class describing Streamer information for one class.
virtual void SetTitle(const char *title="")
Set the title of the TNamed.
virtual ~TStreamerSTL()
TStreamerSTL dtor.
Int_t GetSize() const
Returns size of anyclass in bytes.
TClass * fNewBaseClass
pointer to base class
TVirtualStreamerInfo * fStreamerInfo
Pointer to a wrapper around a custom convertion streamer member function.
void InitStreaming()
Error message in case of checksum/version mismatch.
Int_t Size() const
Return size of object of this class.
TStreamerObjectAny()
Default ctor.
virtual Version_t ReadVersion(UInt_t *start=0, UInt_t *bcnt=0, const TClass *cl=0)=0
TStreamerBasicType * fCounter
TString fTypeName
new element type when reading
Int_t GetArrayLength() const
const char * GetInclude() const
Return the proper include for this element.
virtual void Warning(const char *method, const char *msgfmt,...) const
Issue warning message.