IPSDK  4_1_0_2
IPSDK : Image Processing Software Development Kit
Macros
DynamicSrcMacro.h File Reference

Macro set to manage dynamic objects (source part) More...

#include <IPSDKUtil/Dynamic/DynamicObjectFactory.h>
#include <IPSDKUtil/Dynamic/DynamicCopyUtils.h>
#include <IPSDKUtil/Tools/MutexMacros.h>
#include <IPSDKUtil/Logger/IPSDKUtilLog.h>
#include <boost/thread/lock_guard.hpp>
#include <boost/make_shared.hpp>
#include <memory>

Go to the source code of this file.

Macros

#define IPSDK_IMPLEMENT_DYNAMIC(namespaceSeq, className)
 macros enabling dynamic properties on class
 
#define IPSDK_IMPLEMENT_COPY_SUPPORT(className)
 macro enabling copy support More...
 
#define IPSDK_IMPLEMENT_DYNAMIC_WITH_COPY(namespaceSeq, className)
 macro enabling dynamic properties on class and copy support More...
 
#define IPSDK_IMPLEMENT_DYNAMIC_WITHOUT_COPY(namespaceSeq, className)
 macro enabling dynamic properties on class and copy support More...
 
#define IPSDK_IMPLEMENT_ABSTRACT_DYNAMIC(namespaceSeq, className)
 macro enabling dynamic properties on abstract class More...
 
#define IPSDK_IMPLEMENT_ABSTRACT_DYNAMIC_WITH_COPY(namespaceSeq, className)   IPSDK_IMPLEMENT_ABSTRACT_DYNAMIC(namespaceSeq, className)
 macro enabling dynamic properties on class and copy support
 
#define IPSDK_IMPLEMENT_ABSTRACT_DYNAMIC_WITHOUT_COPY(namespaceSeq, className)
 macro enabling dynamic properties on class and copy support More...
 
#define IPSDK_IMPLEMENT_COPY(className, baseClassName)
 macro enabling object copy More...
 

Detailed Description

Macro set to manage dynamic objects (source part)

Author
E. Noirfalise
Date
2013/2/15

Macro Definition Documentation

◆ IPSDK_IMPLEMENT_COPY_SUPPORT

#define IPSDK_IMPLEMENT_COPY_SUPPORT (   className)
Value:
className::className(const className& object) { \
if (this != &object) { \
initCtorCopy(object); \
copy(object); \
} \
} \
className& className::operator= (const className& object) { \
copy(object); \
return *this; \
} \
ipsdk::BaseDynamicObject* className::duplicate() const { \
std::auto_ptr<className> pObject(new className()); \
pObject->copy(*this); \
return pObject.release(); \
} \
ipsdk::DynamicObjectPtr className::duplicateShared() const { \
boost::shared_ptr<className> pObject(boost::make_shared<className>()); \
pObject->copy(*this); \
return pObject; \
}
boost::shared_ptr< BaseDynamicObject > DynamicObjectPtr
shared pointer to a BaseDynamicObject
Definition: DynamicObjectTypes.h:22

macro enabling copy support

◆ IPSDK_IMPLEMENT_DYNAMIC_WITH_COPY

#define IPSDK_IMPLEMENT_DYNAMIC_WITH_COPY (   namespaceSeq,
  className 
)
Value:
IPSDK_IMPLEMENT_DYNAMIC(namespaceSeq, className)
#define IPSDK_IMPLEMENT_COPY_SUPPORT(className)
macro enabling copy support
Definition: DynamicSrcMacro.h:84

macro enabling dynamic properties on class and copy support

◆ IPSDK_IMPLEMENT_DYNAMIC_WITHOUT_COPY

#define IPSDK_IMPLEMENT_DYNAMIC_WITHOUT_COPY (   namespaceSeq,
  className 
)
Value:
className::getTypeName()); \
} \
ipsdk::BaseDynamicObject* className::duplicate() const { \
className::getTypeName()); \
return 0; \
} \
ipsdk::DynamicObjectPtr className::duplicateShared() const { \
className::getTypeName()); \
} \
IPSDK_IMPLEMENT_DYNAMIC(namespaceSeq, className)
Base class for dynamic objects.
Definition: BaseDynamicObject.h:28
IPSDK_FORCEINLINE void copy(T *dest, const T *src, ipUInt64 nbElts)
copy function; copies the &#39;nbElts&#39; of the source buffer to the destination buffer, using the instruction set passed as template argument
Definition: copy.h:36
boost::shared_ptr< BaseDynamicObject > DynamicObjectPtr
shared pointer to a BaseDynamicObject
Definition: DynamicObjectTypes.h:22
Class s is not copiable, can&#39;t copy object.
Definition: IPSDKUtilLogMessages.h:40

macro enabling dynamic properties on class and copy support

◆ IPSDK_IMPLEMENT_ABSTRACT_DYNAMIC

#define IPSDK_IMPLEMENT_ABSTRACT_DYNAMIC (   namespaceSeq,
  className 
)
Value:
const std::string& className::getTypeName() { \
boost::lock_guard<boost::mutex> lock(TypeNameMutex::get()); \
static const std::string g_typeName( \
IPSDK_FULL_CLASSNAME_STR(namespaceSeq, className)); \
return g_typeName; \
} \
const std::string& className::getClassName() const { \
return className::getTypeName(); \
}
#define IPSDK_FULL_CLASSNAME_STR(namespaceSeq, className)
macro allowing to retrieve string associated to a class name and a namespace sequence ...
Definition: BaseMacros.h:112

macro enabling dynamic properties on abstract class

◆ IPSDK_IMPLEMENT_ABSTRACT_DYNAMIC_WITHOUT_COPY

#define IPSDK_IMPLEMENT_ABSTRACT_DYNAMIC_WITHOUT_COPY (   namespaceSeq,
  className 
)
Value:
className::getTypeName()); \
} \
ipsdk::BaseDynamicObject* className::duplicate() const { \
className::getTypeName()); \
return 0; \
} \
ipsdk::DynamicObjectPtr className::duplicateShared() const { \
className::getTypeName()); \
} \
IPSDK_IMPLEMENT_ABSTRACT_DYNAMIC(namespaceSeq, className)
Base class for dynamic objects.
Definition: BaseDynamicObject.h:28
IPSDK_FORCEINLINE void copy(T *dest, const T *src, ipUInt64 nbElts)
copy function; copies the &#39;nbElts&#39; of the source buffer to the destination buffer, using the instruction set passed as template argument
Definition: copy.h:36
boost::shared_ptr< BaseDynamicObject > DynamicObjectPtr
shared pointer to a BaseDynamicObject
Definition: DynamicObjectTypes.h:22
Class s is not copiable, can&#39;t copy object.
Definition: IPSDKUtilLogMessages.h:40

macro enabling dynamic properties on class and copy support

◆ IPSDK_IMPLEMENT_COPY

#define IPSDK_IMPLEMENT_COPY (   className,
  baseClassName 
)
Value:
const className* pObject = static_cast<const className*>(&object); \
Base class for dynamic objects.
Definition: BaseDynamicObject.h:28
IPSDK_FORCEINLINE void copy(T *dest, const T *src, ipUInt64 nbElts)
copy function; copies the &#39;nbElts&#39; of the source buffer to the destination buffer, using the instruction set passed as template argument
Definition: copy.h:36

macro enabling object copy