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