[root] / trunk / core / cont / src / TBits.cxx Repository:
ViewVC logotype

Log of /trunk/core/cont/src/TBits.cxx

Parent Directory Parent Directory


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

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: 17218 byte(s)
Diff to previous 43515
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 43515 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Tue Mar 27 21:15:53 2012 UTC (2 years, 9 months ago) by pcanal
File length: 17208 byte(s)
Diff to previous 29364
Fix coding convention R.RN7 (Avoid the raw C types 'long', 'unsigned long', 'long double', 'bool', 'long long' and 'unsigned long long'.)

Revision 29364 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Mon Jul 6 23:58:23 2009 UTC (5 years, 6 months ago) by pcanal
File length: 17206 byte(s)
Diff to previous 24274
Fix TBits::operator== to properly assume that the unset bits values default to zero and 2 TBits of differents length are not longer always 'not equal'.

Revision 24274 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Fri Jun 13 20:35:56 2008 UTC (6 years, 7 months ago) by pcanal
File length: 16954 byte(s)
Diff to previous 23429
const array are now static.  slight doc clarification

Revision 23429 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Wed Apr 23 09:52:37 2008 UTC (6 years, 9 months ago) by brun
File length: 16865 byte(s)
Diff to previous 22961
Fix shadowed variables

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: 16879 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/cont/src/TBits.cxx
File length: 16879 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/cont/src/TBits.cxx
File length: 16879 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/cont/src/TBits.cxx
File length: 16929 byte(s)
Diff to previous 15420
remove :$ from tag line

Revision 15420 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Wed Jun 14 11:47:11 2006 UTC (8 years, 7 months ago) by rdm
Original Path: trunk/cont/src/TBits.cxx
File length: 16939 byte(s)
Diff to previous 13258
Don't use inline functions before they are declared (generates warning when
compiling with -Wredundant-decls).

Revision 13258 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Wed Nov 16 20:11:59 2005 UTC (9 years, 2 months ago) by pcanal
Original Path: trunk/cont/src/TBits.cxx
File length: 17020 byte(s)
Diff to previous 13011
White spaces and comments update

Revision 13011 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Tue Oct 25 14:27:31 2005 UTC (9 years, 3 months ago) by pcanal
Original Path: trunk/cont/src/TBits.cxx
File length: 16802 byte(s)
Diff to previous 13000
When printing a TBits via ostream, print the Most Significant Bit  at the end left of the word

Revision 13000 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Fri Oct 21 22:01:36 2005 UTC (9 years, 3 months ago) by pcanal
Original Path: trunk/cont/src/TBits.cxx
File length: 16783 byte(s)
Diff to previous 8027
This patch adds support for the operators:
   |,&,^,<<.>>,|=,&=,^=,>>=,<<= and []
for the class TBits and for printing a TBits
via an ostream.

Revision 8027 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Mon Jan 26 11:52:40 2004 UTC (11 years ago) by brun
Original Path: trunk/cont/src/TBits.cxx
File length: 13557 byte(s)
Diff to previous 8008
Fix a problem with multiple definitions of a loop index
in the same function (HP-UX only)

Revision 8008 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Sun Jan 25 11:56:06 2004 UTC (11 years ago) by brun
Original Path: trunk/cont/src/TBits.cxx
File length: 13556 byte(s)
Diff to previous 7880
Extension of TBits by Filip Pizlo <pizlo@purdue.edu>
New getters/setters:
   //----- Optimized setters
   // Each of these will replace the contents of the receiver with the bitvector
   // in the parameter array.  The number of bits is changed to nbits.  If nbits
   // is smaller than fNbits, the receiver will NOT be compacted.
   void   Set(UInt_t nbits, const Char_t *array);
   void   Set(UInt_t nbits, const UChar_t *array) { Set(nbits, (const Char_t*)array); }
   void   Set(UInt_t nbits, const Short_t *array);
   void   Set(UInt_t nbits, const UShort_t *array) { Set(nbits, (const Short_t*)array); }
   void   Set(UInt_t nbits, const Int_t *array);
   void   Set(UInt_t nbits, const UInt_t *array) { Set(nbits, (const Int_t*)array); }
   void   Set(UInt_t nbits, const Long64_t *array);
   void   Set(UInt_t nbits, const ULong64_t *array) { Set(nbits, (const Long64_t*)array); }

   //----- Optimized getters
   // Each of these will replace the contents of the parameter array with the
   // bits in the receiver.  The parameter array must be large enough to hold
   // all of the bits in the receiver.
   // Note on semantics: any bits in the parameter array that go beyond the
   // number of the bits in the receiver will have an unspecified value.  For
   // example, if you call Get(Int*) with an array of one integer and the TBits
   // object has less than 32 bits, then the remaining bits in the integer will
   // have an unspecified value.
   void   Get(Char_t *array) const;
   void   Get(UChar_t *array) const { Get((Char_t*)array); }
   void   Get(Short_t *array) const;
   void   Get(UShort_t *array) const { Get((Short_t*)array); }
   void   Get(Int_t *array) const;
   void   Get(UInt_t *array) const { Get((Int_t*)array); }
   void   Get(Long64_t *array) const;
   void   Get(ULong64_t *array) const { Get((Long64_t*)array); }

New test program testbits in the test directory.

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/cont/src/TBits.cxx
File length: 10094 byte(s)
Diff to previous 7853
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 7853 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Tue Jan 6 16:49:01 2004 UTC (11 years ago) by brun
Original Path: trunk/cont/src/TBits.cxx
File length: 10016 byte(s)
Diff to previous 7848
Add a few protections such that the object can be reused after TBits::Clear.
TBits::Clear sets fNbits and fNbytes to 0.

