00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #ifndef GAUDI_NTUPLESVC_NTUPLEIMP_H
00018 #define GAUDI_NTUPLESVC_NTUPLEIMP_H 1
00019
00020
00021 #include <vector>
00022
00023
00024 #include "NTuple.h"
00025
00026
00027 class IDataProviderSvc;
00028 class IConversionSvc;
00029
00030 namespace NTuple {
00031
00032 class TupleImp : public Tuple {
00033 protected:
00035 ItemContainer m_items;
00037 bool m_isBooked;
00039 std::string m_title;
00041 ISelectStatement* m_pSelector;
00043 char* m_buffer;
00045 IConversionSvc* m_cnvSvc;
00046 private:
00048 TupleImp(const TupleImp&) : Tuple() {}
00049
00050 protected:
00052 virtual INTupleItem* i_find(const std::string& name) const;
00053 public:
00055 TupleImp( const std::string& title);
00057 virtual ~TupleImp();
00059 ItemContainer& items() {
00060 return m_items;
00061 }
00063 const ItemContainer& items() const {
00064 return m_items;
00065 }
00067 virtual const std::string& title() const {
00068 return m_title;
00069 }
00071 virtual const INTupleItem* find(const std::string& name) const {
00072 return i_find(name);
00073 }
00075 virtual INTupleItem* find(const std::string& name) {
00076 return i_find(name);
00077 }
00079 char* buffer() {
00080 return m_buffer;
00081 }
00083 const char* buffer() const {
00084 return m_buffer;
00085 }
00087 IConversionSvc* conversionSvc() const {
00088 return m_cnvSvc;
00089 }
00091 void setConversionSvc( IConversionSvc* svc ) {
00092 m_cnvSvc = svc;
00093 }
00095 virtual StatusCode attachSelector(ISelectStatement* sel);
00097 virtual ISelectStatement* selector();
00099 virtual void setBuffer(char* buff);
00101 virtual void reset();
00103 virtual StatusCode add(INTupleItem* item);
00105 virtual StatusCode remove(INTupleItem* item);
00107 virtual StatusCode remove(const std::string& name);
00108 };
00109
00110
00111
00112 class ColumnWiseTuple : public TupleImp {
00113 public:
00115 ColumnWiseTuple(const std::string& title ) : TupleImp(title) {
00116 }
00118 virtual ~ColumnWiseTuple() {
00119 }
00121 virtual const CLID& clID() const {
00122 return ColumnWiseTuple::classID();
00123 }
00125 static const CLID& classID() {
00126 return CLID_ColumnWiseTuple;
00127 }
00128 };
00129
00130
00131 class RowWiseTuple : public TupleImp {
00132 public:
00134 RowWiseTuple( const std::string& title ) : TupleImp(title) {
00135 }
00137 virtual ~RowWiseTuple() {
00138 }
00140 virtual const CLID& clID() const {
00141 return RowWiseTuple::classID();
00142 }
00144 static const CLID& classID() {
00145 return CLID_RowWiseTuple;
00146 }
00147 };
00148 };
00149
00150 #endif // GAUDI_NTUPLESVC_NTUPLEIMP_H