IPSDK  4_1_0_2
IPSDK : Image Processing Software Development Kit
BaseDataItemAttribute.h
1 // BaseDataItemAttribute.h:
3 // ------------------------
4 //
14 
15 #ifndef __IPSDKBASEPROCESSING_BASEDATAITEMATTRIBUTE_H__
16 #define __IPSDKBASEPROCESSING_BASEDATAITEMATTRIBUTE_H__
17 
18 // suppression warnings
19 // warning C4251: 'ipsdk::processor::BaseDataItemAttribute::_pDataItemNode' : class 'boost::shared_ptr<T>' needs to have dll-interface to be used by clients of class 'ipsdk::processor::BaseDataItemAttribute'
20 #pragma warning (push)
21 #pragma warning (disable : 4251)
22 
23 #include <IPSDKBaseProcessing/Attribute/Base/BaseAttribute.h>
26 
27 namespace ipsdk {
28 namespace processor {
29 
32 
34 {
35  // declare dynamic serializable class
37 
38 // predefined public types
39 public:
41  static const eAttributeType::domain g_attributeType = eAttributeType::eAT_DataItem;
42 
43 // constructor and destructor
44 protected:
47 public:
49  virtual ~BaseDataItemAttribute() = 0;
50 
51 // methods
52 public:
54  eAttributeType getAttributeType() const;
55 
57  virtual const std::string& getNodeType() const = 0;
58 
59 protected:
63  void initBase(const DataItemNodePtr& pDataItemNode);
64 
68  bool isDataItemNodePtrSet() const;
69 
74  DataItemNodeConstPtr accessDataItemNodePtr() const;
75  DataItemNodePtr accessDataItemNodePtr();
77 
79  void clearDerived();
80 
81 // attributes
82 private:
84  DataItemNodePtr _pDataItemNode;
85 };
86 
89 
90 inline eAttributeType
92 {
93  return g_attributeType;
94 }
95 
98 
99 } // end of namespace processor
100 } // end of namespace ipsdk
101 
102 #pragma warning (pop)
103 
104 #endif // __IPSDKBASEPROCESSING_BASEDATAITEMATTRIBUTE_H__
Main namespace for IPSDK library.
Definition: AlgorithmFunctionEfficiency.h:22
#define IPSDKBASEPROCESSING_API
Import/Export macro for library IPSDKBaseProcessing.
Definition: IPSDKBaseProcessingExports.h:27
boost::shared_ptr< const BaseDataItemNode > DataItemNodeConstPtr
shared pointer to const DataItemNode
Definition: DataItemTypes.h:161
Base class for attributes encapsulating data item nodes.
Definition: BaseDataItemAttribute.h:33
#define IPSDK_DECLARE_ABSTRACT_SERIAL_WITHOUT_COPY(libraryName, className)
macro enabling serialization on abstract class
Definition: SerializationHdrMacro.h:97
Header part of macros set for class serialization.
Base class for processing attributes.
Definition: BaseAttribute.h:43
boost::shared_ptr< BaseDataItemNode > DataItemNodePtr
shared pointer to DataItemNode
Definition: DataItemTypes.h:158
eAttributeType getAttributeType() const
retrieve attribute type
Definition: BaseDataItemAttribute.h:91
Attribute associated to a data item.
Definition: AttributeTypes.h:40
Predefined types for data items.
eAttributeType
Enumerate describing attributes type.
Definition: AttributeTypes.h:36
static const eAttributeType::domain g_attributeType
type associated to attribute
Definition: BaseDataItemAttribute.h:41