IPSDK  4_1_0_2
IPSDK : Image Processing Software Development Kit
BaseProcessor.h
1 // BaseProcessor.h:
3 // ----------------
4 //
14 
15 #ifndef __IPSDKBASEPROCESSING_BASEPROCESSOR_H__
16 #define __IPSDKBASEPROCESSING_BASEPROCESSOR_H__
17 
18 // suppression warnings
19 // warning C4251: 'ipsdk::processor::BaseProcessor::_pHeader' : class 'boost::shared_ptr<T>' needs to have dll-interface to be used by clients of class 'ipsdk::processor::BaseProcessor'
20 #pragma warning (push)
21 #pragma warning (disable : 4251)
22 
25 #include <IPSDKCore/Processing/Action/Complex/BaseComplexAction.h>
32 #include <IPSDKUtil/Tools/ProcessingResult.h>
33 #include <map>
34 
35 namespace ipsdk {
36 namespace processor {
37 
38 class ProcessorFactory;
39 
42 
44 {
45  // declare dynamic class
47 
48  // friend class for private member access
49 
50 protected:
52  BaseProcessor();
53 
54 public:
56  virtual ~BaseProcessor() = 0;
57 
58 // methods
59 public:
61  virtual eProcessorType getProcessorType() const = 0;
62 
70 
74  const eProcessorRulePolicy& getProcessorRulePolicy() const;
75 
80  std::string getFullInfoStr() const;
81 
82  //------------------------
85  //------------------------
86 
88  bool existsHeaderKey(const std::string& key) const;
89 
91  ItemNames getHeaderKeys() const;
92 
96  const BaseDataItem& getHeaderItem(const std::string& key) const;
97 
101  BaseDataItem& getHeaderItem(const std::string& key);
102 
108  void addHeaderItem(const std::string& key,
109  const DataItemPtr& pItem);
110 
115  void removeHeaderItem(const std::string& key);
116 
117  // remove all items from header
118  void clearHeader();
120 
121  //----------------------------
124  //----------------------------
125 
129  ipUInt32 getNbAttributes() const;
130 
134  const BaseAttribute& getAttribute(ipUInt32 index) const;
135 
139  BaseAttribute& getAttribute(ipUInt32 index);
140 
144  bool existsAttribute(const std::string& attributeName) const;
145 
149  StringVector getAttributeNameColl() const;
150 
154  const BaseAttribute& getAttribute(const std::string& attributeName) const;
155 
159  BaseAttribute& getAttribute(const std::string& attributeName);
161 
162  //-----------------------------------------------
165  //-----------------------------------------------
166 
170  bool hasOutputInitializer(const std::string& attributeName) const;
171 
175  const BaseOutputInitializer& getOutputInitializer(const std::string& attributeName) const;
177 
181  const BaseRule& getGlobalRule() const;
182 
186  const ProcessorDispatchPolicy& getDispatchPolicy() const;
187 
194  void restrictDispatchPolicy(const ProcessorDispatchPolicy& policy);
195 
199  bool isProgressAvailable() const;
200 
205  getProgressAvailability() const;
206 
211  ipsdk::ipUInt64 getTotalNbIterations() const;
212 
213 protected:
215  typedef std::vector<AttributePtr> AttributeColl;
216 
218  typedef std::map<std::string, OutputInitializerPtr> OutputInitializerColl;
219 
222  virtual BoolResult initDerived(AttributeColl& attributeColl,
223  OutputInitializerColl& outputInitializerColl,
224  ProcessorDispatchPolicy& dispatchPolicy,
225  RulePtr& pGlobalRule,
226  const eProcessorRulePolicy& rulePolicy) = 0;
227 
228 // attributes
229 protected:
232 
235 
236 private:
241  BoolResult globalCleanDerived();
242 
245  core::ExecResult initProcess();
246 
249  core::ExecResult endProcess();
250 
254  BoolResult syncInputDataDerived(const Guid& processingSocketGuid);
255 
259  BoolResult syncOutputDataDerived(const Guid& processingSocketGuid);
260 
264  void clearInputData();
265 
270  void clearOutputData();
271 
273  bool checkLicenseValidity() const;
274 
275 // attributes
276 private:
278  eProcessorRulePolicy _rulePolicy;
279 
281  DataItemMapPtr _pHeader;
282 
284  AttributeColl _attributeColl;
285 
287  OutputInitializerColl _outputInitializerColl;
288 
290  RulePtr _pGlobalRule;
291 
293  ProcessorDispatchPolicyPtr _pProcessorDispatchPolicy;
294 };
295 
298 
299 } // end of namespace processor
300 } // end of namespace ipsdk
301 
302 #pragma warning (pop)
303 
304 #endif // __IPSDKBASEPROCESSING_BASEPROCESSOR_H__
Main namespace for IPSDK library.
Definition: AlgorithmFunctionEfficiency.h:22
#define IPSDKBASEPROCESSING_API
Import/Export macro for library IPSDKBaseProcessing.
Definition: IPSDKBaseProcessingExports.h:27
std::vector< AttributePtr > AttributeColl
collection of attributes
Definition: BaseProcessor.h:215
uint64_t ipUInt64
Base types definition.
Definition: BaseTypes.h:55
std::map< std::string, OutputInitializerPtr > OutputInitializerColl
collection of output attribute initializers
Definition: BaseProcessor.h:218
processor rules are enable, sub processor rules are disable
Definition: ProcessorTypes.h:68
eProcessorProgressAvailability _processorProgressAvailability
Progression availability.
Definition: BaseProcessor.h:231
eProcessorProgressAvailability
Enumerate describing processor progression indicator availability.
Definition: ProcessorTypes.h:86
#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
Header part of macros set for class serialization.
ipUInt32 _nbIter
expected number of iterations for provider execution (0 if unknown)
Definition: BaseProcessor.h:234
boost::shared_ptr< DataItemMap > DataItemMapPtr
shared pointer to DataItemMap
Definition: DataItemTypes.h:167
Predefined types for processor management.
Base class for processor class.
Definition: BaseProcessor.h:43
boost::shared_ptr< BaseDataItem > DataItemPtr
shared pointer to DataItem
Definition: DataItemTypes.h:146
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
Predefined types for output initializer management.
Base class for library complex actions.
Definition: BaseComplexAction.h:26
Base class for output initializer.
Definition: BaseOutputInitializer.h:36
std::set< std::string > ItemNames
collection of names or ids for items
Definition: DataItemTypes.h:143
Predefined types for rules management.
Predefined base collection types for library.
Definition of import/export macro for library.
eProcessorType
Enumerate describing processor type.
Definition: ProcessorTypes.h:37
Base class for processing attributes rules.
Definition: BaseRule.h:41
Class encapsuling dispatch policy for processor dispatcher classes.
Definition: ProcessorDispatchPolicy.h:33
Predefined types for data items.
std::vector< std::string > StringVector
stl vector collections
Definition: BaseCollections.h:38
Base class for data items.
Definition: BaseDataItem.h:27
eProcessorRulePolicy
Enumerate describing processor rule policy.
Definition: ProcessorTypes.h:65
boost::shared_ptr< ProcessorDispatchPolicy > ProcessorDispatchPolicyPtr
shared pointer to ProcessorDispatchPolicy object
Definition: ProcessorDispatchPolicyTypes.h:49
uint32_t ipUInt32
Base types definition.
Definition: BaseTypes.h:53