40 namespace std {}
using namespace std;
63 if (strcmp(directive->
GetName(),countClass)==0) {
67 if (!element)
return 0;
75 if (!rdCounter)
return 0;
114 factor = xmin = xmax = 0;
115 if (!comments)
return;
116 const char *left = strstr(comments,
"[");
118 const char *right = strstr(left,
"]");
120 const char *comma = strstr(left,
",");
121 if (!comma || comma > right) {
123 left = strstr(right,
"[");
125 right = strstr(left,
"]");
127 comma = strstr(left,
",");
128 if (!comma || comma >right)
return;
131 const char *comma2 = 0;
132 if (comma) comma2 = strstr(comma+1,
",");
133 if (comma2 > right) comma2 = 0;
136 TString sbits(comma2+1,right-comma2-1);
137 sscanf(sbits.
Data(),
"%d",&nbits);
138 if (nbits < 2 || nbits > 32) {
139 ::Error(
"GetRange",
"Illegal specification for the number of bits; %d. reset to 32.",nbits);
144 TString range(left+1,right-left-1);
145 TString sxmin(left+1,comma-left-1);
149 if (sxmin.
Contains(
"2pi")) xmin = 2*kPi;
150 else if (sxmin.
Contains(
"2*pi")) xmin = 2*kPi;
151 else if (sxmin.
Contains(
"twopi")) xmin = 2*kPi;
152 else if (sxmin.
Contains(
"pi/2")) xmin = kPi/2;
153 else if (sxmin.
Contains(
"pi/4")) xmin = kPi/4;
154 else if (sxmin.
Contains(
"pi")) xmin = kPi;
155 if (sxmin.
Contains(
"-")) xmin = -xmin;
159 TString sxmax(comma+1,right-comma-1);
161 sxmax.ReplaceAll(
" ",
"");
162 if (sxmax.Contains(
"pi")) {
163 if (sxmax.Contains(
"2pi")) xmax = 2*kPi;
164 else if (sxmax.Contains(
"2*pi")) xmax = 2*kPi;
165 else if (sxmax.Contains(
"twopi")) xmax = 2*kPi;
166 else if (sxmax.Contains(
"pi/2")) xmax = kPi/2;
167 else if (sxmax.Contains(
"pi/4")) xmax = kPi/4;
168 else if (sxmax.Contains(
"pi")) xmax = kPi;
169 if (sxmax.Contains(
"-")) xmax = -xmax;
171 sscanf(sxmax.Data(),
"%lg",&
xmax);
174 if (nbits < 32) bigint = 1<<nbits;
175 else bigint = 0xffffffff;
176 if (xmin < xmax) factor = bigint/(xmax-
xmin);
177 if (xmin >= xmax && nbits <15) xmin = nbits+0.1;
185 TStreamerElement::TStreamerElement()
194 fClassObject = (
TClass*)(-1);
200 for (
Int_t i=0;i<5;i++) fMaxIndex[i] = 0;
215 if (typeName && !strcmp(typeName,
"BASE")) {
282 if (className.
Index(
"const ")==0) className.
Remove(0,6);
303 if (!action)
return 0;
304 Int_t nch = strlen(action)+1;
305 char *caction =
new char[nch];
306 strlcpy(caction,action+5,nch);
307 char *blank = (
char*)strchr(caction,
' ');
308 if (blank) *blank = 0;
314 const_cast<TStreamerElement*
>(
this)->
SetUniqueID(index+1);
342 sequenceType.
Clear();
345 if (!first) sequenceType +=
",";
347 sequenceType +=
"wholeObject";
351 sequenceType +=
"cached";
354 if (!first) sequenceType +=
",";
356 sequenceType +=
"repeat";
359 if (!first) sequenceType +=
",";
361 sequenceType +=
"nodelete";
364 if (!first) sequenceType +=
",";
366 sequenceType +=
"write";
462 if (sequenceType.
Length()) {
464 sequenceType +=
") ";
466 printf(
" %-14s %-15s offset=%3d type=%2d %s%-20s\n",
486 if (dim < 0 || dim > 4)
return;
503 void TStreamerElement::Streamer(
TBuffer &R__b)
514 TNamed::Streamer(R__b);
539 if (type && fArrayLength) fSize = fArrayLength * type->
Size();
600 fStreamerFunc(0), fConvStreamerFunc(0), fStreamerInfo(0)
604 fBaseClass = (
TClass*)(-1);
615 fStreamerFunc(0), fConvStreamerFunc(0), fStreamerInfo(0)
661 if (cl)
return cl->
Size();
733 if (sequenceType.
Length()) {
735 sequenceType +=
") ";
761 (*extstrm)(b, pointer);
769 (*extstrm)(b, pointer);
781 void TStreamerBase::Streamer(
TBuffer &R__b)
790 TStreamerElement::Streamer(R__b);
855 (*extstrm)(b, pointer);
864 (*extstrm)(b, pointer);
898 : TStreamerElement(name,title,offset,dtype,typeName)
937 return sizeof(
void *);
964 void TStreamerBasicPointer::Streamer(
TBuffer &R__b)
976 TStreamerElement::Streamer(R__b);
1044 return sizeof(
void*);
1070 void TStreamerLoop::Streamer(
TBuffer &R__b)
1081 TStreamerElement::Streamer(R__b);
1114 : TStreamerElement(name,title,offset,dtype,typeName),
fCounter(0)
1146 void TStreamerBasicType::Streamer(
TBuffer &R__b)
1155 TStreamerElement::Streamer(R__b);
1206 TStreamerObject::TStreamerObject()
1214 : TStreamerElement(name,title,offset,0,typeName)
1262 Int_t classSize = 8;
1263 if (cl) classSize = cl->
Size();
1271 void TStreamerObject::Streamer(
TBuffer &R__b)
1281 TStreamerElement::Streamer(R__b);
1303 TStreamerObjectAny::TStreamerObjectAny()
1355 Int_t classSize = 8;
1356 if (cl) classSize = cl->
Size();
1364 void TStreamerObjectAny::Streamer(
TBuffer &R__b)
1374 TStreamerElement::Streamer(R__b);
1397 TStreamerObjectPointer::TStreamerObjectPointer()
1405 Int_t offset,
const char *typeName)
1453 return sizeof(
void *);
1469 void TStreamerObjectPointer::Streamer(
TBuffer &R__b)
1479 TStreamerElement::Streamer(R__b);
1496 ClassImp(TStreamerObjectAnyPointer)
1501 TStreamerObjectAnyPointer::TStreamerObjectAnyPointer()
1509 Int_t offset,
const char *typeName)
1557 return sizeof(
void *);
1573 void TStreamerObjectAnyPointer::Streamer(
TBuffer &R__b)
1596 TStreamerString::TStreamerString()
1636 void TStreamerString::Streamer(
TBuffer &R__b)
1646 TStreamerElement::Streamer(R__b);
1675 : TStreamerElement(name,title,offset,
ROOT::
kSTLany,typeName)
1680 || strcmp(name,typeName)==0) {
1705 const char *typeName,
const char *trueType,
Bool_t dmPointer)
1706 : TStreamerElement(name,title,offset,
ROOT::
kSTLany,typeName)
1708 const char *t = trueType;
1709 if (!t || !*t) t = typeName;
1714 || strcmp(name,typeName)==0) {
1719 Int_t nch = strlen(t);
1720 char *s =
new char[nch+1];
1722 char *sopen = strchr(s,
'<');
1724 Fatal(
"TStreamerSTL",
"For %s, the type name (%s) is seemingly not a template (template argument not found)", name, s);
1727 *sopen = 0; sopen++;
1730 char* current=sopen;
1731 for(
int count = 0; *current!=
'\0'; current++) {
1732 if (*current==
'<') count++;
1733 if (*current==
'>') {
1734 if (count==0)
break;
1737 if (*current==
',' && count==0)
break;
1739 char *sclose = current; *sclose = 0; sclose--;
1740 char *sconst = strstr(sopen,
"const ");
1741 char *sbracket = strstr(sopen,
"<");
1742 if (sconst && (sbracket==0 || sconst < sbracket)) {
1744 char *pconst = sconst-1;
1745 if (*pconst ==
' ' || *pconst ==
'<' || *pconst ==
'*' || *pconst ==
'\0') sopen = sconst + 5;
1764 if (
fSTLtype == 0) {
delete [] s;
return;}
1768 while (*sopen==
' ') sopen++;
1772 char *star = strrchr(sopen,
'>');
1773 if (star) star = strchr(star,
'*');
1774 else star = strchr(sopen,
'*');
1780 while (*sclose ==
' ') {*sclose = 0; sclose--;}
1799 if(strcmp(sopen,
"string")) {
1848 if ( type_name[strlen(type_name)-1]==
'*' )
return kTRUE;
1876 Error(
"GetSize",
"Could not find the TClass for %s.\n" 1877 "This is likely to have been a typedef, if possible please declare it in CINT to work around the issue\n",
fTypeName.
Data());
1902 if (sequenceType.
Length()) {
1904 sequenceType +=
") ";
1906 printf(
" %-14s %-15s offset=%3d type=%2d %s,stl=%d, ctype=%d, %-20s\n",
1944 void TStreamerSTL::Streamer(
TBuffer &R__b)
1953 TStreamerElement::Streamer(R__b);
2007 TStreamerSTLstring::TStreamerSTLstring()
2015 const char *typeName,
Bool_t dmPointer)
2057 return sizeof(string);
2063 void TStreamerSTLstring::Streamer(
TBuffer &R__b)
2073 TStreamerSTL::Streamer(R__b);
2090 void TStreamerArtificial::Streamer(
TBuffer& )
2109 return fReadRawFunc;
virtual const char * GetName() const
Returns name of object.
virtual Bool_t IsTransient() const
Return kTRUE if the element represent an entity that is not written to the disk (transient members...
void SetBufferOffset(Int_t offset=0)
TStreamerBasicType()
value of data member when referenced by an array
virtual Int_t GetCollectionType() const =0
virtual UInt_t GetUniqueID() const
Return the unique object id.
virtual ~TStreamerBase()
TStreamerBase dtor.
TStreamerSTL()
Default ctor.
Bool_t CanSplit() const
Return true if the data member of this TClass can be saved separately.
void(* ReadRawFuncPtr_t)(char *, TBuffer &)
const char * GetInclude() const
Return the proper include for this element.
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.
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
TString GetTypeName()
Get basic type of typedef, e,g.
Int_t GetSize() const
Returns size of this element in bytes.
const char * GetDeclFileName() const
ClassConvStreamerFunc_t fConvStreamerFunc
Pointer to a wrapper around a custom streamer member function.
Namespace for new ROOT classes and functions.
Int_t GetSize() const
Returns size of baseclass in bytes.
Int_t GetSize() const
Returns size of basicpointer in bytes.
Int_t GetSize() const
Returns size of object class in bytes.
virtual TClass * GetClass() const =0
TVirtualStreamerInfo * FindConversionStreamerInfo(const char *onfile_classname, UInt_t checksum) const
Return a Conversion StreamerInfo from the class 'classname' for the layout represented by 'checksum' ...
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 void ls(Option_t *option="") const
Print the content of the element.
virtual TClass * GetValueClass() const =0
Double_t fXmin
pointer to element Streamer
All ROOT classes may have RTTI (run time type identification) support added.
TObject * GetParent() const
Return pointer to parent of this buffer.
virtual void Init(TObject *obj=0)
Setup the element.
R__EXTERN TVirtualMutex * gInterpreterMutex
TString & ReplaceAll(const TString &s1, const TString &s2)
Bool_t TestBit(UInt_t f) const
virtual TClass * GetClassPointer() const
Returns a pointer to the TClass of this element.
virtual void SetName(const char *name)
Change (i.e.
virtual void SetArrayDim(Int_t dim)
Set number of array dimensions.
TVirtualStreamerInfo * GetStreamerInfo(Int_t version=0) const
returns a pointer to the TVirtualStreamerInfo object for version If the object does not exist...
TMemberStreamer * GetStreamer() const
Return the local streamer object.
virtual ~TStreamerObjectAny()
TStreamerObjectAny dtor.
Buffer base class used for serializing objects.
Bool_t HasInterpreterInfo() const
TClassStreamer * GetStreamer() const
Return the Streamer Class allowing streaming (if any).
TStreamerSTLstring()
Default ctor.
virtual Int_t CheckByteCount(UInt_t startpos, UInt_t bcnt, const TClass *clss)=0
Ssiz_t Index(const char *pat, Ssiz_t i=0, ECaseCompare cmp=kExact) const
const char * GetInclude() const
Return the proper include for this element.
Int_t GetArrayLength() const
void ToLower()
Change string to lower-case.
TClass * fBaseClass
checksum of the base class (used during memberwise streaming)
virtual ~TStreamerObjectAnyPointer()
TStreamerObjectAnyPointer dtor.
ClassStreamerFunc_t fStreamerFunc
pointer to new base class if renamed
const char * GetInclude() const
Return the proper include for this element.
virtual void SetArrayDim(Int_t dim)
Set number of array dimensions.
virtual ~TStreamerElement()
TStreamerElement dtor.
TStreamerString()
Default ctor.
TString & Prepend(const char *cs)
Int_t GetArrayDim() const
virtual EDataType GetType() const =0
void GetSequenceType(TString &type) const
Fill type with the string representation of sequence information including 'cached','repeat','write' or 'nodelete'.
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.
Bool_t IsaPointer() const
Return true if the data member is a pointer.
const char * GetInclude() const
Return the proper include for this element.
void SetBit(UInt_t f, Bool_t set)
Set or unset the user status bits as specified in f.
virtual TObject * FindObject(const char *name) const
Find an object in this list using its name.
virtual Bool_t CannotSplit() const
Returns true if the element cannot be split, false otherwise.
Int_t GetBaseClassOffset(const TClass *toBase, void *address=0, bool isDerivedObject=true)
virtual void ClassMember(const char *, const char *=0, Int_t=-1, Int_t=-1)=0
Int_t GetSize() const
Returns size of objectpointer in bytes.
virtual Int_t GetExecID() const
Returns the TExec id for the EXEC instruction in the comment field of a TRef data member...
const char * GetInclude() const
Return the proper include for this element.
virtual void Init(TObject *obj=0)
Initliaze the element.
TStreamerObject()
Default ctor.
The TNamed class is the base class for all named ROOT classes.
virtual TObject * FindObject(const char *name) const
Find an object in this collection using its name.
Bool_t IsLoaded() const
Return true if the shared library of this class is currently in the a process's memory.
void Clear()
Clear string without changing its capacity.
std::string ResolveTypedef(const char *tname, bool resolveAll=false)
virtual void Init(TObject *obj=0)
Setup the element.
ClassConvStreamerFunc_t GetConvStreamerFunc() const
Get a wrapper/accessor function around this class custom conversion streamer (member function)...
static TString & IncludeNameBuffer()
Int_t GetSize() const
Returns size of anyclass in bytes.
virtual ~TStreamerObject()
TStreamerObject dtor.
virtual void ls(Option_t *option="") const
Print the content of the element.
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.
virtual void Init(TObject *obj=0)
Setup the element.
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.
virtual void Update(const TClass *oldClass, TClass *newClass)
function called by the TClass constructor when replacing an emulated class by the real class ...
Double_t fXmax
Minimum of data member if a range is specified [xmin,xmax,nbits].
virtual void SetStreamer(TMemberStreamer *streamer)
set pointer to Streamer function for this element
virtual void SetUniqueID(UInt_t uid)
Set the unique object id.
Bool_t IsBase() const
Return kTRUE if the element represent a base class.
TStreamerObjectAnyPointer()
Default ctor.
Int_t fTObjectOffset
element offset in class
virtual ~TStreamerSTLstring()
TStreamerSTLstring dtor.
TStreamerObjectPointer()
Default ctor.
TVirtualStreamerInfo * FindStreamerInfo(TObjArray *arr, UInt_t checksum) const
Find the TVirtualStreamerInfo in the StreamerInfos corresponding to checksum.
const char * GetInclude() const
Return the proper include for this element.
virtual void Update(const TClass *oldClass, TClass *newClass)
Function called by the TClass constructor when replacing an emulated class by the real class...
TStreamerBasicPointer()
pointer to basic type counter
Basic data type descriptor (datatype information is obtained from CINT).
virtual Bool_t HasPointers() const =0
virtual Bool_t InheritsFrom(const char *classname) const
Returns kTRUE if object inherits from class "classname".
Bool_t BeginsWith(const char *s, ECaseCompare cmp=kExact) const
TStreamerLoop()
pointer to basic type counter
TDataMember * GetDataMember() const
Int_t WriteBuffer(TBuffer &b, char *pointer)
Write the base class into the buffer.
void Form(const char *fmt,...)
Formats a string using a printf style format descriptor.
virtual void Error(const char *method, const char *msgfmt,...) const
Issue error message.
TStreamerElement()
Default ctor.
Int_t Size() const
Return size of object of this class.
ULong_t GetMethod() const
return offset of counter
TSubString Strip(EStripType s=kTrailing, char c=' ') const
Return a substring of self stripped at beginning and/or end.
The TRealData class manages the effective list of all data members for a given class.
The ROOT global object gROOT contains a list of all defined classes.
virtual ~TStreamerObjectPointer()
TStreamerObjectPointer dtor.
virtual void ReadFastArray(Bool_t *b, Int_t n)=0
Int_t GetSize() const
Returns size of objectpointer in bytes.
#define R__LOCKGUARD2(mutex)
virtual Bool_t ClassInfo_IsEnum(const char *) const
virtual void Init(TObject *obj=0)
Setup the element.
TString & Remove(Ssiz_t pos)
virtual Int_t ReadClassBuffer(const TClass *cl, void *pointer, const TClass *onfile_class=0)=0
Version_t GetClassVersion() const
void(* ReadFuncPtr_t)(char *, TVirtualObject *)
virtual ~TStreamerLoop()
TStreamerLoop dtor.
virtual void SetStreamer(TMemberStreamer *streamer)
Set pointer to Streamer function for this element NOTE: we do not take ownership. ...
virtual TObjArray * GetElements() const =0
virtual Bool_t IsaPointer() const
virtual const char * GetFullName() const
Return element name including dimensions, if any Note that this function stores the name into a stati...
ULong_t GetMethod() const
return address of counter
unsigned long long ULong64_t
virtual Int_t GetSize() const
Returns size of this element in bytes.
Bool_t IsBase() const
Return kTRUE if the element represent a base class.
TList * GetListOfRealData() const
virtual Bool_t IsBase() const
Return kTRUE if the element represent a base class.
virtual void Init(TObject *obj=0)
Setup the element.
virtual void SetType(Int_t dtype)
Bool_t Contains(const char *pat, ECaseCompare cmp=kExact) const
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...
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.
Int_t GetSize() const
Returns size of anyclass in bytes.
const char * GetInclude() const
Return the proper include for this element.
TClass * fNewClass
pointer to class of object
static Vc_ALWAYS_INLINE int_v max(const int_v &x, const int_v &y)
TMemberStreamer * fStreamer
new element class when reading
Int_t GetSize() const
Returns size of counter in bytes.
virtual void ls(Option_t *option="") const
Print the content of the element.
Mother of all ROOT objects.
virtual void Init(TObject *obj=0)
Setup the element.
Int_t GetSize() const
Returns size of anyclass in bytes.
virtual void SetArrayDim(Int_t dim)
Set number of array dimensions.
Bool_t IsTObject() const
Return kTRUE is the class inherits from TObject.
void SetArrayDim(Int_t dim)
Set number of array dimensions.
const char * GetTypeName() const
virtual void ClassEnd(const TClass *)=0
const char * GetInclude() const
Return the proper include for this element.
Int_t Size() const
Get size of basic typedef'ed type.
Bool_t IsVersioned() const
Int_t GetSize() const
Returns size of STL container in bytes.
std::string ShortType(const char *typeDesc, int mode)
Return the absolute type of typeDesc.
ROOT::TSchemaRule::ReadFuncPtr_t GetReadFunc()
static TStreamerBasicType * GetElementCounter(const char *countName, TClass *cl)
Get pointer to a TStreamerBasicType in TClass *cl static function.
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].
ClassStreamerFunc_t GetStreamerFunc() const
Get a wrapper/accessor function around this class custom streamer (member function).
ROOT::TSchemaRule::ReadRawFuncPtr_t GetReadRawFunc()
UInt_t GetCheckSum(ECheckSum code=kCurrentCheckSum) const
Call GetCheckSum with validity check.
virtual TClass * GetClassPointer() const
Returns a pointer to the TClass of this element.
virtual void Init(TObject *obj=0)
Setup the element.
virtual void Fatal(const char *method, const char *msgfmt,...) const
Issue fatal error message.
TStreamerBasicType * fCounter
R__EXTERN TInterpreter * gCling
virtual const char * GetName() const
Returns name of object.
Abstract Interface class describing Streamer information for one class.
TClass * GetClass() const
virtual void SetTitle(const char *title="")
Change (i.e. set) the title of the TNamed.
virtual ~TStreamerSTL()
TStreamerSTL dtor.
TClass * fNewBaseClass
pointer to base class
TVirtualStreamerInfo * fStreamerInfo
Pointer to a wrapper around a custom convertion streamer member function.
const char * GetInclude() const
Return the proper include for this element.
void InitStreaming()
Error message in case of checksum/version mismatch.
virtual void Warning(const char *method, const char *msgfmt,...) const
Issue warning message.
Bool_t CannotSplit() const
We can not split STL's which are inside a variable size array.
TStreamerObjectAny()
Default ctor.
virtual Version_t ReadVersion(UInt_t *start=0, UInt_t *bcnt=0, const TClass *cl=0)=0
TStreamerBasicType * fCounter
virtual const char * GetTitle() const
Returns title of object.
TString fTypeName
new element type when reading
ULong_t GetMethod() const
return address of counter
const char * Data() const
static TStreamerBasicType * InitCounter(const char *countClass, const char *countName, TObject *directive)
Helper function to initialize the 'index/counter' value of the Pointer streamerElements.