From 253848edd96adacb479f63fb3c59179dc69f1f58 Mon Sep 17 00:00:00 2001
From: Andreas Kloeckner <inform@tiker.net>
Date: Thu, 17 Nov 2011 11:41:48 -0500
Subject: [PATCH] Add 'secret' constructor to make MemoryObjects from integers.

---
 src/wrapper/wrap_cl.hpp        | 6 ++++++
 src/wrapper/wrap_cl_part_1.cpp | 4 ++++
 2 files changed, 10 insertions(+)

diff --git a/src/wrapper/wrap_cl.hpp b/src/wrapper/wrap_cl.hpp
index 78946cb8..27d671d4 100644
--- a/src/wrapper/wrap_cl.hpp
+++ b/src/wrapper/wrap_cl.hpp
@@ -1308,6 +1308,12 @@ namespace pyopencl
   }
 #endif
 
+  inline
+  memory_object *memory_object_from_int(intptr_t cl_mem_as_int)
+  {
+    return new memory_object((cl_mem) cl_mem_as_int, true);
+  }
+
   // }}}
 
   // {{{ buffer
diff --git a/src/wrapper/wrap_cl_part_1.cpp b/src/wrapper/wrap_cl_part_1.cpp
index bb8cdda0..48095b04 100644
--- a/src/wrapper/wrap_cl_part_1.cpp
+++ b/src/wrapper/wrap_cl_part_1.cpp
@@ -151,6 +151,10 @@ void pyopencl_expose_part_1()
       .DEF_SIMPLE_METHOD(release)
       .add_property("obj_ptr", &cls::obj_ptr)
       .add_property("hostbuf", &cls::hostbuf)
+      .def("from_cl_mem_as_int", memory_object_from_int,
+          py::return_value_policy<py::manage_new_object>(),
+          py::args("cl_mem_as_int"))
+      .staticmethod("from_cl_mem_as_int")
       ;
   }
 
-- 
GitLab