IPSDK  4_1_0_2
IPSDK : Image Processing Software Development Kit
BaseOutputInitializer.h
1 // BaseOutputInitializer.h:
3 // ------------------------
4 //
14 
15 #ifndef __IPSDKBASEPROCESSING_BASEOUTPUTINITIALIZER_H__
16 #define __IPSDKBASEPROCESSING_BASEOUTPUTINITIALIZER_H__
17 
18 // suppression warnings
19 // warning C4251: 'ipsdk::processor::BaseOutputInitializer::_pOutputAttribute' : class 'boost::shared_ptr<T>' needs to have dll-interface to be used by clients of class 'ipsdk::processor::BaseOutputInitializer'
20 // warning C4275: non dll-interface class 'boost::noncopyable_::noncopyable' used as base for dll-interface class 'ipsdk::processor::BaseOutputInitializer'
21 #pragma warning (push)
22 #pragma warning (disable : 4251 4275)
23 
26 #include <IPSDKUtil/Tools/ProcessingResult.h>
27 #include <boost/noncopyable.hpp>
28 #include <boost/weak_ptr.hpp>
29 
30 namespace ipsdk {
31 namespace processor {
32 
35 
36 class IPSDKBASEPROCESSING_API BaseOutputInitializer : public boost::noncopyable
37 {
38 public:
42  virtual ~BaseOutputInitializer() = 0;
44 
45 // methods
46 public:
48  virtual eOutputInitializerType getOutputInitializerType() const = 0;
49 
51  bool isInit() const;
52 
57  const BaseAttribute& getOutputAttribute() const;
58 
62  BoolResult initOutputAttribute();
63 
66  std::string getInitializerFormalString() const;
67 
70  std::string getInitializerEvaluatedString() const;
71 
72 protected:
78  void initBase(const AttributeWeakPtr& pOutputAttribute);
79 
84  BaseAttribute& getOutputAttribute();
85 
88  virtual BoolResult initAttribute() = 0;
89 
91  virtual std::string createInitializerFormalString() const = 0;
92 
94  virtual std::string createInitializerEvaluatedString() const = 0;
95 
96 // attributes
97 private:
99  AttributeWeakPtr _pOutputAttribute;
100 
102  bool _bInit;
103 };
104 
107 
108 inline bool
110 {
111  return _bInit;
112 }
113 
116 
117 } // end of namespace processor
118 } // end of namespace ipsdk
119 
120 #pragma warning (pop)
121 
122 #endif // __IPSDKBASEPROCESSING_BASEOUTPUTINITIALIZER_H__
Main namespace for IPSDK library.
Definition: AlgorithmFunctionEfficiency.h:22
#define IPSDKBASEPROCESSING_API
Import/Export macro for library IPSDKBaseProcessing.
Definition: IPSDKBaseProcessingExports.h:27
bool isInit() const
retrieve object initialization flag
Definition: BaseOutputInitializer.h:109
eOutputInitializerType
Enumerate describing output initializer type.
Definition: OutputInitializerTypes.h:37
Base class for processing attributes.
Definition: BaseAttribute.h:43
Predefined types for output initializer management.
Base class for output initializer.
Definition: BaseOutputInitializer.h:36
Definition of import/export macro for library.
boost::weak_ptr< BaseAttribute > AttributeWeakPtr
weak pointer to attribute object
Definition: AttributeTypes.h:58