Main Page   Namespace List   Class Hierarchy   Compound List   File List   Namespace Members   Compound Members   File Members  

NTupleImplementation.h

Go to the documentation of this file.
00001 //====================================================================
00002 //  NTupleImp namespace definition
00003 //--------------------------------------------------------------------
00004 //
00005 //  Package    : Gaudi/NTupleSvc ( The LHCb Offline System)
00006 //  Author     : M.Frank
00007 //
00008 //  This header file is not intended to be included by the public!
00009 //  It's only used for the ntuple service 
00010 //
00011 //  +---------+----------------------------------------------+--------+
00012 //  |    Date |                 Comment                      | Who    |
00013 //  +---------+----------------------------------------------+--------+
00014 //  | 21/10/99| Initial version.                             | MF     |
00015 //  +---------+----------------------------------------------+--------+
00016 //====================================================================
00017 #ifndef GAUDI_NTUPLESVC_NTUPLEIMP_H
00018 #define GAUDI_NTUPLESVC_NTUPLEIMP_H 1
00019 
00020 // STL include files
00021 #include <vector>
00022 
00023 // Framework include files
00024 #include "NTuple.h"
00025 
00026 // Forward declarations
00027 class IDataProviderSvc;
00028 class IConversionSvc;
00029 
00030 namespace NTuple   {
00031   // Concrete N tuple class definition
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   };  // end class definition: Tuple
00109 
00110 
00111   // Concrete column wise N tuple class definition
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   };  // end class definition: ColumnWiseTuple
00129 
00130   // Concrete column wise N tuple class definition
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   };  // end class definition: RowWiseTuple
00148 };   // end name space NTuple
00149 
00150 #endif  // GAUDI_NTUPLESVC_NTUPLEIMP_H

Generated at Wed Nov 21 12:22:04 2001 by doxygen1.2.3 written by Dimitri van Heesch, © 1997-2000