36   TNamed(*cl), fBase(cl->GetListOfBases()),
 
   37   fEnums(cl->GetListOfEnums()), fSizeof(cl->
Size()), fCheckSum(cl->fCheckSum),
 
   38   fCanSplit(cl->fCanSplit), fStreamerType(cl->fStreamerType), fProperty(cl->fProperty),
 
   39   fClassProperty(cl->fClassProperty)
 
   55   if (dataMembers && dataMembers->
GetSize() > 0) {
 
   57      for (
auto * obj : *dataMembers) {
 
   78         if (!precRd) precRd = rd;
 
   81         if (clRD != clCurrent) {
 
  194   for (
auto dm: 
fData) {
 
  222            Info(
"FillTClass", 
"Returning w/o doing anything. %s is a STL collection.",cl->
GetName());
 
  227            Info(
"FillTClass", 
"Returning w/o doing anything. %s is a namespace.",cl->
GetName());
 
  230      Error(
"FillTClass", 
"TClass %s already initialized!", cl->
GetName());
 
  244         if (element.IsAClass() ) {
 
  287            temp->Add((
TEnum*) enumAsTObj);
 
  305   if (cl->
fBase.load()) {
 
  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()),
 
  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)
 
  468         std::string typeNameBuf;
 
  470         std::array<Int_t, 5> maxIndices; 
 
  475         for (
Int_t idim = 0; idim < ndim; ++idim) {
 
  481   if (prevData && fLevel > 0 ) {
 
  482      if (fLevel-prevLevel == 1) 
 
  484      else if (fLevel <= prevLevel) { 
 
  486         std::string prevName = prevData->
GetName();
 
  488         std::string parentName;
 
  489         for (
int i = 0; i < prevLevel-fLevel+1; ++i) {
 
  490            parentName = prevName.substr(0, prevName.find_last_of(
".") );
 
  491            prevName = parentName;
 
  502   if (TestFlag(kIsTransient)) {
 
  517   for ( 
auto * obj : *dmList) {
 
  525   ::Error(
"TProtoClass::DataMemberIndex",
"data member %s is not found in class %s",
name, cl->
GetName());
 
  537   for ( 
auto * obj : *dmList) {
 
  546      ::Error(
"TProtoClass::FindDataMember",
"data member with index %d is not found in class %s",index,cl->
GetName());
 
R__EXTERN Int_t gErrorIgnoreLevel
 
Each class (see TClass) has a linked list of its base class(es).
 
TClass instances represent classes, structs and namespaces in the ROOT type system.
 
ROOT::ESTLType GetCollectionType() const
Return the 'type' of the STL the TClass is representing.
 
Int_t fStreamerType
saved info to call Streamer
 
void BuildRealData(void *pointer=0, Bool_t isTransient=kFALSE)
Build a full list of persistent data members.
 
std::atomic< TList * > fBase
 
std::atomic< UInt_t > fCheckSum
 
std::atomic< TListOfEnums * > fEnums
 
std::atomic< Long_t > fProperty
Indicates whether this class can be split or not.
 
TList * GetListOfDataMembers(Bool_t load=kTRUE)
Return list containing the TDataMembers of a class.
 
TList * GetListOfRealData() const
 
Long_t Property() const
Set TObject::fBits and fStreamerType to cache information about the class.
 
Long_t fOffsetStreamer
Properties that can only be evaluated at run-time.
 
TVirtualCollectionProxy * GetCollectionProxy() const
Return the proxy describing the collection (if any).
 
void SetStreamerImpl()
Internal routine to set fStreamerImpl based on the value of fStreamerType.
 
void CalculateStreamerOffset() const
Calculate the offset between an object of this class to its base class TObject.
 
Long_t fClassProperty
Property.
 
TListOfDataMembers * fData
 
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.
 
virtual void ls(Option_t *option="") const
List (ls) all objects in this collection.
 
virtual Int_t GetSize() const
Return the capacity of the collection, i.e.
 
All ROOT classes may have RTTI (run time type identification) support added.
 
Int_t GetMaxIndex(Int_t dim) const
Return maximum index for array dimension "dim".
 
Int_t GetArrayDim() const
Return number of array dimensions.
 
const char * GetTypeName() const
Get type of data member, e,g.: "class TDirectory*" -> "TDirectory".
 
Long_t Property() const
Get property description word. For meaning of bits see EProperty.
 
TClass * GetClass() const
 
The TEnum class implements the enum type.
 
A collection of TDataMember objects designed for fast access given a DeclId_t and for keep track of T...
 
A collection of TEnum objects designed for fast access given a DeclId_t and for keep track of TEnum t...
 
Bool_t fIsLoaded
Holder of TEnum for unloaded Enums.
 
void Load()
Load all the DataMembers known to the interpreter for the scope 'fClass' into this collection.
 
virtual void Delete(Option_t *option="")
Remove all objects from the list AND delete all heap based objects.
 
virtual void AddLast(TObject *obj)
Add object at the end of the list.
 
virtual void Clear(Option_t *option="")
Remove all objects from the list.
 
The TNamed class is the base class for all named ROOT classes.
 
virtual const char * GetName() const
Returns name of object.
 
Mother of all ROOT objects.
 
R__ALWAYS_INLINE Bool_t TestBit(UInt_t f) const
 
void SetBit(UInt_t f, Bool_t set)
Set or unset the user status bits as specified in f.
 
virtual void Error(const char *method, const char *msgfmt,...) const
Issue error message.
 
Int_t TestBits(UInt_t f) const
 
virtual void Info(const char *method, const char *msgfmt,...) const
Issue info message.
 
Bool_t FillTClass(TClass *pcl)
Move data from this TProtoClass into cl.
 
virtual ~TProtoClass()
Destructor.
 
const char * GetClassName(Int_t index) const
 
std::vector< TDataMember * > fData
 
void Delete(Option_t *opt="")
Delete the containers that are usually owned by their TClass.
 
std::vector< TProtoRealData > fPRealData
 
std::vector< TString > fDepClasses
 
static Int_t DataMemberIndex(TClass *cl, const char *name)
 
static TDataMember * FindDataMember(TClass *cl, Int_t index)
 
The TRealData class manages the effective list of all data members for a given class.
 
TDataMember * GetDataMember() const
 
virtual const char * GetName() const
Returns name of object.
 
void SetIsObject(Bool_t isObject)
 
const char * Data() const
 
Int_t CountChar(Int_t c) const
Return number of times character c occurs in the string.
 
static TString Format(const char *fmt,...)
Static method which formats a string using a printf style format descriptor and return a TString.
 
Bool_t Contains(const char *pat, ECaseCompare cmp=kExact) const
 
bool IsStdArray(std::string_view name)
 
bool GetStdArrayProperties(const char *typeName, std::string &typeNameBuf, std::array< int, 5 > &maxIndices, int &ndim)
 
void SetFlag(UInt_t f, Bool_t on=kTRUE)
 
TRealData * CreateRealData(TClass *currentClass, TClass *parent, TRealData *parentData, int prevLevel) const
Create a TRealData from this, with its data member coming from dmClass.
 
virtual ~TProtoRealData()
Destructor to pin vtable.