71#include "RConfigure.h" 
   72#include "RConfigOptions.h" 
   74#include "RGitCommit.h" 
   82#define RTLD_DEFAULT ((void *)::GetModuleHandle(NULL)) 
   84#define dlopen(library_name, flags) ::LoadLibrary(library_name) 
   85#define dlclose(library) ::FreeLibrary((HMODULE)library) 
   87   static char Msg[1000];
 
   88   FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM, NULL, GetLastError(),
 
   89                 MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), Msg,
 
   93FARPROC dlsym(
void *library, 
const char *function_name)
 
   97   FARPROC address = NULL;
 
   99   if (library == RTLD_DEFAULT) {
 
  100      if (EnumProcessModules(::GetCurrentProcess(), hMods, 
sizeof(hMods), &cbNeeded)) {
 
  101         for (i = 0; i < (cbNeeded / 
sizeof(HMODULE)); i++) {
 
  102            address = ::GetProcAddress((HMODULE)hMods[i], function_name);
 
  109      return ::GetProcAddress((HMODULE)library, function_name);
 
  157#if defined(R__HAS_COCOA) 
  163#elif defined(R__WIN32) 
  177void **(*gThreadTsd)(
void*,
Int_t) = 
nullptr;
 
  185   Int_t maj, min, cycle;
 
  187   return 10000*maj + 100*min + cycle;
 
  195   static const char *months[] = {
"Jan",
"Feb",
"Mar",
"Apr",
"May",
 
  196                                  "Jun",
"Jul",
"Aug",
"Sep",
"Oct",
 
  201   sscanf(date, 
"%s %d %d", sm, &dd, &yy);
 
  202   for (
int i = 0; i < 12; i++)
 
  203      if (!strncmp(sm, months[i], 3)) {
 
  207   return 10000*yy + 100*mm + dd;
 
  217   sscanf(time, 
"%d:%d:%d", &hh, &mm, &ss);
 
  229      if (
gROOT->GetListOfFiles())
 
  230         gROOT->GetListOfFiles()->Delete(
"slow");
 
  231      if (
gROOT->GetListOfSockets())
 
  232         gROOT->GetListOfSockets()->Delete();
 
  233      if (
gROOT->GetListOfMappedFiles())
 
  234         gROOT->GetListOfMappedFiles()->Delete(
"slow");
 
  235      if (
gROOT->GetListOfClosedObjects())
 
  236         gROOT->GetListOfClosedObjects()->Delete(
"slow");
 
  247   struct ModuleHeaderInfo_t {
 
  248      ModuleHeaderInfo_t(
const char* moduleName,
 
  249                         const char** headers,
 
  250                         const char** includePaths,
 
  251                         const char* payloadCode,
 
  252                         const char* fwdDeclCode,
 
  253                         void (*triggerFunc)(),
 
  255                         const char **classesHeaders,
 
  257                           fModuleName(moduleName),
 
  259                           fPayloadCode(payloadCode),
 
  260                           fFwdDeclCode(fwdDeclCode),
 
  261                           fIncludePaths(includePaths),
 
  262                           fTriggerFunc(triggerFunc),
 
  263                           fClassesHeaders(classesHeaders),
 
  264                           fFwdNargsToKeepColl(fwdDeclsArgToSkip),
 
  265                           fHasCxxModule(hasCxxModule) {}
 
  267      const char* fModuleName; 
 
  268      const char** fHeaders; 
 
  269      const char* fPayloadCode; 
 
  270      const char* fFwdDeclCode; 
 
  271      const char** fIncludePaths; 
 
  272      void (*fTriggerFunc)(); 
 
  273      const char** fClassesHeaders; 
 
  279   std::vector<ModuleHeaderInfo_t>& GetModuleHeaderInfoBuffer() {
 
  280      static std::vector<ModuleHeaderInfo_t> moduleHeaderInfoBuffer;
 
  281      return moduleHeaderInfoBuffer;
 
  381      if (!initInterpreter) {
 
  382         initInterpreter = 
kTRUE;
 
  395      const static bool loadSuccess = dlsym(RTLD_DEFAULT, 
"usedToIdentifyRootClingByDlSym")? false : 0 <= 
gSystem->
Load(
"libImt");
 
  400            Error(
"GetSymInLibImt", 
"Cannot get symbol %s.", funcname);
 
  419      ::Warning(
"EnableParBranchProcessing", 
"Cannot enable parallel branch processing, please build ROOT with -Dimt=ON");
 
  433      ::Warning(
"DisableParBranchProcessing", 
"Cannot disable parallel branch processing, please build ROOT with -Dimt=ON");
 
  458      return isImplicitMTEnabled;
 
  538      ::Warning(
"EnableImplicitMT", 
"Cannot enable implicit multi-threading with %d threads, please build ROOT with -Dimt=ON", numthreads);
 
  552      ::Warning(
"DisableImplicitMT", 
"Cannot disable implicit multi-threading, please build ROOT with -Dimt=ON");
 
  601     fLineIsProcessing(0), fVersion(0), fVersionInt(0), fVersionCode(0),
 
  602     fVersionDate(0), fVersionTime(0), fBuiltDate(0), fBuiltTime(0),
 
  603     fTimer(0), fApplication(nullptr), fInterpreter(nullptr), fBatch(
kTRUE),
 
  607     fPrimitive(nullptr),fSelectPad(nullptr),fClasses(nullptr),fTypes(nullptr),fGlobals(nullptr),fGlobalFunctions(nullptr),
 
  608     fClosedObjects(nullptr),fFiles(nullptr),fMappedFiles(nullptr),fSockets(nullptr),fCanvases(nullptr),fStyles(nullptr),fFunctions(nullptr),
 
  609     fTasks(nullptr),fColors(nullptr),fGeometries(nullptr),fBrowsers(nullptr),fSpecials(nullptr),fCleanups(nullptr),
 
  610     fMessageHandlers(nullptr),fStreamerInfo(nullptr),fClassGenerators(nullptr),fSecContexts(nullptr),
 
  611     fProofs(nullptr),fClipboard(nullptr),fDataSets(nullptr),fUUIDs(nullptr),fRootFolder(nullptr),fBrowsables(nullptr),
 
  612     fPluginManager(nullptr)
 
  635   : 
TDirectory(), fLineIsProcessing(0), fVersion(0), fVersionInt(0), fVersionCode(0),
 
  636     fVersionDate(0), fVersionTime(0), fBuiltDate(0), fBuiltTime(0),
 
  637     fTimer(0), fApplication(nullptr), fInterpreter(nullptr), fBatch(
kTRUE),
 
  641     fPrimitive(nullptr),fSelectPad(nullptr),fClasses(nullptr),fTypes(nullptr),fGlobals(nullptr),fGlobalFunctions(nullptr),
 
  642     fClosedObjects(nullptr),fFiles(nullptr),fMappedFiles(nullptr),fSockets(nullptr),fCanvases(nullptr),fStyles(nullptr),fFunctions(nullptr),
 
  643     fTasks(nullptr),fColors(nullptr),fGeometries(nullptr),fBrowsers(nullptr),fSpecials(nullptr),fCleanups(nullptr),
 
  644     fMessageHandlers(nullptr),fStreamerInfo(nullptr),fClassGenerators(nullptr),fSecContexts(nullptr),
 
  645     fProofs(nullptr),fClipboard(nullptr),fDataSets(nullptr),fUUIDs(nullptr),fRootFolder(nullptr),fBrowsables(nullptr),
 
  646     fPluginManager(nullptr)
 
  713   if (!dlsym(RTLD_DEFAULT, 
"usedToIdentifyRootClingByDlSym")) {
 
  720   auto setNameLocked = [](
TSeqCollection *
l, 
const char *collection_name) {
 
  721      l->SetName(collection_name);
 
  825#elif defined(R__HAS_COCOA) 
  835   while (initfunc && initfunc[i]) {
 
  860   if (gROOTLocal == 
this) {
 
  863      gGetROOT = &GetROOT1;
 
  888#ifdef R__COMPLETE_MEM_TERMINATION 
  912#ifdef R__COMPLETE_MEM_TERMINATION 
  924#ifdef R__COMPLETE_MEM_TERMINATION 
  959#ifdef R__COMPLETE_MEM_TERMINATION 
  986      if (dlsym(RTLD_DEFAULT, 
"usedToIdentifyRootClingByDlSym")) {
 
  998      gROOTLocal = 
nullptr;
 
 1019   if (!generator) 
return;
 
 1043   while ((obj = (
TObject *) next())) {
 
 1045      if (opt && strlen(opt))
 
 1059   if (cl == 
nullptr) 
return kFALSE;
 
 1066   static void R__ListSlowClose(
TList *files)
 
 1086            dir->
Close(
"nodelete");
 
 1090         cursor = cursor->
Next();
 
 1096      files->
Clear(
"nodelete");
 
 1099   static void R__ListSlowDeleteContent(
TList *files)
 
 1122         cursor = cursor->
Next();
 
 1146      CallFunc_t *socketCloser = 
gInterpreter->CallFunc_Factory();
 
 1166            if (
socket->IsA()->InheritsFrom(socketClass)) {
 
 1174               CallFunc_t *otherCloser = 
gInterpreter->CallFunc_Factory();
 
 1175               gInterpreter->CallFunc_SetFuncProto(otherCloser, 
socket->IsA()->GetClassInfo(), 
"Close", 
"", &other_offset);
 
 1188            cursor = cursor->
Next();
 
 1196            cursor = cursor->
Next();
 
 1252   Error(
"FindObject",
"Not yet implemented");
 
 1297   while ((obj=next())) {
 
 1301   if (temp) 
return temp;
 
 1368   if (!temp && 
gPad) {
 
 1373         if (!temp && canvas != 
gPad) {
 
 1379   if (!temp) 
return nullptr;
 
 1392   if (obj) 
return obj;
 
 1408      if (obj) 
return obj;
 
 1424   if (
g) 
return g->GetTypeName();
 
 1438   Error(
"FindObjectPathName",
"Not yet implemented");
 
 1464   std::string normalized;
 
 1470   if (load && cl==
nullptr) {
 
 1503   if (!lcolors) 
return nullptr;
 
 1504   if (color < 0 || color >= lcolors->
GetSize()) 
return nullptr;
 
 1506   if (col && col->
GetNumber() == color) 
return col;
 
 1507   TIter   next(lcolors);
 
 1508   while ((col = (
TColor *) next()))
 
 1509      if (col->
GetNumber() == color) 
return col;
 
 1519   return (
TCanvas*)
gROOT->ProcessLine(
"TCanvas::MakeDefCanvas();");
 
 1552   if (
name == 
nullptr || 
name[0] == 0) {
 
 1562   gROOT->ProcessLine(
"TF1::InitStandardFunctions();");
 
 1593   if (addr == 
nullptr || ((
Longptr_t)addr) == -1) 
return nullptr;
 
 1645         Fatal(
"GetGlobalFunction", 
"fInterpreter not initialized");
 
 1652      if (!decl) 
return nullptr;
 
 1657      Error(
"GetGlobalFunction",
 
 1658            "\nDid not find matching TFunction <%s> with \"%s\".",
 
 1678         Fatal(
"GetGlobalFunctionWithPrototype", 
"fInterpreter not initialized");
 
 1684      if (!decl) 
return nullptr;
 
 1689      Error(
"GetGlobalFunctionWithPrototype",
 
 1690            "\nDid not find matching TFunction <%s> with \"%s\".",
 
 1763      Fatal(
"GetListOfGlobals", 
"fInterpreter not initialized");
 
 1787      Fatal(
"GetListOfGlobalFunctions", 
"fInterpreter not initialized");
 
 1820      Fatal(
"GetListOfTypes", 
"fInterpreter not initialized");
 
 1849   if (idleTimeInSec <= 0)
 
 1850      (*fApplication).RemoveIdleTimer();
 
 1852      (*fApplication).SetIdleTimer(idleTimeInSec, command);
 
 1862   const char* libsToLoad = 
gInterpreter->GetClassSharedLibs(className);
 
 1867   } 
else if (
gROOT->GetListOfClasses()
 
 1882   if (fname == 
nullptr) 
return 0;
 
 1887   if (where != 
kNPOS) {
 
 1934#if defined(R__HAS_COCOA) 
 1939#elif defined(R__WIN32) 
 1946         fprintf(stderr, 
"Fatal in <TROOT::InitSystem>: can't init operating system layer\n");
 
 1949         fprintf(stderr, 
"Fatal in <TROOT::InitSystem>: HOME directory not set\n");
 
 1950         fprintf(stderr, 
"Fix this by defining the HOME shell variable\n");
 
 1970      if (oldzipmode == 0) {
 
 1971         fprintf(stderr, 
"Warning in <TROOT::InitSystem>: ignoring old rootrc entry \"Root.ZipMode = 0\"!\n");
 
 1973         if (oldzipmode == -1 || oldzipmode == 1) {
 
 1988      if (
gDebug > 0 && isatty(2))
 
 1989         fprintf(stderr, 
"Info in <TROOT::InitSystem>: running with gDebug = %d\n", 
gDebug);
 
 1991#if defined(R__HAS_COCOA) 
 1996      { 
TUrl dummy(
"/dummy"); }
 
 2020   if (!dlsym(RTLD_DEFAULT, 
"usedToIdentifyRootClingByDlSym")
 
 2021       && !dlsym(RTLD_DEFAULT, 
"usedToIdentifyStaticRoot")) {
 
 2023      void *libRIOHandle = dlopen(libRIO, RTLD_NOW|RTLD_GLOBAL);
 
 2025      if (!libRIOHandle) {
 
 2027         fprintf(stderr, 
"Fatal in <TROOT::InitInterpreter>: cannot load library %s\n", err.
Data());
 
 2037         fprintf(stderr, 
"Fatal in <TROOT::InitInterpreter>: cannot load library %s\n", err.
Data());
 
 2047      fprintf(stderr, 
"Fatal in <TROOT::InitInterpreter>: cannot load symbol %s\n", err.
Data());
 
 2056      fprintf(stderr, 
"Fatal in <TROOT::InitInterpreter>: cannot load symbol %s\n", err.
Data());
 
 2060   const char *interpArgs[] = {
 
 2090   for (std::vector<ModuleHeaderInfo_t>::const_iterator
 
 2091           li = GetModuleHeaderInfoBuffer().begin(),
 
 2092           le = GetModuleHeaderInfoBuffer().end(); li != le; ++li) {
 
 2100                                   li->fFwdNargsToKeepColl,
 
 2101                                   li->fClassesHeaders,
 
 2105   GetModuleHeaderInfoBuffer().clear();
 
 2185   FILE *mayberootfile = fopen(filename,
"rb");
 
 2186   if (mayberootfile) {
 
 2188      if (fgets(header,5,mayberootfile)) {
 
 2189         result = strncmp(header,
"root",4)==0;
 
 2191      fclose(mayberootfile);
 
 2235      if (arguments.
Length()) {
 
 2292      if (padUpdate && 
gPad)
 
 2330   return (*fApplication).ProcessLine(sline, 
kFALSE, error);
 
 2350   return (*fApplication).ProcessLine(sline, 
kTRUE, error);
 
 2383#ifdef ROOT_GIT_COMMIT 
 2386#ifdef ROOT_GIT_BRANCH 
 2390   TString gitinfo = 
"gitinfo.txt";
 
 2393   FILE *fp = fopen(filename, 
"r");
 
 2411   TTHREAD_TLS(
Bool_t) fgReadingObject = 
false;
 
 2412   return fgReadingObject;
 
 2435      Int_t iday,imonth,iyear, ihour, imin;
 
 2436      static const char *months[] = { 
"Jan", 
"Feb", 
"Mar", 
"Apr", 
"May", 
"Jun",
 
 2437                                      "Jul", 
"Aug", 
"Sep", 
"Oct", 
"Nov", 
"Dec" };
 
 2441      imonth = (idate/100)%100;
 
 2442      iyear  = idate/10000;
 
 2445      fGitDate.
Form(
"%s %02d %4d, %02d:%02d:00", months[imonth-1], iday, iyear, ihour, imin);
 
 2483      gROOT->CloseFiles();
 
 2494                           const char** headers,
 
 2495                           const char** includePaths,
 
 2496                           const char* payloadCode,
 
 2497                           const char* fwdDeclCode,
 
 2498                           void (*triggerFunc)(),
 
 2500                           const char** classesHeaders,
 
 2563      gCling->
RegisterModule(modulename, headers, includePaths, payloadCode, fwdDeclCode, triggerFunc,
 
 2564                             fwdDeclsArgToSkip, classesHeaders, 
false, hasCxxModule);
 
 2566      GetModuleHeaderInfoBuffer().push_back(ModuleHeaderInfo_t(modulename, headers, includePaths, payloadCode,
 
 2567                                                               fwdDeclCode, triggerFunc, fwdDeclsArgToSkip,
 
 2568                                                               classesHeaders, hasCxxModule));
 
 2613      if (!strncmp(option, 
"a", 1)) {
 
 2644      Error(
"SetCutClassName",
"Invalid class name");
 
 2649      Error(
"SetCutClassName",
"Unknown class:%s",
name);
 
 2653      Error(
"SetCutClassName",
"Class:%s does not derive from TCutG",
name);
 
 2665   if (!mode[0]) 
return;
 
 2690   TString style_name = stylename;
 
 2694   else       Error(
"SetStyle",
"Unknown style:%s",style_name.
Data());
 
 2724   if (macroPath.
Length() == 0) {
 
 2725      macroPath = 
gEnv->
GetValue(
"Root.MacroPath", (
char*)
nullptr);
 
 2726#if defined(R__WIN32) 
 2731      if (macroPath.
Length() == 0)
 
 2732#if !defined(R__WIN32) 
 2750   if (!newpath || !*newpath)
 
 2753      macroPath = newpath;
 
 2774   const char *wd = webdisplay;
 
 2778   if (!strcmp(wd, 
"off")) {
 
 2782   } 
else if (!strncmp(wd, 
"server", 6)) {
 
 2791            Error(
"SetWebDisplay",
"Wrong port parameter %s for server", wd+7);
 
 2795      if (!strncmp(wd, 
"batch", 5)) {
 
 2798      } 
else if (!strncmp(wd, 
"nobatch", 7)) {
 
 2821   for (
int i = 0; i < 
fgDirLevel; i++) std::cout.put(
' ');
 
 2852   return 10000*(code>>16) + 100*((code&65280)>>8) + (code&255);
 
 2861   int b = (
v - 
a*10000)/100;
 
 2862   int c = 
v - 
a*10000 - 
b*100;
 
 2863   return (
a << 16) + (
b << 8) + 
c;
 
 2881   static std::vector<std::string> sArgs = {};
 
 2882   sArgs.insert(sArgs.begin(), args.begin(), args.end());
 
 2891   static const char** extraInterpArgs = 
nullptr;
 
 2892   return extraInterpArgs;
 
 2898static Bool_t IgnorePrefix() {
 
 2900   return ignorePrefix;
 
 2919   if (IgnorePrefix()) {
 
 2922      if (rootbindir.
IsNull()) {
 
 2929      const static TString rootbindir = ROOTBINDIR;
 
 2940   if (IgnorePrefix()) {
 
 2943      if (rootlibdir.
IsNull()) {
 
 2950      const static TString rootlibdir = ROOTLIBDIR;
 
 2981   if (IgnorePrefix()) {
 
 2986      const static TString rootdatadir = ROOTDATADIR;
 
 2997   if (IgnorePrefix()) {
 
 3002      const static TString rootdocdir = ROOTDOCDIR;
 
 3013   if (IgnorePrefix()) {
 
 3016      if (rootmacrodir.
IsNull()) {
 
 3017         rootmacrodir = 
"macros";
 
 3020      return rootmacrodir;
 
 3023      const static TString rootmacrodir = ROOTMACRODIR;
 
 3024      return rootmacrodir;
 
 3034   if (IgnorePrefix()) {
 
 3037      if (roottutdir.
IsNull()) {
 
 3038         roottutdir = 
"tutorials";
 
 3044      const static TString roottutdir = ROOTTUTDIR;
 
 3056      gROOT->EndOfProcessCleanups();
 
 3066   if (IgnorePrefix()) {
 
 3069      if (rootsrcdir.
IsNull()) {
 
 3076      const static TString rootsrcdir = ROOTSRCDIR;
 
 3087   if (IgnorePrefix()) {
 
 3090      if (rooticonpath.
IsNull()) {
 
 3091         rooticonpath = 
"icons";
 
 3094      return rooticonpath;
 
 3097      const static TString rooticonpath = ROOTICONPATH;
 
 3098      return rooticonpath;
 
 3108   if (IgnorePrefix()) {
 
 3111      if (ttffontdir.
IsNull()) {
 
 3112         ttffontdir = 
"fonts";
 
 3118      const static TString ttffontdir = TTFFONTDIR;
 
The file contains utilities which are foundational and could be used across the core component of ROO...
 
typedef void(GLAPIENTRYP _GLUfuncptr)(void)
 
#define ROOT_RELEASE_TIME
 
#define ROOT_VERSION_CODE
 
#define ROOT_RELEASE_DATE
 
R__EXTERN TClassTable * gClassTable
 
R__DLLEXPORT TInterpreter * CreateInterpreter(void *interpLibHandle, const char *argv[])
 
void DefaultErrorHandler(Int_t level, Bool_t abort_bool, const char *location, const char *msg)
The default error handler function.
 
void Error(const char *location, const char *msgfmt,...)
Use this function in case an error occurred.
 
void Warning(const char *location, const char *msgfmt,...)
Use this function in warning situations.
 
ErrorHandlerFunc_t SetErrorHandler(ErrorHandlerFunc_t newhandler)
Set an errorhandler function. Returns the old handler.
 
R__EXTERN TGuiFactory * gBatchGuiFactory
 
R__EXTERN TGuiFactory * gGuiFactory
 
R__EXTERN TVirtualMutex * gInterpreterMutex
 
TInterpreter * CreateInterpreter_t(void *shlibHandle, const char *argv[])
 
R__EXTERN TInterpreter * gCling
 
void * DestroyInterpreter_t(TInterpreter *)
 
R__EXTERN TPluginManager * gPluginMgr
 
Bool_t & GetReadingObject()
 
static Int_t IVERSQ()
Return version id as an integer, i.e. "2.22/04" -> 22204.
 
static Int_t IDATQQ(const char *date)
Return built date as integer, i.e. "Apr 28 2000" -> 20000428.
 
static TClass * R__GetClassIfKnown(const char *className)
Check whether className is a known class, and only autoload if we can.
 
static DestroyInterpreter_t * gDestroyInterpreter
 
static void * gInterpreterLib
 
static Int_t ITIMQQ(const char *time)
Return built time as integer (with min precision), i.e.
 
static void at_exit_of_TROOT()
 
TVirtualMutex * gROOTMutex
 
static void CleanUpROOTAtExit()
Clean up at program termination before global objects go out of scope.
 
static void CallCloseFiles()
Insure that the files, canvases and sockets are closed.
 
R__EXTERN TVirtualMutex * gROOTMutex
 
R__EXTERN TStyle * gStyle
 
R__EXTERN const char * gRootDir
 
Bool_t R_ISREG(Int_t mode)
 
R__EXTERN TSystem * gSystem
 
R__EXTERN TVirtualMutex * gGlobalMutex
 
#define R__LOCKGUARD(mutex)
 
#define R__READ_LOCKGUARD(mutex)
 
R__EXTERN TVirtualX * gGXBatch
 
char fHolder[sizeof(TROOT)]
 
static void CreateApplication()
Static function used to create a default application environment.
 
Using a TBrowser one can browse all ROOT objects.
 
void SetRefreshFlag(Bool_t flag)
 
TVirtualPad * cd(Int_t subpadnumber=0) override
Set current canvas & pad.
 
Objects following this interface can be passed onto the TROOT object to implement a user customized w...
 
This class registers for all classes their name, id and dictionary function in a hash table.
 
TClass instances represent classes, structs and namespaces in the ROOT type system.
 
static void AddClass(TClass *cl)
static: Add a class to the list and map of classes.
 
static TClass * LoadClass(const char *requestedname, Bool_t silent)
Helper function used by TClass::GetClass().
 
Short_t GetDeclFileLine() const
 
static void RemoveClass(TClass *cl)
static: Remove a class from the list and map of classes
 
ClassInfo_t * GetClassInfo() const
 
Bool_t InheritsFrom(const char *cl) const
Return kTRUE if this class inherits from a class with name "classname".
 
const char * GetDeclFileName() const
Return name of the file containing the declaration of this class.
 
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.
 
Collection abstract base class.
 
virtual TObject * FindObject(const char *name) const
Find an object in this collection using its name.
 
virtual bool UseRWLock(Bool_t enable=true)
Set this collection to use a RW lock upon access, making it thread safe.
 
virtual void Clear(Option_t *option="")=0
 
virtual void AddAll(const TCollection *col)
Add all objects from collection col to this collection.
 
virtual void RecursiveRemove(TObject *obj)
Remove object from this collection and recursively remove the object from all other objects (and coll...
 
virtual void Delete(Option_t *option="")=0
Delete this object.
 
virtual void SetOwner(Bool_t enable=kTRUE)
Set whether this collection is the owner (enable==true) of its content.
 
virtual void Add(TObject *obj)=0
 
virtual Int_t GetSize() const
Return the capacity of the collection, i.e.
 
The color creation and management class.
 
static void InitializeColors()
Initialize colors used by the TCanvas based graphics (via TColor objects).
 
Basic data type descriptor (datatype information is obtained from CINT).
 
Describe directory structure in memory.
 
virtual void Close(Option_t *option="")
Delete all objects from memory and directory structure itself.
 
virtual TList * GetList() const
 
void ls(Option_t *option="") const override
List Directory contents.
 
virtual void Append(TObject *obj, Bool_t replace=kFALSE)
Append object to this directory.
 
void SetName(const char *newname) override
Set the name for directory If the directory name is changed after the directory was written once,...
 
void BuildDirectory(TFile *motherFile, TDirectory *motherDir)
Initialise directory to defaults.
 
static std::atomic< TDirectory * > & CurrentDirectory()
Return the current directory for the current thread.
 
virtual TObject * Remove(TObject *)
Remove an object from the in-memory list.
 
The TEnv class reads config files, by default named .rootrc.
 
virtual Int_t GetValue(const char *name, Int_t dflt) const
Returns the integer value for a resource.
 
virtual void SetValue(const char *name, const char *value, EEnvLevel level=kEnvChange, const char *type=nullptr)
Set the value of a resource or create a new resource.
 
A ROOT file is a suite of consecutive data records (TKey instances) with a well defined format.
 
A TFolder object is a collection of objects and folders.
 
TFolder * AddFolder(const char *name, const char *title, TCollection *collection=0)
Create a new folder and add it to the list of folders of this folder, return a pointer to the created...
 
virtual TObject * FindObjectAny(const char *name) const
Return a pointer to the first object with name starting at this folder.
 
Dictionary for function template This class describes one single function template.
 
Global functions class (global functions are obtained from CINT).
 
static void MakeFunctor(const char *name, const char *type, GlobFunc &func)
 
static TList & GetEarlyRegisteredGlobals()
Returns list collected globals Used to storeTGlobalMappedFunctions from other libs,...
 
Global variables class (global variables are obtained from CINT).
 
This ABC is a factory for GUI components.
 
THashList implements a hybrid collection class consisting of a hash table and a list to store TObject...
 
THashTable implements a hash table to store TObject's.
 
virtual void RegisterModule(const char *, const char **, const char **, const char *, const char *, void(*)(), const FwdDeclArgsToKeepCollection_t &fwdDeclArgsToKeep, const char **classesHeaders, Bool_t lateRegistration=false, Bool_t hasCxxModule=false)=0
 
virtual void Initialize()=0
 
std::vector< std::pair< std::string, int > > FwdDeclArgsToKeepCollection_t
 
virtual void SaveContext()=0
 
TDictionary::DeclId_t DeclId_t
 
Option_t * GetOption() const
 
A collection of TDataMember objects designed for fast access given a DeclId_t and for keep track of T...
 
virtual void Delete(Option_t *option="")
Delete all TDataMember object files.
 
void Unload()
Mark 'all func' as being unloaded.
 
TDictionary * Get(DeclId_t id)
Return (after creating it if necessary) the TDataMember describing the data member corresponding to t...
 
void Load()
Load all the DataMembers known to the interpreter for the scope 'fClass' into this collection.
 
A collection of TEnum objects designed for fast access given a DeclId_t and for keep track of TEnum t...
 
A collection of TFunction objects designed for fast access given a DeclId_t and for keep track of TFu...
 
virtual TObject * FindObject(const char *name) const
Specialize FindObject to do search for the a function just by name or create it if its not already in...
 
A collection of TFunction objects designed for fast access given a DeclId_t and for keep track of TFu...
 
TFunction * Get(DeclId_t id)
Return (after creating it if necessary) the TMethod or TFunction describing the function correspondin...
 
void Load()
Load all the functions known to the interpreter for the scope 'fClass' into this collection.
 
void Unload()
Mark 'all func' as being unloaded.
 
virtual void Delete(Option_t *option="")
Delete all TFunction object files.
 
A collection of TDataType designed to hold the typedef information and numerical type information.
 
virtual void Add(TObject *obj)
 
virtual TObjLink * FirstLink() const
 
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.
 
Handle messages that might be generated by the system.
 
virtual void HandleMessage(Long_t id, const TObject *obj)
Store message origin, keep statistics and call Notify().
 
virtual void SetTitle(const char *title="")
Set the title of the TNamed.
 
virtual void SetName(const char *name)
Set the name of the TNamed.
 
TObject * At(Int_t idx) const
 
Wrapper around a TObject so it can be stored in a TList.
 
void SetObject(TObject *obj)
 
TObject * GetObject() const
 
Mother of all ROOT objects.
 
static void SetObjectStat(Bool_t stat)
Turn on/off tracking of objects in the TObjectTable.
 
virtual const char * GetName() const
Returns name of object.
 
R__ALWAYS_INLINE Bool_t TestBit(UInt_t f) const
 
virtual const char * ClassName() const
Returns name of class to which the object belongs.
 
virtual void Warning(const char *method, const char *msgfmt,...) const
Issue warning message.
 
virtual TObject * FindObject(const char *name) const
Must be redefined in derived classes.
 
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.
 
virtual void Fatal(const char *method, const char *msgfmt,...) const
Issue fatal error message.
 
@ kInvalidObject
if object ctor succeeded but object should not be used
 
@ kMustCleanup
if object destructor must call RecursiveRemove()
 
This class implements a plugin library manager.
 
void LoadHandlersFromEnv(TEnv *env)
Load plugin handlers specified in config file, like:
 
static void Cleanup()
static function (called by TROOT destructor) to delete all TProcessIDs
 
static TProcessID * AddProcessID()
Static function to add a new TProcessID to the list of PIDs.
 
This class is a specialized TProcessID managing the list of UUIDs.
 
static Bool_t BlockAllSignals(Bool_t b)
Block or unblock all signals. Returns the previous block status.
 
ROOT top level object description.
 
static Int_t IncreaseDirLevel()
Increase the indentation level for ls().
 
Int_t IgnoreInclude(const char *fname, const char *expandedfname)
Return 1 if the name of the given include file corresponds to a class that is known to ROOT,...
 
void Message(Int_t id, const TObject *obj)
Process message id called by obj.
 
void RemoveClass(TClass *)
Remove a class from the list and map of classes.
 
TCollection * fClassGenerators
 
void SetCutClassName(const char *name="TCutG")
Set the default graphical cut class name for the graphics editor By default the graphics editor creat...
 
TSeqCollection * fCanvases
 
const TObject * fPrimitive
 
void AddClassGenerator(TClassGenerator *gen)
Add a class generator.
 
TSeqCollection * fGeometries
 
TInterpreter * fInterpreter
 
std::vector< std::pair< std::string, int > > FwdDeclArgsToKeepCollection_t
 
void EndOfProcessCleanups()
Execute the cleanups necessary at the end of the process, in particular those that must be executed b...
 
TSeqCollection * GetListOfFiles() const
 
static const TString & GetBinDir()
Get the binary directory in the installation. Static utility function.
 
static const TString & GetIncludeDir()
Get the include directory in the installation. Static utility function.
 
Longptr_t ProcessLine(const char *line, Int_t *error=0)
Process interpreter command via TApplication::ProcessLine().
 
Longptr_t ProcessLineFast(const char *line, Int_t *error=0)
Process interpreter command directly via CINT interpreter.
 
TSeqCollection * fSockets
 
static const char * GetMacroPath()
Get macro search path. Static utility function.
 
void SaveContext()
Save the current interpreter context.
 
Bool_t IsExecutingMacro() const
 
TDataType * GetType(const char *name, Bool_t load=kFALSE) const
Return pointer to type with name.
 
static void Initialize()
Initialize ROOT explicitly.
 
TFunction * GetGlobalFunctionWithPrototype(const char *name, const char *proto=0, Bool_t load=kFALSE)
Return pointer to global function by name.
 
static void ShutDown()
Shut down ROOT.
 
TObject * GetFunction(const char *name) const
Return pointer to function with name.
 
static Int_t ConvertVersionCode2Int(Int_t code)
Convert version code to an integer, i.e. 331527 -> 51507.
 
TSeqCollection * fMessageHandlers
 
void SetStyle(const char *stylename="Default")
Change current style to style with name stylename.
 
void ReadGitInfo()
Read Git commit information and branch name from the etc/gitinfo.txt file.
 
void RefreshBrowsers()
Refresh all browsers.
 
void CloseFiles()
Close any files and sockets that gROOT knows about.
 
std::atomic< TApplication * > fApplication
 
const char * FindObjectPathName(const TObject *obj) const
Return path name of obj somewhere in the //root/... path.
 
static Int_t ConvertVersionInt2Code(Int_t v)
Convert version as an integer to version code as used in RVersion.h.
 
static const TString & GetTTFFontDir()
Get the fonts directory in the installation. Static utility function.
 
TCanvas * MakeDefCanvas() const
Return a default canvas.
 
TColor * GetColor(Int_t color) const
Return address of color with index color.
 
TGlobal * GetGlobal(const char *name, Bool_t load=kFALSE) const
Return pointer to global variable by name.
 
TClass * FindSTLClass(const char *name, Bool_t load, Bool_t silent=kFALSE) const
return a TClass object corresponding to 'name' assuming it is an STL container.
 
TSeqCollection * fStreamerInfo
 
static const TString & GetIconPath()
Get the icon path in the installation. Static utility function.
 
TCollection * GetListOfGlobalFunctions(Bool_t load=kFALSE)
Return list containing the TFunctions currently defined.
 
TSeqCollection * fSpecials
 
TCollection * GetListOfFunctionTemplates()
 
static void RegisterModule(const char *modulename, const char **headers, const char **includePaths, const char *payLoadCode, const char *fwdDeclCode, void(*triggerFunc)(), const FwdDeclArgsToKeepCollection_t &fwdDeclsArgToSkip, const char **classesHeaders, bool hasCxxModule=false)
Called by static dictionary initialization to register clang modules for headers.
 
TListOfDataMembers * fGlobals
 
TListOfFunctionTemplates * fFuncTemplate
 
TSeqCollection * fDataSets
 
TStyle * GetStyle(const char *name) const
Return pointer to style with name.
 
TCollection * GetListOfEnums(Bool_t load=kFALSE)
 
void InitInterpreter()
Initialize the interpreter.
 
TCollection * GetListOfGlobals(Bool_t load=kFALSE)
Return list containing the TGlobals currently defined.
 
virtual TObject * FindObjectAnyFile(const char *name) const
Scan the memory lists of all files for an object with name.
 
static void SetDirLevel(Int_t level=0)
Return Indentation level for ls().
 
TSeqCollection * fSecContexts
 
static const char * GetTutorialsDir()
Get the tutorials directory in the installation.
 
TCollection * GetListOfFunctionOverloads(const char *name) const
Return the collection of functions named "name".
 
TSeqCollection * fCleanups
 
static Bool_t Initialized()
Return kTRUE if the TROOT object has been initialized.
 
void RecursiveRemove(TObject *obj)
Recursively remove this object from the list of Cleanups.
 
static const TString & GetSourceDir()
Get the source directory in the installation. Static utility function.
 
static const TString & GetMacroDir()
Get the macro directory in the installation. Static utility function.
 
TSeqCollection * fClosedObjects
 
void Browse(TBrowser *b)
Add browsable objects to TBrowser.
 
TFunction * GetGlobalFunction(const char *name, const char *params=0, Bool_t load=kFALSE)
Return pointer to global function by name.
 
TSeqCollection * fClipboard
 
const char * GetGitDate()
Return date/time make was run.
 
void SetEditorMode(const char *mode="")
Set editor mode.
 
static const TString & GetTutorialDir()
Get the tutorials directory in the installation. Static utility function.
 
virtual ~TROOT()
Clean up and free resources used by ROOT (files, network sockets, shared memory segments,...
 
void Idle(UInt_t idleTimeInSec, const char *command=0)
Execute command when system has been idle for idleTimeInSec seconds.
 
TSeqCollection * GetListOfBrowsers() const
 
Bool_t ReadingObject() const
Deprecated (will be removed in next release).
 
TSeqCollection * GetListOfColors() const
 
virtual void Append(TObject *obj, Bool_t replace=kFALSE)
Append object to this directory.
 
static const std::vector< std::string > & AddExtraInterpreterArgs(const std::vector< std::string > &args)
Provide command line arguments to the interpreter construction.
 
TClass * GetClass(const char *name, Bool_t load=kTRUE, Bool_t silent=kFALSE) const
Return pointer to class with name. Obsolete, use TClass::GetClass directly.
 
virtual TObject * FindObjectAny(const char *name) const
Return a pointer to the first object with name starting at //root.
 
static const TString & GetRootSys()
Get the rootsys directory in the installation. Static utility function.
 
TListOfFunctions * GetGlobalFunctions()
Internal routine returning, and creating if necessary, the list of global function.
 
TObject * Remove(TObject *)
Remove an object from the in-memory list.
 
Int_t LoadClass(const char *classname, const char *libname, Bool_t check=kFALSE)
Check if class "classname" is known to the interpreter (in fact, this check is not needed anymore,...
 
void AddClass(TClass *cl)
Add a class to the list and map of classes.
 
static Int_t RootVersionCode()
Return ROOT version code as defined in RVersion.h.
 
TObject * FindSpecialObject(const char *name, void *&where)
Returns address and folder of a ROOT object if it exists.
 
void InitSystem()
Initialize operating system interface.
 
Bool_t ClassSaved(TClass *cl)
return class status bit kClassSaved for class cl This function is called by the SavePrimitive functio...
 
TCollection * GetListOfTypes(Bool_t load=kFALSE)
Return a dynamic list giving access to all TDataTypes (typedefs) currently defined.
 
virtual TObject * FindObject(const char *name) const
Returns address of a ROOT object if it exists.
 
Bool_t IsRootFile(const char *filename) const
Return true if the file is local and is (likely) to be a ROOT file.
 
static void IndentLevel()
Functions used by ls() to indent an object hierarchy.
 
static const TString & GetDocDir()
Get the documentation directory in the installation. Static utility function.
 
static const TString & GetEtcDir()
Get the sysconfig directory in the installation. Static utility function.
 
Int_t GetNclasses() const
Get number of classes.
 
static const char **& GetExtraInterpreterArgs()
INTERNAL function! Used by rootcling to inject interpreter arguments through a C-interface layer.
 
static void SetMacroPath(const char *newpath)
Set or extend the macro search path.
 
void InitThreads()
Load and initialize thread library.
 
TFunctionTemplate * GetFunctionTemplate(const char *name)
 
TPluginManager * fPluginManager
 
TObject * GetGeometry(const char *name) const
Return pointer to Geometry with name.
 
Bool_t fIsWebDisplayBatch
 
Longptr_t ProcessLineSync(const char *line, Int_t *error=0)
Process interpreter command via TApplication::ProcessLine().
 
TSeqCollection * fMappedFiles
 
Int_t GetNtypes() const
Get number of types.
 
static const TString & GetLibDir()
Get the library directory in the installation. Static utility function.
 
void ls(Option_t *option="") const
To list all objects of the application.
 
TSeqCollection * fBrowsers
 
TListOfFunctions * fGlobalFunctions
 
static Int_t DecreaseDirLevel()
Decrease the indentation level for ls().
 
void Reset(Option_t *option="")
Delete all global interpreter objects created since the last call to Reset.
 
const char * FindObjectClassName(const char *name) const
Returns class name of a ROOT object including CINT globals.
 
static const TString & GetDataDir()
Get the data directory in the installation. Static utility function.
 
void SetWebDisplay(const char *webdisplay)
Specify where web graphics shall be rendered.
 
Int_t LoadMacro(const char *filename, Int_t *error=0, Bool_t check=kFALSE)
Load a macro in the interpreter's memory.
 
Longptr_t Macro(const char *filename, Int_t *error=0, Bool_t padUpdate=kTRUE)
Execute a macro in the interpreter.
 
TSeqCollection * GetListOfGeometries() const
 
TSeqCollection * GetListOfStyles() const
 
static Int_t GetDirLevel()
return directory level
 
void SetReadingObject(Bool_t flag=kTRUE)
 
Sequenceable collection abstract base class.
 
virtual void AddLast(TObject *obj)=0
 
virtual TObject * Last() const =0
 
virtual TObject * First() const =0
 
virtual void Add(TObject *obj)
 
static void PrintStatistics()
Print memory usage statistics.
 
Int_t Atoi() const
Return integer value of string.
 
Bool_t Gets(FILE *fp, Bool_t chop=kTRUE)
Read one line from the stream, including the  , or until EOF.
 
Bool_t EndsWith(const char *pat, ECaseCompare cmp=kExact) const
Return true if string ends with the specified string.
 
TSubString Strip(EStripType s=kTrailing, char c=' ') const
Return a substring of self stripped at beginning and/or end.
 
const char * Data() const
 
TString & ReplaceAll(const TString &s1, const TString &s2)
 
Ssiz_t Last(char c) const
Find last occurrence of a character c.
 
Bool_t BeginsWith(const char *s, ECaseCompare cmp=kExact) const
 
TString & Remove(Ssiz_t pos)
 
void Form(const char *fmt,...)
Formats a string using a printf style format descriptor.
 
Bool_t Contains(const char *pat, ECaseCompare cmp=kExact) const
 
TStyle objects may be created to define special styles.
 
static void BuildStyles()
Create some standard styles.
 
Describes an Operating System directory for the browser.
 
Abstract base class defining a generic interface to the underlying Operating System.
 
virtual Func_t DynFindSymbol(const char *module, const char *entry)
Find specific entry point in specified library.
 
virtual const char * Getenv(const char *env)
Get environment variable.
 
virtual TString SplitAclicMode(const char *filename, TString &mode, TString &args, TString &io) const
This method split a filename of the form:
 
virtual char * ConcatFileName(const char *dir, const char *name)
Concatenate a directory and a file name. User must delete returned string.
 
virtual void CleanCompiledMacros()
Remove the shared libs produced by the CompileMacro() function.
 
virtual int Load(const char *module, const char *entry="", Bool_t system=kFALSE)
Load a shared library.
 
int GetPathInfo(const char *path, Long_t *id, Long_t *size, Long_t *flags, Long_t *modtime)
Get info about a file: id, size, flags, modification time.
 
virtual const char * PrependPathName(const char *dir, TString &name)
Concatenate a directory and a file name.
 
virtual Bool_t AccessPathName(const char *path, EAccessMode mode=kFileExists)
Returns FALSE if one can access a file using the specified access mode.
 
virtual Bool_t Init()
Initialize the OS interface.
 
virtual const char * BaseName(const char *pathname)
Base name of a file name. Base name of /user/root is root.
 
virtual const char * WorkingDirectory()
Return working directory.
 
virtual char * Which(const char *search, const char *file, EAccessMode mode=kFileExists)
Find location of file in a search path.
 
virtual const char * HomeDirectory(const char *userName=nullptr)
Return the user's home directory.
 
virtual const char * GetError()
Return system error string.
 
virtual void ResetSignals()
Reset signals handlers to previous behaviour.
 
char * DynamicPathName(const char *lib, Bool_t quiet=kFALSE)
Find a dynamic library called lib using the system search paths.
 
This class represents a WWW compatible URL.
 
This class implements a mutex interface.
 
TVirtualPad is an abstract base class for the Pad and Canvas classes.
 
static TVirtualPad *& Pad()
Return the current pad for the current thread.
 
virtual TVirtualPad * GetVirtCanvas() const =0
 
Semi-Abstract base class defining a generic interface to the underlying, low level,...
 
static TVirtualX *& Instance()
Returns gVirtualX global.
 
R__ALWAYS_INLINE bool HasBeenDeleted(const TObject *obj)
Check if the TObject's memory has been deleted.
 
const std::string & GetIncludeDir()
\ returns the include directory in the installation.
 
const std::string & GetRootSys()
 
const std::string & GetEtcDir()
 
static Func_t GetSymInLibImt(const char *funcname)
 
static GetROOTFun_t gGetROOT
 
R__EXTERN TROOT * gROOTLocal
 
void DisableParBranchProcessing()
Globally disables the IMT use case of parallel branch processing, deactivating the corresponding lock...
 
std::function< const char *()> ErrorSystemMsgHandlerFunc_t
Retrieves the error string associated with the last system error.
 
static Bool_t & IsImplicitMTEnabledImpl()
Keeps track of the status of ImplicitMT w/o resorting to the load of libImt.
 
void MinimalErrorHandler(int level, Bool_t abort, const char *location, const char *msg)
A very simple error handler that is usually replaced by the TROOT default error handler.
 
TROOT *(* GetROOTFun_t)()
 
ErrorSystemMsgHandlerFunc_t SetErrorSystemMsgHandler(ErrorSystemMsgHandlerFunc_t h)
Returns the previous system error message handler.
 
void EnableParBranchProcessing()
Globally enables the parallel branch processing, which is a case of implicit multi-threading (IMT) in...
 
Bool_t IsParBranchProcessingEnabled()
Returns true if parallel branch processing is enabled.
 
void ReleaseDefaultErrorHandler()
Destructs resources that are taken by using the default error handler.
 
tbb::task_arena is an alias of tbb::interface7::task_arena, which doesn't allow to forward declare tb...
 
void EnableImplicitMT(UInt_t numthreads=0)
Enable ROOT's implicit multi-threading for all objects and methods that provide an internal paralleli...
 
Bool_t IsImplicitMTEnabled()
Returns true if the implicit multi-threading in ROOT is enabled.
 
UInt_t GetThreadPoolSize()
Returns the size of ROOT's thread pool.
 
R__EXTERN TVirtualRWMutex * gCoreMutex
 
void EnableThreadSafety()
Enables the global mutex to make ROOT thread safe/aware.
 
UInt_t GetImplicitMTPoolSize()
Returns the size of the pool used for implicit multi-threading.
 
void DisableImplicitMT()
Disables the implicit multi-threading in ROOT (see EnableImplicitMT).
 
void GetNormalizedName(std::string &norm_name, std::string_view name)
Return the normalized name.
 
#define sym(otri1, otri2)