IPSDK  4_1_0_2
IPSDK : Image Processing Software Development Kit
DynamicHdrMacro.h
Go to the documentation of this file.
1 // DynamicHdrMacro.h:
3 // ------------------
4 //
14 
15 #ifndef __IPSDKUTIL_DYNAMICHDRMACRO_H__
16 #define __IPSDKUTIL_DYNAMICHDRMACRO_H__
17 
18 #include <IPSDKUtil/BaseTypes.h>
20 
21 namespace ipsdk {
23  template <typename T>
25 }
26 
29 
32 #define IPSDK_DECLARE_DYNAMIC(libraryName, className) \
33  public: \
34  virtual const std::string& getClassName() const; \
35  static const std::string& getTypeName(); \
36  virtual ipsdk::BaseDynamicObject* createNew() const; \
37  virtual ipsdk::DynamicObjectPtr createShared() const; \
38  protected: \
39  template <typename _T> \
40  friend struct ipsdk::DynamicRegistrator; \
41  static ipsdk::BaseDynamicObject* createNewObject(); \
42  static ipsdk::DynamicObjectPtr createSharedObject();
43 
46 #define IPSDK_DECLARE_ABSTRACT_DYNAMIC(libraryName, className) \
47  public: \
48  virtual const std::string& getClassName() const; \
49  static const std::string& getTypeName();
50 
53 #define IPSDK_DECLARE_COPY_SUPPORT(libraryName, className) \
54  public: \
55  static const bool g_bSupportCopy = true; \
56  inline bool hasCopySupport() const { \
57  return g_bSupportCopy; \
58  } \
59  className(const className&); \
60  className& operator=(const className&); \
61  virtual ipsdk::BaseDynamicObject* duplicate() const; \
62  virtual ipsdk::DynamicObjectPtr duplicateShared() const; \
63  protected: \
64  virtual void copy(const ipsdk::BaseDynamicObject& object);
65 
68 #define IPSDK_DECLARE_NOCOPY_SUPPORT(libraryName, className) \
69  public: \
70  static const bool g_bSupportCopy = false; \
71  inline bool hasCopySupport() const { \
72  return g_bSupportCopy; \
73  } \
74  private: \
75  className(const className&); \
76  className& operator=(const className&); \
77  virtual ipsdk::BaseDynamicObject* duplicate() const; \
78  virtual ipsdk::DynamicObjectPtr duplicateShared() const; \
79  virtual void copy(const ipsdk::BaseDynamicObject& object);
80 
83 #define IPSDK_DECLARE_DYNAMIC_WITH_COPY(libraryName, className) \
84  IPSDK_DECLARE_COPY_SUPPORT(libraryName, className) \
85  IPSDK_DECLARE_DYNAMIC(libraryName, className)
86 
89 #define IPSDK_DECLARE_DYNAMIC_WITHOUT_COPY(libraryName, className) \
90  IPSDK_DECLARE_NOCOPY_SUPPORT(libraryName, className) \
91  IPSDK_DECLARE_DYNAMIC(libraryName, className)
92 
95 #define IPSDK_DECLARE_ABSTRACT_DYNAMIC_WITH_COPY(libraryName, className) \
96  protected: \
97  virtual void copy(const ipsdk::BaseDynamicObject& object); \
98  IPSDK_DECLARE_ABSTRACT_DYNAMIC(libraryName, className)
99 
102 #define IPSDK_DECLARE_ABSTRACT_DYNAMIC_WITHOUT_COPY(libraryName, className) \
103  IPSDK_DECLARE_NOCOPY_SUPPORT(libraryName, className) \
104  IPSDK_DECLARE_ABSTRACT_DYNAMIC(libraryName, className)
105 
108 
109 #endif // __IPSDKUTIL_DYNAMICHDRMACRO_H__
Main namespace for IPSDK library.
Definition: AlgorithmFunctionEfficiency.h:22
registrator class for dynamic objects
Definition: DynamicHdrMacro.h:24
Base types for multiplatform compatibility.
Predefined types for dynamic objects management.