|
Gaudi Framework, version v23r2 |
| Home | Generated: Thu Jun 28 2012 |
the template specialization for ranges More...
#include <GetData.h>
Public Types | |
| typedef Gaudi::Range_ < std::vector< const TYPE * > > | Type |
| the actual return type | |
| typedef _GetType< Type > ::return_type | return_type |
Public Member Functions | |
| template<class COMMON > | |
| return_type | operator() (const COMMON &common, IDataProviderSvc *service, const std::string &location) const |
| the only one essential method | |
| return_type | make_range (const typename TYPE::Container *cnt) const |
| return_type | make_range (const typename TYPE::Selection *cnt) const |
| DataObject * | getData (IDataProviderSvc *service, const std::string &location) const |
| get the data form transient store | |
Private Member Functions | |
| template<class ITERATOR > | |
| return_type | make_range (ITERATOR first, ITERATOR last) const |
the template specialization for ranges
Definition at line 108 of file GetData.h.
| typedef _GetType<Type>::return_type Gaudi::Utils::GetData< Gaudi::Range_< std::vector< const TYPE * > > >::return_type |
| typedef Gaudi::Range_<std::vector<const TYPE*> > Gaudi::Utils::GetData< Gaudi::Range_< std::vector< const TYPE * > > >::Type |
| DataObject* Gaudi::Utils::GetData< Gaudi::Range_< std::vector< const TYPE * > > >::getData | ( | IDataProviderSvc * | service, |
| const std::string & | location | ||
| ) | const [inline] |
get the data form transient store
| service | pointer to data provider service |
| location | the location |
Try to be efficient
Definition at line 182 of file GetData.h.
{
SmartDataObjectPtr getter
( SmartDataObjectPtr::ObjectLoader::access() ,
service , 0 , location ) ;
return getter.accessData () ;
}
| return_type Gaudi::Utils::GetData< Gaudi::Range_< std::vector< const TYPE * > > >::make_range | ( | ITERATOR | first, |
| ITERATOR | last | ||
| ) | const [inline, private] |
Definition at line 196 of file GetData.h.
{
typename return_type::const_iterator* _begin = reinterpret_cast<typename return_type::const_iterator*>(&first);
typename return_type::const_iterator* _end = reinterpret_cast<typename return_type::const_iterator*>(&last);
return return_type(*_begin, *_end);
}
| return_type Gaudi::Utils::GetData< Gaudi::Range_< std::vector< const TYPE * > > >::make_range | ( | const typename TYPE::Container * | cnt ) | const [inline] |
Definition at line 171 of file GetData.h.
{ return 0 == cnt ? return_type() : make_range ( cnt->begin() , cnt->end() ) ; }
| return_type Gaudi::Utils::GetData< Gaudi::Range_< std::vector< const TYPE * > > >::make_range | ( | const typename TYPE::Selection * | cnt ) | const [inline] |
Definition at line 174 of file GetData.h.
{ return 0 == cnt ? return_type() : return_type ( cnt->begin() , cnt->end() ) ; }
| return_type Gaudi::Utils::GetData< Gaudi::Range_< std::vector< const TYPE * > > >::operator() | ( | const COMMON & | common, |
| IDataProviderSvc * | service, | ||
| const std::string & | location | ||
| ) | const [inline] |
the only one essential method
| common | the actual "worker" |
| service | pointer to Data Provider Service |
| location | location of objects in TES |
try to be efficient: 1. load object only once:
2. try to get the selection
3. try to get the container
Definition at line 126 of file GetData.h.
{
DataObject* object = this -> getData ( service , location ) ;
if ( 0 != object )
{
typedef typename TYPE::Selection Selection_;
const Selection_* sel = dynamic_cast<Selection_*> ( object ) ;
if ( 0 != sel )
{
if ( common.msgLevel ( MSG::DEBUG ) )
{ common.debug() << "The object of type '"
<< System::typeinfoName(typeid(*object))
<< "' has been retrieved from TS at address '"
<< location << "'" << endmsg ; }
return make_range ( sel ) ;
}
typedef typename TYPE::Container Container_ ;
const Container_* cnt = dynamic_cast<Container_*> ( object ) ;
if ( 0 != cnt )
{
if ( common.msgLevel ( MSG::DEBUG ) )
{ common.debug() << "The object of type '"
<< System::typeinfoName(typeid(*object))
<< "' has been retrieved from TS at address '"
<< location << "'" << endmsg ; }
return make_range ( cnt ) ;
}
// no valid data
common.Assert ( false , "get():: No valid data at '" + location + "'" ) ;
}
// no valid data
common.Assert ( false , "get():: No data at '" + location + "'" ) ;
// the fictive return
return return_type () ;
}