Logo ROOT   6.30.04
Reference Guide
 All Namespaces Files Pages
TFormLeafInfoReference.h
Go to the documentation of this file.
1 // @(#)root/treeplayer:$Id$
2 // Author: Markus Frank 01/02/2006
3 
4 /*************************************************************************
5  * Copyright (C) 1995-2000, Rene Brun and Fons Rademakers and al. *
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_TFormLeafInfoReference
13 #define ROOT_TFormLeafInfoReference
14 
15 #include "TFormLeafInfo.h"
16 
17 #include <string>
18 
19 // Forward declarations
20 class TVirtualRefProxy;
21 
22 class TFormLeafInfoReference : public TFormLeafInfo {
23  typedef TVirtualRefProxy Proxy;
24 public:
25  Proxy* fProxy; //! Cached pointer to reference proxy
26  TBranch* fBranch; //! Cached pointer to branch object
27 public:
28  // Initializing constructor
29  TFormLeafInfoReference(TClass* classptr, TStreamerElement* element, int off);
30  // Copy constructor
31  TFormLeafInfoReference(const TFormLeafInfoReference& orig);
32  // Default destructor
33  virtual ~TFormLeafInfoReference();
34  // Exception safe swap.
35  void Swap(TFormLeafInfoReference &other);
36  // Exception safe assignment operator.
37  TFormLeafInfoReference &operator=(const TFormLeafInfoReference &orig);
38  // Virtual copy constructor
39  virtual TFormLeafInfo* DeepCopy() const;
40 
41  // Access to the info's proxy
42  Proxy* GetProxy() const { return fProxy; }
43  // Access to the info's connected branch
44  TBranch* GetBranch() const { return fBranch; }
45  // Access to the info's connected branch
46  void SetBranch(TBranch* branch)
47  { fBranch = branch; if ( fNext ) fNext->SetBranch(branch); }
48  // Access to the offset of the data
49  virtual Int_t GetOffset() const { return fOffset; }
50  // Return true only if the underlying data is an integral value
51  virtual Bool_t IsInteger() const { return kFALSE; }
52  // Return true only if the underlying data is a string
53  virtual Bool_t IsString() const { return kFALSE; }
54  // Return true only if the underlying data is a reference
55  virtual Bool_t IsReference() const { return kTRUE; }
56  // Access to target class pointer (if available)
57  virtual TClass* GetClass() const;
58  // Access to the value class of the reference proxy
59  virtual TClass* GetValueClass(TLeaf* from);
60  // Access to the value class from the object pointer
61  virtual TClass* GetValueClass(void* from);
62  // Return the address of the local value
63  virtual void *GetLocalValuePointer( TLeaf *from, Int_t instance = 0);
64  // Return the address of the local value
65  virtual void *GetLocalValuePointer(char *from, Int_t instance = 0);
66  // Return true if any of underlying data has a array size counter
67  virtual Bool_t HasCounter() const;
68  // Return the size of the underlying array for the current entry in the TTree.
69  virtual Int_t ReadCounterValue(char *where);
70  // Return the current size of the array container
71  virtual Int_t GetCounterValue(TLeaf* leaf);
72 
73  // Access value of referenced object (macro from TFormLeafInfo.g)
74  DECLARE_GETVAL;
75  // Read value of referenced object
76  DECLARE_READVAL;
77  // TFormLeafInfo overload: Update (and propagate) cached information
78  virtual Bool_t Update();
79 };
80 #endif /* ROOT_TFormLeafInfoReference */