[arrayfire] 22/75: Adding functions to get raw pointer out of Array<T>

Ghislain Vaillant ghisvail-guest at moszumanska.debian.org
Mon Feb 29 08:01:10 UTC 2016


This is an automated email from the git hooks/post-receive script.

ghisvail-guest pushed a commit to branch dfsg-clean
in repository arrayfire.

commit 7bc56a78cb31bff14bac6b5aa9d08c181c2be65c
Author: Pavan Yalamanchili <pavan at arrayfire.com>
Date:   Thu Feb 11 16:45:20 2016 -0500

    Adding functions to get raw pointer out of Array<T>
---
 src/api/c/internal.cpp       | 24 ++++++++++++------------
 src/backend/cpu/Array.hpp    |  7 +++++++
 src/backend/cuda/Array.hpp   |  7 +++++++
 src/backend/opencl/Array.hpp |  7 +++++++
 4 files changed, 33 insertions(+), 12 deletions(-)

diff --git a/src/api/c/internal.cpp b/src/api/c/internal.cpp
index 8afdefa..47c62c6 100644
--- a/src/api/c/internal.cpp
+++ b/src/api/c/internal.cpp
@@ -109,18 +109,18 @@ af_err af_get_raw_ptr(void **ptr, const af_array arr)
         af_dtype ty = getInfo(arr).getType();
 
         switch (ty) {
-        case f32: res = (void *)getArray<float  >(arr).get(); break;
-        case f64: res = (void *)getArray<double >(arr).get(); break;
-        case c32: res = (void *)getArray<cfloat >(arr).get(); break;
-        case c64: res = (void *)getArray<cdouble>(arr).get(); break;
-        case u32: res = (void *)getArray<uint   >(arr).get(); break;
-        case s32: res = (void *)getArray<int    >(arr).get(); break;
-        case u64: res = (void *)getArray<uintl  >(arr).get(); break;
-        case s64: res = (void *)getArray<intl   >(arr).get(); break;
-        case u16: res = (void *)getArray<ushort >(arr).get(); break;
-        case s16: res = (void *)getArray<short  >(arr).get(); break;
-        case b8 : res = (void *)getArray<char   >(arr).get(); break;
-        case u8 : res = (void *)getArray<uchar  >(arr).get(); break;
+        case f32: res = (void *)getRawPtr(getArray<float  >(arr)); break;
+        case f64: res = (void *)getRawPtr(getArray<double >(arr)); break;
+        case c32: res = (void *)getRawPtr(getArray<cfloat >(arr)); break;
+        case c64: res = (void *)getRawPtr(getArray<cdouble>(arr)); break;
+        case u32: res = (void *)getRawPtr(getArray<uint   >(arr)); break;
+        case s32: res = (void *)getRawPtr(getArray<int    >(arr)); break;
+        case u64: res = (void *)getRawPtr(getArray<uintl  >(arr)); break;
+        case s64: res = (void *)getRawPtr(getArray<intl   >(arr)); break;
+        case u16: res = (void *)getRawPtr(getArray<ushort >(arr)); break;
+        case s16: res = (void *)getRawPtr(getArray<short  >(arr)); break;
+        case b8 : res = (void *)getRawPtr(getArray<char   >(arr)); break;
+        case u8 : res = (void *)getRawPtr(getArray<uchar  >(arr)); break;
         default: TYPE_ERROR(6, ty);
         }
 
diff --git a/src/backend/cpu/Array.hpp b/src/backend/cpu/Array.hpp
index 0c6e701..2a3afcf 100644
--- a/src/backend/cpu/Array.hpp
+++ b/src/backend/cpu/Array.hpp
@@ -88,6 +88,12 @@ namespace cpu
         return (void *)ptr;
     }
 
+    template<typename T>
+    void *getRawPtr(const Array<T>& arr)
+    {
+        return (void *)(arr.get(false));
+    }
+
     // Array Array Implementation
     template<typename T>
     class Array
@@ -227,6 +233,7 @@ namespace cpu
 
         friend void destroyArray<T>(Array<T> *arr);
         friend void *getDevicePtr<T>(const Array<T>& arr);
+        friend void *getRawPtr<T>(const Array<T>& arr);
     };
 
 }
diff --git a/src/backend/cuda/Array.hpp b/src/backend/cuda/Array.hpp
index 03bd8b3..7678754 100644
--- a/src/backend/cuda/Array.hpp
+++ b/src/backend/cuda/Array.hpp
@@ -91,6 +91,12 @@ namespace cuda
     }
 
     template<typename T>
+    void *getRawPtr(const Array<T>& arr)
+    {
+        return (void *)(arr.get(false));
+    }
+
+    template<typename T>
     class Array
     {
         ArrayInfo       info; // This must be the first element of Array<T>
@@ -239,6 +245,7 @@ namespace cuda
 
         friend void destroyArray<T>(Array<T> *arr);
         friend void *getDevicePtr<T>(const Array<T>& arr);
+        friend void *getRawPtr<T>(const Array<T>& arr);
     };
 
 }
diff --git a/src/backend/opencl/Array.hpp b/src/backend/opencl/Array.hpp
index f2a217e..8c5bda9 100644
--- a/src/backend/opencl/Array.hpp
+++ b/src/backend/opencl/Array.hpp
@@ -83,6 +83,12 @@ namespace opencl
     }
 
     template<typename T>
+    void *getRawPtr(const Array<T>& arr)
+    {
+        return (void *)(arr.get());
+    }
+
+    template<typename T>
     class Array
     {
         ArrayInfo info; // This must be the first element of Array<T>
@@ -261,6 +267,7 @@ namespace opencl
 
         friend void destroyArray<T>(Array<T> *arr);
         friend void *getDevicePtr<T>(const Array<T>& arr);
+        friend void *getRawPtr<T>(const Array<T>& arr);
     };
 
 }

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/debian-science/packages/arrayfire.git



More information about the debian-science-commits mailing list