Gaudi::Utils::GetData< Gaudi::Range_< std::vector< const TYPE * > > > Struct Template Reference

the template specialization for ranges More...

#include </scratch/z5/marcocle/GaudiDocs/lhcb-release/996/GAUDI/GAUDI_v26r4/InstallArea/x86_64-slc6-gcc48-opt/include/GaudiAlg/GetData.h>

Public Types

typedef Gaudi::Range_< std::vector< const TYPE * > > Type
 the actual return type More...
 
typedef _GetType< Type >::return_type return_type
 
typedef Gaudi::Range_< std::vector< const TYPE * > > Type
 the actual return type More...
 
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 bool checkData=true) const
 the only one essential method More...
 
return_type make_range (const typename TYPE::Container *cnt) const
 
return_type make_range (const typename TYPE::Selection *cnt) const
 
DataObjectgetData (IDataProviderSvc *service, const std::string &location) const
 get the data form transient store More...
 
template<class COMMON >
return_type operator() (const COMMON &common, IDataProviderSvc *service, const std::string &location, const bool checkData=true) const
 the only one essential method More...
 
return_type make_range (const typename TYPE::Container *cnt) const
 
return_type make_range (const typename TYPE::Selection *cnt) const
 
DataObjectgetData (IDataProviderSvc *service, const std::string &location) const
 get the data form transient store More...
 

Private Member Functions

template<class ITERATOR >
return_type make_range (ITERATOR first, ITERATOR last) const
 
template<class ITERATOR >
return_type make_range (ITERATOR first, ITERATOR last) const
 

Detailed Description

template<class TYPE>
struct Gaudi::Utils::GetData< Gaudi::Range_< std::vector< const TYPE * > > >

the template specialization for ranges

Definition at line 125 of file GetData.h.

Member Typedef Documentation

template<class TYPE >
typedef _GetType<Type>::return_type Gaudi::Utils::GetData< Gaudi::Range_< std::vector< const TYPE * > > >::return_type

Definition at line 131 of file GetData.h.

template<class TYPE >
typedef _GetType<Type>::return_type Gaudi::Utils::GetData< Gaudi::Range_< std::vector< const TYPE * > > >::return_type

Definition at line 131 of file GetData.h.

template<class TYPE >
typedef Gaudi::Range_<std::vector<const TYPE*> > Gaudi::Utils::GetData< Gaudi::Range_< std::vector< const TYPE * > > >::Type

the actual return type

Definition at line 130 of file GetData.h.

template<class TYPE >
typedef Gaudi::Range_<std::vector<const TYPE*> > Gaudi::Utils::GetData< Gaudi::Range_< std::vector< const TYPE * > > >::Type

the actual return type

Definition at line 130 of file GetData.h.

Member Function Documentation

template<class 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

Parameters
servicepointer to data provider service
locationthe location
Returns
the object for TES

Try to be efficient

Definition at line 203 of file GetData.h.

205  {
207  SmartDataObjectPtr getter
209  service , nullptr , location ) ;
210  return getter.accessData () ;
211  }
A small class used to access easily (and efficiently) data items residing in data stores...
template<class 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

Parameters
servicepointer to data provider service
locationthe location
Returns
the object for TES

Try to be efficient

Definition at line 203 of file GetData.h.

205  {
207  SmartDataObjectPtr getter
209  service , nullptr , location ) ;
210  return getter.accessData () ;
211  }
A small class used to access easily (and efficiently) data items residing in data stores...
template<class TYPE >
return_type Gaudi::Utils::GetData< Gaudi::Range_< std::vector< const TYPE * > > >::make_range ( const typename TYPE::Container *  cnt) const
inline

Definition at line 192 of file GetData.h.

