From c8544f393bf8bb94be26de4a978d8bfbe49084bf Mon Sep 17 00:00:00 2001 From: Anatoly Baksheev Date: Thu, 2 Jun 2011 12:38:50 +0000 Subject: [PATCH] added begin/and with Thrust iterators for Device classes --- modules/gpu/include/opencv2/gpu/devmem2d.hpp | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/modules/gpu/include/opencv2/gpu/devmem2d.hpp b/modules/gpu/include/opencv2/gpu/devmem2d.hpp index 7341e2f..b811371 100644 --- a/modules/gpu/include/opencv2/gpu/devmem2d.hpp +++ b/modules/gpu/include/opencv2/gpu/devmem2d.hpp @@ -43,6 +43,11 @@ #ifndef __OPENCV_GPU_DEVMEM2D_HPP__ #define __OPENCV_GPU_DEVMEM2D_HPP__ +#if defined(__DEVCLASES_ADD_THRUST_BEGIN_END__) + #include "thrust/device_ptr.h" +#endif + + namespace cv { namespace gpu @@ -55,6 +60,7 @@ namespace cv #else #define __CV_GPU_HOST_DEVICE__ #endif + template struct StaticAssert; template <> struct StaticAssert {static __CV_GPU_HOST_DEVICE__ void check(){}}; @@ -80,6 +86,11 @@ namespace cv __CV_GPU_HOST_DEVICE__ size_t elemSize() const { return elem_size; } __CV_GPU_HOST_DEVICE__ T* ptr(int y = 0) { return (T*)( (char*)data + y * step ); } __CV_GPU_HOST_DEVICE__ const T* ptr(int y = 0) const { return (const T*)( (const char*)data + y * step ); } + +#if defined(__DEVCLASES_ADD_THRUST_BEGIN_END__) + thrust::device_ptr begin() const { return thrust::device_ptr(data); } + thrust::device_ptr end() const { return thrust::device_ptr(data) + cols * rows; } +#endif }; template struct PtrStep_ @@ -96,10 +107,12 @@ namespace cv __CV_GPU_HOST_DEVICE__ size_t elemSize() const { return elem_size; } __CV_GPU_HOST_DEVICE__ T* ptr(int y = 0) { return (T*)( (char*)data + y * step); } __CV_GPU_HOST_DEVICE__ const T* ptr(int y = 0) const { return (const T*)( (const char*)data + y * step); } - }; - - +#if defined(__DEVCLASES_ADD_THRUST_BEGIN_END__) + thrust::device_ptr begin() const { return thrust::device_ptr(data); } +#endif + }; + template struct PtrElemStep_ : public PtrStep_ { PtrElemStep_(const DevMem2D_& mem) : PtrStep_(mem) -- 2.7.4