Log of /trunk/core/rint/src/TRint.cxx
Parent Directory
Revision
46936 -
(
view)
(
download)
(
as text)
(
annotate)
-
[select for diffs]
Modified
Wed Oct 31 15:11:56 2012 UTC (2 years, 2 months ago) by
rdm
File length: 23340 byte(s)
Diff to
previous 44838
disable dynamic loading of libMathCore, as it creates havoc in statically
linked executable (which should never load libCore.so) and which seems not
to be needed in Cling environment anyway (according to comments).
Revision
44507 -
(
view)
(
download)
(
as text)
(
annotate)
-
[select for diffs]
Modified
Mon Jun 4 12:30:41 2012 UTC (2 years, 7 months ago) by
axel
File length: 23306 byte(s)
Diff to
previous 43494
Remove
using namespace std;
from Riostream.h, which has huge consequences for all of ROOT.
Riostream.h is now a simple wrapper for fstream, iostream, iomanip for backward compatibility; Riosfwd.h simply wraps iosfwd.
Because of templates and their inline functions, Riostream.h needed to be included in headers, too (e.g. TParameter.h), which violated the assumption that Riostream.h is not exposing its using namespace std to headers.
ROOT now requires R__ANSISTREAM, R__SSTREAM, which does not change the set of supported compilers.
Without "using namespace std", several identifiers are now prefixed by std::; e.g. roofit/* source files now have a using namespace std to keep their coding style.
TFile::MakeProject() now generates "using namespace std" to convert the CINT-style class names into C++ ones.
Revision
41833 -
(
view)
(
download)
(
as text)
(
annotate)
-
[select for diffs]
Modified
Wed Nov 9 11:34:21 2011 UTC (3 years, 2 months ago) by
rdm
File length: 23121 byte(s)
Diff to
previous 41587
Since CINT cannot load libMathCore on demand when a global is used
(like gRandom) we load libMathCore explicitly. Smart linkers (Ubuntu 11, AIX)
strip unused libs and force linking by undefining a symbol on the command line
is ugly.
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: 22203 byte(s)
Diff to
previous 38769
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
38769 -
(
view)
(
download)
(
as text)
(
annotate)
-
[select for diffs]
Modified
Thu Apr 7 17:23:58 2011 UTC (3 years, 9 months ago) by
pcanal
File length: 22018 byte(s)
Diff to
previous 38613
Migrate the call to ResetGlobals from TRint/TApplication::Terminate
to T*System::Exit (and remove the calls to CloseFiles since they are
already in ::Exit) so that:
- CloseFiles is called only once (rather than 3 times)
- ResetGlobal is called before unloading libraries in all cases
- CloseFiles/ResetGlobal are not called if fReturnFromRun is true
(Also do not delete the MemStat if fReturnFromRun is true)
Revision
38548 -
(
view)
(
download)
(
as text)
(
annotate)
-
[select for diffs]
Modified
Mon Mar 21 19:21:04 2011 UTC (3 years, 10 months ago) by
pcanal
File length: 22133 byte(s)
Diff to
previous 38152
In order to properly order the call to logoff.C, CloseFiles and ResetGlobals, rather than doing the last 2 explicitly _only_ when handling '.q', we now call them explicitly whenever TApplication::Terminate is called
Revision
33054 -
(
view)
(
download)
(
as text)
(
annotate)
-
[select for diffs]
Modified
Thu Apr 15 16:47:24 2010 UTC (4 years, 9 months ago) by
pcanal
File length: 21960 byte(s)
Diff to
previous 33048
From Axel:
Move CINT specific initialization (i.e. preventing CINT from #include-ing files it cannot parse) from TRint into TCint. Consistently tell the interpreter to #include <string>, not <_string>. Set the include path in TCint / TCling so they can load interpreter specific headers (like RtypesCint.h). Whether or not to remove the interpreter includes in TProofServLite::SetupOnFork() will
be studied by Gerri, for now they should not hurt.
Revision
33047 -
(
view)
(
download)
(
as text)
(
annotate)
-
[select for diffs]
Modified
Thu Apr 15 15:08:55 2010 UTC (4 years, 9 months ago) by
pcanal
File length: 21960 byte(s)
Diff to
previous 32968
From Axel:
Move CINT specific initialization (i.e. preventing CINT from #include-ing files it cannot parse) from TRint into TCint. Consistently tell the interpreter to #include <string>, not <_string>. Whether or not to remove the interpreter includes in TProofServLite::SetupOnFork() will be studied by Gerri, for now they should not hurt.
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: 22280 byte(s)
Diff to
previous 30235
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
30235 -
(
view)
(
download)
(
as text)
(
annotate)
-
[select for diffs]
Modified
Fri Sep 18 04:30:07 2009 UTC (5 years, 4 months ago) by
brun
File length: 22236 byte(s)
Diff to
previous 30192
From Axel:
Editline improvements:
* fix for cygwin,
* new rootrc entry for reverseColor (white on black) to enable alternate
set of default colors,
* document settings in rootrc; allow #rgb and #rrggbb (esp. for 256
color terminals TERM=xterm-256color)
* put conversion of color names to index into term; add terminal's
"default" color
* default prompt color is now "default",
* use TTermManip's color index in editline instead of curses-like color;
use 0xff00 byte for bold / underline
* don't reset the colors in TTermManip::SetDefaultColor()
* add TTermManip::Start/StopBold()
* make the index used by TTermManip accessible through GetColorIndex()
* allow rootrc to set colors to the terminal default color (index -1)
* don't complain if TERM is unset, it works nevertheless (except for colors)
C
Revision
30192 -
(
view)
(
download)
(
as text)
(
annotate)
-
[select for diffs]
Modified
Wed Sep 16 10:43:01 2009 UTC (5 years, 4 months ago) by
rdm
File length: 21682 byte(s)
Diff to
previous 29688
integrate the editline build in the configure and make system.
At the moment, due to some remaining issues on MacOS X the default
is still off. To test it use the --enable-editline configure flag.
Once all issues are ironed out we'll turn it on by default.
Revision
29688 -
(
view)
(
download)
(
as text)
(
annotate)
-
[select for diffs]
Modified
Wed Aug 5 15:56:06 2009 UTC (5 years, 5 months ago) by
rdm
File length: 21143 byte(s)
Diff to
previous 26667
support Rint.HistSize and Rint.HistSave to set the history parameters,
as is described in the doc and system.rootrc file (in the code we used
to only check for HistorySize and HistorySave).
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: 20767 byte(s)
Diff to
previous 25382
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
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: 20255 byte(s)
Diff to
previous 22961
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
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: 20324 byte(s)
Diff to
previous 22747
move the directories:
base clib cont meta metautils newdelete pcre rint thread unix utils
winnt zip
under the new core meta directory.
Revision
21265 -
(
view)
(
download)
(
as text)
(
annotate)
-
[select for diffs]
Modified
Fri Dec 7 11:17:44 2007 UTC (7 years, 1 month ago) by
rdm
Original Path:
trunk/rint/src/TRint.cxx
File length: 20252 byte(s)
Diff to
previous 20882
Following changes:
- use TSystem::NotifyApplicationCreated()
- fix problem with TApplication changing directory during argument parsing.
Directory is changed only in TRint when it processes the directory argument.
- Add warning if argument file.root does not exists, before not existing
file was ignored.
- Improve documentation of TApplication::GetOptions().
Revision
20680 -
(
view)
(
download)
(
as text)
(
annotate)
-
[select for diffs]
Modified
Tue Nov 6 15:28:09 2007 UTC (7 years, 2 months ago) by
rdm
Original Path:
trunk/rint/src/TRint.cxx
File length: 19586 byte(s)
Diff to
previous 20174
From Gerri and me:
Add TApplication::HandleException() method, which gets called by
TSystem::DispatchSignals() in case of an exception (sigbus, sigsegv, sigill
or sigfpe). In derived TApplication's one might now want to not throw
or do something else to reset the environment.
Revision
20151 -
(
view)
(
download)
(
as text)
(
annotate)
-
[select for diffs]
Modified
Mon Oct 1 13:34:51 2007 UTC (7 years, 3 months ago) by
rdm
Original Path:
trunk/rint/src/TRint.cxx
File length: 19321 byte(s)
Diff to
previous 19826
add new methods:
TROOT::GetSvnRevision() -- returns svn current revision number
TROOT::GetSvnBranch() -- returns svn current branch name
TROOT::GetSvnDate() -- returns date time of built
the methods are used in TRint to print in the ROOT welcome message.
Revision
18803 -
(
view)
(
download)
(
as text)
(
annotate)
-
[select for diffs]
Modified
Wed May 16 11:14:35 2007 UTC (7 years, 8 months ago) by
brun
Original Path:
trunk/rint/src/TRint.cxx
File length: 19659 byte(s)
Diff to
previous 18775
From Gerri:
TApplication.h
- Define BIT(15) as kProcessRemotely to control remote execution.
The definition is public so that it can be set by any application that
wants something to be processed on the current remote session, e.g.
gApplication->SetBit(TApplication::kProcessRemotely);
gROOT->ProcessLine(...).
The new bit replaces both bit kTerminalInput and the boolean fProcessingLine.
TApplication.cxx, TRint.cxx, TApplicationRemote.cxx
- Cope with the change in TApplication.h
Revision
17928 -
(
view)
(
download)
(
as text)
(
annotate)
-
[select for diffs]
Modified
Tue Feb 13 08:37:12 2007 UTC (7 years, 11 months ago) by
brun
Original Path:
trunk/rint/src/TRint.cxx
File length: 18615 byte(s)
Diff to
previous 17926
Following Vincenzo's email, I changed slightly the definition of the Rint.Includes variable.
# When the interactive ROOT starts, it can automatically load some frequently
# used includes. However, this introduces several overheads
# -A long list of cint and system files must be kept open during the session
# -The initialisation takes more time (noticeable when using gdb or valgrind)
# -Memory overhead of about 5 Mbytes (1/3 of the ROOT executable) when including <vector>
# You can set the variable below to 0 to disable the loading of these includes at startup
# You can set the variable to 1 (default) to load only <iostream> , <string> and <RTypesCint.h>
# You can set it to 2 to load in addition <vector> and <pair>
# We strongly recommend setting the variable to 2 if your scripts include <vector>
# and you execute your scripts multiple times.
Rint.Includes: 1
Revision
16146 -
(
view)
(
download)
(
as text)
(
annotate)
-
[select for diffs]
Modified
Mon Aug 28 14:43:47 2006 UTC (8 years, 4 months ago) by
rdm
Original Path:
trunk/rint/src/TRint.cxx
File length: 17444 byte(s)
Diff to
previous 16020
Support now, like with the rootrc file, a hierarchy of rootlogon.C macros.
At startup of TRint, three levels of logon macros will be executed: the system
logon $ROOTSYS/etc/system.rootlogon.C, the global user logon ~/.rootlogon.C
and the local ./.rootlogon.C. For backward compatibility also the logon macro
as specified by the Rint.Logon rootrc environment setting, by default
./rootlogon.C, will be executed. No logon macros will be executed when
the system is started with the -n option.
Revision
15849 -
(
view)
(
download)
(
as text)
(
annotate)
-
[select for diffs]
Modified
Wed Jul 26 13:36:44 2006 UTC (8 years, 6 months ago) by
rdm
Original Path:
trunk/rint/src/TRint.cxx
File length: 16108 byte(s)
Diff to
previous 15258
Instead of providing default implementations for copy ctor's and assignment
operators we better make them private (and not implemented) to avoid people
from accidentally using them. Especially the collections classes and the
TQObject derived classes. In these classes the default implementations would
cause havoc due to multiple deletions of the same objects and other
potential memory corruptions.
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/rint/src/TRint.cxx
File length: 16751 byte(s)
Diff to
previous 15078
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
14451 -
(
view)
(
download)
(
as text)
(
annotate)
-
[select for diffs]
Modified
Tue Mar 28 16:35:00 2006 UTC (8 years, 9 months ago) by
brun
Original Path:
trunk/rint/src/TRint.cxx
File length: 15819 byte(s)
Diff to
previous 13258
From Axel:
this is the patch for the beep suppression. With that, all beeps I found
are re-routed to TSystem::Beep, which checks whether it should really
beep, and then invokes virtual TSystem::DoBeep. TSystem checks what gEnv
says - if Root.System.BeepDuration for Root.System.BeepFreq is <0 it'll
silence all beeps. Otherwise these settings do what one would expect -
on windows (until someone implements TUnixSystem::DoBeep).
Revision
12421 -
(
view)
(
download)
(
as text)
(
annotate)
-
[select for diffs]
Modified
Fri Jul 29 21:33:58 2005 UTC (9 years, 5 months ago) by
pcanal
Original Path:
trunk/rint/src/TRint.cxx
File length: 15496 byte(s)
Diff to
previous 11978
From Paul Russo:
While running the command line scripts it is possible that one of them
will make a call to TSystem::ProcessEvents(). This is likely if they
have drawn something graphical and wish the screen to be updated. If
we are running in the background on Unix, then our standard input is at
end-of-file, which ProcessEvents() will notice and immediately exit the
script. To prevent this from happening we must disable the terminal
input handler while running the command line scripts, and re-enable it
after the scripts have finished.
The interrupt handler is independent of the input handler and functions
correctly even if the input handler is disabled, so we do not need to do
anything special to preserve the interrupt handling behavior.
Revision
11977 -
(
view)
(
download)
(
as text)
(
annotate)
-
[select for diffs]
Modified
Mon Jun 6 12:47:49 2005 UTC (9 years, 7 months ago) by
pcanal
Original Path:
trunk/rint/src/TRint.cxx
File length: 15192 byte(s)
Diff to
previous 11964
Load the header file vector and pair. They are currently
nearly always needed since std::vector and std::pair are
used within the core ROOT dictionary
and CINT will not be able to properly unload these files
Revision
9689 -
(
view)
(
download)
(
as text)
(
annotate)
-
[select for diffs]
Modified
Sat Aug 7 18:19:12 2004 UTC (10 years, 5 months ago) by
rdm
Original Path:
trunk/rint/src/TRint.cxx
File length: 14764 byte(s)
Diff to
previous 9686
From Philippe:
This patch avoids the interpretation of Rtypes.h, TError.h and
TGenericClassInfo.h (since those headers do not contains any class
with a dictionary, they are not marked as 'compiled' header).
In particular this avoid the messages:
Warning: Re-initialization ignored const kMaxUShort
FILE:/home/pcanal/root_working/code/root/include/Rtypes.h LINE:106
etc..
Revision
9686 -
(
view)
(
download)
(
as text)
(
annotate)
-
[select for diffs]
Modified
Fri Aug 6 05:46:32 2004 UTC (10 years, 5 months ago) by
brun
Original Path:
trunk/rint/src/TRint.cxx
File length: 14527 byte(s)
Diff to
previous 9535
From Philippe:
This patch avoids the interpretation of Rtypes.h, TError.h and
TGenericClassInfo.h (since those headers do not contains any class
with a dictionary, they are not marked as 'compiled' header).
In particular this avoid the messages:
Warning: Re-initialization ignored const kMaxUShort
Revision
9182 -
(
view)
(
download)
(
as text)
(
annotate)
-
[select for diffs]
Modified
Sun Jun 13 16:26:36 2004 UTC (10 years, 7 months ago) by
rdm
Original Path:
trunk/rint/src/TRint.cxx
File length: 14211 byte(s)
Diff to
previous 9101
From Maarten and Kristjan Gulbrandsen:
PROOF and file I/O performance monitoring framework. The TVirtualPerfStats
abstract class allows adding monitoring events in base classes (TFile and
TNetfile). The performance monitoring info allows detailed study of PROOF
performance (which files accessed by which slaves, latency, read/write times,
packet size, etc.). The result is send back to the client in the form of a
memory based TTree.
Remove TProofStats.h and TProofStats.cxx, .d, .o from proof/inc and src.
Revision
8943 -
(
view)
(
download)
(
as text)
(
annotate)
-
[select for diffs]
Modified
Mon May 17 12:03:59 2004 UTC (10 years, 8 months ago) by
rdm
Original Path:
trunk/rint/src/TRint.cxx
File length: 13713 byte(s)
Diff to
previous 8866
MacOS X has a very lazy linker, by marking the dictionary setup methods
undefined we force the loading at startup of all libraries referenced during
linking. Also in root-config mark these methods undefined. In TRint it is
now not necessary anymore to dynamically load the libraries that are
specified during linking (was causing libraries to be loaded twice on
other platforms).
Revision
8660 -
(
view)
(
download)
(
as text)
(
annotate)
-
[select for diffs]
Modified
Thu Apr 22 22:21:05 2004 UTC (10 years, 9 months ago) by
rdm
Original Path:
trunk/rint/src/TRint.cxx
File length: 13707 byte(s)
Diff to
previous 8612
fix warning on MacOS X:
rint/src/TRint.cxx:210: warning: variable `Long_t retval' might be clobbered by
`longjmp' or `vfork'
rint/src/TRint.cxx:215: warning: variable `Int_t nfile' might be clobbered by
`longjmp' or `vfork'
Revision
8612 -
(
view)
(
download)
(
as text)
(
annotate)
-
[select for diffs]
Modified
Tue Apr 20 09:27:03 2004 UTC (10 years, 9 months ago) by
rdm
Original Path:
trunk/rint/src/TRint.cxx
File length: 13663 byte(s)
Diff to
previous 8404
fix problem that caused system to hang (i.e. waiting for keyboard input) after
executing a command. The problem was that we removed and added the
keyboard input handler before and after processing a command. However
the re-adding of the handler caused it to be added at the end of the list
of handlers and to be executed again. When purely using the command line
the problem was not visible because as soon as a key was hit the system
was back to its normal state. However, GUI actions would be blocked
till a key was hit. Now instead of removing and adding the handler we
de-activate and activate the handler (add fIsActive flag to TSysEvtHandler).
and check for this is-active flag when looping over the file handlers.
Revision
8404 -
(
view)
(
download)
(
as text)
(
annotate)
-
[select for diffs]
Modified
Mon Mar 15 15:01:41 2004 UTC (10 years, 10 months ago) by
rdm
Original Path:
trunk/rint/src/TRint.cxx
File length: 13648 byte(s)
Diff to
previous 8161
ROOT files passed as arguments to root.exe are now made available as
TFile* with names _file0, _file1, etc. It used to be that the pointer got
the name of the file, but the file name could contain characters that are not
allowed in variable names (-, +, etc).
Revision
7880 -
(
view)
(
download)
(
as text)
(
annotate)
-
[select for diffs]
Modified
Sat Jan 10 10:52:31 2004 UTC (11 years ago) by
brun
Original Path:
trunk/rint/src/TRint.cxx
File length: 13158 byte(s)
Diff to
previous 7606
From Philippe:
This mega patch introduces a new implementation of the STL I/O
which is backward and forward compatible. In addition this is more
exactly a new implementation or an extension of the container I/O.
We are introducing a new abstract interface:
"TVirtualContainerProxy", which can be implemented to present a
proxy to any collection which the I/O (and TTreeFormula) can use
then transparently.
The TVirtualContainerProxy interface allows to the I/O system to
request some information and to execute some essential function of
the container:
what kind of object/data does it contain
does it contain pointers
how to insert data into the container
how to retrieve an array of pointer to the elements inside
how to create a collection object
how to clear the collection
how to resize the collection
how to streamer the collection (if needed)
how to calculate the sizeof the collection
how to calculate the number of elements of the collection.
Using those primitives, the I/O and TTreeFormula should be able to
access any collection. The I/O should also be able to handle the
splitting of collections that can be split (i.e. contains a single
type of object/data).
The current compromise selected between code duplication,
performance of the I/O of TClonesArray and vector of pointers and
the performance of the I/O of other containers, was to have on
function handle all collection as if they were a C-style array of
pointers to data. This implies for example that the I/O of vector
of object current passes via the construction of temporary array
of pointer. The cost of this construction is usually ~Qjust~R the
cost of calculating the addresses of the elements and assigning it
to an array element.
Registering a collection proxy will be similar to
static int dummy = GenerateInitInstance((CollectType*)0x0)-
>AdoptCollectionProxy(new CollectTypeProxy));
Follows a few details on the modifications made to some of the
files and classes.
Bytes.h:
Work around a problem in the MSVC++ 6.0 optimizer. This should
not affect other compilers.
String:
Included the std::string dictionary into G__Base2.cxx, this
insures its presence at all time.
Added a new file string.cxx holding the streamer for
std::string.
RConfig.h
Added proper ansi stream configuration for AIX, KCC
Added template specialization defect for MSVC
TBrowser
Start adding the ability to browser non TObject classes
TBuffer
To handle the reading and writing array of objects, added:
Int_t CheckByteCount(UInt_t startpos, UInt_t bcnt, const
TClass *clss, const char* classname);
Int_t CheckByteCount(UInt_t startpos, UInt_t bcnt, const
char *classname);
void ReadFastArray(void *start , TClass *cl, Int_t n=1,
TMemberStreamer *s=0);
void ReadFastArray(void **startp, TClass *cl, Int_t n=1,
Bool_t isPreAlloc=kFALSE, TMemberStreamer *s=0);
void WriteFastArray(void *start, TClass *cl, Int_t n=1,
TMemberStreamer *s=0);
Int_t WriteFastArray(void **startp, TClass *cl, Int_t n=1,
Bool_t isPreAlloc=kFALSE, TMemberStreamer *s=0);
TROOT
Enhancement to make the access to gROOT not dependent for the
library loading order. In particular we added:
ROOT::GetROOT()
which should be used instead of gROOT.
Improve support for STL. In particular, now STL containers do
have a corresponding TClass object
TRealData
Replace SetStreamer by AdoptStreamer that allow to use not only
a streamer function but also streamer object (allowing streamer
with a state for Foreign classes)
TString:
Improve streamer performance
TSystem:
More consistency of the return value of TSystem::CompileMacro
build/unix/makecintdlls.sh
Stop making the string.dll
config:
enhance sgicc makefiles
cont:
fix TBits::operator=
TClassTable now warns for duplicate only for non stl classes
TClonesArray fix a typo
gpad:
Add a new class TInspectObject to enable inspect non TObject
classes
TRootBrowser : enable inspect non TObject classes
TFormula/TTreeFormula
To enhance performance switch from using one array fOper which
contained the operation code and its arguments to using 2 arrays
fActions and fActionParams to store respectively the operation and
its parameters.
A new function Convert is used to convert old version from the
fOper to fActions. This allows cleaner coding and offer
optimization opportunities.
TTreePlayer
Start adding support in MakeClass for STL containers.
TRint/TProofServ
Insure the loading of the string support
Event.cxx
make sure to avoid memory over-write
stress.cxx
Add new parameters
stress <nevent> <style> <subbench> <portion>
if <subbench> is 1 or higher, print the benchmark results after
each test. This allows understand
which test is affect by a performance change.
portion is a binary field to indicate which test to run. This
allows to focus on a particular test.
TVirtualCollectionProxy
Abstract interface used to access any type of containers from
the I/O system and TTreeFormula. See TVectorProxy and
TEmulatedVectorProxy for examples.
TEmulatedVectorProxy
Implementation of a std::vector proxy to be able to read a
std::vector without any libraries.
TVectorProxy
Implementation of TVirtualCollectionProxy for a std::vector for
which we have the library.
TStreamerInfo.cxx
Split in 3 files: TStreamerInfo.cxx
TStreamerInfoReadBuffer.cxx TStreamerInfoWriteBuffer.cxx
All the ReadBuffer, ReadBufferClones and the new ReadBufferSTL
(similarly for WriteBuffer) have been factorized into one
function and 2 short wrappers. The new main function expect an
array of pointer to the objects (this array is most often of size
one).
TClonesArray objects pass GetObjectRef(0) to the common
ReadBuffer
vector<bla*> v pass &(v[0])
vector<bla> needs to create an intermediary array to hold the
address
This mechanism is sometimes not optimal (vector<blah>) but
allows extremely flexibly and extension. Basically, to add
support for a new container type using the StreamerInfo mechanism
(in particular allows splitting), one 'just' need to implement a
TVirtualCollectionProxy, which, in particular, will return an
array of address to the object it contains. Even std::map can be
handled with this mechanism, since, for I/O purposes, it can be
consider as a container of pairs.
Add a few optimization, including more caching via a new array
of a new struct (fComp).
Fixed a problem (re)introduced while implementing the Foreign
class CheckSum. Doing:
class Event;
f = new TFile("Event.root");
resulted in errors.
TCint
Add proper support for TClass of STL containers. Fix a memory
leak.
Add support for load TClass via a typedef.
Fix a problem with multiple inheritance
TClass
Fixed a problem (re)introduced while implementing the Foreign
class CheckSum. Doing:
class Event;
f = new TFile("Event.root");
resulted in errors.
Add a
TClass/TGenericClassInfo/TDataMember
Add support for a new interface (TVirtualCollectionProxy)
useable for STL containers or any user defined containers.
Add support for streamer with are objects (as opposed to free
standing function or methods). This allows the user a greater
flexibility in writing a streamer.
Add a few optimizations
Add CanSplit to answer the question for a whole Class (for
example some collection can not be splitted).
TClassStreamer
New class to wrap a class wide streamer
ClassStreamerFunc_t
typedef for a class wide streamer function
TMemberStreamer
New class to wrap a specific class member streamer
MemberStreamerFunc_t
typedef for a specific class member streamer function
RootStreamer
Macro to specify a free standing streamer object or function
for a class
For example:
RootStreamer(string,std_string_streamer);
TStreamerElement:
A couple of optimization/simplification.
Add support for the new STL I/O
Extend the useful
TBranchElement:
add a connection to the proper TVirtualCollectionProxy
add support for STL containers (non-split and split mode)
TTree
Make the function TTree::GetMakeClass NON-virtual for better
efficiency
Add support for STL containers
TBasket
Left (in comment) a yet unproved improvement proposed by
Victor. The preliminary tests were inconclusive performance wise
and it had (seemingly) problem with backward and forward
compatibility.
TBranch
Performance improvements
metautils
This is a new package for C++ files shared between rootcint and
meta.
It contains TClassEdit a class to help determine some property
of a class given its class name (stl, template, etc).
utils
Introduced a new file RStl.cxx to start separating rootcint in
modules.
Modified rootcint to support the new STL I/O methods.
In particular a new class RStl is in charge of doing the
generating of code for STL containers.
Revision
7480 -
(
view)
(
download)
(
as text)
(
annotate)
-
[select for diffs]
Modified
Tue Oct 28 14:09:48 2003 UTC (11 years, 2 months ago) by
rdm
Original Path:
trunk/rint/src/TRint.cxx
File length: 12640 byte(s)
Diff to
previous 7363
fix long standing problem of re-submission of commands when a PROOF command
is active. Turns out that TRint::HandleTermInput was called recursively
while PROOF was waiting for socket activity in TMonitor, where monitoring of
socket 0 (stdin) was not turned off, now it is.
Revision
5959 -
(
view)
(
download)
(
as text)
(
annotate)
-
[select for diffs]
Modified
Wed Jan 22 11:23:05 2003 UTC (12 years ago) by
rdm
Original Path:
trunk/rint/src/TRint.cxx
File length: 12451 byte(s)
Diff to
previous 5614
big patch adding full freetype 2 TTF support to the ROOT core and X11
and Win32gdk displaying modules. TTF support provided by Olivier Couet
and Bertrand Bellenot (for Win32), build system updated by me.
Also fixes the RH8.0 installation problems of rootd and proofd.
Revision
5614 -
(
view)
(
download)
(
as text)
(
annotate)
-
[select for diffs]
Modified
Mon Nov 18 23:02:19 2002 UTC (12 years, 2 months ago) by
rdm
Original Path:
trunk/rint/src/TRint.cxx
File length: 12281 byte(s)
Diff to
previous 5511
add new function Break() in TError. Use this instead of direct Printf() in
TUnixSystem and TRint for printing of *** Break *** message. This allows to
also see the break message in the logs in proof and to terminate in case one
desires so. Also made the message size dynamic (solves Yves S. problem).
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/rint/src/TRint.cxx
File length: 12249 byte(s)
Diff to
previous 5017
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
5017 -
(
view)
(
download)
(
as text)
(
annotate)
-
[select for diffs]
Modified
Sat Jul 27 13:45:04 2002 UTC (12 years, 6 months ago) by
rdm
Original Path:
trunk/rint/src/TRint.cxx
File length: 12231 byte(s)
Diff to
previous 3086
This patch to ROOT and CINT allows the user to use ClassDef with either
the current syntax:
ClassDef(Class,Version) // Comment
or add a 'semi-colon':
ClassDef(Class,Version); // Comment
This is very usefull for text editor to properly automatically ident,
color, etc. the classes.
I also changed CINT's behavior regarding ClassDef when interpreting the
ClassDef macro (in the ROOT context). Currently, if a macro which is
interpreted contains the ClassDef macro, it fails. I added some support
so that the ClassDef macro is ignore (since anyway in interpreted mode
it is currently more or so pointless). By Philippe.
Revision
2457 -
(
view)
(
download)
(
as text)
(
annotate)
-
[select for diffs]
Modified
Mon Jun 25 16:28:39 2001 UTC (13 years, 7 months ago) by
rdm
Original Path:
trunk/rint/src/TRint.cxx
File length: 11966 byte(s)
Diff to
previous 2439
fix for two issues:
1) option -l does not print ROOT info message in addition to not showing
the splash screen.
2) script files which have the execute bit set are now also again accepted
as command line arguments (reported by Yves Schutz).
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.