#ifndef __OPENCV_GPU_DEVMEM2D_HPP__\r
#define __OPENCV_GPU_DEVMEM2D_HPP__\r
\r
+#if defined(__DEVCLASES_ADD_THRUST_BEGIN_END__)\r
+ #include "thrust/device_ptr.h"\r
+#endif\r
+\r
+\r
namespace cv\r
{ \r
namespace gpu\r
#else\r
#define __CV_GPU_HOST_DEVICE__\r
#endif\r
+\r
template <bool expr> struct StaticAssert;\r
template <> struct StaticAssert<true> {static __CV_GPU_HOST_DEVICE__ void check(){}}; \r
\r
__CV_GPU_HOST_DEVICE__ size_t elemSize() const { return elem_size; }\r
__CV_GPU_HOST_DEVICE__ T* ptr(int y = 0) { return (T*)( (char*)data + y * step ); }\r
__CV_GPU_HOST_DEVICE__ const T* ptr(int y = 0) const { return (const T*)( (const char*)data + y * step ); } \r
+\r
+#if defined(__DEVCLASES_ADD_THRUST_BEGIN_END__) \r
+ thrust::device_ptr<T> begin() const { return thrust::device_ptr<T>(data); }\r
+ thrust::device_ptr<T> end() const { return thrust::device_ptr<T>(data) + cols * rows; }\r
+#endif\r
};\r
\r
template<typename T> struct PtrStep_\r
__CV_GPU_HOST_DEVICE__ size_t elemSize() const { return elem_size; }\r
__CV_GPU_HOST_DEVICE__ T* ptr(int y = 0) { return (T*)( (char*)data + y * step); }\r
__CV_GPU_HOST_DEVICE__ const T* ptr(int y = 0) const { return (const T*)( (const char*)data + y * step); }\r
- };\r
\r
- \r
- \r
+#if defined(__DEVCLASES_ADD_THRUST_BEGIN_END__) \r
+ thrust::device_ptr<T> begin() const { return thrust::device_ptr<T>(data); }\r
+#endif\r
+ };\r
+ \r
template<typename T> struct PtrElemStep_ : public PtrStep_<T>\r
{ \r
PtrElemStep_(const DevMem2D_<T>& mem) : PtrStep_<T>(mem) \r