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

NTupleImplementation.cpp

Go to the documentation of this file.
00001 // $Header: /nfs/slac/g/glast/ground/cvs/GaudiKernel/src/Lib/NTupleImplementation.cpp,v 1.1.1.1 2001/04/18 18:14:18 tlindner Exp $
00002 //====================================================================
00003 //  NTuple class implementation
00004 //--------------------------------------------------------------------
00005 //
00006 //  Package    : Gaudi/NTupleSvc ( The LHCb Offline System)
00007 //  Author     : M.Frank
00008 //
00009 //  +---------+----------------------------------------------+--------+
00010 //  |    Date |                 Comment                      | Who    |
00011 //  +---------+----------------------------------------------+--------+
00012 //  | 21/10/99| Initial version.                             | MF     |
00013 //  +---------+----------------------------------------------+--------+
00014 //====================================================================
00015 #define GAUDI_NTUPLEIMP_CPP 1
00016 
00017 // Framework include files
00018 #include "GaudiKernel/ISelectStatement.h"
00019 #include "GaudiKernel/NTupleImplementation.h"
00020 
00021 /*
00022 */
00023 namespace NTuple   {
00025   TupleImp::TupleImp ( const std::string& title )
00026   : m_isBooked(false),
00027     m_title(title),
00028     m_pSelector(0),
00029     m_buffer(0),
00030     m_cnvSvc(0)
00031   {
00032   }
00033 
00035   TupleImp::~TupleImp ()   {
00036     for ( ItemContainer::iterator i = m_items.begin(); i != m_items.end(); i++ )  {
00037       (*i)->release();
00038     }
00039     m_items.erase(m_items.begin(), m_items.end());
00040     if ( m_buffer ) delete m_buffer;
00041     m_buffer = 0;
00042   }
00043 
00045   StatusCode TupleImp::attachSelector(ISelectStatement* sel)  {
00046     if ( 0 != sel         ) sel->addRef();
00047     if ( 0 != m_pSelector ) m_pSelector->release();
00048     m_pSelector = sel;
00049     return StatusCode::SUCCESS;
00050   }
00051 
00053   ISelectStatement* TupleImp::selector()   {
00054     return m_pSelector;
00055   }
00056 
00058   void TupleImp::reset ( )   {
00059     for ( ItemContainer::iterator i = m_items.begin(); i != m_items.end(); i++ )  {
00060       (*i)->reset();
00061     }
00062   }
00063 
00065   INTupleItem* TupleImp::i_find ( const std::string& name )  const   {
00066     for ( ItemContainer::const_iterator i = m_items.begin(); i != m_items.end(); i++ )  {
00067       if ( name == (*i)->name() )   {
00068         INTupleItem* it = const_cast<INTupleItem*>(*i);
00069         return it;
00070       }
00071     }
00072     return 0;
00073   }
00074 
00076   StatusCode TupleImp::add(INTupleItem* item)   {
00077     if ( 0 != item )    {
00078       INTupleItem* i = i_find(item->name());
00079       if ( 0 == i )   {
00080         m_items.push_back( item );
00081         return StatusCode::SUCCESS;
00082       }
00083     }
00084     return StatusCode::FAILURE;
00085   }
00086 
00088   StatusCode TupleImp::remove ( const std::string& name )    {
00089     INTupleItem* i = i_find(name);
00090     return (i == 0) ?  StatusCode::FAILURE : remove(i).getCode();
00091   }
00092 
00094   StatusCode TupleImp::remove ( INTupleItem* item )    {
00095     for ( ItemContainer::iterator i = m_items.begin(); i != m_items.end(); i++ )  {
00096       if ( (*i) == item )   {
00097         m_items.erase(i);
00098         item->release();
00099         return StatusCode::SUCCESS;
00100       }
00101     }
00102     return StatusCode::FAILURE;
00103   }
00105   void TupleImp::setBuffer(char* buff)  {
00106     if ( 0 != m_buffer ) delete m_buffer;
00107     m_buffer = buff;
00108   }
00109 };    // end namespace NTuple

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