Log of /trunk/core/base/src/TPluginManager.cxx
Parent Directory
Revision
39764 -
(
view)
(
download)
(
as text)
(
annotate)
-
[select for diffs]
Modified
Thu Jun 16 10:46:05 2011 UTC (3 years, 7 months ago) by
rdm
File length: 29059 byte(s)
Diff to
previous 39654
add again support for ACliC compiled plugin macros and allow in addition
to .C also extensions like .cxx, .cpp, .cc. Fixes issue 83277.
Revision
38072 -
(
view)
(
download)
(
as text)
(
annotate)
-
[select for diffs]
Modified
Tue Feb 15 11:34:17 2011 UTC (3 years, 11 months ago) by
rdm
File length: 28663 byte(s)
Diff to
previous 37497
require that a plugin macro ends with ".C" as specified in the specs.
Avoids an unneeded LoadMacro() call for all built-in plugin libraries
which caused a stat of a not existing file in the local file system.
Should speed up startup in a remote files system.
Revision
37497 -
(
view)
(
download)
(
as text)
(
annotate)
-
[select for diffs]
Modified
Fri Dec 10 12:22:54 2010 UTC (4 years, 1 month ago) by
rdm
File length: 28640 byte(s)
Diff to
previous 35725
Add new method WritePluginRecords() which writes out the plugin information
in the TEnv format:
Plugin.TFile: ^rfio: TRFIOFile RFIO "<constructor>"
This is needed for iOS where we cannot ship the etc/plugins directory
as part of the app bundle. A single system.plugins file will work though.
Revision
32284 -
(
view)
(
download)
(
as text)
(
annotate)
-
[select for diffs]
Modified
Mon Feb 8 15:57:44 2010 UTC (4 years, 11 months ago) by
rdm
File length: 26267 byte(s)
Diff to
previous 29750
- add explanation on processing order of plugin directories.
- add TPluginHandler::Print() (code was all in TPluginManager::Print()).
Revision
23872 -
(
view)
(
download)
(
as text)
(
annotate)
-
[select for diffs]
Modified
Fri May 16 01:00:04 2008 UTC (6 years, 8 months ago) by
rdm
File length: 25758 byte(s)
Diff to
previous 22961
load plugin macros in alphabetical order. The most generic plugin should
be loaded last (and should have a name like P0N0_xxxx.C, so it sorts last).
Revision
22961 -
(
view)
(
download)
(
as text)
(
annotate)
-
[select for diffs]
Modified
Thu Apr 3 13:32:57 2008 UTC (6 years, 9 months ago) by
rdm
File length: 25491 byte(s)
Diff to
previous 20877
move the directories:
base clib cont meta metautils newdelete pcre rint thread unix utils
winnt zip
under the new core meta directory.
Revision
19590 -
(
view)
(
download)
(
as text)
(
annotate)
-
[select for diffs]
Modified
Fri Aug 10 10:49:04 2007 UTC (7 years, 5 months ago) by
rdm
Original Path:
trunk/base/src/TPluginManager.cxx
File length: 25298 byte(s)
Diff to
previous 19407
From Axel:
PluginManager calls gROOT->Macro() which calls gPad->Update() which
fails if the plugin mechanism was initialized while setting up e.g. a
TCanvas that gPad points to. Simply setting gPad=0 temporarily during
the plugin manager's gROOT->Macro() call fixes that.
Revision
19373 -
(
view)
(
download)
(
as text)
(
annotate)
-
[select for diffs]
Modified
Tue Jul 17 14:43:18 2007 UTC (7 years, 6 months ago) by
rdm
Original Path:
trunk/base/src/TPluginManager.cxx
File length: 24913 byte(s)
Diff to
previous 18515
Updated TPluginManager. Plugin handlers can now be specified wia macros
in a list of plugin directories. These new features are implemented via
two new methods described below. These changes are fully backward compatible
and plugin descriptions in rootrc files still work. However, using the new
macros we only load in program memory the handlers for the needed plugins,
instead of the almost 100 handlers of all plugins. For example after starting
root.exe, only these handlers are loaded:
root [0] gPluginMgr->Print()
=====================================================================
Base Regexp Class Plugin
=====================================================================
TSystem ^rfio: TRFIOSystem RFIO
TSystem ^castor: TRFIOSystem RFIO
TSystem ^dcache: TDCacheSystem DCache
TSystem ^dcap: TDCacheSystem DCache
TSystem ^alien: TAlienSystem RAliEn
TSystem ^root: TXNetSystem Netx
=====================================================================
6 plugin handlers registered
[*] plugin not available
=====================================================================
For more see below:
void TPluginManager::LoadHandlersFromPluginDirs(const char *base)
Load plugin handlers specified via macros in a list of plugin
directories. The $ROOTSYS/etc/plugins is the default top plugin directory
specified in $ROOTSYS/etc/system.rootrc. The macros must have names
like <BaseClass>/PX0_<PluginClass>.C, e.g.:
TFile/P10_TRFIOFile.C, TSQLServer/P20_TMySQLServer.C, etc.
to allow easy sorting and grouping. Macros not beginning with 'P' and
ending with ".C" are ignored. If base is specified only plugin macros for
that base class are loaded. The macros typically should look like:
void P10_TDCacheFile()
{
gPluginMgr->AddHandler("TFile", "^dcache", "TDCacheFile",
"DCache", "TDCacheFile(const char*,Option_t*,const char*,Int_t)");
}
In general these macros should not cause side effects, by changing global
ROOT state via, e.g. gSystem calls, etc. However, in specific cases
this might be useful, e.g. adding a library search path, adding a specific
dependency, check on some OS or ROOT capability or downloading
of the plugin.
Int_t TPluginManager::WritePluginMacros(const char *dir, const char *plugin)
Write in the specified directory the plugin macros. If plugin is specified
and if it is a base class all macros for that base will be written. If it
is a plugin class name, only that one macro will be written. If plugin
is 0 all macros are written. Returns -1 if dir does not exist, 0 otherwise.
This method allows the regeneration of the entire tree of plugin macros
in case we ever decide to change something in the macros.
Revision
17933 -
(
view)
(
download)
(
as text)
(
annotate)
-
[select for diffs]
Modified
Tue Feb 13 14:26:58 2007 UTC (7 years, 11 months ago) by
rdm
Original Path:
trunk/base/src/TPluginManager.cxx
File length: 16617 byte(s)
Diff to
previous 17567
use gROOT->LoadClass(cls) to load a plugin. This call uses the rootmap
info and allows the loading of all dependent libs as specified in the
rootmap file. If this fails (when no rootmap) fallback to
gROOT->LoadClass(cls, lib) to explicitly load a plugin (but this may
fail if not all dependent libs are first loaded).
Revision
17412 -
(
view)
(
download)
(
as text)
(
annotate)
-
[select for diffs]
Modified
Sat Jan 20 19:29:35 2007 UTC (8 years ago) by
brun
Original Path:
trunk/base/src/TPluginManager.cxx
File length: 16479 byte(s)
Diff to
previous 17055
-Remove Varargs.h from TString.h and TObject.h and add this include
in the few files that need it.
-Move the following enums from TBuffer.h to TBufferFile.h
enum { kMapSize = 503 };
enum { kStreamedMemberWise = BIT(14) }; //added to version number to know if a collection has been stored member-wise
enum { kNotDecompressed = BIT(15) }; //indicates a weird buffer, used by TBasket
enum { kCannotHandleMemberWiseStreaming = BIT(17), //if set TClonesArray should not use memeber wise streaming
kTextBasedStreaming = BIT(18) }; // indicates if buffer used for XML/SQL object streaming
Revision
15134 -
(
view)
(
download)
(
as text)
(
annotate)
-
[select for diffs]
Modified
Tue May 23 04:47:42 2006 UTC (8 years, 8 months ago) by
brun
Original Path:
trunk/base/src/TPluginManager.cxx
File length: 17322 byte(s)
Diff to
previous 13949
From Federico Carminati:
"I have implemented all copy and equal operators needed to silence all
warnings in AliRoot, as requested. I have implemented shallow copies as
would do the default operators synthetized by the compiler.
Most operators are protected. If users complain, you just have to move
them into the public area, but class derivation is of course supported.
It has been a terrible job, I have modified 278 files, but the changes
are backward compabile, and this goes a long way to permitting user to
use the effc++ flag with root headers."
Revision
13949 -
(
view)
(
download)
(
as text)
(
annotate)
-
[select for diffs]
Modified
Mon Jan 30 09:01:12 2006 UTC (8 years, 11 months ago) by
rdm
Original Path:
trunk/base/src/TPluginManager.cxx
File length: 16475 byte(s)
Diff to
previous 12123
TStreamerInfo was including TFile.h, TROOT.h and TClonesArray.h iso of
forward declaring them. This caused massif recompilation if e.g.
TFile.h was changed. Correct some sources that did not include
TFile.h because it was coming via TStreamerInfo.h.
Revision
12123 -
(
view)
(
download)
(
as text)
(
annotate)
-
[select for diffs]
Modified
Wed Jun 22 20:18:12 2005 UTC (9 years, 7 months ago) by
brun
Original Path:
trunk/base/src/TPluginManager.cxx
File length: 16470 byte(s)
Diff to
previous 11318
From Constantin Loizides
This patch implements:
- decentralized, automatic mutex initialization,
see R__LOCKGUARD2 in TVirtualMutex
- PROOF parallel startup fixes
- more thread protection (in base, cont, meta, rest to be done)
- cleanups
From Eddy Offermann:
TString::Atoi and Atof are made const.
Revision
11318 -
(
view)
(
download)
(
as text)
(
annotate)
-
[select for diffs]
Modified
Sun Mar 13 15:05:31 2005 UTC (9 years, 10 months ago) by
rdm
Original Path:
trunk/base/src/TPluginManager.cxx
File length: 16450 byte(s)
Diff to
previous 10591
add support for native long long handling. Also added new emit method:
EmitVA() which allows a variable length argument list which makes
multi argument signal and slot methods with float and double arguments
possible (was not possible in the past).
Revision
10591 -
(
view)
(
download)
(
as text)
(
annotate)
-
[select for diffs]
Modified
Mon Nov 22 23:37:26 2004 UTC (10 years, 2 months ago) by
rdm
Original Path:
trunk/base/src/TPluginManager.cxx
File length: 16472 byte(s)
Diff to
previous 7954
fix to take into account OS and Application prefix of TEnv Plugin resources,
now:
Unix.*.Plugin.TXxxx: * TUnixXxxxx libUnixXxxx "TUnixXxxx()"
WinNT.*.Plugin.TXxxx: * TWin32Xxxxx libWin32Xxxx "TWin32Xxxx()"
loads correctly libUnixXxxx on Unix/Linux and libWin32Xxxx on Win32.
Revision
6421 -
(
view)
(
download)
(
as text)
(
annotate)
-
[select for diffs]
Modified
Fri Apr 11 11:48:11 2003 UTC (11 years, 9 months ago) by
rdm
Original Path:
trunk/base/src/TPluginManager.cxx
File length: 16166 byte(s)
Diff to
previous 6373
Big (unsigned) long long support patch. Following provided:
- basic typedefs in Rtypes.h: Long64_t and ULong64_t
- basic Long64 I/O support in TBuffer
- automatic Long64 I/O support in TStreamerInfo
- Long64 byteswap in Bytes.h
- Long64 type handling in classes like TDataMember, TDataType, TCint,
TROOT, etc
- Removal of obsolete Long64_t typedefs in many PROOF classes
No changes for non-Long64 data types (no backward incompatibilies).
I/O tested for Long64 basic type, and static and dynamic arrays using
handcoded streamers, rootcint generated streamers and automatic StreamerInfo
streamers.
Revision
6373 -
(
view)
(
download)
(
as text)
(
annotate)
-
[select for diffs]
Modified
Fri Apr 4 00:10:16 2003 UTC (11 years, 9 months ago) by
rdm
Original Path:
trunk/base/src/TPluginManager.cxx
File length: 16046 byte(s)
Diff to
previous 6368
new features in the plugin manager: constructors can now be global functions.
In the rootrc file a global function is specified by starting the ctor with
"::". Also added support for plugin macros, instead of the lib name just
use the macro name (typically myplugin.C). The macro will be searched for in
the standard macro path.
Added new default argument to TROOT::LoadMacro() to check for the macros
existence (symmetric with LoadClass()). Used by the plugin manager to check
if a macro exists.
Revision
6368 -
(
view)
(
download)
(
as text)
(
annotate)
-
[select for diffs]
Modified
Thu Apr 3 16:55:12 2003 UTC (11 years, 9 months ago) by
rdm
Original Path:
trunk/base/src/TPluginManager.cxx
File length: 14912 byte(s)
Diff to
previous 5323
G__CallFunc::SetArgArray() does now take an argument count if less than
all arguments are set (in case of default arguments one does not have
to specify all arguments). This change is now reflected in TMethodCall
and the classes that use this call. Execept for the signal/slot and
plugin manager code this is backward compatible in the ROOT sources
(e.g. since in TF1 the array contained always the values for all arguments).
The changes in the signal/slot and pluginmanager code make this change
also backward compatible for the user code.
Revision
5240 -
(
view)
(
download)
(
as text)
(
annotate)
-
[select for diffs]
Modified
Mon Sep 9 15:21:39 2002 UTC (12 years, 4 months ago) by
brun
Original Path:
trunk/base/src/TPluginManager.cxx
File length: 14758 byte(s)
Diff to
previous 4996
From Philippe:
In TPluginManager.cxx:
fix debug ouput to work in case of missing handler.
In TClassTable.cxx:
fix the debug output when printing the content of the table of dictionaries.
In rootcint.cxx
allow using classes from the same namespace as a data member
Revision
3791 -
(
view)
(
download)
(
as text)
(
annotate)
-
[select for diffs]
Modified
Sun Jan 27 15:53:40 2002 UTC (12 years, 11 months ago) by
rdm
Original Path:
trunk/base/src/TPluginManager.cxx
File length: 9141 byte(s)
Diff to
previous 3789
added new default argument check=kFALSE to TROOT::LoadClass(). If check
is true LoadClass() only checks for the existence and readability of the
library and does not attempt to load the library. The plugin manager
uses this new functionality in its Print() method to show which plugins
are available.
Revision
3789 -
(
view)
(
download)
(
as text)
(
annotate)
-
[select for diffs]
Added
Sun Jan 27 13:53:35 2002 UTC (12 years, 11 months ago) by
rdm
Original Path:
trunk/base/src/TPluginManager.cxx
File length: 8550 byte(s)
This class implements a plugin library manager. It keeps track of
a list of plugin handlers. A plugin handler knows which plugin
library to load to get a specific class that is used to extend the
functionality of a specific base class. For example, to extend the
base class TFile to be able to read RFIO files one needs to load
the plugin library libRFIO.so which defines the TRFIOFile class.
This loading should be triggered when a given URI contains a
regular expression defined by the handler. Handlers can be defined
for example as resources in the .rootrc file, e.g.:
Plugin.TFile: ^rfio: TRFIOFile RFIO
Plugin.TSQLServer: ^mysql: TMySQLServer MySQL
+Plugin.TSQLServer: ^pgsql: TPgSQLServer PgSQL
Plugin handlers can also be registered at run time, e.g.:
gROOT->GetPluginManager()->AddHandler("TSQLServer", "^sapdb:",
"TSapDBServer", "SapDB");
A list of currently defined handlers can be printed using:
gROOT->GetPluginManager()->Print();
The use of the plugin library manager removes all textual references
to hard-coded class and library names and the resulting dependencies
in the base classes. The plugin manager is used to extend a.o.
TFile, TSQLServer, TGrid, etc. functionality.
This form allows you to request diffs between any two revisions of this file.
For each of the two "sides" of the diff,
enter a numeric revision.