Logo ROOT  
Reference Guide
 
Loading...
Searching...
No Matches
TLeafElement.h
Go to the documentation of this file.
1// @(#)root/tree:$Id$
2// Author: Rene Brun 14/01/2001
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_TLeafElement
13#define ROOT_TLeafElement
14
15
16//////////////////////////////////////////////////////////////////////////
17// //
18// TLeafElement //
19// //
20// A TLeaf for a general object derived from TObject. //
21// //
22//////////////////////////////////////////////////////////////////////////
23
24#include <atomic>
25
26#include "TDataType.h"
27#include "TLeaf.h"
28#include "TBranchElement.h"
29
30class TMethodCall;
31
32class TLeafElement : public TLeaf {
33
34protected:
35 char *fAbsAddress; ///<! Absolute leaf Address
36 Int_t fID; ///< element serial number in fInfo
37 Int_t fType; ///< leaf type
38 mutable std::atomic<DeserializeType> fDeserializeTypeCache{ DeserializeType::kInvalid }; ///<! Cache of the type of deserialization.
39 mutable std::atomic<EDataType> fDataTypeCache{EDataType::kOther_t}; ///<! Cache of the EDataType of deserialization.
40
41private:
42 virtual Int_t GetOffsetHeaderSize() const {return 1;}
43
44public:
46 TLeafElement(TBranch *parent, const char *name, Int_t id, Int_t type);
47 virtual ~TLeafElement();
48
50 virtual Int_t *GenerateOffsetArrayBase(Int_t /*base*/, Int_t /*events*/) { return nullptr; }
51 virtual DeserializeType GetDeserializeType() const;
52
53 Int_t GetID() const { return fID; }
54 virtual TString GetFullName() const;
55 virtual Int_t GetLen() const {return ((TBranchElement*)fBranch)->GetNdata()*fLen;}
56 TMethodCall *GetMethodCall(const char *name);
57 virtual Int_t GetMaximum() const {return ((TBranchElement*)fBranch)->GetMaximum();}
58 virtual Int_t GetNdata() const {return ((TBranchElement*)fBranch)->GetNdata()*fLen;}
59 virtual const char *GetTypeName() const {return ((TBranchElement*)fBranch)->GetTypeName();}
60
61 virtual Double_t GetValue(Int_t i=0) const { return ((TBranchElement*)fBranch)->GetValue(i, fLen, kFALSE);}
62 virtual Long64_t GetValueLong64(Int_t i = 0) const { return ((TBranchElement*)fBranch)->GetTypedValue<Long64_t>(i, fLen, kFALSE); }
63 virtual LongDouble_t GetValueLongDouble(Int_t i = 0) const { return ((TBranchElement*)fBranch)->GetTypedValue<LongDouble_t>(i, fLen, kFALSE); }
64 template<typename T> T GetTypedValueSubArray(Int_t i=0, Int_t j=0) const {return ((TBranchElement*)fBranch)->GetTypedValue<T>(i, j, kTRUE);}
65
66 virtual bool ReadBasketFast(TBuffer&, Long64_t);
67
68 virtual void *GetValuePointer() const { return ((TBranchElement*)fBranch)->GetValuePointer(); }
69 virtual Bool_t IncludeRange(TLeaf *);
70 virtual Bool_t IsOnTerminalBranch() const;
71 virtual void PrintValue(Int_t i=0) const {((TBranchElement*)fBranch)->PrintValue(i);}
72 virtual void SetLeafCount(TLeaf *leaf) {fLeafCount = leaf;}
73
74 ClassDef(TLeafElement,1); //A TLeaf for a general object derived from TObject.
75};
76
77#endif
int Int_t
Definition RtypesCore.h:45
const Bool_t kFALSE
Definition RtypesCore.h:92
bool Bool_t
Definition RtypesCore.h:63
double Double_t
Definition RtypesCore.h:59
long double LongDouble_t
Definition RtypesCore.h:61
long long Long64_t
Definition RtypesCore.h:73
const Bool_t kTRUE
Definition RtypesCore.h:91
#define ClassDef(name, id)
Definition Rtypes.h:325
@ kOther_t
Definition TDataType.h:32
char name[80]
Definition TGX11.cxx:110
int type
Definition TGX11.cxx:121
A Branch for the case of an object.
A TTree is a list of TBranches.
Definition TBranch.h:89
Buffer base class used for serializing objects.
Definition TBuffer.h:43
A TLeaf for the general case when using the branches created via a TStreamerInfo (i....
T GetTypedValueSubArray(Int_t i=0, Int_t j=0) const
Int_t GetID() const
TMethodCall * GetMethodCall(const char *name)
Returns pointer to method corresponding to name name is a string with the general form "method(list o...
char * fAbsAddress
! Absolute leaf Address
std::atomic< DeserializeType > fDeserializeTypeCache
! Cache of the type of deserialization.
virtual const char * GetTypeName() const
virtual Int_t GetMaximum() const
virtual ~TLeafElement()
Default destructor for a LeafObject.
virtual void SetLeafCount(TLeaf *leaf)
Set the leaf count of this leaf.
virtual Bool_t IsOnTerminalBranch() const
Return true if this leaf is does not have any sub-branch/leaf.
virtual void PrintValue(Int_t i=0) const
Int_t fType
leaf type
virtual DeserializeType GetDeserializeType() const
Determine if this TLeafElement supports bulk IO.
virtual TString GetFullName() const
Return the full name (including the parent's branch names) of the leaf.
virtual LongDouble_t GetValueLongDouble(Int_t i=0) const
virtual Int_t GetOffsetHeaderSize() const
std::atomic< EDataType > fDataTypeCache
! Cache of the EDataType of deserialization.
virtual Int_t * GenerateOffsetArrayBase(Int_t, Int_t)
virtual Bool_t IncludeRange(TLeaf *)
Copy/set fMinimum and fMaximum to include/be wide than those of the parameter.
virtual void * GetValuePointer() const
Int_t fID
element serial number in fInfo
virtual Long64_t GetValueLong64(Int_t i=0) const
virtual Double_t GetValue(Int_t i=0) const
virtual Int_t GetLen() const
Return the number of effective elements of this leaf, for the current entry.
virtual Int_t GetNdata() const
virtual Bool_t CanGenerateOffsetArray()
virtual bool ReadBasketFast(TBuffer &, Long64_t)
Deserialize N events from an input buffer.
TLeafElement()
Default constructor for LeafObject.
A TLeaf describes individual elements of a TBranch See TBranch structure in TTree.
Definition TLeaf.h:57
Int_t fLenType
Number of bytes for this data type.
Definition TLeaf.h:73
Int_t fLen
Number of fixed length elements in the leaf's data.
Definition TLeaf.h:72
DeserializeType
Definition TLeaf.h:99
TBranch * fBranch
! Pointer to supporting branch (we do not own the branch)
Definition TLeaf.h:78
TLeaf * fLeafCount
Pointer to Leaf count if variable length (we do not own the counter)
Definition TLeaf.h:77
Method or function calling interface.
Definition TMethodCall.h:37
Basic string class.
Definition TString.h:136