Hall A ROOT/C++ Analyzer (podd)
Loading...
Searching...
No Matches
THaVar.h
Go to the documentation of this file.
1#ifndef Podd_THaVar_h_
2#define Podd_THaVar_h_
3
5//
6// THaVar
7//
8// Facade interface to access arbitrary data in memory via name
9//
11
12#include "TNamed.h"
13#include "VarType.h"
14#include "Variable.h"
15#include <vector>
16
17class THaArrayString;
18class TMethodCall;
19
20class THaVar : public TNamed {
21
22public:
23 static const Long64_t kInvalidInt;
24 static const Double_t kInvalid;
25
26 // Explicit instantiations for supported types are provided in implementation
27 template <typename T>
28 THaVar( const char* name, const char* descript, T& var, const Int_t* count=nullptr );
29
30 THaVar( const char* name, const char* descript, const void* obj,
31 VarType type, Int_t offset, TMethodCall* method=nullptr, const Int_t* count=nullptr );
32
33 THaVar( const char* name, const char* descript, const void* obj,
34 VarType type, Int_t elem_size, Int_t offset, TMethodCall* method=nullptr );
35
36 //TODO: copy, assignment
37 virtual ~THaVar();
38
39 Int_t GetLen() const { return fImpl->GetLen(); }
40 Int_t GetNdim() const { return fImpl->GetNdim(); }
41 const Int_t* GetDim() const { return fImpl->GetDim(); }
42
43 VarType GetType() const { return fImpl->GetType(); }
44 size_t GetTypeSize() const { return Vars::GetTypeSize(GetType()); }
45 const char* GetTypeName() const { return Vars::GetTypeName(GetType()); }
46
47 std::vector<Double_t> GetValues() const { return fImpl->GetValues(); }
48 Double_t GetValue( Int_t i = 0 ) const { return fImpl->GetValue(i); }
49 Long64_t GetValueInt( Int_t i = 0 ) const { return fImpl->GetValueInt(i); }
50
51 const void* GetValuePointer() const { return fImpl->GetValuePointer(); }
52 const void* GetDataPointer( Int_t i = 0 ) const { return fImpl->GetDataPointer(i); }
53 size_t GetData( void* buf ) const { return fImpl->GetData(buf); }
54 size_t GetData( void* buf, Int_t i ) const { return fImpl->GetData(buf,i); }
55
56 Bool_t HasSizeVar() const { return fImpl->HasSizeVar(); }
57
58 Bool_t HasSameSize( const THaVar& rhs ) const;
59 Bool_t HasSameSize( const THaVar* rhs ) const;
60 Int_t Index( const char* subscripts ) const;
61 Int_t Index( const THaArrayString& s ) const { return fImpl->Index(s); }
62 Bool_t IsArray() const { return fImpl->IsArray(); }
63 Bool_t IsBasic() const { return fImpl->IsBasic(); }
64 Bool_t IsContiguous() const { return fImpl->IsContiguous(); }
65 Bool_t IsFloat() const { return fImpl->IsFloat(); }
67 Bool_t IsStreamable() const { return fImpl->IsStreamable(); }
68 Bool_t IsTObject() const { return fImpl->IsTObject(); }
69 Bool_t IsVarArray() const { return fImpl->IsVarArray(); }
70 Bool_t IsVector() const { return fImpl->IsVector(); }
71
72 // Overrides of TNamed methods
73 virtual void Print( Option_t* opt="FULL" )
74 const { return fImpl->Print(opt); }
75 virtual void SetName( const char* name ) { fImpl->SetName(name); }
76 virtual void SetNameTitle( const char* name, const char* descript )
77 { fImpl->SetNameTitle(name,descript); }
78
79protected:
80 Podd::Variable* fImpl; //Pointer to implementation
81
82 ClassDef(THaVar,0) //Global symbolic variable
83};
84
85//_____________________________________________________________________________
86inline
88{
89 return fImpl->HasSameSize( *rhs.fImpl );
90}
91
92//_____________________________________________________________________________
93inline
95{
96 if( !rhs )
97 return false;
98 return fImpl->HasSameSize( *rhs->fImpl );
99}
100
101#endif
int Int_t
bool Bool_t
double Double_t
const char Option_t
#define ClassDef(name, id)
char name[80]
virtual Bool_t IsFloat() const
Definition Variable.cxx:441
virtual void SetName(const char *name)
Definition Variable.cxx:521
virtual const void * GetDataPointer(Int_t i=0) const
Definition Variable.cxx:262
virtual const Int_t * GetDim() const
Definition Variable.cxx:90
const void * GetValuePointer() const
Definition Variable.h:35
virtual Double_t GetValue(Int_t i=0) const
Definition Variable.cxx:109
virtual Int_t Index(const THaArrayString &) const
Definition Variable.cxx:384
virtual Int_t GetNdim() const
Definition Variable.cxx:82
virtual Bool_t HasSizeVar() const
Definition Variable.cxx:378
virtual Bool_t IsPointerArray() const
Definition Variable.cxx:453
virtual std::vector< Double_t > GetValues() const
Definition Variable.cxx:98
virtual Bool_t IsBasic() const
Definition Variable.cxx:417
virtual Bool_t IsArray() const
Definition Variable.cxx:409
virtual Bool_t IsTObject() const
Definition Variable.cxx:469
virtual Bool_t HasSameSize(const Variable &rhs) const
Definition Variable.cxx:363
virtual void SetNameTitle(const char *name, const char *descript)
Definition Variable.cxx:532
virtual void Print(Option_t *opt) const
Definition Variable.cxx:495
virtual Bool_t IsVector() const
Definition Variable.cxx:485
VarType GetType() const
Definition Variable.h:29
virtual Long64_t GetValueInt(Int_t i=0) const
Definition Variable.cxx:188
virtual size_t GetData(void *buf) const
Definition Variable.cxx:299
virtual Int_t GetLen() const
Definition Variable.cxx:74
virtual Bool_t IsContiguous() const
Definition Variable.cxx:425
virtual Bool_t IsStreamable() const
Definition Variable.cxx:461
virtual Bool_t IsVarArray() const
Definition Variable.cxx:477
Bool_t IsFloat() const
Definition THaVar.h:65
const void * GetDataPointer(Int_t i=0) const
Definition THaVar.h:52
size_t GetData(void *buf) const
Definition THaVar.h:53
Bool_t IsArray() const
Definition THaVar.h:62
Bool_t IsBasic() const
Definition THaVar.h:63
std::vector< Double_t > GetValues() const
Definition THaVar.h:47
Bool_t IsPointerArray() const
Definition THaVar.h:66
Bool_t HasSizeVar() const
Definition THaVar.h:56
Podd::Variable * fImpl
Definition THaVar.h:80
Bool_t HasSameSize(const THaVar &rhs) const
Definition THaVar.h:87
const Int_t * GetDim() const
Definition THaVar.h:41
Bool_t IsTObject() const
Definition THaVar.h:68
virtual void SetNameTitle(const char *name, const char *descript)
Definition THaVar.h:76
Bool_t IsVector() const
Definition THaVar.h:70
Double_t GetValue(Int_t i=0) const
Definition THaVar.h:48
Bool_t IsContiguous() const
Definition THaVar.h:64
VarType GetType() const
Definition THaVar.h:43
Int_t GetLen() const
Definition THaVar.h:39
Long64_t GetValueInt(Int_t i=0) const
Definition THaVar.h:49
Int_t Index(const char *subscripts) const
Definition THaVar.cxx:193
virtual ~THaVar()
Definition THaVar.cxx:187
static const Double_t kInvalid
Definition THaVar.h:24
virtual void SetName(const char *name)
Definition THaVar.h:75
Bool_t IsVarArray() const
Definition THaVar.h:69
Int_t GetNdim() const
Definition THaVar.h:40
Bool_t IsStreamable() const
Definition THaVar.h:67
size_t GetData(void *buf, Int_t i) const
Definition THaVar.h:54
const void * GetValuePointer() const
Definition THaVar.h:51
static const Long64_t kInvalidInt
Definition THaVar.h:23
size_t GetTypeSize() const
Definition THaVar.h:44
const char * GetTypeName() const
Definition THaVar.h:45
Int_t Index(const THaArrayString &s) const
Definition THaVar.h:61
virtual void Print(Option_t *opt="FULL") const
Definition THaVar.h:73
long long Long64_t