Logo ROOT   6.12/07
Reference Guide
TKey.h
Go to the documentation of this file.
1 // @(#)root/io
2 // Author: Rene Brun 28/12/94
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_TKey
13 #define ROOT_TKey
14 
15 #include "TNamed.h"
16 #include "TDatime.h"
17 #include "TBuffer.h"
18 #include "TClass.h"
19 
20 class TBrowser;
21 class TDirectory;
22 class TFile;
23 
24 class TKey : public TNamed {
25 
26 private:
27  enum EStatusBits {
29  };
30  TKey(const TKey&); // TKey objects are not copiable.
31  TKey& operator=(const TKey&); // TKey objects are not copiable.
32 
33 protected:
34  Int_t fVersion; ///< Key version identifier
35  Int_t fNbytes; ///< Number of bytes for the object on file
36  Int_t fObjlen; ///< Length of uncompressed object in bytes
37  TDatime fDatime; ///< Date/Time of insertion in file
38  Short_t fKeylen; ///< Number of bytes for the key itself
39  Short_t fCycle; ///< Cycle number
40  Long64_t fSeekKey; ///< Location of object on file
41  Long64_t fSeekPdir; ///< Location of parent directory on file
42  TString fClassName; ///< Object Class name
43  Int_t fLeft; ///< Number of bytes left in current segment
44  char *fBuffer; ///< Object buffer
45  TBuffer *fBufferRef; ///< Pointer to the TBuffer object
46  UShort_t fPidOffset; ///<!Offset to be added to the pid index in this key/buffer. This is actually saved in the high bits of fSeekPdir
47  TDirectory *fMotherDir; ///<!pointer to mother directory
48 
49  virtual Int_t Read(const char *name) { return TObject::Read(name); }
50  virtual void Create(Int_t nbytes, TFile* f = 0);
51  void Build(TDirectory* motherDir, const char* classname, Long64_t filepos);
52  virtual void Reset(); // Currently only for the use of TBasket.
53  virtual Int_t WriteFileKeepBuffer(TFile *f = 0);
54 
55 
56  public:
57  TKey();
58  TKey(TDirectory* motherDir);
59  TKey(TDirectory* motherDir, const TKey &orig, UShort_t pidOffset);
60  TKey(const char *name, const char *title, const TClass *cl, Int_t nbytes, TDirectory* motherDir);
61  TKey(const TString &name, const TString &title, const TClass *cl, Int_t nbytes, TDirectory* motherDir);
62  TKey(const TObject *obj, const char *name, Int_t bufsize, TDirectory* motherDir);
63  TKey(const void *obj, const TClass *cl, const char *name, Int_t bufsize, TDirectory* motherDir);
64  TKey(Long64_t pointer, Int_t nbytes, TDirectory* motherDir = 0);
65  virtual ~TKey();
66 
67  virtual void Browse(TBrowser *b);
68  virtual void Delete(Option_t *option="");
69  virtual void DeleteBuffer();
70  virtual void FillBuffer(char *&buffer);
71  virtual const char *GetClassName() const {return fClassName.Data();}
72  virtual const char *GetIconName() const;
73  virtual const char *GetTitle() const;
74  virtual char *GetBuffer() const {return fBuffer+fKeylen;}
75  TBuffer *GetBufferRef() const {return fBufferRef;}
76  Short_t GetCycle() const;
77  const TDatime &GetDatime() const {return fDatime;}
78  TFile *GetFile() const;
79  Short_t GetKeep() const;
80  Int_t GetKeylen() const {return fKeylen;}
81  TDirectory* GetMotherDir() const { return fMotherDir; }
82  Int_t GetNbytes() const {return fNbytes;}
83  Int_t GetObjlen() const {return fObjlen;}
84  Int_t GetVersion() const {return fVersion;}
85  virtual Long64_t GetSeekKey() const {return fSeekKey;}
86  virtual Long64_t GetSeekPdir() const {return fSeekPdir;}
87  virtual void IncrementPidOffset(UShort_t offset);
88  Bool_t IsFolder() const;
89  virtual void Keep();
90  virtual void ls(Option_t *option="") const;
91  virtual void Print(Option_t *option="") const;
92  virtual Int_t Read(TObject *obj);
93  virtual TObject *ReadObj();
94  virtual TObject *ReadObjWithBuffer(char *bufferRead);
95  /// To read an object (non deriving from TObject) from the file.
96  /// This is more user friendly version of TKey::ReadObjectAny.
97  /// See TKey::ReadObjectAny for more details.
98  template <typename T> T *ReadObject() {
99  return reinterpret_cast<T*>(ReadObjectAny(TClass::GetClass(typeid(T))));
100  }
101  virtual void *ReadObjectAny(const TClass *expectedClass);
102  virtual void ReadBuffer(char *&buffer);
103  void ReadKeyBuffer(char *&buffer);
104  virtual Bool_t ReadFile();
105  virtual void SetBuffer() { fBuffer = new char[fNbytes];}
106  virtual void SetParent(const TObject *parent);
107  void SetMotherDir(TDirectory* dir) { fMotherDir = dir; }
108  virtual Int_t Sizeof() const;
109  virtual Int_t WriteFile(Int_t cycle=1, TFile* f = 0);
110 
111  ClassDef(TKey,4); //Header description of a logical record on file.
112 };
113 
114 #endif
Int_t fVersion
Key version identifier.
Definition: TKey.h:34
T * ReadObject()
To read an object (non deriving from TObject) from the file.
Definition: TKey.h:98
Int_t fLeft
Number of bytes left in current segment.
Definition: TKey.h:43
virtual const char * GetIconName() const
Title can keep 32x32 xpm thumbnail/icon of the parent object.
Definition: TKey.cxx:1509
long long Long64_t
Definition: RtypesCore.h:69
const char Option_t
Definition: RtypesCore.h:62
double T(double x)
Definition: ChebyshevPol.h:34
UShort_t fPidOffset
!Offset to be added to the pid index in this key/buffer. This is actually saved in the high bits of f...
Definition: TKey.h:46
virtual char * GetBuffer() const
Definition: TKey.h:74
unsigned short UShort_t
Definition: RtypesCore.h:36
virtual const char * GetClassName() const
Definition: TKey.h:71
#define BIT(n)
Definition: Rtypes.h:78
A ROOT file is a suite of consecutive data records (TKey instances) with a well defined format...
Definition: TFile.h:46
virtual void * ReadObjectAny(const TClass *expectedClass)
To read an object (non deriving from TObject) from the file.
Definition: TKey.cxx:1000
Buffer base class used for serializing objects.
Definition: TBuffer.h:40
TKey()
TKey default constructor.
Definition: TKey.cxx:92
virtual void Browse(TBrowser *b)
Read object from disk and call its Browse() method.
Definition: TKey.cxx:426
void Build(TDirectory *motherDir, const char *classname, Long64_t filepos)
Method used in all TKey constructor to initialize basic data fields.
Definition: TKey.cxx:391
Basic string class.
Definition: TString.h:125
int Int_t
Definition: RtypesCore.h:41
bool Bool_t
Definition: RtypesCore.h:59
char * fBuffer
Object buffer.
Definition: TKey.h:44
virtual void FillBuffer(char *&buffer)
Encode key header into output buffer.
Definition: TKey.cxx:588
TDirectory * GetMotherDir() const
Definition: TKey.h:81
TDirectory * fMotherDir
!pointer to mother directory
Definition: TKey.h:47
TBuffer * GetBufferRef() const
Definition: TKey.h:75
virtual Int_t Sizeof() const
Return the size in bytes of the key header structure.
Definition: TKey.cxx:1324
virtual void ls(Option_t *option="") const
List Key contents.
Definition: TKey.cxx:677
#define ClassDef(name, id)
Definition: Rtypes.h:320
Long64_t fSeekPdir
Location of parent directory on file.
Definition: TKey.h:41
virtual void Print(Option_t *option="") const
Print key contents.
Definition: TKey.cxx:686
The TNamed class is the base class for all named ROOT classes.
Definition: TNamed.h:29
Short_t GetKeep() const
Returns the "KEEP" status.
Definition: TKey.cxx:580
virtual Int_t WriteFile(Int_t cycle=1, TFile *f=0)
Write the encoded object supported by this key.
Definition: TKey.cxx:1435
Short_t fKeylen
Number of bytes for the key itself.
Definition: TKey.h:38
TString fClassName
Object Class name.
Definition: TKey.h:42
virtual ~TKey()
TKey default destructor.
Definition: TKey.cxx:520
virtual Int_t Read(const char *name)
Read contents of object with specified name from the current directory.
Definition: TObject.cxx:562
Book space in a file, create I/O buffers, to fill them, (un)compress them.
Definition: TKey.h:24
virtual void Delete(Option_t *option="")
Delete an object from the file.
Definition: TKey.cxx:534
TDatime fDatime
Date/Time of insertion in file.
Definition: TKey.h:37
virtual Int_t WriteFileKeepBuffer(TFile *f=0)
Write the encoded object supported by this key.
Definition: TKey.cxx:1476
Int_t GetObjlen() const
Definition: TKey.h:83
Using a TBrowser one can browse all ROOT objects.
Definition: TBrowser.h:37
virtual void IncrementPidOffset(UShort_t offset)
Increment fPidOffset by &#39;offset&#39;.
Definition: TKey.cxx:634
virtual void Keep()
Set the "KEEP" status.
Definition: TKey.cxx:669
virtual void ReadBuffer(char *&buffer)
Decode input buffer.
Definition: TKey.cxx:1198
TFile * GetFile() const
Returns file to which key belong.
Definition: TKey.cxx:572
virtual Bool_t ReadFile()
Read the key structure from the file.
Definition: TKey.cxx:1253
virtual Long64_t GetSeekPdir() const
Definition: TKey.h:86
short Short_t
Definition: RtypesCore.h:35
The ROOT global object gROOT contains a list of all defined classes.
Definition: TClass.h:75
virtual void Reset()
Reset the key as it had not been &#39;filled&#39; yet.
Definition: TKey.cxx:1290
virtual TObject * ReadObjWithBuffer(char *bufferRead)
To read a TObject* from bufferRead.
Definition: TKey.cxx:864
TBuffer * fBufferRef
Pointer to the TBuffer object.
Definition: TKey.h:45
virtual void SetParent(const TObject *parent)
Set parent in key buffer.
Definition: TKey.cxx:1282
Long64_t fSeekKey
Location of object on file.
Definition: TKey.h:40
void SetMotherDir(TDirectory *dir)
Definition: TKey.h:107
void ReadKeyBuffer(char *&buffer)
Decode input buffer.
Definition: TKey.cxx:1210
Short_t fCycle
Cycle number.
Definition: TKey.h:39
virtual Long64_t GetSeekKey() const
Definition: TKey.h:85
Describe directory structure in memory.
Definition: TDirectory.h:34
virtual const char * GetTitle() const
Returns title (title can contain 32x32 xpm thumbnail/icon).
Definition: TKey.cxx:1517
EStatusBits
Definition: TObject.h:57
Int_t GetNbytes() const
Definition: TKey.h:82
Int_t GetVersion() const
Definition: TKey.h:84
static TClass * GetClass(const char *name, Bool_t load=kTRUE, Bool_t silent=kFALSE)
Static method returning pointer to TClass of the specified class name.
Definition: TClass.cxx:2887
Int_t GetKeylen() const
Definition: TKey.h:80
Int_t fObjlen
Length of uncompressed object in bytes.
Definition: TKey.h:36
Mother of all ROOT objects.
Definition: TObject.h:37
virtual void Create(Int_t nbytes, TFile *f=0)
Create a TKey object of specified size.
Definition: TKey.cxx:458
virtual TObject * ReadObj()
To read a TObject* from the file.
Definition: TKey.cxx:722
virtual void DeleteBuffer()
Delete key buffer(s).
Definition: TKey.cxx:546
virtual void SetBuffer()
Definition: TKey.h:105
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
Int_t fNbytes
Number of bytes for the object on file.
Definition: TKey.h:35
const TDatime & GetDatime() const
Definition: TKey.h:77
virtual Int_t Read(const char *name)
Read contents of object with specified name from the current directory.
Definition: TKey.h:49
Short_t GetCycle() const
Return cycle number associated to this key.
Definition: TKey.cxx:564
Bool_t IsFolder() const
Check if object referenced by the key is a folder.
Definition: TKey.cxx:648
char name[80]
Definition: TGX11.cxx:109
TKey & operator=(const TKey &)
This class stores the date and time with a precision of one second in an unsigned 32 bit word (950130...
Definition: TDatime.h:37
const char * Data() const
Definition: TString.h:345