[root] / trunk / core / meta / inc / TStreamerElement.h Repository:
ViewVC logotype

Log of /trunk/core/meta/inc/TStreamerElement.h

Parent Directory Parent Directory


Links to HEAD: (view) (download) (as text) (annotate)
Sticky Revision:

Revision 36543 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Mon Nov 8 17:51:01 2010 UTC (4 years, 2 months ago) by pcanal
File length: 18215 byte(s)
Diff to previous 32586
Improve performance of streaming base classes which have a ClassDef macro
by recording a pointer to a wrapper to the Streamer function 
rather than going through CINT.  This is also used to improved the performance
of Streaming non-TObject class with a ClassDef (also skipping the use of
CINT in this case).

Revision 32586 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Fri Mar 12 14:00:16 2010 UTC (4 years, 10 months ago) by pcanal
File length: 18202 byte(s)
Diff to previous 31565
Implement polymorphism for Emulated object (still not supporting polymorphism
of Emulated Object inheriting from compiled class).
This avoids memory leaks when the user data model relies on polymorphism
(and we are not using the library) and avoid splicing if the data is copied.

Details:

TStreamerInfo::New inserts the address of the creating TStreamerInfo into
the object.  This address is inserted in each emulated that does not inherit
from an emulated class and is positioned after all the base classes (which
are compiled classes).   A derived class will set this value inside each
of its emulated base class.

TStreamerInfo::Destruct and the new method TStreamerInfo::GetActualClass
use this information to detect the TStreamerInfo actually used to create
the object and hence run the proper emulated destructor.

In TFormLeafInfo which an issue where a data member which is an STL
container was not properly found.

Revision 31565 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Fri Dec 4 18:44:27 2009 UTC (5 years, 1 month ago) by pcanal
File length: 18173 byte(s)
Diff to previous 31560
Avoid core dumping even if we encounter an STL container which known only by its typedefed name (but do not known what the typedef points to)

Revision 31560 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Fri Dec 4 16:27:05 2009 UTC (5 years, 1 month ago) by pcanal
File length: 18123 byte(s)
Diff to previous 28776
Add TStreamerString::GetInclude to allow MakeProject to work correctly on Alice files

Revision 28776 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Tue Jun 2 15:16:39 2009 UTC (5 years, 7 months ago) by pcanal
File length: 18085 byte(s)
Diff to previous 27938
Add support for std::bitset in ROOT I/O

Revision 27938 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Thu Mar 26 09:53:23 2009 UTC (5 years, 10 months ago) by pcanal
File length: 18039 byte(s)
Diff to previous 26606
Fix the setting a transient member from existing persistent member(s).

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: 17946 byte(s)
Diff to previous 25450
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 25450 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Thu Sep 18 21:13:42 2008 UTC (6 years, 4 months ago) by pcanal
File length: 15772 byte(s)
Diff to previous 22961
Import the code from the branch dev/datamodelevolution revision 25436

This implements the infrastructure for the new Data Model Evolution Scheme.

This Data Model Evolution is brought to your courtesy of BNL/STAR/ATLAS/Fermi/Cern

Current Capabilities:
  Assign values to transient data members
  Rename classes
  Rename data members
  Change the shape of the data structures or convert one class structure to another
  Change the meaning of data members
  Ability to access the TBuffer directly when needed
  Ensure that the objects in collections are handled in the same way as the ones stored separately
  Supported in object-wise, member-wise and split modes.

Coming soon:
  Make things operational also in bare ROOT mode
  Ability to transform data before writing
  Support for changing the class type of nested object in a split branch
  Support for access to onfile version of nested objects from within the parent rule

LinkDef rule syntax:
  Setting a transient member:

#pragma read sourceClass="ACache" targetClass="ACache" source="" version="[1-]" target="zcalc" \
   code="{ zcalc = false; }"

  Setting a new member from 2 removed members

#pragma read sourceClass="ACache" targetClass="ACache" source="int x; int y; char c"  version="[8]" target="z" \
   code="{ z = onfile.x*1000 + onfile.y*10; }"

   Renaming a class

#pragma read sourceClass="ACache" version="[8]" targetClass="Axis" \
   source="int x; int y;"  target="z" \
   code="{ z = onfile.x*1000 + onfile.y*
