12 #ifndef ROOT_TPluginManager 13 #define ROOT_TPluginManager 94 #ifndef ROOT_TMethodCall 97 #ifndef ROOT_TVirtualMutex 100 #ifndef ROOT_TInterpreter 133 fBase(), fRegexp(), fClass(), fPlugin(), fCtor(), fOrigin(),
134 fCallEnv(0), fMethod(0), fCanCall(0), fIsMacro(
kTRUE), fIsGlobal(
kTRUE) { }
136 const char *className,
const char *pluginName,
137 const char *ctor,
const char *origin);
161 auto nargs =
sizeof...(params);
180 if ((
gDebug > 1) && (nargs != (
int)
sizeof...(params))) {
181 Warning(
"ExecPlugin",
"Announced number of args different from the real number of argument passed %d vs %lu",
182 nargs, (
unsigned long)
sizeof...(params) );
202 void LoadHandlerMacros(
const char *path);
208 void LoadHandlersFromEnv(
TEnv *env);
209 void LoadHandlersFromPluginDirs(
const char *base = 0);
210 void AddHandler(
const char *base,
const char *regexp,
211 const char *className,
const char *pluginName,
212 const char *ctor = 0,
const char *origin = 0);
213 void RemoveHandler(
const char *base,
const char *regexp = 0);
215 TPluginHandler *FindHandler(
const char *base,
const char *uri = 0);
218 Int_t WritePluginMacros(
const char *dir,
const char *plugin = 0)
const;
219 Int_t WritePluginRecords(
const char *envFile,
const char *plugin = 0)
const;
TPluginHandler & operator=(const TPluginHandler &)
Int_t CheckPlugin() const
Check if the plugin library for this handler exits.
R__EXTERN TVirtualMutex * gInterpreterMutex
THashTable * fBasesLoaded
Int_t LoadPlugin()
Load the plugin library for this handler.
The TEnv class reads config files, by default named .rootrc.
Long_t ExecPluginImpl(const T &... params)
void SetupCallEnv()
Setup ctor or static method call environment.
THashTable implements a hash table to store TObject's.
#define ClassDef(name, id)
const char * GetPlugin() const
Bool_t CheckForExecPlugin(Int_t nargs)
Check that we can properly run ExecPlugin.
Method or function calling interface.
R__EXTERN TPluginManager * gPluginMgr
Long_t ExecPlugin(int nargs, const T &... params)
Bool_t fReadingDirs
table of base classes already checked or loaded
This class implements a plugin library manager.
void SetParams(const T &... params)
#define R__LOCKGUARD2(mutex)
AtomicInt_t fCanCall
ctor method or global function
void Print(Option_t *opt="") const
Print info about the plugin handler.
Bool_t fIsMacro
if 1 fCallEnv is ok, -1 fCallEnv is not ok, 0 fCallEnv not setup yet.
const char * GetCtor() const
Mother of all ROOT objects.
Global functions class (global functions are obtained from CINT).
Bool_t CanHandle(const char *base, const char *uri)
Check if regular expression appears in the URI, if so return kTRUE.
void Execute(const char *, const char *, int *=0)
Execute method on this object with the given parameter string, e.g.
~TPluginHandler()
Cleanup plugin handler object.
TFunction * fMethod
ctor method call environment
const char * GetOrigin() const
const char * GetBase() const
std::atomic< Int_t > AtomicInt_t
virtual void Warning(const char *method, const char *msgfmt,...) const
Issue warning message.
friend class TPluginManager
const char * GetRegexp() const
const char * GetClass() const