IPSDK  4_1_0_2
IPSDK : Image Processing Software Development Kit
BaseLineZStrip3dParser.h
1 // BaseLineZStrip3dParser.h:
3 // -------------------------
4 //
14 
15 #ifndef __IPSDKIMAGEPROCESSING_BASELINEZSTRIP3DPARSER_H__
16 #define __IPSDKIMAGEPROCESSING_BASELINEZSTRIP3DPARSER_H__
17 
18 // suppression warnings
19 // warning C4251: 'ipsdk::imaproc::BaseLineZStrip3dParser<BaseStripAttributeClassType>::_pImageZStrip3d' : class 'boost::shared_ptr<T>' needs to have dll-interface to be used by clients of class 'ipsdk::imaproc::BaseLineZStrip3dParser<BaseStripAttributeClassType>'
20 #pragma warning (push)
21 #pragma warning (disable : 4251)
22 
24 #include <IPSDKImageProcessing/Algorithm/Parser/Strip/BaseStripParser.h>
25 #include <IPSDKImage/Fragment/Strip/ZStrip3d/BaseImageZStrip3d.h>
26 #include <boost/shared_ptr.hpp>
27 #include <boost/mpl/equal_to.hpp>
28 #include <boost/mpl/not_equal_to.hpp>
29 #include <boost/mpl/int.hpp>
30 #include <boost/mpl/if.hpp>
31 
32 namespace ipsdk {
33 namespace imaproc {
34 
35 class BaseInputYStrip2dAttribute;
36 class BaseInOutYStrip2dAttribute;
37 class BaseOutputYStrip2dAttribute;
38 
41 
42 template <typename BaseStripAttributeClassType>
44 {
45 // predefined public types
46 public:
48  static const eIOStatus::domain g_attributeIO = BaseStripAttributeClassType::g_dataIOStatus;
49 
51  typedef typename BaseStripAttributeClassType::ValueType ValueType;
52 
54  typedef typename BaseStripAttributeClassType::StorageType StorageType;
55 
57  typedef typename boost::mpl::if_<typename boost::mpl::equal_to<boost::mpl::int_<g_attributeIO>,
58  boost::mpl::int_<eIOStatus::eIOS_Input> >::type,
60  typename boost::mpl::if_<typename boost::mpl::equal_to<boost::mpl::int_<g_attributeIO>,
61  boost::mpl::int_<eIOStatus::eIOS_Output> >::type,
65 
66 public:
70  virtual ~BaseLineZStrip3dParser() = 0;
72 
73 // methods
74 public:
77  {
79  }
80 
86  void init(const StorageType& pImageZStrip3d);
87 
92  virtual ipUInt64 getBufferSize() const = 0;
93 
98  template <typename T>
99  typename boost::enable_if<typename boost::mpl::not_equal_to<boost::mpl::int_<g_attributeIO>,
100  boost::mpl::int_<eIOStatus::eIOS_Output> >::type,
101  const T*>::type
102  getBuffer() const
103  {
104  return static_cast<const T*>(accessBuffer());
105  }
106  template <typename T>
107  typename boost::enable_if<typename boost::mpl::not_equal_to<boost::mpl::int_<g_attributeIO>,
108  boost::mpl::int_<eIOStatus::eIOS_Input> >::type,
109  T*>::type
111  {
112  return static_cast<T*>(accessBuffer());
113  }
115 
116 protected:
121  virtual const void* accessBuffer() const = 0;
122  virtual void* accessBuffer() = 0;
124 
126  virtual void clearDerived();
127 
128 // attributes
129 protected:
132 
135 
138 
141 
144 };
145 
148 
149 } // end of namespace imaproc
150 } // end of namespace ipsdk
151 
152 #pragma warning (pop)
153 
154 #endif // __IPSDKIMAGEPROCESSING_BASELINEZSTRIP3DPARSER_H__
Main namespace for IPSDK library.
Definition: AlgorithmFunctionEfficiency.h:22
uint64_t ipUInt64
Base types definition.
Definition: BaseTypes.h:55
BaseStripAttributeClassType::ValueType ValueType
value type associated to object
Definition: BaseLineZStrip3dParser.h:51
ipUInt64 _sizeX
image size along X axis
Definition: BaseLineZStrip3dParser.h:137
image::eStripParsingDirection _stripParsingDirection
strip parsing direction
Definition: BaseLineZStrip3dParser.h:134
boost::enable_if< typename boost::mpl::not_equal_to< boost::mpl::int_< g_attributeIO >, boost::mpl::int_< eIOStatus::eIOS_Input > >::type, T * >::type getBuffer()
retrieve buffer associated to current operation
Definition: BaseLineZStrip3dParser.h:110
eStripParserType getStripParserType() const
retrieve strip parser type
Definition: BaseLineZStrip3dParser.h:76
eStripParserType
Enumerate describing strip parser type.
Definition: StripParserTypes.h:30
StorageType _pImageZStrip3d
shared pointer to z strip 3d
Definition: BaseLineZStrip3dParser.h:131
Base class for z strip 3d parsed line by line.
Definition: BaseLineZStrip3dParser.h:43
Base class for input image 2d strip with splitting along Y axis attributes.
Definition: BaseInputYStrip2dAttribute.h:32
Definition of import/export macro for library.
#define IPSDKIMAGEPROCESSING_API
Import/Export macro for library IPSDKImageProcessing.
Definition: IPSDKImageProcessingExports.h:25
Z strip 3d parser allowing line by line strip parsing.
Definition: StripParserTypes.h:44
Base class for input and output image 2d strip with splitting along Y axis attributes.
Definition: BaseInOutYStrip2dAttribute.h:32
eStripParsingDirection
Enumerate describing strip parsing direction.
Definition: ImageStripTypes.h:72
Base class for output image 2d strip with splitting along Y axis attributes.
Definition: BaseOutputYStrip2dAttribute.h:32
Base class for objects allowing to parse strip attribute data.
Definition: BaseStripParser.h:27
ipUInt64 _sizeY
image size along Y axis
Definition: BaseLineZStrip3dParser.h:140
boost::mpl::if_< typename boost::mpl::equal_to< boost::mpl::int_< g_attributeIO >, boost::mpl::int_< eIOStatus::eIOS_Input > >::type, BaseInputYStrip2dAttribute, typename boost::mpl::if_< typename boost::mpl::equal_to< boost::mpl::int_< g_attributeIO >, boost::mpl::int_< eIOStatus::eIOS_Output > >::type, BaseOutputYStrip2dAttribute, BaseInOutYStrip2dAttribute >::type >::type YStrip2dAttributeType
associated y strip 2d attribute
Definition: BaseLineZStrip3dParser.h:64
ipUInt64 _stripSizeZ
strip size along Z axis
Definition: BaseLineZStrip3dParser.h:143
boost::enable_if< typename boost::mpl::not_equal_to< boost::mpl::int_< g_attributeIO >, boost::mpl::int_< eIOStatus::eIOS_Output > >::type, const T * >::type getBuffer() const
retrieve buffer associated to current operation
Definition: BaseLineZStrip3dParser.h:102
BaseStripAttributeClassType::StorageType StorageType
storage type associated to object
Definition: BaseLineZStrip3dParser.h:54