193  { return 0 == cnt ? return_type() : make_range ( cnt->begin() , cnt->end() ) ; }
auto begin(reverse_wrapper< T > &w)
Definition: reverse.h:45
return_type make_range(const typename TYPE::Container *cnt) const
Definition: GetData.h:192
auto end(reverse_wrapper< T > &w)
Definition: reverse.h:47
template<class TYPE >
return_type Gaudi::Utils::GetData< Gaudi::Range_< std::vector< const TYPE * > > >::make_range ( const typename TYPE::Container *  cnt) const
inline

Definition at line 192 of file GetData.h.

193  { return 0 == cnt ? return_type() : make_range ( cnt->begin() , cnt->end() ) ; }
auto begin(reverse_wrapper< T > &w)
Definition: reverse.h:45
return_type make_range(const typename TYPE::Container *cnt) const
Definition: GetData.h:192
auto end(reverse_wrapper< T > &w)
Definition: reverse.h:47
template<class TYPE >
return_type Gaudi::Utils::GetData< Gaudi::Range_< std::vector< const TYPE * > > >::make_range ( const typename TYPE::Selection *  cnt) const
inline

Definition at line 195 of file GetData.h.

196  { return 0 == cnt ? return_type() : return_type ( cnt->begin() , cnt->end() ) ; }
auto begin(reverse_wrapper< T > &w)
Definition: reverse.h:45
auto end(reverse_wrapper< T > &w)
Definition: reverse.h:47
template<class TYPE >
return_type Gaudi::Utils::GetData< Gaudi::Range_< std::vector< const TYPE * > > >::make_range ( const typename TYPE::Selection *  cnt) const
inline

Definition at line 195 of file GetData.h.

196  { return 0 == cnt ? return_type() : return_type ( cnt->begin() , cnt->end() ) ; }
auto begin(reverse_wrapper< T > &w)
Definition: reverse.h:45
auto end(reverse_wrapper< T > &w)
Definition: reverse.h:47
template<class TYPE >
template<class ITERATOR >
return_type Gaudi::Utils::GetData< Gaudi::Range_< std::vector< const TYPE * > > >::make_range ( ITERATOR  first,
ITERATOR  last 
) const
inlineprivate

Definition at line 217 of file GetData.h.

219  {
220  auto _begin = reinterpret_cast<typename return_type::const_iterator*>(&first);
221  auto _end = reinterpret_cast<typename return_type::const_iterator*>(&last);
222  return return_type(*_begin, *_end);
223  }
template<class TYPE >
template<class ITERATOR >
return_type Gaudi::Utils::GetData< Gaudi::Range_< std::vector< const TYPE * > > >::make_range ( ITERATOR  first,
ITERATOR  last 
) const
inlineprivate

Definition at line 217 of file GetData.h.

219  {
220  auto _begin = reinterpret_cast<typename return_type::const_iterator*>(&first);
221  auto _end = reinterpret_cast<typename return_type::const_iterator*>(&last);
222  return return_type(*_begin, *_end);
223  }
template<class TYPE >
template<class COMMON >
return_type Gaudi::Utils::GetData< Gaudi::Range_< std::vector< const TYPE * > > >::operator() ( const COMMON &  common,
IDataProviderSvc service,
const std::string &  location,
const bool  checkData = true 
) const
inline

the only one essential method

Parameters
commonthe actual "worker"
servicepointer to Data Provider Service
locationlocation of objects in TES
checkDatawhether to check if the pointer is valid before returning it
Returns
the data

try to be efficient:

  1. load object only once:
  2. try to get the selection
  3. try to get the container

Definition at line 144 of file GetData.h.