Revision 7848 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Tue Jan 6 08:27:33 2004 UTC (11 years ago) by brun
Original Path: trunk/cont/src/TBits.cxx
File length: 9885 byte(s)
Diff to previous 6097
Implement function TBits::Clear

Revision 6097 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Tue Feb 11 20:25:08 2003 UTC (11 years, 11 months ago) by brun
Original Path: trunk/cont/src/TBits.cxx
File length: 9718 byte(s)
Diff to previous 6073
Fix a memory leak in TBits assignement operator
(thanks to Mathieu de Naurois)

Revision 6073 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Sat Feb 8 21:31:48 2003 UTC (11 years, 11 months ago) by brun
Original Path: trunk/cont/src/TBits.cxx
File length: 9690 byte(s)
Diff to previous 5717
Fix a mismatch between new and delete (delete [])

Revision 5717 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Mon Dec 2 18:50:12 2002 UTC (12 years, 1 month ago) by rdm
Original Path: trunk/cont/src/TBits.cxx
File length: 9685 byte(s)
Diff to previous 3613
mega patch to remove almost all compiler warnings on MacOS X where the
compiler is by default in pedantic mode (LHCb also like to use this option).
The following issues have been fixed:
- removal of unused arguments
- comparison between signed and unsigned integers
- not calling of base class copy ctor in copy ctor's
To be done, the TGeo classes where we get still many hundred warnings of
the above nature. List forwarded to Andrei.

Revision 3613 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Tue Jan 8 16:04:24 2002 UTC (13 years ago) by brun
Original Path: trunk/cont/src/TBits.cxx
File length: 9770 byte(s)
Diff to previous 3503
SetBitNumber was not setting the new allocated bytes to 0.
Fix bugs in FirstNullBit and FirstSetBit.
Thanks to Andrei Gheata for providing the fixes.

Revision 3503 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Wed Dec 19 15:40:59 2001 UTC (13 years, 1 month ago) by brun
Original Path: trunk/cont/src/TBits.cxx
File length: 9735 byte(s)
Diff to previous 3410
 Add an aoptional argument to CountBits, FirstNullBit, FirstSetBit.
This argument startBit (default=0) may be specified to give a starting bit
number where to start the operation.

Revision 3410 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Thu Dec 6 15:53:46 2001 UTC (13 years, 1 month ago) by brun
Original Path: trunk/cont/src/TBits.cxx
File length: 8410 byte(s)
Diff to previous 3409
Rename functions FirstBitNull,FirstBitSet to FirstNullBit,FirstSetBit.

Revision 3409 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Thu Dec 6 15:27:34 2001 UTC (13 years, 1 month ago) by brun
Original Path: trunk/cont/src/TBits.cxx
File length: 8400 byte(s)
Diff to previous 1989
Several changes in class TBits.
 - Make all getters const
 - rewrite function CountBits (8 times faster than previous version)
 - implement two new functions
   UInt_t  FirstBitNull()  const;
   UInt_t  FirstBitSet()   const;

Revision 1989 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Mon Apr 16 20:04:50 2001 UTC (13 years, 9 months ago) by brun
Original Path: trunk/cont/src/TBits.cxx
File length: 5939 byte(s)
Diff to previous 1569
Fix a bug in TBits::TestBitNumber. Thanks to Helmut  Schmuecker for reporting
the problem.

Revision 1569 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Fri Feb 9 16:47:52 2001 UTC (13 years, 11 months ago) by brun
Original Path: trunk/cont/src/TBits.cxx
File length: 5935 byte(s)
Diff to previous 1562
New version of TTreeFormula/TFormula by Philippe Canal:
In a TFormula . and -> are now synonymous.

In a TTreeFormula, you can now specify the index of an array (TClonesArray
or regular array) via another expression of the variable of the tree.

For example the following are now correctly handled:
  myTree->Draw("clone1.a1:clone2.a2[2]");
  myTree->Draw("clone1.a1:clone2.a2[clone1.b1]");
  myTree->Draw("clone1.a1","clone2.a2[clone1.b1]>0");

This patch also enable (rudimentarily for now) the access to data members.
So now both the following are possible:
  T->Draw("event->GetNtrack()");
  T->Draw("event.fNtrack");

The lookup of leafname has been improved so that whether of not the dot
has been forced into the branchname the following will work:

  T->Draw("event.fTemperature")
  T->Draw("fTemperature")

Revision 1562 - (view) (download) (as text) (annotate) - [select for diffs]
Modified Thu Feb 8 17:04:18 2001 UTC (13 years, 11 months ago) by brun
Original Path: trunk/cont/src/TBits.cxx
File length: 5195 byte(s)
Diff to previous 1561
Fix inconsistencies and declare const several functions.

Revision 1561 - (view) (download) (as text) (annotate) - [select for diffs]
Added Thu Feb 8 16:58:22 2001 UTC (13 years, 11 months ago) by brun
Original Path: trunk/cont/src/TBits.cxx
File length: 5179 byte(s)
New class TBits by Philippe canal
// TBits                                                                //
//                                                                      //
// Container of bits                                                    //
//                                                                      //
// This class provides a simple container of bits.                      //
// Each bit can be set and tested via the functions SetBitNumber and    //
// TestBitNumber.                                             .         //
// The default value of all bits is kFALSE.                             //

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