Changes suggested by Effective C++ (F.Carminati)
[u/mrichter/AliRoot.git] / CONTAINERS / TArrayOfArray.h
1 #ifndef TARRAYOFARRAY_H
2 #define TARRAYOFARRAY_H
3 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4  * See cxx source for full Copyright notice                               */
5
6 /* $Id$ */
7 #include "TObject.h"
8 #include "AliObjectArray.h"
9
10 class TArrayOfArray: public TObject { 
11 public:    
12   virtual void * At(UInt_t index0, UInt_t index1)=0;
13   //get pointer to the object
14   virtual void  Dump(UInt_t index0, UInt_t index1)=0;
15   virtual Int_t Resize(Int_t index, UInt_t newsize)=0; 
16   //expand array with index index to newsize 
17   virtual UInt_t Push(UInt_t size)=0;
18   //make new array with size  - return starting index
19   virtual Int_t ArraySize(UInt_t index)=0;
20   virtual Int_t GetSize()=0;
21   ClassDef(TArrayOfArray,1) 
22 };
23
24
25 class TArrayOfArrayVStack: public TArrayOfArray{
26 public:  
27   TArrayOfArrayVStack();   
28   TArrayOfArrayVStack(const char *classname);
29   ~TArrayOfArrayVStack(); 
30   Bool_t SetClass(const char * classname);
31   virtual void Clear(Option_t * opt="");
32   void * Unchecked1DArray(UInt_t index){return fIndex->Unchecked1DAt(index);}
33   void * Unchecked1DAt(UInt_t index0, UInt_t index1);
34   //
35   virtual void * At(UInt_t index0, UInt_t index1);
36   //get pointer to the object 
37   virtual void  Dump(UInt_t index0, UInt_t index1);
38   virtual Int_t Resize(Int_t index, UInt_t newsize); 
39   //expand array with index index to newsize 
40   virtual UInt_t Push(UInt_t size);
41   //make new array with size  - return starting index    
42   virtual Int_t ArraySize(UInt_t index);
43   Int_t ArraySize(){ return fArray->GetSize();}
44   virtual Int_t GetSize(){return (fIndex) ?(Int_t)fIndex->GetSize()-1:0;}
45 private:
46
47   TArrayOfArrayVStack(const TArrayOfArrayVStack & taa);
48   TArrayOfArrayVStack & operator=(const TArrayOfArrayVStack & taa);
49
50   AliObjectArray * fIndex;
51   AliObjectArray * fArray;
52   ClassDef(TArrayOfArrayVStack,1) 
53 };
54
55 class TArrayOfArrayVList: public TArrayOfArray{
56 protected:
57   AliObjectArray  fIndex;
58   AliObjectArray  fSecondaryIndexes;
59   AliObjectArray  fArray;
60   ClassDef(TArrayOfArrayVList,1) 
61 };
62
63 inline void * TArrayOfArrayVStack::Unchecked1DAt(UInt_t index0, UInt_t index1)
64 {
65   // unchecked return
66   return fArray->Unchecked1DAt(((UInt_t*)fIndex->GetArray())[index0]+index1);
67 }
68
69 #endif
70   
71