#pragma read sourceClass="ACache" version="[9]" targetClass="Axis";

Selection XML syntax

  <read  sourceClass="ACache" targetClass="ACache" source="" version="[1-]" target="zcalc">
  <![CDATA[
   { zcalc = false; }
  ]]></read>


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: 14219 byte(s)
Diff to previous 20882
move the directories:
  base clib cont meta metautils newdelete pcre rint thread unix utils
  winnt zip
under the new core meta directory.

Revision 20882 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Mon Nov 19 11:31:26 2007 UTC (7 years, 2 months ago) by rdm
Original Path: trunk/meta/inc/TStreamerElement.h
File length: 14219 byte(s)
Diff to previous 19826
Set property svn:eol-style LF on all source and Makefiles. This should avoid
problems with Win32 line endings ending up in the repository. All MS tools
support LF eols fine.

Revision 19826 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Wed Sep 19 19:56:11 2007 UTC (7 years, 4 months ago) by rdm
Original Path: trunk/meta/inc/TStreamerElement.h
File length: 14219 byte(s)
Diff to previous 19825
imported svn:keywords Id property

Revision 19825 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Wed Sep 19 19:49:10 2007 UTC (7 years, 4 months ago) by rdm
Original Path: trunk/meta/inc/TStreamerElement.h
File length: 14278 byte(s)
Diff to previous 17711
remove :$ from tag line

Revision 17711 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Mon Feb 5 18:11:29 2007 UTC (7 years, 11 months ago) by brun
Original Path: trunk/meta/inc/TStreamerElement.h
File length: 14288 byte(s)
Diff to previous 12176
-Implement necessary casts due to TVirtualStreamerinfo.

