Logo ROOT   6.10/09
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 #include "Rtypes.h"
27 #include <string.h>
28 
29 class TBuffer;
30 
31 class TArray {
32 
33 protected:
34  Bool_t BoundsOk(const char *where, Int_t at) const;
35  Bool_t OutOfBoundsError(const char *where, Int_t i) const;
36 
37 public:
38  Int_t fN; //Number of array elements
39 
40  TArray(): fN(0) { }
41  TArray(Int_t n): fN(n) { }
42  TArray(const TArray &a): fN(a.fN) { }
43  TArray &operator=(const TArray &rhs)
44  {if(this!=&rhs) fN = rhs.fN; return *this; }
45  virtual ~TArray() { fN = 0; }
46 
47  Int_t GetSize() const { return fN; }
48  virtual void Set(Int_t n) = 0;
49 
50  virtual Double_t GetAt(Int_t i) const = 0;
51  virtual void SetAt(Double_t v, Int_t i) = 0;
52 
53  static TArray *ReadArray(TBuffer &b, const TClass *clReq);
54  static void WriteArray(TBuffer &b, const TArray *a);
55 
56  friend TBuffer &operator<<(TBuffer &b, const TArray *obj);
57 
58  ClassDef(TArray,1) //Abstract array base class
59 };
60 
61 #if defined R__TEMPLATE_OVERLOAD_BUG
62 template <>
63 #endif
64 inline TBuffer &operator>>(TBuffer &buf, TArray *&obj)
65 {
66  // Read TArray object from buffer.
67 
68  obj = (TArray *) TArray::ReadArray(buf, TArray::Class());
69  return buf;
70 }
71 
72 #if defined R__TEMPLATE_OVERLOAD_BUG
73 template <>
74 #endif
75 TBuffer &operator<<(TBuffer &b, const TArray *obj);
76 
77 inline Bool_t TArray::BoundsOk(const char *where, Int_t at) const
78 {
79  return (at < 0 || at >= fN)
80  ? OutOfBoundsError(where, at)
81  : kTRUE;
82 }
83 
84 #endif
Abstract array base class.
Definition: TArray.h:31
TArray & operator=(const TArray &rhs)
Definition: TArray.h:43
virtual void Set(Int_t n)=0
TArray(const TArray &a)
Definition: TArray.h:42
TBuffer & operator>>(TBuffer &buf, TArray *&obj)
Definition: TArray.h:64
Buffer base class used for serializing objects.
Definition: TBuffer.h:40
int Int_t
Definition: RtypesCore.h:41
bool Bool_t
Definition: RtypesCore.h:59
TArc * a
Definition: textangle.C:12
TArray()
Definition: TArray.h:40
virtual void SetAt(Double_t v, Int_t i)=0
#define ClassDef(name, id)
Definition: Rtypes.h:297
void Class()
Definition: Class.C:29
Bool_t BoundsOk(const char *where, Int_t at) const
Definition: TArray.h:77
static void WriteArray(TBuffer &b, const TArray *a)
Write TArray object to buffer.
Definition: TArray.cxx:82
Int_t fN
Definition: TArray.h:38
Int_t GetSize() const
Definition: TArray.h:47
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:71
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:45
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:41
const Bool_t kTRUE
Definition: RtypesCore.h:91
const Int_t n
Definition: legend1.C:16