IPSDK  4_1_0_2
IPSDK : Image Processing Software Development Kit
BaseDataSplit.h
1 // BaseDataSplit.h:
3 // ----------------
4 //
14 
15 #ifndef __IPSDKBASEPROCESSING_BASEDATASPLIT_H__
16 #define __IPSDKBASEPROCESSING_BASEDATASPLIT_H__
17 
18 // suppression warning
19 // warning C4275: non dll-interface class 'boost::noncopyable_::noncopyable' used as base for dll-interface class 'ipsdk::processor::BaseDataSplit'
20 // warning C4251: 'ipsdk::processor::BaseDataSplit<ProcessorBaseClass>::_elementInfoColl' : class 'std::vector<_Ty>' needs to have dll-interface to be used by clients of class 'ipsdk::processor::BaseDataSplit<ProcessorBaseClass>'
21 #pragma warning (push)
22 #pragma warning (disable : 4275 4251)
23 
28 #include <boost/noncopyable.hpp>
29 
30 namespace ipsdk {
31 namespace processor {
32 
35 
36 class IPSDKBASEPROCESSING_API BaseDataSplit : public boost::noncopyable
37 {
38 public:
41  BaseDataSplit();
42  virtual ~BaseDataSplit() = 0;
44 
45 // methods
46 public:
48  virtual eSplitBaseType getSplitBaseType() const = 0;
49 
51  virtual const std::string& getAttributeName() const = 0;
52 
54  virtual const std::string& getAttributeToolTip() const = 0;
55 
57  bool isInit() const;
58 
62  bool isSplitted() const;
63 
67  const ElementsLocationInfo& getElementsLocationInfo() const;
68 
72  ipUInt64 getFullMemorySize() const;
73 
77  bool areDataLocalized() const;
78 
82  bool hasLocalData() const;
83 
87  bool hasRemoteData() const;
88 
92  void disableDataLocalization();
93 
94  //----------------------------------------
97  //----------------------------------------
98 
102  ipUInt64 getNbElements() const;
103 
107  ipUInt64 getDataMemorySize(const ipUInt64 elementIdx) const;
109 
110  //-------------------------------------------
113  //-------------------------------------------
114 
118  ipUInt64 getDataMemorySize() const;
120 
121 protected:
125  void initBaseSplitted(const ElementsLocationInfo& elementsLocationInfo);
126 
130  void initBaseUnSplitted(const ElementsLocationInfo& elementsLocationInfo);
131 
133  virtual bool checkProcessorType(const processor::BaseProcessor& processor) = 0;
134 
139  void throwNullInputSharedPtr();
140 
141 // attributes
142 private:
144  ElementsLocationInfo _elementsLocationInfo;
145 
147  bool _bSplitted;
148 
150  bool _bInit;
151 };
152 
155 
156 inline bool
158 {
159  return _bInit;
160 }
161 
164 
165 } // end of namespace processor
166 } // end of namespace ipsdk
167 
168 #pragma warning (pop)
169 
170 #endif // __IPSDKBASEPROCESSING_BASEDATASPLIT_H__
Main namespace for IPSDK library.
Definition: AlgorithmFunctionEfficiency.h:22
#define IPSDKBASEPROCESSING_API
Import/Export macro for library IPSDKBaseProcessing.
Definition: IPSDKBaseProcessingExports.h:27
Header part of macros set for processor class declaration.
uint64_t ipUInt64
Base types definition.
Definition: BaseTypes.h:55
bool isInit() const
retrieve object initialization flag
Definition: BaseDataSplit.h:157
Predefined types for processor management.
Base class for processor class.
Definition: BaseProcessor.h:43
eSplitBaseType
Enumerate describing split operation base type.
Definition: DataSplitTypes.h:33
Definition of import/export macro for library.
Base class for data split objets used for data dispatch.
Definition: BaseDataSplit.h:36
Class allowing to store elements location informations.
Definition: ElementsLocationInfo.h:32
Predefined types for base data split operations.