143#define R__USE_STD_MAP
145#if defined R__USE_STD_MAP
149 typedef std::map<std::string, TClassRec*>
IdMap_t;
171 if (iter !=
fMap.end()) cl = iter->second;
178 Info(
"TMapTypeToClassRec::Print",
"printing the typeinfo map in TClassTable");
180 printf(
"Key: %40s 0x%zx\n", iter->first.c_str(), (
size_t)iter->second);
187#ifdef R__COMPLETE_MEM_TERMINATION
212 void Remove(
const char *key) {
221 Info(
"TMapTypeToClassRec::Print",
"printing the typeinfo map in TClassTable");
239 auto p =
reinterpret_cast<const unsigned char*
>(
name );
345 Printf(
"\nDefined classes");
346 Printf(
"class version bits initialized");
347 Printf(
"================================================================");
357 Printf(
"%-35s %6d %7d Yes",
r->fName,
r->fId,
r->fBits);
359 Printf(
"%-35s %6d %7d No",
r->fName,
r->fId,
r->fBits);
361 Printf(
"----------------------------------------------------------------");
362 Printf(
"Listed Classes: %4d Total classes: %4d initialized: %4d",
nl,
n,
ninit);
363 Printf(
"================================================================\n");
402 ::Fatal(
"TClassTable::Add()",
"Failed to deduce type for '%s'",
info.name());
413 if (
r->fName &&
r->fInfo) {
423 ::Warning(
"TClassTable::Add",
"class %s already in TClassTable",
cname);
474 if (
r->fProto)
delete r->fProto;
491 ::Warning(
"TClassTable::Add(TProtoClass*)",
"Called for existing class without a prior call add the dictionary function.");
522 "Second registration of %s with a different normalized name (old: '%s', new: '%s')\n",
551 if (
a->fNext.get() ==
alt) {
552 a->fNext.swap(
alt->fNext );
554 alt->fNext.release();
703 ::Info(
"GetDict",
"searches for %s at 0x%zx",
info.name(), (
size_t)&
info);
834 Printf(
"\nDefined classes");
835 Printf(
"class version bits initialized");
836 Printf(
"================================================================");
838 for (
UInt_t i = 0; i < last; i++) {
843 if (
gROOT->GetListOfClasses()->FindObject(
r->fName)) {
845 Printf(
"%-35s %6d %7d Yes",
r->fName,
r->fId,
r->fBits);
847 Printf(
"%-35s %6d %7d No",
r->fName,
r->fId,
r->fBits);
849 Printf(
"----------------------------------------------------------------");
850 Printf(
"Total classes: %4d initialized: %4d",
n,
ninit);
851 Printf(
"================================================================\n");
897 const std::type_info&
info,
902 auto r = std::unique_ptr<TClassRec>(
new TClassRec(
nullptr));
962 if (
cname!=(
void*)-1)
963 Error(
"ResetClassVersion",
"Version number of %s can not be changed after first usage!",
967 Error(
"SetClassVersion",
"The class version (for %s) must be positive (value %d is ignored)",cl->
GetName(),
newid);
969 if (
cname==(
void*)-1) {
996 oldcl->SetUnloaded();
1023 reg->SetTitle(file);
1025 reg =
new TNamed((
const char*)classname, file);
size_t size(const MatrixT &matrix)
retrieve the size of a square matrix
TClass *(* DictFuncPtr_t)()
static std::mutex & GetClassTableMutex()
TClassTable * gClassTable
static int ClassComp(const void *a, const void *b)
R__EXTERN TClassTable * gClassTable
ROOT::Detail::TRangeCast< T, true > TRangeDynCast
TRangeDynCast is an adapter class that allows the typed iteration through a TCollection.
void Info(const char *location, const char *msgfmt,...)
Use this function for informational messages.
void Error(const char *location, const char *msgfmt,...)
Use this function in case an error occurred.
winID h TVirtualViewer3D TVirtualGLPainter p
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void data
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t r
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t index
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize id
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t Int_t Int_t Window_t TString Int_t GCValues_t GetPrimarySelectionOwner GetDisplay GetScreen GetColormap GetNativeEvent const char const char dpyName wid window const char font_name cursor keysym reg const char only_if_exist regb h Point_t winding char text const char depth char const char Int_t count const char cname
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void reg
R__EXTERN TInterpreter * gCling
void Printf(const char *fmt,...)
Formats a string in a circular formatting buffer and prints the string.
char * StrDup(const char *str)
Duplicate the string str.
TClassAlt(const char *alternate, const char *normName, TClassAlt *next)
std::unique_ptr< TClassAlt > fNext
TClassRec(TClassRec *next)
const std::type_info * fInfo
IdMap_t::size_type size_type
IdMap_t::mapped_type mapped_type
void Add(const key_type &key, mapped_type &obj)
IdMap_t::key_type key_type
std::map< std::string, TClassRec * > IdMap_t
IdMap_t::const_iterator const_iterator
void Remove(const key_type &key)
mapped_type Find(const key_type &key) const
IdMap_t::size_type size_type
IdMap_t::mapped_type mapped_type
IdMap_t::const_iterator const_iterator
IdMap_t::key_type key_type
const std::string & GetNormalizedName() const
std::string fNormalizedName
NormalizeThenLock(const NormalizeThenLock &)=delete
NormalizeThenLock(const char *cname)
NormalizeThenLock(NormalizeThenLock &&)=delete
NormalizeThenLock()=delete
NormalizeThenLock & operator=(const NormalizeThenLock &)=delete
NormalizeThenLock & operator=(NormalizeThenLock &&)=delete
This class registers for all classes their name, id and dictionary function in a hash table.
static void PrintTable()
Print the class table.
static Int_t GetPragmaBits(const char *name)
Returns the pragma bits as specified in the LinkDef.h file.
static DictFuncPtr_t GetDict(const char *cname)
Given the class name returns the Dictionary() function of a class (uses hash of name).
static Version_t GetID(const char *cname)
Returns the ID of a class.
ROOT::TMapTypeToClassRec IdMap_t
static void SortTable()
Sort the class table by ascending class ID's.
static TProtoClass * GetProtoNorm(const char *cname)
Given the class normalized name returns the TClassProto object for the class.
static DictFuncPtr_t GetDictNorm(const char *cname)
Given the normalized class name returns the Dictionary() function of a class (uses hash of name).
static ROOT::TClassAlt ** fgAlternate
void Print(Option_t *option="") const override
Print the class table.
static void Terminate()
Deletes the class table (this static class function calls the dtor).
static TProtoClass * GetProto(const char *cname)
Given the class name returns the TClassProto object for the class.
static std::atomic< UInt_t > fgTally
TClassTable()
TClassTable is a singleton (i.e. only one can exist per application).
static char * Next()
Returns next class from sorted class table.
static char * At(UInt_t index)
Returns class at index from sorted class table.
static Bool_t Check(const char *cname, std::string &normname)
static void Remove(const char *cname)
Remove a class from the class table.
static ROOT::TClassRec ** fgSortedTable
static ROOT::TClassRec ** fgTable
static Bool_t CheckClassTableInit()
Return true fs the table exist.
static void Add(const char *cname, Version_t id, const std::type_info &info, DictFuncPtr_t dict, Int_t pragmabits)
Add a class to the class table (this is a static function).
~TClassTable()
TClassTable singleton is deleted in Terminate().
static void RemoveAlternate(ROOT::TClassAlt *alt)
static ROOT::TClassRec * FindElement(const char *cname, Bool_t insert)
Find a class by name in the class table (using hash of name).
static ROOT::TClassAlt * AddAlternate(const char *normname, const char *alternate)
TClass instances represent classes, structs and namespaces in the ROOT type system.
void SetClassVersion(Version_t version)
Private function.
std::atomic< Bool_t > fVersionUsed
saved remember if fOffsetStreamer has been set.
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 bool UseRWLock(Bool_t enable=true)
Set this collection to use a RW lock upon access, making it thread safe.
virtual void SetOwner(Bool_t enable=kTRUE)
Set whether this collection is the owner (enable==true) of its content.
virtual void RegisterTClassUpdate(TClass *oldcl, DictFuncPtr_t dict)=0
TObject * FindObject(const char *name) const override
Find an object in this list using its name.
void Add(TObject *obj) override
TMap implements an associative array of (key,value) pairs using a THashTable for efficient retrieval ...
The TNamed class is the base class for all named ROOT classes.
const char * GetName() const override
Returns name of object.
Collectable string class.
Mother of all ROOT objects.
virtual void Warning(const char *method, const char *msgfmt,...) const
Issue warning message.
virtual void Fatal(const char *method, const char *msgfmt,...) const
Issue fatal error message.
virtual void Info(const char *method, const char *msgfmt,...) const
Issue info message.
Class used by TMap to store (key,value) pairs.
Persistent version of a TClass.
static Bool_t Initialized()
Return kTRUE if the TROOT object has been initialized.
Regular expression class.
const char * Data() const
TString & Remove(Ssiz_t pos)
Ssiz_t Index(const char *pat, Ssiz_t i=0, ECaseCompare cmp=kExact) const
R__EXTERN TROOT * gROOTLocal
tbb::task_arena is an alias of tbb::interface7::task_arena, which doesn't allow to forward declare tb...
std::vector< std::pair< const char *, const char * > > & GetDelayedAddClassAlternate()
ROOT::TClassAlt * AddClassAlternate(const char *normName, const char *alternate)
Global function called by GenerateInitInstance.
std::vector< std::unique_ptr< TClassRec > > & GetDelayedAddClass()
void RemoveClass(const char *cname, TClass *cl)
Global function called by the dtor of a class's init class (see the ClassImp macro).
void AddClass(const char *cname, Version_t id, const std::type_info &info, DictFuncPtr_t dict, Int_t pragmabits)
Global function called by the ctor of a class's init class (see the ClassImp macro).
TNamed * RegisterClassTemplate(const char *name, const char *file, Int_t line)
Global function to register the implementation file and line of a class template (i....
static UInt_t ClassTableHash(const char *name, UInt_t size)
void ResetClassVersion(TClass *, const char *, Short_t)
Global function to update the version number.
void RemoveClassAlternate(ROOT::TClassAlt *)
bool IsStdClass(const char *type)
return true if the class belongs to the std namespace
void GetNormalizedName(std::string &norm_name, std::string_view name)
Return the normalized name.