Gaudi Framework, version v25r0
Home
Generated: Mon Feb 17 2014
Main Page
Related Pages
Modules
Namespaces
Classes
Files
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Properties
Friends
Macros
Groups
Pages
GaudiKernel
GaudiKernel
Converter.h
Go to the documentation of this file.
1
#ifndef GAUDIKERNEL_CONVERTER_H
2
#define GAUDIKERNEL_CONVERTER_H
3
4
// generic experiment headers
5
#include "
GaudiKernel/IConverter.h
"
6
#include "
GaudiKernel/ISvcLocator.h
"
7
#include "
GaudiKernel/IService.h
"
8
#include "
GaudiKernel/ConversionSvc.h
"
9
#include "
GaudiKernel/IDataProviderSvc.h
"
10
#include "
GaudiKernel/IDataManagerSvc.h
"
11
12
// Forward declarations
13
class
IMessageSvc
;
14
class
IRegistry
;
15
24
class
GAUDI_API
Converter
:
public
implements1
<IConverter> {
25
public
:
26
typedef
Gaudi::PluginService::Factory1<
IConverter
*,
27
ISvcLocator
*>
Factory
;
28
30
virtual
StatusCode
initialize
();
31
33
virtual
StatusCode
finalize();
34
36
virtual
StatusCode
setDataProvider(
IDataProviderSvc
* svc);
37
39
virtual
SmartIF<IDataProviderSvc>
& dataProvider()
const
;
40
42
virtual
StatusCode
setConversionSvc(
IConversionSvc
* svc);
43
45
virtual
SmartIF<IConversionSvc>
& conversionSvc()
const
;
46
48
virtual
StatusCode
setAddressCreator(
IAddressCreator
* creator);
49
51
virtual
SmartIF<IAddressCreator>
& addressCreator()
const
;
52
54
virtual
const
CLID
& objType()
const
;
55
57
// MSF: Masked to generate compiler error due to interface change
58
virtual
long
i_repSvcType()
const
;
59
61
virtual
StatusCode
createObj(
IOpaqueAddress
* pAddress,
DataObject
*& refpObject);
62
64
virtual
StatusCode
fillObjRefs(
IOpaqueAddress
* pAddress,
DataObject
* pObject);
65
67
virtual
StatusCode
updateObj(
IOpaqueAddress
* pAddress,
DataObject
* refpObject);
68
70
virtual
StatusCode
updateObjRefs(
IOpaqueAddress
* pAddress,
DataObject
* pObject);
71
73
virtual
StatusCode
createRep(
DataObject
* pObject,
IOpaqueAddress
*& refpAddress);
74
76
virtual
StatusCode
fillRepRefs(
IOpaqueAddress
* pAddress,
DataObject
* pObject);
77
79
virtual
StatusCode
updateRep(
IOpaqueAddress
* pAddress,
DataObject
* pObject);
80
82
virtual
StatusCode
updateRepRefs(
IOpaqueAddress
* pAddress,
DataObject
* pObject);
83
85
Converter
(
long
storage_type,
const
CLID
& class_type,
ISvcLocator
* svc = 0);
86
88
template
<
class
T>
89
StatusCode
service
(
const
std::string
& name, T*& psvc,
bool
createIf =
false
)
const
{
90
return
service_i(name, createIf, T::interfaceID(), (
void
**)&psvc);
91
}
92
94
template
<
class
T>
95
StatusCode
service
(
const
std::string
&
type
,
const
std::string
& name, T*& psvc)
const
{
96
return
service_i(type, name, T::interfaceID(), (
void
**)&psvc);
97
}
98
100
SmartIF<IService>
service(
const
std::string
& name,
const
bool
createIf =
true
)
const
;
101
102
protected
:
103
105
virtual
~
Converter
();
106
108
SmartIF<ISvcLocator>
& serviceLocator()
const
;
110
SmartIF<IMessageSvc>
& msgSvc()
const
;
111
// Obsoleted name, kept due to the backwards compatibility
112
SmartIF<IMessageSvc>
& messageService()
const
;
114
SmartIF<IDataManagerSvc>
& dataManager()
const
;
115
116
private
:
117
119
long
m_storageType
;
121
const
CLID
m_classType
;
123
mutable
SmartIF<IAddressCreator>
m_addressCreator
;
125
mutable
SmartIF<IDataProviderSvc>
m_dataProvider
;
127
mutable
SmartIF<IDataManagerSvc>
m_dataManager
;
129
mutable
SmartIF<IConversionSvc>
m_conversionSvc
;
131
mutable
SmartIF<ISvcLocator>
m_svcLocator
;
133
mutable
SmartIF<IMessageSvc>
m_messageSvc
;
134
136
StatusCode
service_i(
const
std::string
& svcName,
137
bool
createIf,
138
const
InterfaceID
&
iid
,
139
void
** ppSvc)
const
;
140
StatusCode
service_i(
const
std::string
& svcType,
141
const
std::string
& svcName,
142
const
InterfaceID
&
iid
,
143
void
** ppSvc)
const
;
144
};
145
146
147
// Identified class for converters' factories
148
class
GAUDI_API
ConverterID
{
149
public
:
150
ConverterID
(
long
stype,
CLID
clid ) : m_stype(stype), m_clid(clid) {}
151
~ConverterID
() {}
152
inline
bool
operator ==
(
const
ConverterID
&
id
)
const
{
153
return
m_stype ==
id
.m_stype && m_clid ==
id
.m_clid;
154
}
155
private
:
156
friend
std::ostream
&
operator <<
(
std::ostream
&,
const
ConverterID
&);
157
long
m_stype
;
158
CLID
m_clid
;
159
};
160
161
inline
std::ostream
&
operator <<
(
std::ostream
&
s
,
const
ConverterID
&
id
) {
162
return
s <<
"CNV_"
<<
id
.m_stype <<
"_"
<<
id
.m_clid;
163
}
164
165
166
#ifndef GAUDI_NEW_PLUGIN_SERVICE
167
template
<
class
T>
168
class
CnvFactory
{
169
public
:
170
template
<
typename
S>
171
static
typename
S::ReturnType
create
(
typename
S::Arg1Type a1) {
172
return
new
T(a1);
173
}
174
};
175
176
// Macro to declare component factories
177
#define DECLARE_CONVERTER_FACTORY(x) \
178
DECLARE_FACTORY_WITH_CREATOR_AND_ID(x, CnvFactory< x >, \
179
ConverterID(x::storageType(), x::classID()), Converter::Factory)
180
#define DECLARE_NAMESPACE_CONVERTER_FACTORY(n, x) \
181
DECLARE_CONVERTER_FACTORY(n::x)
182
183
#else
184
185
// Macro to declare component factories
186
#define DECLARE_CONVERTER_FACTORY(x) \
187
DECLARE_COMPONENT_WITH_ID(x, ConverterID(x::storageType(), x::classID()))
188
#define DECLARE_NAMESPACE_CONVERTER_FACTORY(n, x) \
189
DECLARE_CONVERTER_FACTORY(n::x)
190
191
#endif
192
193
#endif // GAUDIKERNEL_CONVERTER_H
Generated at Mon Feb 17 2014 14:37:42 for Gaudi Framework, version v25r0 by
Doxygen
version 1.8.2 written by
Dimitri van Heesch
, © 1997-2004