Skip to content
Snippets Groups Projects
  1. Feb 09, 2004
  2. Feb 08, 2004
  3. Feb 06, 2004
  4. Feb 05, 2004
  5. Jan 31, 2004
  6. Jan 30, 2004
  7. Jan 29, 2004
    • Rene Brun's avatar
      From Philippe: · f8a1a168
      Rene Brun authored
      This patch should resolve completely the issue discovered by Minos (related to
      typename being typedefs).  It also repairs the I/O for fixed size array of
      TObject.
      
      TString:
              add constructor and operator= taking a std::string argument
      
      TROOT:
              GetClass now properly resolve templateClass<typedef>.
            Previously the typedef resolution was restricted to the full name.
      
      TClassTable:
              Look for an existing TClass directly in TROOT::fListOfClasses to
              avoid the potential loading behavior of TROOT::GetClass
      
      TCint::UpdateClassInfo
              Also look for possible alias name in the list of TClass objects.
              In particular, depending on the load order of libraries and file,
              the Emulated class for container<int> might be container<Int_t> or
              vce et versa.
      
      TClass::Init
              When we have a templated class, also look for existing Emulated
              class which may have a different name.
      
      TStreamerElement/TStreamerInfo
              Use the name with resolved typedef in the TStreamerElement.
              Also repair the I/O for fixed size array of TObjects.
      
      TClassEdit:
              Add a utility to resolve the typedefs inside a typename.
              This resolution has 2 modes.  One where it resolved all
              typedefs which should be used to compare 2 typename and
              establish equality.  A second where it resolved all
              typedefs __except__ for the ROOT integral type typedefs,
              this version is used to create the typename that will be
              save on file.  This is necessary to avoid the replacement
              of (for example) Long64_t by its platform dependent version.
      
      
      git-svn-id: http://root.cern.ch/svn/root/trunk@8087 27541ba8-7e3a-0410-8455-c3a389f83636
      f8a1a168
    • Rene Brun's avatar
      From Philippe: · d00b0388
      Rene Brun authored
      This patch prevent the pattern matching function to read passed the end of the input string.
      
      
      git-svn-id: http://root.cern.ch/svn/root/trunk@8085 27541ba8-7e3a-0410-8455-c3a389f83636
      d00b0388
    • Rene Brun's avatar
      Add several protections when processing keys with very long names · 88516551
      Rene Brun authored
      or inspecting objects with very long names or titles
      
      
      git-svn-id: http://root.cern.ch/svn/root/trunk@8076 27541ba8-7e3a-0410-8455-c3a389f83636
      88516551
  8. Jan 28, 2004
  9. Jan 27, 2004
    • Rene Brun's avatar
      Remove unused variable "bp" in the new function debugPrint · 2ea9a353
      Rene Brun authored
      git-svn-id: http://root.cern.ch/svn/root/trunk@8058 27541ba8-7e3a-0410-8455-c3a389f83636
      2ea9a353
    • Rene Brun's avatar
      From Philippe: · 6f363575
      Rene Brun authored
      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.
      
      
      git-svn-id: http://root.cern.ch/svn/root/trunk@8056 27541ba8-7e3a-0410-8455-c3a389f83636
      6f363575
    • Rene Brun's avatar
      From Valeriy Onuchin: · ef6cb876
      Rene Brun authored
      - I introduced debugPrint function which
        prints debugging message to stderr and to the system debugger under Windows.
      
      Printing to the system debugger is usfull for debugging pure GUI (without console)
      appications under MS Windows.
      
      
      git-svn-id: http://root.cern.ch/svn/root/trunk@8053 27541ba8-7e3a-0410-8455-c3a389f83636
      ef6cb876
    • Rene Brun's avatar
      Implement support for Long64 and ULong64_t types with the new functions: · fdddca8f
      Rene Brun authored
         static Long64_t Abs(Long64_t d);
         static Long64_t Sign(Long64_t a, Long64_t b);
         static Long64_t Min(Long64_t a, Long64_t b);
         static ULong64_t Min(ULong64_t a, ULong64_t b);
         static Long64_t Max(Long64_t a, Long64_t b);
         static ULong64_t Max(ULong64_t a, ULong64_t b);
         static Int_t  LocMin(Int_t n, const Long64_t *a);
         static Int_t  LocMax(Int_t n, const Long64_t *a);
         static Int_t BinarySearch(Int_t n, const Long64_t *array, Long64_t value);
         static Int_t BinarySearch(Int_t n, const Long64_t **array, Long64_t value);
         static void Sort(Int_t n, const Long64_t *a, Int_t *index, Bool_t down=kTRUE);
      
      
      git-svn-id: http://root.cern.ch/svn/root/trunk@8050 27541ba8-7e3a-0410-8455-c3a389f83636
      fdddca8f
  10. Jan 25, 2004
    • Rene Brun's avatar
      New Linear Algebra package from Eddy Offermann. · 90627628
      Rene Brun authored
      This new package reimplements the previous classes TMatrix and TMatrixD.
      The new classes should be back compatible with the previous version except
      the function GetElements.
      New classes have been introduced for symmetric matrices,
      lazy matrices.
      New algorithms (LU, SVD) have been introduced.
      A new test suite test/stressLinear.cxx is introduced.
      A complete description of this package will be posted in the coming days.
      The classes are well documented in the implementation headers.
      
      
      git-svn-id: http://root.cern.ch/svn/root/trunk@8013 27541ba8-7e3a-0410-8455-c3a389f83636
      90627628
    • Fons Rademakers's avatar
      change in TFdSet class for WinNT. Both TUnixSystem and TWinNTSystem have · c5190bd4
      Fons Rademakers authored
      now their own TFdSet and don't derive anymore from an abstract TFdset base.
      This is needed since the orguments to the WinNT TFdSet methods are a Long_t
      (for Win32 SOCKET type which is 64 bits on WIN64) and not simple Int_t.
      
      
      git-svn-id: http://root.cern.ch/svn/root/trunk@8012 27541ba8-7e3a-0410-8455-c3a389f83636
      c5190bd4
  11. Jan 24, 2004
    • Rene Brun's avatar
      From Valeriy Onuchin: · fb2b5b7f
      Rene Brun authored
      TSocket and TMonitor (ak select) now work both under
      linux and  under windows. The main reason was that
      in windows file descriptors has different format than in unix.
      
       - I declared TFdSet class from TSystem.h as abstract one and
         wrote its implementations: TUnixFdSet (in TUnixSystem) and TWinFdSet (in TWinNTSystem).
      - I also changed fReadready, fReadmask, fWriteready, fWritemask, fSignals from TSystem
        to pointers which initiated either as TUnixFdSet or TWinFdSet.
      - I added select(multiplexing file descriptors) to TWinNTSystem::DispatchOneEvent.
        Now TMonitor class works correctly.
      - TWinNTSystem code has been "tidely" cleaned.
      
      As a result hserv.C hserv2.C hclient.C macros are now
      full functional under win32gdk and linux.
      
      
      git-svn-id: http://root.cern.ch/svn/root/trunk@8006 27541ba8-7e3a-0410-8455-c3a389f83636
      fb2b5b7f
  12. Jan 23, 2004
    • Rene Brun's avatar
      From Philippe: · c58630db
      Rene Brun authored
      With this patch, rootcint is now aware that it is in a windows environment when parsing the header files.
      In particular, this repairs the behavior of std::cout.
      
      
      git-svn-id: http://root.cern.ch/svn/root/trunk@7994 27541ba8-7e3a-0410-8455-c3a389f83636
      c58630db
  13. Jan 22, 2004
  14. Jan 21, 2004
    • Rene Brun's avatar
      From Philippe: · 768df494
      Rene Brun authored
      This patch implements having -q terminating the processs using the return value of the command.
      
      
      git-svn-id: http://root.cern.ch/svn/root/trunk@7964 27541ba8-7e3a-0410-8455-c3a389f83636
      768df494
    • Rene Brun's avatar
      From Philippe: · 3d331a83
      Rene Brun authored
      This patch adds the ability to use a global IsA function to handle the
      execution of TClass::GetActualClass.
      
         // This function installs a global IsA function for this class.
         // The global IsA function will be used if there is no local IsA function (fIsA)
         //
         // A global IsA function has the signature:
         //
         //    TClass *func( TClass *cl, const void *obj);
         //
         // 'cl' is a pointer to the  TClass object that corresponds to the
         // 'pointer type' used to retrieve the value 'obj'
         //
         //  For example with:
         //    TNamed * m = new TNamed("example","test");
         //    TObject* o = m
         // and
         //    the global IsA function would be called with TObject::Class() as
         //    the first parameter and the exact numerical value in the pointer
         //    'o'.
         //
         //  In other word, inside the global IsA function. it is safe to C-style
         //  cast the value of 'obj' into a pointer to the class described by 'cl'.
      
      
      git-svn-id: http://root.cern.ch/svn/root/trunk@7956 27541ba8-7e3a-0410-8455-c3a389f83636
      3d331a83
  15. Jan 20, 2004
  16. Jan 19, 2004
  17. Jan 16, 2004
    • Rene Brun's avatar
      From Philippe: · 7b676f2d
      Rene Brun authored
      TBuffer.cxx : use checksum only if the class version
         is set to the default (1) and the class does not have a
         Streamer method (IsForeign()==true)
      
      TFormula.cxx: fix a typo
      
      TClass.cxx: add comment to explicitly the mean of the bits use
         by TClass::Property
      
      TStreamerInfo.cxx: fix problem in the conversion from Double32_t,
         use newType in GetValue.  Fix a recursion problem in TStreamerInfo::Build.
      
      
      git-svn-id: http://root.cern.ch/svn/root/trunk@7921 27541ba8-7e3a-0410-8455-c3a389f83636
      7b676f2d
  18. Jan 14, 2004
  19. Jan 12, 2004
  20. Jan 10, 2004
    • Rene Brun's avatar
      From Philippe: · 2b412e44
      Rene Brun authored
      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.
      
      
      git-svn-id: http://root.cern.ch/svn/root/trunk@7880 27541ba8-7e3a-0410-8455-c3a389f83636
      2b412e44
  21. Jan 05, 2004
Loading