35 TNamed(*cl), fBase(cl->GetListOfBases()),
36 fEnums(cl->GetListOfEnums()), fSizeof(cl->
Size()), fCheckSum(cl->fCheckSum),
37 fCanSplit(cl->fCanSplit), fStreamerType(cl->fStreamerType), fProperty(cl->fProperty),
38 fClassProperty(cl->fClassProperty)
54 if (dataMembers && dataMembers->
GetSize() > 0) {
56 for (
auto * obj : *dataMembers) {
77 if (!precRd) precRd = rd;
80 if (clRD != clCurrent) {
193 for (
auto dm:
fData) {
219 Info(
"FillTClass",
"Returning w/o doing anything. %s is a STL collection.",cl->
GetName());
224 Info(
"FillTClass",
"Returning w/o doing anything. %s is a namespace.",cl->
GetName());
227 Error(
"FillTClass",
"TClass %s already initialized!", cl->
GetName());
241 if (element.IsAClass() ) {
287 temp->Add((
TEnum*) enumAsTObj);
306 for (
auto base: *cl->
fBase) {
311 for (
auto dm: *cl->
fData) {
317 for (
auto en: *cl->
fEnums) {
318 ((
TEnum*)en)->SetClass(cl);
324 TClass* currentRDClass = cl;
331 if (element.IsAClass() ) {
346 "Cannot find TClass for %s; Creating an empty one in the kForwardDeclared state.",
352 if (!currentRDClass)
continue;
356 if (
TRealData* rd = element.CreateRealData(currentRDClass, cl,prevRealData, prevLevel)) {
360 Info(
"FillTClass",
"Real data for class %s is not empty - make a new one",cl->
GetName() );
369 prevLevel = element.fLevel;
377 Info(
"FillTClas",
"Real data for class %s is not empty - make a new one. Class has no Proto-realdata",cl->
GetName() );
407 fOffset(rd->GetThisOffset()),
419 fLevel = fullDataMemberName.CountChar(
'.');
449 "Cannot find data member # %d of class %s for parent %s!",
fDMIndex, dmClass->
GetName(),
458 if (dm) realMemberName = dm->
GetName();
460 realMemberName =
TString(
"*")+realMemberName;
465 for (
int idim = 0; idim < dm->
GetArrayDim(); ++idim)
470 if (prevData &&
fLevel > 0 ) {
471 if (
fLevel-prevLevel == 1)
473 else if (
fLevel <= prevLevel) {
475 std::string prevName = prevData->
GetName();
477 std::string parentName;
478 for (
int i = 0; i < prevLevel-
fLevel+1; ++i) {
479 parentName = prevName.substr(0, prevName.find_last_of(
".") );
480 prevName = parentName;
506 for (
auto * obj : *dmList) {
514 ::Error(
"TProtoClass::DataMemberIndex",
"data member %s is not found in class %s",name, cl->
GetName());
526 for (
auto * obj : *dmList) {
535 ::
Error(
"TProtoClass::FindDataMember",
"data member with index %d is not found in class %s",index,cl->
GetName());
A collection of TDataMember objects designed for fast access given a DeclId_t and for keep track of T...
The TEnum class implements the enum type.
virtual void Delete(Option_t *option="")
Remove all objects from the list AND delete all heap based objects.
Bool_t fIsLoaded
Holder of TEnum for unloaded Enums.
R__EXTERN Int_t gErrorIgnoreLevel
All ROOT classes may have RTTI (run time type identification) support added.
std::atomic< TListOfEnums * > fEnums
virtual void Info(const char *method, const char *msgfmt,...) const
Issue info message.
Int_t TestBits(UInt_t f) const
Long_t Property() const
Set TObject::fBits and fStreamerType to cache information about the class.
TList * GetListOfDataMembers(Bool_t load=kTRUE)
Return list containing the TDataMembers of a class.
Int_t fStreamerType
saved info to call Streamer
Int_t GetMaxIndex(Int_t dim) const
Return maximum index for array dimension "dim".
virtual void AddLast(TObject *obj)
Add object at the end of the list.
void SetBit(UInt_t f, Bool_t set)
Set or unset the user status bits as specified in f.
void Delete(Option_t *opt="")
Delete the containers that are usually owned by their TClass.
TList * GetListOfRealData() const
const char * Data() const
static TString Format(const char *fmt,...)
Static method which formats a string using a printf style format descriptor and return a TString...
Bool_t FillTClass(TClass *pcl)
Move data from this TProtoClass into cl.
std::atomic< TList * > fBase
The TNamed class is the base class for all named ROOT classes.
std::vector< TDataMember * > fData
virtual ~TProtoRealData()
Destructor to pin vtable.
Bool_t TestFlag(UInt_t f) const
const char * GetClassName(Int_t index) const
virtual void Error(const char *method, const char *msgfmt,...) const
Issue error message.
void BuildRealData(void *pointer=0, Bool_t isTransient=kFALSE)
Build a full list of persistent data members.
virtual ~TProtoClass()
Destructor.
TClass * GetClass() const
Bool_t TestBit(UInt_t f) const
The TRealData class manages the effective list of all data members for a given class.
virtual const char * GetName() const
Returns name of object.
The ROOT global object gROOT contains a list of all defined classes.
void CalculateStreamerOffset() const
Calculate the offset between an object of this class to its base class TObject.
Each class (see TClass) has a linked list of its base class(es).
TRealData * CreateRealData(TClass *currentClass, TClass *parent, TRealData *parentData, int prevLevel) const
Create a TRealData from this, with its data member coming from dmClass.
virtual Int_t GetSize() const
void SetFlag(UInt_t f, Bool_t on=kTRUE)
Long_t fOffsetStreamer
Indicates whether GetClassVersion has been called.
void SetStreamerImpl()
Internal routine to set fStreamerImpl based on the value of fStreamerType.
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.
std::atomic< Long_t > fProperty
Indicates whether this class can be split or not.
void Load()
Load all the DataMembers known to the interpreter for the scope 'fClass' into this collection...
TVirtualCollectionProxy * GetCollectionProxy() const
Return the proxy describing the collection (if any).
Long_t fClassProperty
Property.
Mother of all ROOT objects.
Int_t GetArrayDim() const
Return number of array dimensions.
std::atomic< UInt_t > fCheckSum
TListOfDataMembers * fData
A collection of TEnum objects designed for fast access given a DeclId_t and for keep track of TEnum t...
std::vector< TString > fDepClasses
ROOT::ESTLType GetCollectionType() const
Return the 'type' of the STL the TClass is representing.
Long_t Property() const
Get property description word. For meaning of bits see EProperty.
TDataMember * GetDataMember() const
static TDataMember * FindDataMember(TClass *cl, Int_t index)
virtual const char * GetName() const
Returns name of object.
static Int_t DataMemberIndex(TClass *cl, const char *name)
std::vector< TProtoRealData > fPRealData