Hi Christian, We know about that. Currently, you must have an Int_t or UInt_t. Adding support for Short/UShort, Char/UChar implies several changes in TStreamerInfo to correctly map the addresses of the counter. We will introduce the logic in a future version. Note that the gain in space (on file) is marginal unless you do not use compression and you have many short length arrays. Rene Brun Christian Holm Christensen wrote: > > Hi ROOT'ers, > > It seems that ROOT's I/O insist on the array size of pointer data > member to be an Int_t or UInt_t - why not a Short_t or UShor_t, or > even Long_t or ULong_t? For example > > class Foo : public TObject > { > private: > UShort_t fN; // Array size <= doesn't work - why? > // Short_t fN; // Array size <= doesn't work - why? > // Int_t fN; // ROOT's I/O insists on an 'interger' - why? > // UInt_t fN; // ROOT's I/O insists on an 'interger' - why? > Short_t* fArray; //[fN] Data Array > public: > Foo() : fN(0) { fArray = 0; } > Foo(UShort_t n) : fN(n) { > fArray = new Short_t[fN]; > for (UShort_t i = 0; i < n ; i++) > fArray[i] = i; > } > > void Print(Option_t* option="") const { > for (UShort_t i = 0; i < fN ; i++) > cout << " " << setw(3) << fArray[i] << flush; > cout << endl; > } > > ClassDef(Foo, 1) // A Foo class > }; > > It seems like a waste of 2 perfectly good bytes to insist on having a > (4 byte) Int_t/UInt_t when most often a (2 byte) Short_t/UShort_t > could do. > > This ROOT using 3.01/05. > > Yours, > > Christian ----------------------------------------------------------- > Holm Christensen Phone: (+45) 35 35 96 91 > Sankt Hansgade 23, 1. th. Office: (+45) 353 25 305 > DK-2200 Copenhagen N Web: www.nbi.dk/~cholm > Denmark Email: cholm@nbi.dk
This archive was generated by hypermail 2b29 : Tue Jan 01 2002 - 17:50:50 MET