IPSDK  4_1_0_2
IPSDK : Image Processing Software Development Kit
BaseProcessingAlgorithm.h
1 // BaseProcessingAlgorithm.h:
3 // --------------------------
4 //
14 
15 #ifndef __IPSDKBASEPROCESSING_BASEPROCESSINGALGORITHM_H__
16 #define __IPSDKBASEPROCESSING_BASEPROCESSINGALGORITHM_H__
17 
19 #include <IPSDKBaseProcessing/Algorithm/Function/InstructionSetsIdentifier.h>
21 #include <IPSDKBaseProcessing/Processor/Instances/BaseSyncProcessor.h>
22 #include <vector>
23 
24 namespace ipsdk {
25 namespace processor {
26 
27 class DataTypeIdentifierColl;
28 class AlgorithmFunctionSelector;
29 class AlgorithmFunctionIdentifier;
30 struct ProcessingInfo;
31 
34 
36 {
37  // declare serial class
39 
40 // predefined public types
41 public:
44 
47 
50 
52  typedef BoolResult (BaseProcessingAlgorithm::*FunctionType)(const ProcessingInfo& info);
53 
54 protected:
57 
58 public:
60  virtual ~BaseProcessingAlgorithm() = 0;
61 
62 // methods
63 public:
64 
65 protected:
67  virtual const FunctionSelector& getFunctionSelector() const = 0;
68 
73  virtual const InstructionSetsIdentifier& getForcedInstructionSets() const = 0;
74 
77  virtual void getDataTypeIdColl(DataTypeIdColl& dataTypeIdColl) const = 0;
78 
80  typedef std::vector<DataParserPtr> DataParserColl;
81 
84  virtual void initDataParserColl(DataParserColl& dataParserColl) = 0;
85 
88  virtual void clearDataParserColl() = 0;
89 
93 
97 
100  virtual void getNoParseInfo(ipUInt64& nbDataByElement,
101  ipUInt64& nbMaxInitData,
102  ipUInt64& nbMaxFinalData) const
103  {
104  nbDataByElement = -1;
105  nbMaxInitData = 0;
106  nbMaxFinalData = 0;
107  }
108 
109 private:
111  core::ExecResult execPreProcess();
112 
114  core::ExecResult execPostProcess();
115 
118  core::ExecResult mainProcess();
119 
127  void extractInfo(const DataParserColl& dataParserColl,
128  ipUInt64& nbElements,
129  ipUInt64& nbDataByElement,
130  ipUInt64& nbMaxInitData,
131  ipUInt64& nbMaxFinalData) const;
132 
134  void initData(const DataParserColl& dataParserColl,
135  const ipUInt64 nbInitData,
136  const ipUInt64 nbMainData,
137  const ipUInt64 nbFinalData,
138  const ipUInt64 nbRealFinalData);
139 
141  void prepareData(const DataParserColl& dataParserColl,
142  const ipUInt64 elementIdx);
143 
145  BoolResult processInitData(const DataParserColl& dataParserColl,
146  const AlgorithmFunctionIdentifier& functionId,
147  const ipUInt64 elementIdx,
148  const ipUInt64 nbInitData);
149 
151  BoolResult processMainData(const DataParserColl& dataParserColl,
152  const AlgorithmFunctionIdentifier& functionId,
153  const ipUInt64 elementIdx,
154  const ipUInt64 nbInitData,
155  const ipUInt64 nbMainData);
156 
158  BoolResult processFinalData(const DataParserColl& dataParserColl,
159  const AlgorithmFunctionIdentifier& functionId,
160  const ipUInt64 elementIdx,
161  const ipUInt64 nbInitData,
162  const ipUInt64 nbMainData,
163  const ipUInt64 nbRealFinalData,
164  const ipUInt64 nbTotFinalData);
165 
166 // attributes
167 protected:
168 
169 };
170 
173 
174 } // end of namespace processor
175 } // end of namespace ipsdk
176 
177 #endif // __IPSDKBASEPROCESSING_BASEPROCESSINGALGORITHM_H__
Class used to select a processing function given data types informations.
Definition: AlgorithmFunctionSelector.h:31
Main namespace for IPSDK library.
Definition: AlgorithmFunctionEfficiency.h:22
#define IPSDKBASEPROCESSING_API
Import/Export macro for library IPSDKBaseProcessing.
Definition: IPSDKBaseProcessingExports.h:27
DataTypeIdentifierColl DataTypeIdColl
data type identifier collection used by processing algorithm
Definition: BaseProcessingAlgorithm.h:43
uint64_t ipUInt64
Base types definition.
Definition: BaseTypes.h:55
#define IPSDK_DECLARE_ABSTRACT_SERIAL_WITHOUT_COPY(libraryName, className)
macro enabling serialization on abstract class
Definition: SerializationHdrMacro.h:97
virtual core::ExecResult postProcess()
method called after processing
Definition: BaseProcessingAlgorithm.h:96
Structure agregating processing informations for algorithm processing function call.
Definition: ProcessingInfo.h:28
virtual core::ExecResult preProcess()
method called before processing
Definition: BaseProcessingAlgorithm.h:92
ProcessingResult< eExecutionResult > ExecResult
type used to retrieve an execution result
Definition: ProcessingTypes.h:65
Base class for synchronous processors.
Definition: BaseSyncProcessor.h:26
Execution is successful.
Definition: ProcessingTypes.h:53
Definition of import/export macro for library.
ProcessingResult< bool > BoolResult
typedef for boolean results associated to a string description
Definition: ProcessingResultTypes.h:29
Class allowing to identify a processing function.
Definition: AlgorithmFunctionIdentifier.h:35
AlgorithmFunctionSelector FunctionSelector
algorithm function selector type used by processing algorithm
Definition: BaseProcessingAlgorithm.h:49
Predefined types for data parser management.
virtual void getNoParseInfo(ipUInt64 &nbDataByElement, ipUInt64 &nbMaxInitData, ipUInt64 &nbMaxFinalData) const
Definition: BaseProcessingAlgorithm.h:100
Class used for data type collection function identification.
Definition: DataTypeIdentifierColl.h:34
Base class for processing algorithm.
Definition: BaseProcessingAlgorithm.h:35
AlgorithmFunctionIdentifier FunctionId
function identifier used by processing algorithm
Definition: BaseProcessingAlgorithm.h:46
Class used for processor instruction sets function identification.
Definition: InstructionSetsIdentifier.h:33
std::vector< DataParserPtr > DataParserColl
collection of data parser
Definition: BaseProcessingAlgorithm.h:80