Logo ROOT  
Reference Guide
 
Loading...
Searching...
No Matches
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 <cstring> // used in all TArray derived classes for memset()
28
29class TBuffer;
30
31class TArray {
32
33protected:
34 Bool_t BoundsOk(const char *where, Int_t at) const;
35 Bool_t OutOfBoundsError(const char *where, Int_t i) const;
36
37public:
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) { }
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 inline std::size_t size() const { return GetSize(); }
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
64template <>
65#endif
66inline 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
75template <>
76#endif
77TBuffer &operator<<(TBuffer &b, const TArray *obj);
78
79inline Bool_t TArray::BoundsOk(const char *where, Int_t at) const
80{
81 return (at < 0 || at >= fN)
83 : kTRUE;
84}
85
86#endif
#define b(i)
Definition RSha256.hxx:100
#define a(i)
Definition RSha256.hxx:99
constexpr Bool_t kTRUE
Definition RtypesCore.h:107
#define ClassDef(name, id)
Definition Rtypes.h:344
TBuffer & operator>>(TBuffer &buf, TArray *&obj)
Definition TArray.h:66
TBuffer & operator<<(TBuffer &b, const TArray *obj)
Write TArray or derived object to buffer.
Definition TArray.cxx:111
Abstract array base class.
Definition TArray.h:31
virtual void SetAt(Double_t v, Int_t i)=0
Int_t fN
Definition TArray.h:38
static void WriteArray(TBuffer &b, const TArray *a)
Write TArray object to buffer.
Definition TArray.cxx:81
virtual ~TArray()
Definition TArray.h:45
TArray()
Definition TArray.h:40
virtual Double_t GetAt(Int_t i) const =0
Bool_t BoundsOk(const char *where, Int_t at) const
Definition TArray.h:79
virtual void Set(Int_t n)=0
Int_t GetSize() const
Definition TArray.h:47
TArray & operator=(const TArray &rhs)
Definition TArray.h:43
static TArray * ReadArray(TBuffer &b, const TClass *clReq)
Read TArray object from buffer.
Definition TArray.cxx:40
Bool_t OutOfBoundsError(const char *where, Int_t i) const
Generate an out-of-bounds error. Always returns false.
Definition TArray.cxx:29
static TClass * Class()
TArray(const TArray &a)
Definition TArray.h:42
std::size_t size() const
Definition TArray.h:50
TArray(Int_t n)
Definition TArray.h:41
friend TBuffer & operator<<(TBuffer &b, const TArray *obj)
Write TArray or derived object to buffer.
Definition TArray.cxx:111
Buffer base class used for serializing objects.
Definition TBuffer.h:43
TClass instances represent classes, structs and namespaces in the ROOT type system.
Definition TClass.h:84
const Int_t n
Definition legend1.C:16