IPSDK  4_1_0_2
IPSDK : Image Processing Software Development Kit
BaseImageFragment.h
1 // BaseImageFragment.h:
3 // --------------------
4 //
14 
15 #ifndef __IPSDKIMAGE_BASEIMAGEFRAGMENT_H__
16 #define __IPSDKIMAGE_BASEIMAGEFRAGMENT_H__
17 
18 // suppression warnings
19 // warning C4251: 'ipsdk::image::BaseImageFragment::_pImageIdentifier' : class 'boost::shared_ptr<T>' needs to have dll-interface to be used by clients of class 'ipsdk::image::BaseImageFragment'
20 // warning C4275: non dll-interface class 'ipsdk::BaseIOData' used as base for dll-interface class 'ipsdk::image::BaseImageFragment'
21 #pragma warning (push)
22 #pragma warning (disable : 4251 4275)
23 
28 #include <IPSDKBaseData/DataStatus/BaseIOData.h>
29 #include <IPSDKSerialization/Engine/BaseObjectWithSkeleton.h>
30 
31 namespace ipsdk {
32 namespace image {
33 
34 struct ImageFragmentExtractor;
35 
38 
40  public BaseIOData
41 {
42  // declare serial class
44 
45 public:
49  virtual ~BaseImageFragment() = 0;
51 
52 // methods
53 public:
55  virtual eImageFragmentType getImageFragmentType() const = 0;
56 
59  virtual bool isInput() const = 0;
60 
63  virtual bool isOutput() const = 0;
64 
66  bool isInOut() const
67  {
68  return isInput() == true &&
69  isOutput() == true;
70  }
71 
73  bool isInit() const;
74 
75  //------------------------
78  //------------------------
79 
82  const Guid& getGuid() const;
83 
86  const std::string& getName() const;
88 
89  //--------------------
92  //--------------------
93 
96  bool existsHeaderKey(const std::string& key) const;
97 
100  ItemNames getHeaderKeys() const;
101 
106  const BaseDataItem& getHeaderItem(const std::string& key) const;
108 
111  eDataAccessMode getDataAccessMode() const;
112 
115  bool hasLocalDataAccess() const;
116 
119  bool isBufferInit() const;
120 
123  BoolResult initBuffer();
124 
127  void clearBuffer();
128 
132  bool isBufferSyncInput() const;
133 
137  bool isBufferSyncOutput() const;
138 
140  void clear();
141 
142 protected:
144  void initBase(const DataIdentifierConstPtr& pImageIdentifier,
145  const DataItemMapConstPtr& pImageHeader);
146 
148  virtual eDataAccessMode retrieveAccessMode() const = 0;
149 
151  virtual void clearDerived() = 0;
152 
154  virtual bool isBufferInitDerived() const = 0;
155 
157  virtual BoolResult initBufferDerived() = 0;
158 
160  virtual void clearBufferDerived() = 0;
161 
162  //-----------------------------------
165  //-----------------------------------
166 
173  BoolResult readData() const;
174 
177  virtual BoolResult readDataDerived() const = 0;
178 
185  BoolResult writeData();
186 
189  virtual BoolResult writeDataDerived() = 0;
191 
192 // attributes
193 private:
195  DataIdentifierConstPtr _pImageIdentifier;
196 
198  DataItemMapConstPtr _pImageHeader;
199 
202  mutable bool _bBufferSyncInput;
203 
206  bool _bBufferSyncOutput;
207 
209  bool _bInit;
210 };
211 
214 
215 inline bool
217 {
218  return _bInit;
219 }
220 
223 
224 } // end of namespace image
225 } // end of namespace ipsdk
226 
227 #pragma warning (pop)
228 
229 #endif // __IPSDKIMAGE_BASEIMAGEFRAGMENT_H__
Predefined types for image fragments management.
Main namespace for IPSDK library.
Definition: AlgorithmFunctionEfficiency.h:22
bool isInit() const
retrieve object initialization flag
Definition: BaseImageFragment.h:216
bool isInOut() const
retrieve fragment in/out state
Definition: BaseImageFragment.h:66
eDataAccessMode
Enumerate describing access mode for an image fragment data.
Definition: ImageFragmentTypes.h:45
#define IPSDK_DECLARE_ABSTRACT_SERIAL_WITHOUT_COPY(libraryName, className)
macro enabling serialization on abstract class
Definition: SerializationHdrMacro.h:97
Class encapsulating an auto initialized uuid.
Definition: Guid.h:27
Predefined types for data identifier management.
Definition of import/export macro for library.
boost::shared_ptr< const DataItemMap > DataItemMapConstPtr
shared pointer to const DataItemMap
Definition: DataItemTypes.h:170
Base class for image fragments.
Definition: BaseImageFragment.h:39
std::set< std::string > ItemNames
collection of names or ids for items
Definition: DataItemTypes.h:143
Base class for data with IO status.
Definition: BaseIOData.h:26
#define IPSDKIMAGE_API
Import/Export macro for library IPSDKImage.
Definition: IPSDKImageExports.h:27
Base class for serialization object with three serialization modes :
Definition: BaseObjectWithSkeleton.h:33
boost::shared_ptr< const DataIdentifier > DataIdentifierConstPtr
shared pointer to const data identifier
Definition: DataIdentifierTypes.h:31
Predefined types for data items.
eImageFragmentType
Enumerate describing image fragment type.
Definition: ImageFragmentTypes.h:33
Base class for data items.
Definition: BaseDataItem.h:27