Gaudi Framework, version v23r0 |
Home | Generated: Mon Jan 30 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 () ; }