| The Gaudi Framework v32r1 (f65d50dc)

Public Types | Public Member Functions | Private Types | List of all members
Gaudi::Utils::GetOrCreateData< TYPE, TYPE2 > Struct Template Reference

Helper structure for implementation of "getOrCreate"-functions for GaudiCommon<BASE> More...

`#include <GaudiAlg/GetData.h>`

Inheritance diagram for Gaudi::Utils::GetOrCreateData< TYPE, TYPE2 >:
[legend]

## Public Types
typedef Getter::Type | Type
typedef Getter::return_type | return_type
| the actual return type More...

## Public Member Functions
template<class COMMON >
return_type | operator() (const COMMON &common, IDataProviderSvc *service, const std::string &location, const std::string &location2) const
| the only one essential method More...

## Private Types
typedef GetData< TYPE > | Getter
| the actual data getter More...

## Detailed Description

### template<class TYPE, class TYPE2>
struct Gaudi::Utils::GetOrCreateData< TYPE, TYPE2 >

Helper structure for implementation of "getOrCreate"-functions for GaudiCommon<BASE>

Author
  Vanya BELYAEV Ivan..nosp@m.Bely.nosp@m.aev@n.nosp@m.ikhe.nosp@m.f.nl

Date
  2008-07-22

Definition at line 388 of file GetData.h.

## Member Typedef Documentation

## ◆ Getter

template<class TYPE, class TYPE2>

typedef GetData<TYPE> Gaudi::Utils::GetOrCreateData< TYPE, TYPE2 >::Getter
| private

the actual data getter

Definition at line 392 of file GetData.h.

## ◆ return_type

template<class TYPE, class TYPE2>

typedef Getter::return_type Gaudi::Utils::GetOrCreateData< TYPE, TYPE2 >::return_type

the actual return type

Definition at line 398 of file GetData.h.

## ◆ Type

template<class TYPE, class TYPE2>

typedef Getter::Type Gaudi::Utils::GetOrCreateData< TYPE, TYPE2 >::Type

Definition at line 396 of file GetData.h.

## Member Function Documentation

## ◆ operator()()

template<class TYPE, class TYPE2>
template<class COMMON >

return_type Gaudi::Utils::GetOrCreateData< TYPE, TYPE2 >::operator() | ( | const COMMON & | common,
|  | IDataProviderSvc * | service,
|  | const std::string & | location,
|  | const std::string & | location2
| ) |  | const
| inline

the only one essential method

Parameters

  common | the actual "worker"
  service | pointer to Data Provider Service
  location | location of objects in TES

Returns
  the data

check the data

Definition at line 409 of file GetData.h.

410 {
411 SmartDataPtr<TYPE> obj( service, location );
412 if ( !obj ) {
413 auto o = std::make_unique<TYPE2>();
414 auto r = o.get();
415 common.put( service, std::move( o ), location2 );
416 if ( common.msgLevel( MSG::DEBUG ) ) {
417 common.debug() << "The object of type '" << System::typeinfoName( typeid( *r ) )
418 << "' has been created from TS at address '" << location2 << "'" << endmsg;
419 }
420 return r;
421 }
422 auto ret = obj.ptr();
424 common.Assert( !( !ret ), "get():: No valid data at '" + location + "'" );
425 if ( common.msgLevel( MSG::DEBUG ) ) {
426 common.debug() << "The object of type '" << System::typeinfoName( typeid( *ret ) )
427 << "' has been retrieved from TS at address '" << location << "'" << endmsg;
428 }
429 // return *VALID* data
430 return ret;
431 // ====================================================================
432 }
System::typeinfoName
GAUDI_API const std::string typeinfoName(const std::type_info &)
Get platform independent information about the class type.
Definition: System.cpp:298
GaudiPython.HistoUtils.location
location
Definition: HistoUtils.py:936
MSG::DEBUG
Definition: IMessageSvc.h:15
std::move
T move(T... args)
SmartDataPtr
A small class used to access easily (and efficiently) data items residing in data stores.
Definition: SmartDataPtr.h:47
endmsg
MsgStream & endmsg(MsgStream &s)
MsgStream Modifier: endmsg. Calls the output method of the MsgStream.
Definition: MsgStream.h:192

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

- GaudiAlg/GaudiAlg/GetData.h