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)
49 if (dataMembers && dataMembers->
GetSize() > 0) {
51 for (
auto *
obj : *dataMembers) {
72 if (!precRd) precRd = rd;
75 if (clRD != clCurrent) {
205 if (
gDebug>0)
Info(
"FillTClass",
"Returning w/o doing anything. %s is a namespace.",cl->
GetName());
208 Error(
"FillTClass",
"TClass %s already initialized!", cl->
GetName());
222 if (element.IsAClass() ) {
264 temp->Add((
TEnum*) enumAsTObj);
278 for (
auto base: *cl->
fBase) {
283 for (
auto dm: *cl->
fData) {
289 for (
auto en: *cl->
fEnums) {
290 ((
TEnum*)en)->SetClass(cl);
296 TClass* currentRDClass = cl;
303 if (element.IsAClass() ) {
318 "Cannot find TClass for %s; Creating an empty one in the kForwardDeclared state.",
324 if (!currentRDClass)
continue;
328 if (
TRealData* rd = element.CreateRealData(currentRDClass, cl,prevRealData, prevLevel)) {
332 Info(
"FillTClas",
"Real data for class %s is not empty - make a new one",cl->
GetName() );
341 prevLevel = element.fLevel;
349 Info(
"FillTClas",
"Real data for class %s is not empty - make a new one. Class has no Proto-realdata",cl->
GetName() );
380 fOffset(rd->GetThisOffset()),
392 fLevel = fullDataMemberName.CountChar(
'.');
422 "Cannot find data member # %d of class %s for parent %s!", fDMIndex, dmClass->
GetName(),
431 if (dm) realMemberName = dm->
GetName();
433 realMemberName =
TString(
"*")+realMemberName;
438 for (
int idim = 0; idim < dm->
GetArrayDim(); ++idim)
443 if (prevData && fLevel > 0 ) {
444 if (fLevel-prevLevel == 1)
446 else if (fLevel <= prevLevel) {
448 std::string prevName = prevData->
GetName();
450 std::string parentName;
451 for (
int i = 0; i < prevLevel-fLevel+1; ++i) {
452 parentName = prevName.substr(0, prevName.find_last_of(
".") );
453 prevName = parentName;
476 for (
auto *
obj : *dmList) {
484 ::Error(
"TProtoClass::DataMemberIndex",
"data member %s is not found in class %s",name, cl->
GetName());
496 for (
auto *
obj : *dmList) {
505 ::
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.
void SetIsObject(Bool_t isObject)
virtual void Delete(Option_t *option="")
Remove all objects from the list AND delete all heap based objects.
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.
The TNamed class is the base class for all named ROOT classes.
std::vector< TDataMember * > fData
virtual ~TProtoRealData()
Destructor to pin vtable.
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.
ClassImp(TMCParticle) void TMCParticle printf(": p=(%7.3f,%7.3f,%9.3f) ;", fPx, fPy, fPz)
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.
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
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