Revision 12176 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Thu Jun 23 18:19:26 2005 UTC (9 years, 7 months ago) by pcanal
Original Path: trunk/meta/inc/TStreamerElement.h
File length: 14272 byte(s)
Diff to previous 11644
From Markus,
When rebuilding the TStreamerInfo store in a file, variable size
array of char (char* xyz; //[index]) where mistaken for a character string.
This patch fixes the problem by adding (and using) TStreamerElement::HasCounter

Revision 11644 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Thu Apr 21 06:24:47 2005 UTC (9 years, 9 months ago) by brun
Original Path: trunk/meta/inc/TStreamerElement.h
File length: 14004 byte(s)
Diff to previous 11606
The new data members "fXmin, fXmax, fFactor" are changed to transient members.
In TStreamerElement::Streamer the function GetRange is called to recompute
the range from the comments field if the bit kHasRange (new enum) is set.
This change makes the ROOT files written by this new version of ROOT readable
without any warning messages by older versions of ROOT.

Revision 11606 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Mon Apr 18 10:54:58 2005 UTC (9 years, 9 months ago) by brun
Original Path: trunk/meta/inc/TStreamerElement.h
File length: 13921 byte(s)
Diff to previous 10744
Extend the functionality of the Double32_t data type (see below)
This extension supports higher precision than just a 32 bit float
and it also allows better compression when the range and number of bits
are specified.

New functions in TBuffer
  void TBuffer::ReadDouble32 (Double_t *d, TStreamerElement *ele)
  void TBuffer::WriteDouble32 (Double_t *d, TStreamerElement *ele)

The following functions of TBuffer have new signatures;
  Int_t TBuffer::ReadArrayDouble32(Double_t *&d, TStreamerElement *ele)
  Int_t TBuffer::ReadStaticArrayDouble32(Double_t *d, TStreamerElement *ele)
  void  TBuffer::ReadFastArrayDouble32(Double_t *d, Int_t n, TStreamerElement *ele)
  void  TBuffer::WriteArrayDouble32(const Double_t *d, Int_t n, TStreamerElement *ele)
  void  TBuffer::WriteFastArrayDouble32(const Double_t *d, Int_t n, TStreamerElement *ele)

The following data members have been added to TStreamerElement;
   Double_t  fXmin;    //Minimum of data member if a range is specified  [xmin,xmax,nbits]
   Double_t  fXmax;    //Maximum of data member if a range is specified  [xmin,xmax,nbits]
   Double_t  fFactor;  //Conversion factor if a range is specified fFactor = (1<<nbits/(xmax-xmin)

The static function GetRange has been added to TStreamerElement.cxx.
This function analyzes the range specifier given in the data member
comments field.

The following cases are supported for streaming a Double32_t type
depending on the range declaration in the comment field of the data member:
     A-    Double32_t     fNormal;
     B-    Double32_t     fTemperature; //[0,100]
     C-    Double32_t     fCharge;      //[-1,1,2]
     D-    Double32_t     fVertex[3];   //[-30,30,10]
     E     Int_t          fNsp;
           Double32_t*    fPointValue;   //[fNsp][0,3]

    In case A fNormal is converted from a Double_t to a Float_t
    In case B fTemperature is converted to a 32 bit unsigned integer
    In case C fCharge is converted to a 2 bits unsigned integer
    In case D the array elements of fVertex are converted to an unsigned 10 bits integer
    In case E the fNsp elements of array fPointvalue are converted to an unsigned 32 bit integer
              Note that the range specifier must follow the dimension specifier.
    the case B has more precision (9 to 10 significative digits than case A (6 to 7 digits).

    The range specifier has the general format: [xmin,xmax] or [xmin,xmax,nbits]
     [0,1]
     [-10,100];
     [-pi,pi], [-pi/2,pi/4],[-2pi,2*pi]
     [-10,100,16]
    if nbits is not specified, or nbits <2 or nbits>32 it is set to 32

TStreamerInfo has been modified to take into account the new facility
when streaming a Double32_t. It calls the new TBuffer functions ReadDouble32
and WriteDouble32 instead of the previous inline code.

Note that the files TEmulatedCollectionProxy.cxx and TGenCollectionStreamer.cxx
must still be modified to pass correctly the TStreamerElement object
to the Double32 conversion routines (for Philippe).

Note also that the class TXMLBuffer must still be changed to support
the Double32_t data type (for Sergei).

The test program Event has been modified to illustrate several combinations
of the range specifier.

The test program stress2 has been changed to take into account the slight
increase in the file size due to the new members in TStreamerElement.

Revision 10744 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Fri Dec 10 07:42:28 2004 UTC (10 years, 1 month ago) by brun
Original Path: trunk/meta/inc/TStreamerElement.h
File length: 13431 byte(s)
Diff to previous 8784
From Sergei Linev
Add a new method TStreamerElement::SetTObjectOffset().
Implement the possibility to skip an array with a counter even
when the counter is also skipped.

Revision 8784 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Wed May 5 06:13:54 2004 UTC (10 years, 8 months ago) by brun
Original Path: trunk/meta/inc/TStreamerElement.h
File length: 13347 byte(s)
Diff to previous 8779
Implement the following Getter functions required by the coming XML interface

   const char *TStreamerBasicPointer::GetCountClass()   const
   Int_t       TStreamerBasicPointer::GetCountVersion() const
   const char *TStreamerLoop::GetCountClass()   const
   Int_t       TStreamerLoop::GetCountVersion() const

Revision 8779 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Tue May 4 15:57:24 2004 UTC (10 years, 8 months ago) by brun
Original Path: trunk/meta/inc/TStreamerElement.h
File length: 12984 byte(s)
Diff to previous 8056
Implement the following setter functions required by the coming XML package:

   void  TStreamerInfo::SetCheckSum(UInt_t checksum);
   void  TStreamerElement::SetTypeName(const char *name);
   void  TStreamerbase::SetBaseVersion(Int_t v);
   void  TStreamerBasicPointer::SetCountVersion(Int_t count);
   void  TStreamerBasicPointer::SetCountName(const char *name);
   void  TStreamerBasicPointer::SetCountClass(const char *clname);
   void  TStreamerLoop::SetCountVersion(Int_t count);
   void  TStreamerLoop::SetCountName(const char *name);
   void  TStreamerLoop::SetCountClass(const char *clname);
   void  TStreamerSTL::SetSTLtype(Int_t t);
   void  TStreamerSTL::SetCtype(Int_t t);

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/TStreamerElement.h
File length: 12307 byte(s)
Diff to previous 7880
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 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/meta/inc/TStreamerElement.h
File length: 12295 byte(s)
Diff to previous 6657
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 6657 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Tue May 27 00:39:04 2003 UTC (11 years, 8 months ago) by brun
Original Path: trunk/meta/inc/TStreamerElement.h
File length: 12005 byte(s)
Diff to previous 5665
Implement TStreamerSTL::SetStreamer function that redefines
TStreamerElement::SetStreamer. In the STL case, fType is set
to TStreamerInfo::kSTreamer.
Remove special case kStreamer+kOffsetL in TStreamerInfo::ReadBuffer
and WriteBuffer.

Revision 5665 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Tue Nov 26 10:24:25 2002 UTC (12 years, 2 months ago) by brun
Original Path: trunk/meta/inc/TStreamerElement.h
File length: 11953 byte(s)
Diff to previous 5518
changes by Victor for the STL support.

Revision 5518 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Thu Oct 31 07:27:37 2002 UTC (12 years, 2 months ago) by brun
Original Path: trunk/meta/inc/TStreamerElement.h
File length: 11931 byte(s)
Diff to previous 5102
Make const all Copy functions.
WARNING: If your class implements a Copy function deriving
from TObject or one of the ROOT classes, you must make
your Copy function const.

Revision 5102 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Fri Aug 9 19:26:26 2002 UTC (12 years, 5 months ago) by brun
Original Path: trunk/meta/inc/TStreamerElement.h
File length: 11765 byte(s)
Diff to previous 4588
This patch insures that TStreamerInfo always uses a TStreamerSTL for STL containers even if the user has
produced a dictionary for the STL container.

This patch also add support for array of pointers to variable size arrays.
   Int_t   fZones;               // Total number of zones
   Float_t* fEffLow[50];         //[fZones] Table for low-pt  cut bkg=0
Note that, for lack of better syntax, all the variable size array have the same size in the same instance.

Philippe.

Revision 4588 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Thu May 23 15:27:09 2002 UTC (12 years, 8 months ago) by brun
Original Path: trunk/meta/inc/TStreamerElement.h
File length: 11723 byte(s)
Diff to previous 4498
Implememt TStreamerBase::ls

Revision 4498 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Thu May 9 20:22:01 2002 UTC (12 years, 8 months ago) by brun
Original Path: trunk/meta/inc/TStreamerElement.h
File length: 11672 byte(s)
Diff to previous 4460
New attempt to introduce the new additions (Philippe) to the I/O system
as well as as the new version of ClassDef/ClassImp.
With the additions to the I/O, it is now possible to generate
a dictionary for classes not instrumented with ClassDef.

Revision 4460 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Mon May 6 10:11:08 2002 UTC (12 years, 8 months ago) by brun
Original Path: trunk/meta/inc/TStreamerElement.h
File length: 10973 byte(s)
Diff to previous 4446
Revert to the 3.03/05 situation.
The new I/O scheme still requires more work due
to portability problems and the size of the dictionaries.

Revision 4446 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Fri May 3 14:30:43 2002 UTC (12 years, 8 months ago) by brun
Original Path: trunk/meta/inc/TStreamerElement.h
File length: 11671 byte(s)
Diff to previous 4073
Introduce a long patch by Philippe. With this patch, ROOT I/O
should be able to support foreign not-ROOT instrumented classes.
More information will come later.
This patch is tentatively put in the CVS head to facilitate
testing on all platforms.

Revision 4073 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Sat Feb 23 15:45:57 2002 UTC (12 years, 11 months ago) by rdm
Original Path: trunk/meta/inc/TStreamerElement.h
File length: 10974 byte(s)
Diff to previous 3414
correct typo's and missing comments in ClassDefs so the automatically generated
HTML index looks ok.

Revision 3414 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Fri Dec 7 09:27:43 2001 UTC (13 years, 1 month ago) by brun
Original Path: trunk/meta/inc/TStreamerElement.h
File length: 11070 byte(s)
Diff to previous 3299
Improve support for a pointer to a fix length array of objects.
In the previous versions, this case was marked as kStreamer (type=500)
and used the code generated by rootcint. Reading required access
to the code in the original dictionary.
In the new version, this case is marked as kObjectP (type=64).
It does not require the code in the dictionary file.

Revision 3299 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Wed Nov 28 14:56:38 2001 UTC (13 years, 1 month ago) by brun
Original Path: trunk/meta/inc/TStreamerElement.h
File length: 11028 byte(s)
Diff to previous 2266
New function TStreamerElement returning the execid corresponding to an element
of type TRef having the keyword EXEC: in the data member field.
The result execid is saved in the fUniqueID of the TStreamerElement such that
it can be retrived quickly when used in TRef::Streamer.
Note that the name (with no bkanks) following the keywork "EXEC:" is used
to execute an action on demand when dereferencing a TRef.
For more explanations on Action on Demand, see the numerous comments in TRef.

Revision 2266 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Wed May 23 09:48:26 2001 UTC (13 years, 8 months ago) by brun
Original Path: trunk/meta/inc/TStreamerElement.h
File length: 10989 byte(s)
Diff to previous 2066
Add a new function Update in TStreamerElement and TStreamerBase.
This function is called by the TClass constructor when switching
from a fake class to the real class. Internal pointers to the fake class are
updated to point to the new class.

Revision 2066 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Tue Apr 24 14:27:51 2001 UTC (13 years, 9 months ago) by brun
Original Path: trunk/meta/inc/TStreamerElement.h
File length: 10861 byte(s)
Diff to previous 1915
Add new function GetTypeNameBasic.
This new function returns the basic type name known to CINT in case
the type is not one of the basic types registered to the ROOT GetListOfTypes.
This function is used by TFile::MakeProject and TStreamerInfo::GenerateHeaderFile.

Revision 1915 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Mon Apr 9 07:58:27 2001 UTC (13 years, 9 months ago) by brun
Original Path: trunk/meta/inc/TStreamerElement.h
File length: 10815 byte(s)
Diff to previous 1699
New function GetSize returning the sizeof the class.
Data member fClassObject moved to the base class TStreamerElement.

Revision 1699 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Mon Feb 26 07:15:28 2001 UTC (13 years, 10 months ago) by brun
Original Path: trunk/meta/inc/TStreamerElement.h
File length: 10589 byte(s)
Diff to previous 1554
Implement a more efficient logic in TStreamerInfo""WriteBufferClones
and ReadBufferClones when processing base classes in case of multiple inheritance.
This has required an extension of TStreamerbase (new member fBaseVersion)

Revision 1554 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Thu Feb 8 11:48:23 2001 UTC (13 years, 11 months ago) by brun
Original Path: trunk/meta/inc/TStreamerElement.h
File length: 10452 byte(s)
Diff to previous 1526
New function TStreamerElement::CannotSplit returning true if the member
cannot be split:
 - when the two special characters "||" are the first characters in the comment field.
 - when the member is a class deriving from an unknown class.

Revision 1526 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Tue Feb 6 10:50:55 2001 UTC (13 years, 11 months ago) by brun
Original Path: trunk/meta/inc/TStreamerElement.h
File length: 10411 byte(s)
Diff to previous 1481
Add new function :
const char *TStreamerElement::GetFullName() const

Revision 1481 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Sat Jan 27 20:43:57 2001 UTC (13 years, 11 months ago) by brun
Original Path: trunk/meta/inc/TStreamerElement.h
File length: 10367 byte(s)
Diff to previous 1436
Implement Class Schema Evolution support also for the TStreamerInfo
and TStreamerElement classes.

Revision 1436 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Sat Jan 20 21:20:40 2001 UTC (14 years ago) by brun
Original Path: trunk/meta/inc/TStreamerElement.h
File length: 10384 byte(s)
Diff to previous 1391
 Make function GetClassPointer virtual.
THis function is overloaded in TStreamerBase.
Add two new functions TStreamerBase::ReadBuffer and WriteBuffer.

Revision 1391 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Tue Jan 16 16:20:28 2001 UTC (14 years ago) by brun
Original Path: trunk/meta/inc/TStreamerElement.h
File length: 10121 byte(s)
Diff to previous 1280
Modify constructor to add a new argument (full typename)

Revision 1280 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Fri Dec 22 10:44:44 2000 UTC (14 years, 1 month ago) by brun
Original Path: trunk/meta/inc/TStreamerElement.h
File length: 9995 byte(s)
Diff to previous 1233
Remove unused parameter in the constructor of TStreamerSTLstring.

Revision 1233 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Mon Dec 18 07:12:58 2000 UTC (14 years, 1 month ago) by brun
Original Path: trunk/meta/inc/TStreamerElement.h
File length: 10013 byte(s)
Diff to previous 1205
Add support for STL map,multimap,set,multiset.
TStreamerInfo::WriteBufferClones and ReadBufferClones now uptodate with
WriteBuffer and ReadBuffer.

Revision 1205 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Wed Dec 13 15:13:57 2000 UTC (14 years, 1 month ago) by brun
Original Path: trunk/meta/inc/TStreamerElement.h
File length: 10063 byte(s)
Diff to previous 1108
      W A R N I N G   !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
     ==================================================================
A very long list of changes in this pre-release of version 3.00.
We have modified the signature of many functions (in particular TObject)
to introduce more constness in the system.
You must change your code if your class derives from TObject and uses
one of the modified functions such as ls, Print, Compare, Hash, etc.
The modified functions in TObject have the following signature:
   virtual TObject    *Clone() const;
   virtual Int_t       Compare(const TObject *obj) const;
   virtual void        Delete(Option_t *option=""); // *MENU*
   virtual void        DrawClass() const; // *MENU*
   virtual void        DrawClone(Option_t *option="") const; // *MENU*
   virtual void        Dump() const; // *MENU*
   virtual TObject    *FindObject(const TObject *obj) const;
   virtual char       *GetObjectInfo(Int_t px, Int_t py) const;
   virtual ULong_t     Hash() const;
   virtual void        Inspect() const; // *MENU*
   virtual Bool_t      IsEqual(const TObject *obj) const;
   virtual void        ls(Option_t *option="") const;
   virtual void        Print(Option_t *option="") const;

A similar operation has been done with classes such as TH1, TVirtualPad,
TTree, etc.

Revision 1108 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Sat Dec 2 16:26:49 2000 UTC (14 years, 1 month ago) by brun
Original Path: trunk/meta/inc/TStreamerElement.h
File length: 9919 byte(s)
Diff to previous 1091
 Use typedef Streamer_t instead of char*

Revision 1091 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Tue Nov 28 09:07:21 2000 UTC (14 years, 1 month ago) by brun
Original Path: trunk/meta/inc/TStreamerElement.h
File length: 9914 byte(s)
Diff to previous 1046
The big enum previousli in TStreamerElement has been split in two parts.
One part is left in the public part of TStreamerElement.
The second part is moved to the public part of TStreamerInfo.
TStreamerElement.cxx changed accordingly to specify the TStreamerInfo:: prefix

Revision 1046 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Fri Nov 24 14:40:38 2000 UTC (14 years, 2 months ago) by brun
Original Path: trunk/meta/inc/TStreamerElement.h
File length: 10351 byte(s)
Diff to previous 1015
Remove redefinition of TStreamerObjectPointer::GetMethod

Revision 1015 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Wed Nov 22 15:47:19 2000 UTC (14 years, 2 months ago) by brun
Original Path: trunk/meta/inc/TStreamerElement.h
File length: 10413 byte(s)
Diff to previous 1009
Replace void* by char* in the TstreamerInfo classes.
Suspect some machines like HP and AIX to not word align data members.

Revision 1009 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Wed Nov 22 12:16:13 2000 UTC (14 years, 2 months ago) by brun
Original Path: trunk/meta/inc/TStreamerElement.h
File length: 10413 byte(s)
Diff to previous 1008
Change Long_t to ULong_t

Revision 1008 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Wed Nov 22 11:19:58 2000 UTC (14 years, 2 months ago) by brun
Original Path: trunk/meta/inc/TStreamerElement.h
File length: 10410 byte(s)
Diff to previous 995
Changes for portability

Revision 995 - (view) (download) (as text) (annotate) - [select for diffs]
Added Tue Nov 21 21:10:30 2000 UTC (14 years, 2 months ago) by brun
Original Path: trunk/meta/inc/TStreamerElement.h
File length: 10506 byte(s)
New classes to support automatic schema evolution.
These classes will be described later.

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.

  Diffs between and
  Type of Diff should be a

Sort log by:

Subversion Admin
ViewVC Help
Powered by ViewVC 1.0.9