Logo ROOT   6.08/07
Reference Guide
TArray.h
Go to the documentation of this file.
1 // @(#)root/cont:$Id$
2 // Author: Fons Rademakers 21/10/97
3 
4 /*************************************************************************
5  * Copyright (C) 1995-2000, Rene Brun and Fons Rademakers. *
6  * All rights reserved. *
7  * *
8  * For the licensing terms see $ROOTSYS/LICENSE. *
9  * For the list of contributors see $ROOTSYS/README/CREDITS. *
10  *************************************************************************/
11 
12 #ifndef ROOT_TArray
13 #define ROOT_TArray
14 
15 
16 //////////////////////////////////////////////////////////////////////////
17 // //
18 // TArray //
19 // //
20 // Abstract array base class. Used by TArrayC, TArrayS, TArrayI, //
21 // TArrayL, TArrayF and TArrayD. //
22 // Data member is public for historical reasons. //
23 // //
24 //////////////////////////////////////////////////////////////////////////
25 
26 #ifndef ROOT_Rtypes
27 #include "Rtypes.h"
28 #endif
29 #include <string.h>
30 
31 class TBuffer;
32 
33 class TArray {
34 
35 protected:
36  Bool_t BoundsOk(const char *where, Int_t at) const;
37  Bool_t OutOfBoundsError(const char *where, Int_t i) const;
38 
39 public:
40  Int_t fN; //Number of array elements
41 
42  TArray(): fN(0) { }
43  TArray(Int_t n): fN(n) { }
44  TArray(const TArray &a): fN(a.fN) { }
45  TArray &operator=(const TArray &rhs)
46  {if(this!=&rhs) fN = rhs.fN; return *this; }
47  virtual ~TArray() { fN = 0; }
48 
49  Int_t GetSize() const { return fN; }
50  virtual void Set(Int_t n) = 0;
51 
52  virtual Double_t GetAt(Int_t i) const = 0;
53  virtual void SetAt(Double_t v, Int_t i) = 0;
54 
55  static TArray *ReadArray(TBuffer &b, const TClass *clReq);
56  static void WriteArray(TBuffer &b, const TArray *a);
57 
58  friend TBuffer &operator<<(TBuffer &b, const TArray *obj);
59 
60  ClassDef(TArray,1) //Abstract array base class
61 };
62 
63 #if defined R__TEMPLATE_OVERLOAD_BUG
64 template <>
65 #endif
66 inline TBuffer &operator>>(TBuffer &buf, TArray *&obj)
67 {
68  // Read TArray object from buffer.
69 
70  obj = (TArray *) TArray::ReadArray(buf, TArray::Class());
71  return buf;
72 }
73 
74 #if defined R__TEMPLATE_OVERLOAD_BUG
75 template <>
76 #endif
77 TBuffer &operator<<(TBuffer &b, const TArray *obj);
78 
79 inline Bool_t TArray::BoundsOk(const char *where, Int_t at) const
80 {
81  return (at < 0 || at >= fN)
82  ? OutOfBoundsError(where, at)
83  : kTRUE;
84 }
85 
86 #endif
Abstract array base class.
Definition: TArray.h:33
TArray & operator=(const TArray &rhs)
Definition: TArray.h:45
virtual void Set(Int_t n)=0
TArray(const TArray &a)
Definition: TArray.h:44
TBuffer & operator>>(TBuffer &buf, TArray *&obj)
Definition: TArray.h:66
Buffer base class used for serializing objects.
Definition: TBuffer.h:42
int Int_t
Definition: RtypesCore.h:41
bool Bool_t
Definition: RtypesCore.h:59
TArc * a
Definition: textangle.C:12
TArray()
Definition: TArray.h:42
const char * Class
Definition: TXMLSetup.cxx:64
virtual void SetAt(Double_t v, Int_t i)=0
#define ClassDef(name, id)
Definition: Rtypes.h:254
Bool_t BoundsOk(const char *where, Int_t at) const
Definition: TArray.h:79
static void WriteArray(TBuffer &b, const TArray *a)
Write TArray object to buffer.
Definition: TArray.cxx:82
Int_t fN
Definition: TArray.h:40
Int_t GetSize() const
Definition: TArray.h:49
SVector< double, 2 > v
Definition: Dict.h:5
static TArray * ReadArray(TBuffer &b, const TClass *clReq)
Read TArray object from buffer.
Definition: TArray.cxx:41
Bool_t OutOfBoundsError(const char *where, Int_t i) const
Generate an out-of-bounds error. Always returns false.
Definition: TArray.cxx:30
The ROOT global object gROOT contains a list of all defined classes.
Definition: TClass.h:81
friend TBuffer & operator<<(TBuffer &b, const TArray *obj)
Write TArray or derived object to buffer.
Definition: TArray.cxx:112
double Double_t
Definition: RtypesCore.h:55
virtual ~TArray()
Definition: TArray.h:47
virtual Double_t GetAt(Int_t i) const =0
you should not use this method at all Int_t Int_t Double_t Double_t Double_t Int_t Double_t Double_t Double_t Double_t b
Definition: TRolke.cxx:630
TArray(Int_t n)
Definition: TArray.h:43
const Bool_t kTRUE
Definition: Rtypes.h:91
const Int_t n
Definition: legend1.C:16