28 #ifndef _cmnClassServices_h
29 #define _cmnClassServices_h
49 template<
bool _enabled,
typename _
class>
72 template <
typename _
class>
75 typedef _class value_type;
83 return new value_type;
91 return new value_type[size];
102 template<
bool _enabled,
typename _
class>
131 template <
typename _
class>
157 CMN_LOG_RUN_WARNING <<
"cmnClassServices::Create with in-place new called for different classes, existing = "
163 if (existing == &other)
183 for (index = 0; index < size; index++) {
184 new(&(data[index]))
value_type(*otherPointer);
199 template<
int _dynamicCreation,
typename _
class,
typename _argType>
222 template<
typename _
class,
typename _argType>
230 const _argType *argTyped =
dynamic_cast<const _argType *
>(&arg);
236 << _argType::ClassServices()->GetName() << std::endl;
244 return _argType::ClassServices();
251 template<
int _hasDynamicCreation,
typename _
class>
254 typedef _class value_type;
255 typedef _class * pointer;
261 pointer typedData =
dynamic_cast<pointer
>(data);
264 for (index = 0; index < size; index++) {
265 typedData[index].~value_type();
279 value_type * existingPointer =
dynamic_cast<value_type *
>(existing);
280 if (existingPointer) {
281 existingPointer->~value_type();
290 template<
typename _
class>
314 template <
int _dynamicCreation,
class _
class,
class _argType = _
class>
342 const std::string & libraryName,
344 BaseType(className, typeInfo, parentServices, libraryName, mask)
389 return sizeof(_class);
403 #endif // _cmnClassServices_h
const int CMN_DYNAMIC_CREATION_DEFAULT
Definition: cmnClassRegisterMacros.h:329
static bool Create(cmnGenericObject *existing, const cmnGenericObject &other)
Definition: cmnClassServices.h:155
_class value_type
Definition: cmnClassServices.h:226
Definition: cmnClassServices.h:50
static bool CopyConstructorAvailable(void)
Definition: cmnClassServices.h:124
cmnGenericObject * generic_pointer
Definition: cmnClassServices.h:330
static bool CopyConstructorAvailable(void)
Definition: cmnClassServices.h:191
virtual cmnGenericObject * Create(void) const
Definition: cmnClassServices.h:348
Portability across compilers and operating systems tools.
#define CMN_UNUSED(argument)
Definition: cmnPortability.h:479
_class value_type
Definition: cmnClassServices.h:135
Class registration macros.
virtual cmnGenericObject * Create(const cmnGenericObject &other) const
Definition: cmnClassServices.h:353
bool HasDynamicCreation(void) const
Definition: cmnClassServices.h:393
static bool DefaultConstructorAvailable(void)
Definition: cmnClassServices.h:94
static cmnGenericObject * Create(const cmnGenericObject &CMN_UNUSED(arg))
Definition: cmnClassServices.h:206
const std::string & GetName(void) const
cmnClassServicesBase BaseType
Definition: cmnClassServices.h:327
static const cmnClassServicesBase * GetConstructorArgServices(void)
Definition: cmnClassServices.h:243
Base class for high level objects.
Definition: cmnGenericObject.h:51
const int CMN_DYNAMIC_CREATION_ONEARG
Definition: cmnClassRegisterMacros.h:333
virtual const cmnClassServicesBase * Services(void) const =0
static cmnGenericObject * Create(void)
Definition: cmnClassServices.h:55
static cmnGenericObject * CreateArray(size_t CMN_UNUSED(size), const cmnGenericObject &CMN_UNUSED(other))
Definition: cmnClassServices.h:120
virtual bool DeleteArray(generic_pointer &data, size_t &size) const
Definition: cmnClassServices.h:378
static cmnGenericObject * Create(const cmnGenericObject &other)
Definition: cmnClassServices.h:141
static const cmnClassServicesBase * GetConstructorArgServices(void)
Definition: cmnClassServices.h:212
static cmnGenericObject * Create(void)
Definition: cmnClassServices.h:82
virtual cmnGenericObject * CreateArray(size_t size) const
Definition: cmnClassServices.h:368
static bool DefaultConstructorAvailable(void)
Definition: cmnClassServices.h:65
static bool OneArgConstructorAvailable(void)
Definition: cmnClassServices.h:210
#define CMN_LOG_RUN_WARNING
Definition: cmnLogger.h:167
Declaration of cmnLogger amd macros for human readable logging.
bool CopyConstructorAvailable(void) const
Definition: cmnClassServices.h:395
virtual cmnGenericObject * CreateWithArg(const cmnGenericObject &arg) const
Definition: cmnClassServices.h:358
static cmnGenericObject * Create(const cmnGenericObject &CMN_UNUSED(other))
Definition: cmnClassServices.h:109
Definition: cmnClassServices.h:252
static bool Delete(cmnGenericObject *CMN_UNUSED(existing))
Definition: cmnClassServices.h:299
Definition: cmnClassServices.h:200
virtual bool Delete(cmnGenericObject *existing) const
Definition: cmnClassServices.h:383
Class services.
Definition: cmnClassServices.h:315
Defines cmnGenericObject.
static cmnGenericObject * CreateArray(size_t CMN_UNUSED(size))
Definition: cmnClassServices.h:61
virtual bool Delete(cmnGenericObject *existing) const =0
virtual size_t GetSize(void) const
Definition: cmnClassServices.h:388
short cmnLogMask
Definition: cmnLogLoD.h:67
static bool DeleteArray(generic_pointer &data, size_t &size)
Definition: cmnClassServices.h:260
bool OneArgConstructorAvailable(void) const
Definition: cmnClassServices.h:396
static cmnGenericObject * CreateArray(size_t size, const cmnGenericObject &other)
Definition: cmnClassServices.h:178
Base class for class services.
Definition: cmnClassServicesBase.h:45
Defines the cmnClassServicesBase.
const cmnClassServicesBase * GetConstructorArgServices(void) const
Definition: cmnClassServices.h:398
static bool Create(cmnGenericObject *CMN_UNUSED(existing), const cmnGenericObject &CMN_UNUSED(other))
Definition: cmnClassServices.h:114
virtual bool Create(cmnGenericObject *existing, const cmnGenericObject &other) const
Definition: cmnClassServices.h:363
static bool DeleteArray(generic_pointer &CMN_UNUSED(data), size_t &CMN_UNUSED(size))
Definition: cmnClassServices.h:295
static bool Delete(cmnGenericObject *existing)
Definition: cmnClassServices.h:278
_class * pointer
Definition: cmnClassServices.h:136
static _class * Create(const cmnGenericObject &arg)
Definition: cmnClassServices.h:229
#define CMN_LOG_INIT_WARNING
Definition: cmnLogger.h:163
virtual cmnGenericObject * CreateArray(size_t size, const cmnGenericObject &other) const
Definition: cmnClassServices.h:373
static cmnGenericObject * CreateArray(size_t size)
Definition: cmnClassServices.h:90
static bool OneArgConstructorAvailable(void)
Definition: cmnClassServices.h:241
const int CMN_NO_DYNAMIC_CREATION
Definition: cmnClassRegisterMacros.h:328
Definition: cmnClassServices.h:103
bool DefaultConstructorAvailable(void) const
Definition: cmnClassServices.h:394
cmnClassServices(const std::string &className, const std::type_info *typeInfo, const cmnClassServicesBase *parentServices, const std::string &libraryName, cmnLogMask mask=CMN_LOG_ALLOW_DEFAULT)
Definition: cmnClassServices.h:340
const int CMN_DYNAMIC_CREATION_COPY
Definition: cmnClassRegisterMacros.h:330
#define CMN_LOG_ALLOW_DEFAULT
Definition: cmnLogLoD.h:76