Log of /trunk/core/meta/inc/TInterpreter.h
Parent Directory
Revision
49325 -
(
view)
(
download)
(
as text)
(
annotate)
-
[select for diffs]
Modified
Wed Apr 24 16:28:08 2013 UTC (21 months ago) by
axel
File length: 20616 byte(s)
Diff to
previous 48958
Update to clang/llvm r179269 (llvm vendor branch r49215):
Parser::Scope versus Sema::DeclContext are now checked for cross-vailidity.
Emit the TU-transaction explicitly instead of relying on a first transaction.
The typename extraction now takes a stream instead of a string to write to.
The llvm::Linker has much reduced functionality; use llvm::sys::Path instead to find dynamic libraries.
Revision
48895 -
(
view)
(
download)
(
as text)
(
annotate)
-
[select for diffs]
Modified
Mon Mar 18 21:30:00 2013 UTC (22 months ago) by
vvassilev
File length: 20548 byte(s)
Diff to
previous 48770
*Lay the foundation of return by-value support.
Some functions return temporary objects. Eg:
std::string getName() {
return "ROOT";
}
In that case the lifetime of the temporary variable is defined by the caller.
Such function called by TClingCallFunc would cause undefined behaviour, because
there is no actual caller and the compiler cannot define any lifetime.
In order to provide such concept we have implemented cling::StoredValueRef, which
is a reference counted cling::Value. As long as somebody "has" a copy of it, the
boxed value (and the occupied memory) will live.
However cling::Value and cling::StoredValueRef expose LLVM/clang/cling internals
to ROOT. We want to avoid for now exposing LLVM/clang/cling internals, so we have
TInterpreterValue, which makes cling::StoredValueRef opaque.
*New interface taking TInterpreterValue is added to the TInterpreter to allow the
users to manage the lifetime of the returned temporaries.
*Replace the occurrances of cling::Value with cling::StoredValueRef to avoid
any lifetime management issues.
*Minor optimizations of the existing implementation
*Tweaks to the build system so that TInterpreterValue.cxx could
#include cling/Interpreter/StoredValueRef.h
PLEASE NOTE: This is not the final implementation it needs polishing. Eg. there
is a bug that should be fixed soon, which doesn't allow to get the actual result
out of the TInterpreterValue.
Revision
48770 -
(
view)
(
download)
(
as text)
(
annotate)
-
[select for diffs]
Modified
Thu Feb 28 18:56:35 2013 UTC (22 months, 3 weeks ago) by
pcanal
File length: 20404 byte(s)
Diff to
previous 48508
Add routines to get the desugared type for the return type of a method
and for its arguments. Namely:
TFunction::GetReturnTypeNormalizedName
TMethodArg::GetTypeNormalizedName
Those routines are similar to routines that are named using the words
'TrueName' but have a clarified definition and have a different signature.
A normalized name is defined as:
The name of the type as accessible from the global scope to which
a 'using namespace std;' has been applied to and with:
- all typedefs desugared except for Double32_t, Float16_t, [U]Long64_t,
std::string and any typedef that is declared within the std namespace
and points to an entity also declared with std (hence hiding the std library
implementation 'details').
- default template parameters removed for STL collections and added for any
other class templates instances.
- Fully qualified both itself and all of its component, except that, at least
for moment, all 'std::' are stripped.
These routines have the signature:
std::string GetReturnTypeNormalizedName() const;
They do not return 'const char*' to avoid having to have a static buffer
holding the information or recording the information as part of the object.
They do not return TString to avoid the tempting (and compilable) 'const char
*str = method->Get...();' which would lead to inadvertent use of 'destroyed'
memory.
They do return std::string as in C++11, thanks to the move constructor, will no
longer be expansive to return.
If those routines becomes/are very time critical in C++03, we will then either
add a similar routines returning const char* (for example GetTrueTypeName) or a
similar routines taking the output string as an argument by reference.
Revision
48508 -
(
view)
(
download)
(
as text)
(
annotate)
-
[select for diffs]
Modified
Thu Feb 7 15:46:12 2013 UTC (23 months, 2 weeks ago) by
pcanal
File length: 20298 byte(s)
Diff to
previous 48045
48488 centralized the creation of the TClass ... but it also ended up marking the interpreted class (for example std::pair) as emulated
Revision
48045 -
(
view)
(
download)
(
as text)
(
annotate)
-
[select for diffs]
Modified
Fri Dec 14 13:58:23 2012 UTC (2 years, 1 month ago) by
rdm
File length: 20281 byte(s)
Diff to
previous 48043
From Bertrand:
implement TInterpreter::IgnoreExtraArgs(bool) so slots with less arguments
than the signal work by ignoring the extra arguments (CINT was happiliy
doing that but cling not).
Revision
47638 -
(
view)
(
download)
(
as text)
(
annotate)
-
[select for diffs]
Modified
Mon Nov 26 21:34:16 2012 UTC (2 years, 1 month ago) by
pcanal
File length: 20147 byte(s)
Diff to
previous 47611
Add TInterpreter::GenerateTClass taking either a 'const char*' or a ClassInfo_t*
to centralize the on-the-fly generation of a TClass object.
For STL collection for which we have clang AST information, generate the TClass
via rootcling (using some part of the automatic dictionary generator). At a
later date this could be done all via the JIT when/if we migrate more of the
code from rootcling to core/metautils.
Revision
47611 -
(
view)
(
download)
(
as text)
(
annotate)
-
[select for diffs]
Modified
Sat Nov 24 04:24:04 2012 UTC (2 years, 1 month ago) by
pcanal
File length: 19970 byte(s)
Diff to
previous 47497
Make sure the TROOT object is created before attempting to use the TInterpreter (or more exactly the lack thereof). This fixes hadd which does not create a TApplication before calling TSystem::Load (and this indirectly TInterpreter::Instance)
Revision
47497 -
(
view)
(
download)
(
as text)
(
annotate)
-
[select for diffs]
Modified
Tue Nov 20 19:16:54 2012 UTC (2 years, 2 months ago) by
axel
File length: 19972 byte(s)
Diff to
previous 47433
Add an interface to delete a variable; roofit is using it. TCintWithCling only has a cheapo implementation for now (setting pointers and references to 0); this will get replaced by properly unloading the variable once we have proper unloading.
Revision
47105 -
(
view)
(
download)
(
as text)
(
annotate)
-
[select for diffs]
Modified
Thu Nov 8 05:25:15 2012 UTC (2 years, 2 months ago) by
pcanal
File length: 19543 byte(s)
Diff to
previous 46089
Add 'InspectMembers' to TInterpreter so that we can call it from TClass::CallShowMembers [Thus taking the largest step toward adding support for I/O of jitted classes]. Remove the '#define private public' from the file generated by rootcling
Revision
45434 -
(
view)
(
download)
(
as text)
(
annotate)
-
[select for diffs]
Modified
Mon Aug 6 22:18:46 2012 UTC (2 years, 5 months ago) by
pcanal
File length: 19536 byte(s)
Diff to
previous 43515
Essentially revert r26888 since we no longer need to support 2 version of CINT
and do not want to have to unnecessarily support G__value in TCling.
Revision
43515 -
(
view)
(
download)
(
as text)
(
annotate)
-
[select for diffs]
Modified
Tue Mar 27 21:15:53 2012 UTC (2 years, 9 months ago) by
pcanal
File length: 19735 byte(s)
Diff to
previous 42064
Fix coding convention R.RN7 (Avoid the raw C types 'long', 'unsigned long', 'long double', 'bool', 'long long' and 'unsigned long long'.)
Revision
39402 -
(
view)
(
download)
(
as text)
(
annotate)
-
[select for diffs]
Modified
Thu May 26 12:56:31 2011 UTC (3 years, 8 months ago) by
axel
File length: 19735 byte(s)
Diff to
previous 38517
Replace legacy clib/getline and editline by a new library, textinput,
located at core/textinput/src/textinput. That new library is written
in C++, standalone (no external dependencies), cross platform
including Windows, and contains only what we need - unlike
e.g. editline. It implements almost all bash-like editing commands,
color highlighting, history etc. It allows for multiple input objects
and multiple display objects, e.g. GUI and terminal in parallel. It
can be used as a stand-alone library, too, and will become part of
cling - which explains the different license and file names (.cpp).
core/textinputs/src/Getline* contains the adapters to ROOT; the
previous core/editline/enhance.cxx is transformed to
Getline_color.cxx. This new adapter interfaces with TTabCom directly,
without going via an extern "C" function pointer, to allow for an
ostream being passed that will contain all completion options, one per
line. TApplication now defines a virtual function to be called for tab
completion; TRint implements it using TTabCom.
One major change is that the user input string is accessible as const
char* instead of being a char* - the buffer length is unknown
anyway. This caused changes in callers of Getline(); the history and
the getline function types needed to change for CINT.
--enable-editline has been deprecated and is inoperable.
Revision
38517 -
(
view)
(
download)
(
as text)
(
annotate)
-
[select for diffs]
Modified
Fri Mar 18 20:20:16 2011 UTC (3 years, 10 months ago) by
pcanal
File length: 19723 byte(s)
Diff to
previous 34701
Using G__deleteglobal/TCint::DeleteGlobal is to aggressive to implement 38514
which needs to get CINT to forget only about Object and not about pointers
(otherwise it break user code including roottest/root/io/xml/runfilexml.C).
Introduce and use G__resetglobalvar/TCint::ResetGlobalVar that makes CINT
'forget' about any object located at the given address and set to zero
the value of pointers pointing to the givent address.
Revision
34701 -
(
view)
(
download)
(
as text)
(
annotate)
-
[select for diffs]
Modified
Mon Aug 2 20:10:24 2010 UTC (4 years, 5 months ago) by
pcanal
File length: 19672 byte(s)
Diff to
previous 31931
Add a new function GenerateDictionary to TInterpreter which allows for the quick and easy creation of a dictionary
given a class name and the name of its headers names.
Revision
30549 -
(
view)
(
download)
(
as text)
(
annotate)
-
[select for diffs]
Modified
Sun Oct 4 01:40:54 2009 UTC (5 years, 3 months ago) by
rdm
File length: 19586 byte(s)
Diff to
previous 30100
From Axel:
Call user provided getline function in CINT's getline.
Forward to ROOT's Getline; this allows to now store in the history
file even the code in the CINT 'continuation' lines (eg for loops
entered on multiple lines).
Revision
26606 -
(
view)
(
download)
(
as text)
(
annotate)
-
[select for diffs]
Modified
Tue Dec 2 20:36:09 2008 UTC (6 years, 1 month ago) by
pcanal
File length: 19083 byte(s)
Diff to
previous 25283
Following Igor Smirnov analysis fix several memory leaks, add checks for null pointer dereference, fix or add copy constructor and assignment operator when applicable, make the copy constructor and assignment operator private when the objects are not intended to be copiable.
Revision
24704 -
(
view)
(
download)
(
as text)
(
annotate)
-
[select for diffs]
Modified
Tue Jul 8 12:18:09 2008 UTC (6 years, 6 months ago) by
brun
File length: 18696 byte(s)
Diff to
previous 24423
From Axel:
allow G__DataMemberInfo to be created given a G__ClassInfo using the TInterpreter interface; fixes a crash when TClass is browsing data members.
Initialize TContextMenu::fCalledObject.
Revision
24423 -
(
view)
(
download)
(
as text)
(
annotate)
-
[select for diffs]
Modified
Fri Jun 20 14:47:08 2008 UTC (6 years, 7 months ago) by
rdm
File length: 18666 byte(s)
Diff to
previous 24171
From Axel:
Allow --enable-cint7 to build CINT7 in parallel to CINT5.
This builds root7.exe, rootcint7, cint7 which will pick up libCint7.
CINT includes are now in include/cint and include/cint7. Many #include
statements changed because of that. We still provide backward compatible
wrapper headers in include/ pointing to the include/cint ones.
Dictionaries for CINT5 and CINT7 are now (mostly) compatible.
When --enabled-cint7, TCint for CINT5 is in libMetaTCint and TCint for CINT7
is in libMetaTCint_7. The classes' source is identical for now (except for the
cases marked with #ifdef R__BUILDING_CINT7); they pick up different CINT
implementations, though.
Without --enable-cint7, TCint.o is linked into libCore, just like it used to
be. With --enable-cint7, TROOT() dlopens libMetaTCint / libMetaTCint_7,
depending on which libCint the binary is linked against (determined via
G__cint_version). TCint contains and sets a global factory pointer that
creates the appropriate TCint object for TROOT.
The cintdlls are built for CINT5 and CINT7 separately, cintdlls.mk is
included twice, with different contexts set by cint/Module.mk and cint7/Module.mk.
--enable-/--disable-cint7 (i.e. (TCint.o in libCore vs libMetaTCint)
triggers a re-build of TROOT.o
Remove dependency from TGWin32ProxyDefs to bare CINT
Add implementation of G__alloc_tempobject_val to cint5
Add a rule how to build C-dictionaries, needed for G__c_stdfunc.c.
No rootmap entries for TCint - CINT should never ever try to autoload it.
It's either linked anyway or we dlopen it by hand.
Revision
24096 -
(
view)
(
download)
(
as text)
(
annotate)
-
[select for diffs]
Modified
Mon Jun 2 14:30:12 2008 UTC (6 years, 7 months ago) by
brun
File length: 18472 byte(s)
Diff to
previous 24088
Add two functions IsValid and Size to the TypeInfo interface.
These functions are required by the new version of TGenCollectionProxy
Revision
24077 -
(
view)
(
download)
(
as text)
(
annotate)
-
[select for diffs]
Modified
Sat May 31 19:39:09 2008 UTC (6 years, 7 months ago) by
brun
File length: 17145 byte(s)
Diff to
previous 23039
Extend the TInterpreter class to support the CINT API used so far by ROOT.
The concrete implementation of the class is in TCint.
The new functions are essentially interfaces to the existing CINT C++ classes
like G__ClassInfo, G__CallFunc, G__DataMemberInfo, G__MethodInfo, G__TypeInfo
and G__TypedefInfo. Most of these functions will call the Reflex interface
once the CINT/Reflex interface will be available later this year.
All direct calls to CINT are replaced by calls like gCint->ClassInfo_xxx where gCint
points to the TCint implementation.
The existing calls to TCint via gInterpreter are kept because on Windows
gInterpreter does not call directly TCint, but instead call TWin32InterpreterProxy
that in turns call TCint.
On Linux and Mac, gInterpreter and gCint are equivalent.
Once the transformation using gCint will be completed, it will be possible
to specify at startup time which version of CINT (CINT or CINT7) by loading
dynamically TCint or TCint7.--This line, and those below, will be ignored--
M core/meta/src/TStreamerElement.cxx
M core/meta/src/TCint.cxx
M core/meta/src/TGlobal.cxx
M core/meta/src/TBaseClass.cxx
M core/meta/src/TDataMember.cxx
M core/meta/src/TInterpreter.cxx
M core/meta/src/TClass.cxx
M core/meta/src/TMethodArg.cxx
M core/meta/src/TDataType.cxx
M core/meta/src/TMethodCall.cxx
M core/meta/src/TIsAProxy.cxx
M core/meta/src/TMethod.cxx
M core/meta/src/TFunction.cxx
M core/meta/inc/TClass.h
M core/meta/inc/TDictionary.h
M core/meta/inc/TMethodArg.h
M core/meta/inc/TDataType.h
M core/meta/inc/TMethodCall.h
M core/meta/inc/TMethod.h
M core/meta/inc/TFunction.h
M core/meta/inc/TCint.h
M core/meta/inc/TGlobal.h
M core/meta/inc/TBaseClass.h
M core/meta/inc/TDataMember.h
M core/meta/inc/TInterpreter.h
M core/thread/src/TThread.cxx
M core/base/src/TVirtualFitter.cxx
M core/base/src/TStorage.cxx
M core/base/src/TQConnection.cxx
M core/base/src/TROOT.cxx
M core/base/src/TSystem.cxx
M core/base/src/TQObject.cxx
M core/rint/src/TRint.cxx
M core/rint/src/TTabCom.cxx
M math/foam/src/TFoam.cxx
M math/minuit2/src/TFitterMinuit.cxx
M math/mathcore/src/FunctorCint.cxx
M math/minuit/src/TMinuit.cxx
M tree/tree/src/TTree.cxx
M tree/tree/src/TSelectorCint.cxx
M tree/tree/src/TSelector.cxx
M tree/tree/inc/TSelectorCint.h
M roofit/roofitcore/src/RooGenCategory.cxx
M roofit/roofitcore/src/RooWorkspace.cxx
M hist/hist/src/TF1.cxx
M gui/guibuilder/src/TGuiBldDragManager.cxx
M net/alien/inc/TAlienSystem.h
Revision
23039 -
(
view)
(
download)
(
as text)
(
annotate)
-
[select for diffs]
Modified
Tue Apr 8 10:40:44 2008 UTC (6 years, 9 months ago) by
rdm
File length: 5677 byte(s)
Diff to
previous 22961
From Eddy:
Three new methods have been implemented:
Int_t RescanLibraryMap();
Force a scan along the dynamic path again and load the *.rootmap files
in case the (DY)LD_LIBRARY_PATH has changed.
Int_t ReloadAllSharedLibraryMaps();
Reload for the loaded shared libraries their rootmap files.
This assumes that the library foo.[dll,a,so] has a rootmap named foo.rootmap.
Int_t UnloadAllSharedLibraryMaps();
Unload the rootmap entries for the loaded shared libraries.
I did not add anything to TSystem::SetDynamicPath() but in principle
the user should invoke after that operation RescanLibraryMap().
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: 5525 byte(s)
Diff to
previous 22729
move the directories:
base clib cont meta metautils newdelete pcre rint thread unix utils
winnt zip
under the new core meta directory.
Revision
22729 -
(
view)
(
download)
(
as text)
(
annotate)
-
[select for diffs]
Modified
Wed Mar 19 10:20:10 2008 UTC (6 years, 10 months ago) by
pcanal
Original Path:
trunk/meta/inc/TInterpreter.h
File length: 5525 byte(s)
Diff to
previous 20882
From Leo, Diego, Axel, Paul and Philippe:
Merge with branches/dev/stubs up to r22699:
* Optional stubless calls for GCC 3.[234] on Linux 32 bit (see release notes for details)
* update CINT7 - replaces the branch in the CINT repository
* new directory layout: reflex, cint, and cint7 moved under cint/
* CINT stand-alone now part of ROOT's CINT; CINT's svn repository is not used anymore.
* Remove v6_ prefix from the CINT source filenames.
In addition:
* Remove CINT's special parsing hook for R__EXTERN; just #define it to extern
Revision
19171 -
(
view)
(
download)
(
as text)
(
annotate)
-
[select for diffs]
Modified
Mon Jun 25 15:39:36 2007 UTC (7 years, 7 months ago) by
rdm
Original Path:
trunk/meta/inc/TInterpreter.h
File length: 5470 byte(s)
Diff to
previous 18199
made LoadLibraryMap() public and changed signature to:
Int_t LoadLibraryMap(const char *rootmapfile = 0);
a specific mapfile can be loaded using the rootmapfile argument.
This method is now silently ignoring duplicates when scanning LD_LIBRARY_PATH
for .rootmap files. The entries from the first occurance are maintained, as
the dynamic loader is doing.
New method
Int_t UnloadLibraryMap(const char *library);
remove all entries coming from the specified library.
To be used by ACLiC.
Revision
18199 -
(
view)
(
download)
(
as text)
(
annotate)
-
[select for diffs]
Modified
Thu Mar 8 15:52:17 2007 UTC (7 years, 10 months ago) by
rdm
Original Path:
trunk/meta/inc/TInterpreter.h
File length: 5338 byte(s)
Diff to
previous 17018
new method GetRootMapFiles() which returns an array of non-default rootmap
files which have been loaded. This list is needed by ACliC to generate
a rootmap file considering all loaded user classes and libraries.
Also support <file>.rootmap files in addition to rootmap<file> names.
Revision
10947 -
(
view)
(
download)
(
as text)
(
annotate)
-
[select for diffs]
Modified
Tue Jan 18 21:04:17 2005 UTC (10 years ago) by
brun
Original Path:
trunk/meta/inc/TInterpreter.h
File length: 5360 byte(s)
Diff to
previous 9756
From Philippe:
This patch resolve a few issues when loading a library implementing an STL
container after opening a file containing an instance of this STL container.
Depending of the circunstances this lead to either an infinite recursion or
an incorrect collecton proxy.
This patch also resolves completely the issue related to using namespace
statement. Aka you can now properly do:
using namespace MySpace;
gROOT->GetClass("ClassWithingMySpace");
Revision
9536 -
(
view)
(
download)
(
as text)
(
annotate)
-
[select for diffs]
Modified
Fri Jul 16 23:06:23 2004 UTC (10 years, 6 months ago) by
rdm
Original Path:
trunk/meta/inc/TInterpreter.h
File length: 5272 byte(s)
Diff to
previous 9046
From Philippe:
The autoloading induced by gROOT->GetClass("TLorentzVector")
was happening too late.
In order to properly implement it I needed to add to CINT
a new function G__set_class_autoloading() to enable and disable
the autoloading.
I also update TROOT.cxx and TCint.cxx to do the load at
the proper time.
Revision
8056 -
(
view)
(
download)
(
as text)
(
annotate)
-
[select for diffs]
Modified
Tue Jan 27 19:52:48 2004 UTC (10 years, 11 months ago) by
brun
Original Path:
trunk/meta/inc/TInterpreter.h
File length: 5107 byte(s)
Diff to
previous 7967
From Philippe:
This patches improves the consistency of the naming convention for the TClass
of STL containers. Previous, std::vector<float>, vector<float>, etc. could be
considered as 2 different entities by part of the ROOT code. This rationalizes these
cases. It should fix all reported related bugs.
Revision
7637 -
(
view)
(
download)
(
as text)
(
annotate)
-
[select for diffs]
Modified
Mon Nov 24 10:51:55 2003 UTC (11 years, 2 months ago) by
brun
Original Path:
trunk/meta/inc/TInterpreter.h
File length: 5043 byte(s)
Diff to
previous 6711
From valeriy Onuchin:
I updated several base and win32gdk classes.
The goals of these changes are:
- providing thread safety for CINT and canvas graphics
- improve perforamnce
The list of the changes.
win32gdk:
- new TGWin32Interpreter class introduced. Along with
redefinition of gInterpreter global that allows to have thread-safe
interface to CINT functions and methods.
- TGWin32Proxy class renamed to TGWin32VirtualXProxy and
modified in "not-radical way".
- TGWin32ProxyBase.cxx contains "howto create proxy class".
canvas thread-safety:
- locking methods added to TCanvasImp, TRootCanvas and TCanvas
classes. That prevents from simultanious canvas updating from
different threads.
The results:
- overall improvement of thread safety and stability of win32gdk version
- improved performance. benchmarks.C 15-20%, some cases (3D graphics)
more than 30%.
Revision
5511 -
(
view)
(
download)
(
as text)
(
annotate)
-
[select for diffs]
Modified
Tue Oct 29 13:30:00 2002 UTC (12 years, 2 months ago) by
brun
Original Path:
trunk/meta/inc/TInterpreter.h
File length: 4673 byte(s)
Diff to
previous 4258
From Philippe:
I understood (and fixed) the problems on Window 98, XP, 2000 where ROOT
was mysteriously, randomly crashing or giving error messages like 'this
"text file name" is a binary file' or other weird behaviors.
This problem was only appearing at startup time and only on Windows.
In the constructor of TRint::TRint we had:
ProcessLine("#include <RtypesCint.h>");
gROOT->LoadClass("TGeometry", "Graf3d");
gROOT->LoadClass("TTree", "Tree");
....
ProcessLine(Form(".L %s",logon),kTRUE);
The problem comes from the fact that on Windows ProcessLine has the
execution of its CINT part delayed (1st problem) while gROOT->LoadClass
has the execution of its CINT part done immediately (and not protected
for multi-thread).
Both the calls are asking CINT to load a file and in this case,
__sometimes__ the loading of RtypesCint.h is happening __while__ loading
the libraries thus over-writing (randomly) part of one of the loading.
The problem did indeed worsen since ROOT 3.03/07 with the introduction
of the first ProcessLine.
Revision
4077 -
(
view)
(
download)
(
as text)
(
annotate)
-
[select for diffs]
Modified
Sat Feb 23 16:04:54 2002 UTC (12 years, 11 months ago) by
rdm
Original Path:
trunk/meta/inc/TInterpreter.h
File length: 4576 byte(s)
Diff to
previous 3519
exit() called from CINT scripts now also exits ROOT sessions, like an exit()
called from compiled code. The exit argument is not yet passed via Terminate()
to calling shell since CINT does not yet provide this info. As soon as it
does we'll pass it along.
Revision
3498 -
(
view)
(
download)
(
as text)
(
annotate)
-
[select for diffs]
Modified
Wed Dec 19 07:15:19 2001 UTC (13 years, 1 month ago) by
brun
Original Path:
trunk/meta/inc/TInterpreter.h
File length: 4577 byte(s)
Diff to
previous 3359
This patch from Philippe gives the user access to the cint error code after an
attempt to 'interpret'.
In particular the following methods have one more optional
parameter:
TApplication::ProcessLine
TApplication::ProcessFile
TObject::Execute
TROOT::ProcessLine
TROOT::ProcessLineFast
TROOT::ProcessLineSync
TROOT::LoadMacro
TROOT::Macro
and
TInterpreter::Execute
TInterpreter::LoadMacro
TInterpreter::ProcessLine
TInterpreter::ProcessLineAsync
TInterpreter::ProcessLineSync
TInterpreter::ExecuteMacro
TInterpreter::Calc
and the corresponding method in TCint.
The extra parameter is a pointer to an int (or a TInterpreter::EErrorCode
when available). If this pointer is not zero, it will be used to pass
back information on the CINT error status. The result are defined
in the enum TInterpreter::EErrorCode.
This is the best method of passing the information, because some
of the methods are already returning a result and using a global
variable (i.e. TInterpreter::GetLastErrorStatus) would lead to
indescriptible confusion (remember that there can be several
nested call to ProcessLine including one 'implied' call resulting
from the command line interpretation).
In the asynchronous case, the error status is set to kProcessing until
completion. The windows part, which consist of reseting the error status
to the proper value upon completion will be implemented in a future patch.
Also LoadMacro and Macro were updated to be able to use ACLiC and
to be able to run named macro.
Revision
3359 -
(
view)
(
download)
(
as text)
(
annotate)
-
[select for diffs]
Modified
Sun Dec 2 16:50:08 2001 UTC (13 years, 1 month ago) by
brun
Original Path:
trunk/meta/inc/TInterpreter.h
File length: 4226 byte(s)
Diff to
previous 3103
From Philippe:
Update the handling of unloading a library so that
the left over TClass objects are properly marked and
recognized as describing a class for which we do not
have the C++ code (the state is similar but different
from being a 'fake TClass'.
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.