148  {
151  DataObject* object = this -> getData ( service , location ) ;
152  if ( object )
153  {
155  typedef typename TYPE::Selection Selection_;
156  const Selection_* sel = dynamic_cast<Selection_*> ( object ) ;
157  if ( sel )
158  {
159  if ( common.msgLevel ( MSG::DEBUG ) )
160  { common.debug() << "The object of type '"
161  << System::typeinfoName(typeid(*object))
162  << "' has been retrieved from TS at address '"
163  << location << "'" << endmsg ; }
164  return make_range ( sel ) ;
165  }
167  typedef typename TYPE::Container Container_ ;
168  const Container_* cnt = dynamic_cast<Container_*> ( object ) ;
169  if ( cnt )
170  {
171  if ( common.msgLevel ( MSG::DEBUG ) )
172  { common.debug() << "The object of type '"
173  << System::typeinfoName(typeid(*object))
174  << "' has been retrieved from TS at address '"
175  << location << "'" << endmsg ; }
176  return make_range ( cnt ) ;
177  }
178  // no valid data
179  if (checkData)
180  common.Assert ( false , "get():: No valid data at '" + location + "'" ) ;
181  }
182  // no valid data
183  if (checkData)
184  common.Assert ( false , "get():: No data at '" + location + "'" ) ;
185  // the fictive return
186  return return_type () ;
187  }
MsgStream & endmsg(MsgStream &s)
MsgStream Modifier: endmsg. Calls the output method of the MsgStream.
Definition: MsgStream.h:244
DataObject * getData(IDataProviderSvc *service, const std::string &location) const
get the data form transient store
Definition: GetData.h:203
GAUDI_API const std::string typeinfoName(const std::type_info &)
Get platform independent information about the class type.
Definition: System.cpp:299
return_type make_range(const typename TYPE::Container *cnt) const
Definition: GetData.h:192
A DataObject is the base class of any identifiable object on any data store.
Definition: DataObject.h:30
template<class TYPE >
template<class COMMON >
return_type Gaudi::Utils::GetData< Gaudi::Range_< std::vector< const TYPE * > > >::operator() ( const COMMON &  common,
IDataProviderSvc service,
const std::string &  location,
const bool  checkData = true 
) const
inline

the only one essential method

Parameters
commonthe actual "worker"
servicepointer to Data Provider Service
locationlocation of objects in TES
checkDatawhether to check if the pointer is valid before returning it
Returns
the data

try to be efficient:

  1. load object only once:
  2. try to get the selection
  3. try to get the container

Definition at line 144 of file GetData.h.

148  {
151  DataObject* object = this -> getData ( service , location ) ;
152  if ( object )
153  {
155  typedef typename TYPE::Selection Selection_;
156  const Selection_* sel = dynamic_cast<Selection_*> ( object ) ;
157  if ( sel )
158  {
159  if ( common.msgLevel ( MSG::DEBUG ) )
160  { common.debug() << "The object of type '"
161  << System::typeinfoName(typeid(*object))
162  << "' has been retrieved from TS at address '"
163  << location << "'" << endmsg ; }
164  return make_range ( sel ) ;
165  }
167  typedef typename TYPE::Container Container_ ;
168  const Container_* cnt = dynamic_cast<Container_*> ( object ) ;
169  if ( cnt )
170  {
171  if ( common.msgLevel ( MSG::DEBUG ) )
172  { common.debug() << "The object of type '"
173  << System::typeinfoName(typeid(*object))
174  << "' has been retrieved from TS at address '"
175  << location << "'" << endmsg ; }
176  return make_range ( cnt ) ;
177  }
178  // no valid data
179  if (checkData)
180  common.Assert ( false , "get():: No valid data at '" + location + "'" ) ;
181  }
182  // no valid data
183  if (checkData)
184  common.Assert ( false , "get():: No data at '" + location + "'" ) ;
185  // the fictive return
186  return return_type () ;
187  }
MsgStream & endmsg(MsgStream &s)
MsgStream Modifier: endmsg. Calls the output method of the MsgStream.
Definition: MsgStream.h:244
DataObject * getData(IDataProviderSvc *service, const std::string &location) const
get the data form transient store
Definition: GetData.h:203
GAUDI_API const std::string typeinfoName(const std::type_info &)
Get platform independent information about the class type.
Definition: System.cpp:299
return_type make_range(const typename TYPE::Container *cnt) const
Definition: GetData.h:192
A DataObject is the base class of any identifiable object on any data store.
Definition: DataObject.h:30

The documentation for this struct was generated from the following file: