134   if (
fname.EndsWith(
".C") || 
fname.EndsWith(
".cxx") || 
fname.EndsWith(
".cpp") ||
 
  135       fname.EndsWith(
".cc"))
 
 
  215      Error(
"SetupCallEnv", 
"class %s not found in plugin %s", 
fClass.
Data(),
 
  233         Error(
"SetupCallEnv", 
"global function %s not found", 
method.Data());
 
  235         Error(
"SetupCallEnv", 
"method %s not found in class %s", 
method.Data(),
 
  241      Error(
"SetupCallEnv", 
"method %s is not public", 
method.Data());
 
 
  306      Error(
"ExecPlugin", 
"no ctor specified for this handler %s", 
fClass.
Data());
 
  328      Error(
"ExecPlugin", 
"nargs (%d) not consistent with expected number of arguments ([%d-%d])",
 
 
  343   const char *
exist = 
"";
 
  355         if (path) 
Printf(
"  [Lib:  %s]", path);
 
 
  400      if ((s = 
strstr(
er->GetName(), 
"Plugin."))) {
 
  404         const char *val = env->
GetValue(s, (
const char*)
nullptr);
 
  411               if (regexp.
IsNull()) 
break;
 
  413               if (
clss.IsNull()) 
break;
 
  415               if (
plugin.IsNull()) 
break;
 
  417               if (!
ctor.Contains(
"("))
 
 
  436         Info(
"LoadHandlerMacros", 
"%s", path);
 
  442         if (
f[0] == 
'P' && 
f.EndsWith(
".C")) {
 
  455            Info(
"LoadHandlerMacros", 
"   plugin macro: %s", s->
String().
Data());
 
  458            Error(
"LoadHandlerMacros", 
"pluging macro %s returned %ld",
 
 
  494      sbase.ReplaceAll(
"::", 
"@@");
 
  527   for (
Int_t i = 0; i < 
dirs->GetEntriesFast(); i++) {
 
  547                  Info(
"LoadHandlersFromPluginDirs", 
"%s", 
d.Data());
 
 
  570                                const char *className, 
const char *
pluginName,
 
 
  594      if (
h->fBase == base) {
 
  595         if (!regexp || 
h->fRegexp == regexp) {
 
 
  616      if (
h->CanHandle(base, uri)) {
 
  618            Info(
"FindHandler", 
"found plugin for %s", 
h->GetClass());
 
  625         Info(
"FindHandler", 
"did not find plugin for class %s and uri %s", base, uri);
 
  627         Info(
"FindHandler", 
"did not find plugin for class %s", base);
 
 
  643   Printf(
"=====================================================================");
 
  644   Printf(
"Base                 Regexp        Class              Plugin");
 
  645   Printf(
"=====================================================================");
 
  650      if (
h->CheckPlugin() == -1)
 
  653   Printf(
"=====================================================================");
 
  654   Printf(
"%d plugin handlers registered", cnt);
 
  656   Printf(
"=====================================================================\n");
 
 
  676      Error(
"WritePluginMacros", 
"cannot write in directory %s", 
d.Data());
 
  690      if (base != 
h->fBase) {
 
  697      sdd.ReplaceAll(
"::", 
"@@");
 
  701            Error(
"WritePluginMacros", 
"cannot create directory %s", 
sdd.Data());
 
  706      fn.Form(
"P%03d_%s.C", idx, 
h->fClass.Data());
 
  710         fprintf(
f, 
"void P%03d_%s()\n{\n", idx, 
h->fClass.Data());
 
  711         fprintf(
f, 
"   gPluginMgr->AddHandler(\"%s\", \"%s\", \"%s\",\n",
 
  712                 h->fBase.Data(), 
h->fRegexp.Data(), 
h->fClass.Data());
 
  713         fprintf(
f, 
"      \"%s\", \"%s\");\n", 
h->fPlugin.Data(), 
h->fCtor.Data());
 
  720            if (
h->fBase != h2->fBase || 
h->fClass != h2->fClass)
 
  723            fprintf(
f, 
"   gPluginMgr->AddHandler(\"%s\", \"%s\", \"%s\",\n",
 
  724                    h2->fBase.Data(), h2->fRegexp.Data(), h2->fClass.Data());
 
  725            fprintf(
f, 
"      \"%s\", \"%s\");\n", h2->fPlugin.Data(), h2->fCtor.Data());
 
 
  758      Error(
"WritePluginRecords", 
"error opening file %s", 
envFile);
 
  772      if (base != 
h->fBase) {
 
  776         base2.ReplaceAll(
"::", 
"@@");
 
  781         fprintf(fd, 
"Plugin.%s: %s %s %s \"%s\"\n", 
base2.Data(), 
h->fRegexp.Data(),
 
  782                 h->fClass.Data(), 
h->fPlugin.Data(), 
h->fCtor.Data());
 
  784         fprintf(fd, 
"+Plugin.%s: %s %s %s \"%s\"\n", 
base2.Data(), 
h->fRegexp.Data(),
 
  785                 h->fClass.Data(), 
h->fPlugin.Data(), 
h->fCtor.Data());
 
  792         if (
h->fBase != h2->fBase || 
h->fClass != h2->fClass)
 
  795         fprintf(fd, 
"+Plugin.%s: %s %s %s \"%s\"\n", 
base2.Data(), h2->fRegexp.Data(),
 
  796                 h2->fClass.Data(), h2->fPlugin.Data(), h2->fCtor.Data());
 
 
ROOT::Detail::TRangeCast< T, true > TRangeDynCast
TRangeDynCast is an adapter class that allows the typed iteration through a TCollection.
 
winID h TVirtualViewer3D TVirtualGLPainter p
 
R__EXTERN TVirtualMutex * gInterpreterMutex
 
static bool & TPH__IsReadingDirs()
 
TPluginManager * gPluginMgr
 
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.
 
R__EXTERN TSystem * gSystem
 
#define R__LOCKGUARD(mutex)
 
#define R__WRITE_LOCKGUARD(mutex)
 
#define R__READ_LOCKGUARD(mutex)
 
TClass instances represent classes, structs and namespaces in the ROOT type system.
 
static TClass * LoadClass(const char *requestedname, Bool_t silent)
Helper function used by TClass::GetClass().
 
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.
 
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.
 
THashList * GetTable() const
 
Long_t Property() const override
Get property description word. For meaning of bits see EProperty.
 
Int_t GetNargsOpt() const
Number of function optional (default) arguments.
 
Int_t GetNargs() const
Number of function arguments.
 
TList * GetListOfMethodArgs()
Return list containing the TMethodArgs of a TFunction.
 
THashTable implements a hash table to store TObject's.
 
void Add(TObject *obj) override
Add object to the hash table.
 
TObject * FindObject(const char *name) const override
Find object using its name.
 
void Add(TObject *obj) override
 
TObject * Remove(TObject *obj) override
Remove object from the list.
 
virtual TObjLink * FirstLink() const
 
TObject * At(Int_t idx) const override
Returns the object at position idx. Returns 0 if idx is out of range.
 
Each ROOT method (see TMethod) has a linked list of its arguments.
 
std::string GetTypeNormalizedName() const
Get the normalized name of the return type.
 
Method or function calling interface.
 
void Init(const TFunction *func)
Initialize the method invocation environment based on the TFunction object.
 
Wrapper around a TObject so it can be stored in a TList.
 
Collectable string class.
 
virtual void Error(const char *method, const char *msgfmt,...) const
Issue error message.
 
virtual void Info(const char *method, const char *msgfmt,...) const
Issue info message.
 
bool CheckNameMatch(int iarg, const std::type_info &ti)
Return true if the name of the iarg-th argument's type match type_name
 
Int_t CheckPlugin() const
Check if the plugin library for this handler exits.
 
TFunction * fMethod
ctor method call environment
 
void Print(Option_t *opt="") const override
Print info about the plugin handler.
 
Bool_t CanHandle(const char *base, const char *uri)
Check if regular expression appears in the URI, if so return kTRUE.
 
~TPluginHandler()
Cleanup plugin handler object.
 
Bool_t CheckForExecPlugin(Int_t nargs)
Check that we can properly run ExecPlugin.
 
Bool_t fIsMacro
if 1 fCallEnv is ok, -1 fCallEnv is not ok, 0 fCallEnv not setup yet.
 
void SetupCallEnv()
Setup ctor or static method call environment.
 
void LoadPluginImpl()
Load the plugin library for this handler.
 
std::vector< std::string > fArgTupleTypeInfo
ctor method or global function
 
Int_t LoadPlugin()
Load the plugin library for this handler.
 
std::once_flag fLoadStatusFlag
 
This class implements a plugin library manager.
 
Int_t WritePluginMacros(const char *dir, const char *plugin=nullptr) const
Write in the specified directory the plugin macros.
 
void AddHandler(const char *base, const char *regexp, const char *className, const char *pluginName, const char *ctor=nullptr, const char *origin=nullptr)
Add plugin handler to the list of handlers.
 
void Print(Option_t *opt="") const override
Print list of registered plugin handlers.
 
~TPluginManager()
Clean up the plugin manager.
 
void RemoveHandler(const char *base, const char *regexp=nullptr)
Remove handler for the specified base class and the specified regexp.
 
void LoadHandlersFromEnv(TEnv *env)
Load plugin handlers specified in config file, like:
 
THashTable * fBasesLoaded
 
void LoadHandlerMacros(const char *path)
Load all plugin macros from the specified path/base directory.
 
Int_t WritePluginRecords(const char *envFile, const char *plugin=nullptr) const
Write in the specified environment config file the plugin records.
 
TPluginHandler * FindHandler(const char *base, const char *uri=nullptr)
Returns the handler if there exists a handler for the specified URI.
 
TPluginManager()
Constructor.
 
void LoadHandlersFromPluginDirs(const char *base=nullptr)
Load plugin handlers specified via macros in a list of plugin directories.
 
static const TString & GetEtcDir()
Get the sysconfig directory in the installation. Static utility function.
 
Regular expression class.
 
A sorted doubly linked list.
 
TSubString Strip(EStripType s=kTrailing, char c=' ') const
Return a substring of self stripped at beginning and/or end.
 
const char * Data() const
 
Bool_t MaybeRegexp() const
Returns true if string contains one of the regexp characters "^$.[]*+?".
 
Bool_t BeginsWith(const char *s, ECaseCompare cmp=kExact) const
 
Ssiz_t Index(const char *pat, Ssiz_t i=0, ECaseCompare cmp=kExact) const
 
virtual void FreeDirectory(void *dirp)
Free a directory.
 
virtual void * OpenDirectory(const char *name)
Open a directory. Returns 0 if directory does not exist.
 
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 int MakeDirectory(const char *name)
Make a directory.
 
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 const char * GetDirEntry(void *dirp)
Get a directory entry. Returns 0 if no more entries.
 
char * DynamicPathName(const char *lib, Bool_t quiet=kFALSE)
Find a dynamic library called lib using the system search paths.
 
R__EXTERN TVirtualRWMutex * gCoreMutex
 
char * DemangleTypeIdName(const std::type_info &ti, int &errorCode)
Demangle in a portable way the type id name.
 
void GetNormalizedName(std::string &norm_name, std::string_view name)
Return the normalized name.