IPSDK  4_1_0_2
IPSDK : Image Processing Software Development Kit
BaseAttribute.h
1 // BaseAttribute.h:
3 // ----------------
4 //
14 
15 #ifndef __IPSDKBASEPROCESSING_BASEATTRIBUTE_H__
16 #define __IPSDKBASEPROCESSING_BASEATTRIBUTE_H__
17 
18 // suppression warnings
19 // warning C4251: 'boost::enable_shared_from_this<T>::weak_this_' : class 'boost::weak_ptr<T>' needs to have dll-interface to be used by clients of class 'boost::enable_shared_from_this<T>'
20 // warning C4275: non dll-interface class 'ipsdk::BaseIOData' used as base for dll-interface class 'ipsdk::processor::BaseAttribute'
21 #pragma warning (push)
22 #pragma warning (disable : 4251 4275)
23 
25 #include <IPSDKBaseData/ToolTip/BaseToolTip.h>
26 #include <IPSDKBaseData/DataStatus/BaseIOData.h>
27 #include <IPSDKBaseData/DataStatus/BaseOptData.h>
30 #include <IPSDKSerialization/Engine/BaseObjectWithSkeleton.h>
31 #include <IPSDKUtil/Tools/ProcessingResult.h>
32 #include <boost/enable_shared_from_this.hpp>
33 
34 namespace ipsdk {
35 namespace processor {
36 
37 class BaseProcessor;
38 class AttributeFactory;
39 
42 
44  public BaseToolTip,
45  public BaseIOData,
46  public BaseOptData,
47  public boost::enable_shared_from_this<BaseAttribute>
48 {
49  // declare serial class
51 
52  // friend class for private members access
53  friend class BaseProcessor;
54 
55 protected:
57  BaseAttribute();
58 
59 public:
61  virtual ~BaseAttribute() = 0;
62 
63 // methods
64 public:
66  bool isInit() const;
67 
69  virtual eAttributeType getAttributeType() const = 0;
70 
72  virtual const boost::filesystem::path getHeaderPath() const = 0;
73 
75  virtual const std::string getLibraryName() const = 0;
76 
78  const BaseRule& getRule() const;
79 
83  BoolResult isValid() const;
84 
94  bool isOutOptionalInitForced() const;
95  void setOutOptionalInitForced(bool bOutOptionalInitForced) const;
97 
99  void clear();
100 
101 protected:
103  void initBase();
104 
107  virtual BoolResult syncInputDerived(const Guid& processingSocketGuid) {return true;}
108 
111  virtual BoolResult syncOutputDerived(const Guid& processingSocketGuid) {return true;}
112 
114  virtual RulePtr createRule(const AttributePtr& pBaseThis) const = 0;
115 
117  virtual void clearDerived() {}
118 
119 private:
126  BoolResult syncInputAttribute(const Guid& processingSocketGuid);
127 
134  BoolResult syncOutputAttribute(const Guid& processingSocketGuid);
135 
136 // attributes
137 private:
139  mutable RulePtr _pRule;
140 
143  mutable bool _bOutOptionalInitForced;
144 
146  bool _bInit;
147 };
148 
151 
152 inline bool
154 {
155  return _bInit;
156 }
157 
160 
161 } // end of namespace processor
162 } // end of namespace ipsdk
163 
164 #pragma warning (pop)
165 
166 #endif // __IPSDKBASEPROCESSING_BASEATTRIBUTE_H__
Main namespace for IPSDK library.
Definition: AlgorithmFunctionEfficiency.h:22
#define IPSDKBASEPROCESSING_API
Import/Export macro for library IPSDKBaseProcessing.
Definition: IPSDKBaseProcessingExports.h:27
virtual void clearDerived()
method allowing to clear data in derived class
Definition: BaseAttribute.h:117
virtual BoolResult syncInputDerived(const Guid &processingSocketGuid)
Definition: BaseAttribute.h:107
#define IPSDK_DECLARE_ABSTRACT_SERIAL_WITHOUT_COPY(libraryName, className)
macro enabling serialization on abstract class
Definition: SerializationHdrMacro.h:97
boost::shared_ptr< BaseRule > RulePtr
shared pointer to rule
Definition: RuleTypes.h:104
Base class for processor class.
Definition: BaseProcessor.h:43
virtual BoolResult syncOutputDerived(const Guid &processingSocketGuid)
Definition: BaseAttribute.h:111
Predefined types for processing attributes managment.
Class encapsulating an auto initialized uuid.
Definition: Guid.h:27
Base class for processing attributes.
Definition: BaseAttribute.h:43
bool isInit() const
retrieve object initialization flag
Definition: BaseAttribute.h:153
boost::shared_ptr< BaseAttribute > AttributePtr
shared pointer to attribute
Definition: AttributeTypes.h:52
Base class for data with IO status.
Definition: BaseIOData.h:26
Predefined types for rules management.
Definition of import/export macro for library.
Base class for serialization object with three serialization modes :
Definition: BaseObjectWithSkeleton.h:33
Base class for processing attributes rules.
Definition: BaseRule.h:41
eAttributeType
Enumerate describing attributes type.
Definition: AttributeTypes.h:36
Base class for data with optional status.
Definition: BaseOptData.h:26
Base class for objects with name and tool tip informations.
Definition: BaseToolTip.h:27