IPSDK  4_1_0_2
IPSDK : Image Processing Software Development Kit
IpEnumAttributeHdrMacros.h
Go to the documentation of this file.
1 // IpEnumAttributeHdrMacros.h:
3 // ---------------------------
4 //
15 
16 #ifndef __IPSDKIMAGEPROCESSING_IPENUMATTRIBUTEHDRMACROS_H__
17 #define __IPSDKIMAGEPROCESSING_IPENUMATTRIBUTEHDRMACROS_H__
18 
21 #include <IPSDKImageProcessing/Attribute/IPEnum/IPEnumAttribute.h>
23 #include <boost/thread/lock_guard.hpp>
24 #include <boost/smart_ptr/make_shared_object.hpp>
25 
28 
33 #define IPSDK_DECLARE_IPENUM_ATTRIBUTE_BODY(libraryName, className, EnumType, \
34  RuleString) \
35  IPSDK_DECLARE_SERIAL_WITHOUT_COPY(libraryName, className) \
36  IPSDK_DECLARE_TOOLTIP() \
37  IPSDK_DECLARE_ATTRIBUTE_BASE_BODY(libraryName, className, RuleString) \
38 protected: \
39  className(); \
40 public: \
41  ~className(); \
42 public: \
43  EnumType getValue() const; \
44  void init(const EnumType& value); \
45 protected: \
46  bool checkEnumValue(ipsdk::ipUInt32 enumValue) const;
47 
49 // Mandatory attributes
51 
56 #define IPSDK_DECLARE_INPUT_IPENUM_ATTRIBUTE(libraryName, className, EnumType, \
57  RuleString) \
58 class IPSDK_LIB_API(libraryName) className : \
59  public ipsdk::imaproc::IPEnumAttribute<EnumType> { \
60  IPSDK_DECLARE_IPENUM_ATTRIBUTE_BODY(libraryName, className, EnumType,RuleString) \
61  IPSDK_DECLARE_MANDATORY_DATA(); \
62 };
63 
65 // Optional attributes
67 
72 #define IPSDK_DECLARE_INPUT_OPTIONAL_IPENUM_ATTRIBUTE(libraryName, className, EnumType, \
73  RuleString, defaultValue) \
74 class IPSDK_LIB_API(libraryName) className : \
75  public ipsdk::imaproc::IPEnumAttribute<EnumType> { \
76  IPSDK_DECLARE_IPENUM_ATTRIBUTE_BODY(libraryName, className, EnumType, RuleString) \
77  IPSDK_DECLARE_OPTIONAL_DATA(); \
78 public: \
79  inline const ValueType& getDefaultValue() const \
80  { \
81  return retrieveDefaultValue(); \
82  } \
83 public: \
84  static inline const ValueType& retrieveDefaultValue() \
85  { \
86  boost::lock_guard<boost::mutex> lock(getMutex()); \
87  static ValueType g_defaultValue = defaultValue; \
88  return g_defaultValue; \
89  } \
90 };
91 
94 
95 #endif // __IPSDKIMAGEPROCESSING_IPENUMATTRIBUTEHDRMACROS_H__
Definition of import/export macro for library.
Header part of macros set for attribute class declaration.