IPSDK  4_1_0_2
IPSDK : Image Processing Software Development Kit
BaseDynamicSplit.h
1 // BaseDynamicSplit.h:
3 // -------------------
4 //
16 
17 #ifndef __IPSDKBASEPROCESSING_BASEDYNAMICSPLIT_H__
18 #define __IPSDKBASEPROCESSING_BASEDYNAMICSPLIT_H__
19 
20 #include <IPSDKBaseProcessing/DataSplit/BaseDataSplit.h>
22 #include <IPSDKUtil/Tools/ProcessingResult.h>
24 
25 namespace ipsdk {
26 namespace processor {
27 
30 
32 {
33 // predefined public types
34 public:
36  static const eSplitBaseType::domain g_splitBaseType = eSplitBaseType::eSBT_Dynamic;
37 
38 public:
42  virtual ~BaseDynamicSplit() = 0;
44 
45 // methods
46 public:
48  eSplitBaseType getSplitBaseType() const;
49 
51  virtual eSplitDynamicType getSplitDynamicType() const = 0;
52 
56  ipUInt64 getNbMinEltsPerSplit() const;
57 
61  ipUInt64 getNbMaxEltsPerSplit() const;
62 
70  BoolResult initAttribute(BaseProcessor& processor,
71  const ipUInt64 elementsStartIndex,
72  const ipUInt64 nbElements,
73  const core::BaseRequestOrigin& requestOrigin);
74 
75 protected:
83  void initSplitted(const ElementsLocationInfo& elementsLocationInfo,
84  const ipUInt64 nbMinEltsPerSplit = 1,
85  const ipUInt64 nbMaxEltsPerSplit = NumericLimits<ipUInt64>::max());
86 
90  void initUnSplitted(const ElementsLocationInfo& elementsLocationInfo);
91 
95  virtual BoolResult processAttribute(BaseProcessor& processor,
96  const ipUInt64 elementsStartIndex,
97  const ipUInt64 nbElements,
98  const core::BaseRequestOrigin& requestOrigin) = 0;
99 
100 private:
101  // private export of base class method to avoid direct call
102  // from derived classes
105 
106 // attributes
107 protected:
110 
113 };
114 
117 
118 inline eSplitBaseType
120 {
121  return g_splitBaseType;
122 }
123 
126 
127 } // end of namespace processor
128 } // end of namespace ipsdk
129 
130 #endif // __IPSDKBASEPROCESSING_BASEDYNAMICSPLIT_H__
Main namespace for IPSDK library.
Definition: AlgorithmFunctionEfficiency.h:22
#define IPSDKBASEPROCESSING_API
Import/Export macro for library IPSDKBaseProcessing.
Definition: IPSDKBaseProcessingExports.h:27
uint64_t ipUInt64
Base types definition.
Definition: BaseTypes.h:55
void initBaseSplitted(const ElementsLocationInfo &elementsLocationInfo)
base class initialization method for splitted elements
eSplitDynamicType
Enumerate describing dynamic split operation type.
Definition: DynamicSplitTypes.h:36
ipUInt64 _nbMinEltsPerSplit
minimum number of elements for a split operation
Definition: BaseDynamicSplit.h:109
Dynamic split operation type with runtime data definition.
Definition: DataSplitTypes.h:37
Definition: NumericLimits.h:27
Base class for processor class.
Definition: BaseProcessor.h:43
Base class for data dynamic split objets used for data dispatch.
Definition: BaseDynamicSplit.h:31
void initBaseUnSplitted(const ElementsLocationInfo &elementsLocationInfo)
base class initialization method for un splitted elements
eSplitBaseType
Enumerate describing split operation base type.
Definition: DataSplitTypes.h:33
Predefined types for dynamic data split operations.
static const eSplitBaseType::domain g_splitBaseType
data split type associated to object
Definition: BaseDynamicSplit.h:36
ipUInt64 _nbMaxEltsPerSplit
maximum number of elements for a split operation
Definition: BaseDynamicSplit.h:112
eSplitBaseType getSplitBaseType() const
retrieve split operation base type
Definition: BaseDynamicSplit.h:119
Base class for data split objets used for data dispatch.
Definition: BaseDataSplit.h:36
Base class for request origin description.
Definition: BaseRequestOrigin.h:28
Class allowing to store elements location informations.
Definition: ElementsLocationInfo.h:32