1 // @(#)root/table:$Id$
2 // Author: Valery Fine 09/08/99 (E-mail: fine@bnl.gov)
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_TTableDescriptor
13 #define ROOT_TTableDescriptor
14
(1) Event include_recursion: |
#include file "/afs/rhic.bnl.gov/star/ROOT/5.34.30/.sl64_gcc482/root/include/TTable.h" includes itself: TTable.h -> TTableDescriptor.h -> TTable.h (other events go to each file) |
(2) Event primary_file: |
During compilation of file '/home/tmp/genevb/COVA/.sl64_gcc482/OBJ/StRoot/St_base/St_Module.cxx' |
(3) Event caretline: |
^ |
Also see events: |
[include_recursion] |
15 #include "TTable.h"
16 #include "tableDescriptor.h"
17
18 class TClass;
19 //______________________________________________________________________________
20 //
21 // TTableDescriptor - run-time descriptor of the TTable object rows.
22 //______________________________________________________________________________
23
24
25 class TTableDescriptor : public TTable {
26 private:
27 TTableDescriptor &operator=(const TTableDescriptor &dsc); // Intentionally not implemented.
28 protected:
29 friend class TTable;
30 TClass *fRowClass; // TClass defining
31 // the table row C-structure
32 TTableDescriptor *fSecondDescriptor; // shadow descriptor
33 // to back TTable::Streamer
34 static TString fgCommentsName; // The name of dataset to keep the comments fields
35 virtual void Init(TClass *classPtr);
36 static void SetCommentsSetName(const char *name=".comments");
37
38 public:
39
40 TTableDescriptor(const TTable *parentTable);
41 TTableDescriptor(TClass *classPtr);
42 TTableDescriptor(const TTableDescriptor &dsc):TTable(dsc),fRowClass(dsc.fRowClass),fSecondDescriptor(0){}
43 virtual ~TTableDescriptor();
44 virtual Int_t AddAt(const void *c);
45 virtual void AddAt(const void *c, Int_t i);
46 virtual void AddAt(const tableDescriptor_st &element, const char *comment,Int_t indx);
47 virtual void AddAt(TDataSet *dataset,Int_t idx=0);
48 TString CreateLeafList() const;
49 void LearnTable(const TTable *parentTable);
50 void LearnTable(TClass *classPtr);
51 const Char_t *ColumnName(Int_t columnIndex) const;
52 Int_t ColumnByName(const Char_t *columnName=0) const;
53 UInt_t NumberOfColumns() const;
54 const UInt_t *IndexArray(Int_t columnIndex) const;
55 UInt_t Offset(Int_t columnIndex) const;
56 Int_t Offset(const Char_t *columnName=0) const;
57 UInt_t ColumnSize(Int_t columnIndex) const;
58 Int_t ColumnSize(const Char_t *columnName=0) const;
59 UInt_t TypeSize(Int_t columnIndex) const;
60 Int_t TypeSize(const Char_t *columnName=0) const;
61 UInt_t Dimensions(Int_t columnIndex) const;
62 Int_t Dimensions(const Char_t *columnName=0) const;
63 TTable::EColumnType ColumnType(Int_t columnIndex) const;
64 TTable::EColumnType ColumnType(const Char_t *columnName=0) const;
65 TClass *RowClass() const;
66 void SetOffset(UInt_t offset,Int_t column);
67 void SetSize(UInt_t size,Int_t column);
68 void SetTypeSize(UInt_t size,Int_t column);
69 void SetDimensions(UInt_t dim,Int_t column);
70 Int_t Sizeof() const;
71 void SetColumnType(TTable::EColumnType type,Int_t column);
72 virtual Int_t UpdateOffsets(const TTableDescriptor *newDesciptor);
73
74 static TTableDescriptor *MakeDescriptor(const char *structName);
75 TDataSet *MakeCommentField(Bool_t createFlag=kTRUE);
76
77 // ClassDefTable(TTableDescriptor,tableDescriptor_st)
78 protected:
79 static TTableDescriptor *fgColDescriptors;
80 virtual TTableDescriptor *GetDescriptorPointer() const;
81 virtual void SetDescriptorPointer(TTableDescriptor *list);
82 public:
83 typedef tableDescriptor_st* iterator;
84 TTableDescriptor() : TTable("TTableDescriptor",sizeof(tableDescriptor_st)), fRowClass(0), fSecondDescriptor(0) {SetType("tableDescriptor_st");}
85 TTableDescriptor(const char *name) : TTable(name,sizeof(tableDescriptor_st)), fRowClass(0), fSecondDescriptor(0) {SetType("tableDescriptor_st");}
86 TTableDescriptor(Int_t n) : TTable("TTableDescriptor",n,sizeof(tableDescriptor_st)), fRowClass(0), fSecondDescriptor(0) {SetType("tableDescriptor_st");}
87 TTableDescriptor(const char *name,Int_t n) : TTable(name,n,sizeof(tableDescriptor_st)), fRowClass(0), fSecondDescriptor(0) {SetType("tableDescriptor_st");}
88 tableDescriptor_st *GetTable(Int_t i=0) const { return ((tableDescriptor_st *)GetArray())+i;}
89 tableDescriptor_st &operator[](Int_t i){ assert(i>=0 && i < GetNRows()); return *GetTable(i); }
90 const tableDescriptor_st &operator[](Int_t i) const { assert(i>=0 && i < GetNRows()); return *((const tableDescriptor_st *)(GetTable(i))); }
91 tableDescriptor_st *begin() const { return GetNRows()? GetTable(0):0;}
92 tableDescriptor_st *end() const {Long_t i = GetNRows(); return i? GetTable(i):0;}
93 static const char *TableDictionary();
94 ClassDef(TTableDescriptor,0) // descrpitor defining the internal layout of TTable objects
95 };
96
97 //______________________________________________________________________________
98 // inline TTableDescriptor(const TTableDescriptor &dsc) : TTable(dsc), fRowClass(dsc.fRowClass),fSecondDescriptor(0){}
99 inline const Char_t *TTableDescriptor::ColumnName(Int_t column)const {return ((tableDescriptor_st *)At(column))->fColumnName;}
100 inline UInt_t TTableDescriptor::Offset(Int_t column) const {return ((tableDescriptor_st *)At(column))->fOffset; }
101 inline const UInt_t *TTableDescriptor::IndexArray(Int_t column)const {return ((tableDescriptor_st *)At(column))->fIndexArray;}
102 inline UInt_t TTableDescriptor::NumberOfColumns() const {return GetNRows(); }
103 inline UInt_t TTableDescriptor::ColumnSize(Int_t column) const {return ((tableDescriptor_st *)At(column))->fSize; }
104 inline UInt_t TTableDescriptor::TypeSize(Int_t column) const {return ((tableDescriptor_st *)At(column))->fTypeSize; }
105 inline UInt_t TTableDescriptor::Dimensions(Int_t column) const {return ((tableDescriptor_st *)At(column))->fDimensions;}
106 inline TTable::EColumnType TTableDescriptor::ColumnType(Int_t column) const {return EColumnType(((tableDescriptor_st *)At(column))->fType);}
107 inline TClass *TTableDescriptor::RowClass() const { return fRowClass;}
108 inline void TTableDescriptor::SetOffset(UInt_t offset,Int_t column) {((tableDescriptor_st *)At(column))->fOffset = offset;}
109 inline void TTableDescriptor::SetSize(UInt_t size,Int_t column) {((tableDescriptor_st *)At(column))->fSize = size; }
110 inline void TTableDescriptor::SetTypeSize(UInt_t size,Int_t column) {((tableDescriptor_st *)At(column))->fTypeSize = size; }
111 inline void TTableDescriptor::SetDimensions(UInt_t dim,Int_t column) {((tableDescriptor_st *)At(column))->fDimensions = dim; }
112 inline void TTableDescriptor::SetColumnType(TTable::EColumnType type,Int_t column) {((tableDescriptor_st *)At(column))->fType = type; }
113
114 #endif
115