aboutsummaryrefslogtreecommitdiffstats
path: root/libshiboken
diff options
context:
space:
mode:
authorHugo Parente Lima <hugo.pl@gmail.com>2011-09-15 19:10:22 -0300
committerHugo Parente Lima <hugo.pl@gmail.com>2012-03-08 16:17:15 -0300
commit9785f258d93b4976872a17fbf61bd27a4c4123cd (patch)
treedfd7b6b5926191077fcc7b218ba10fc7a3cbb57b /libshiboken
parenteea010d0beeffed9c448111aba914f71e0018954 (diff)
Port Shiboken buffer interface to Python3.
Diffstat (limited to 'libshiboken')
-rw-r--r--libshiboken/shibokenbuffer.cpp12
1 files changed, 12 insertions, 0 deletions
diff --git a/libshiboken/shibokenbuffer.cpp b/libshiboken/shibokenbuffer.cpp
index 67b3ba726..6f41804ae 100644
--- a/libshiboken/shibokenbuffer.cpp
+++ b/libshiboken/shibokenbuffer.cpp
@@ -43,7 +43,19 @@ void* Shiboken::Buffer::getPointer(PyObject* pyObj, Py_ssize_t* size)
PyObject* Shiboken::Buffer::newObject(void* memory, Py_ssize_t size, Type type)
{
+#ifdef IS_PY3K
+ Py_buffer view;
+ memset(&view, 0, sizeof(view));
+ view.buf = memory;
+ view.len = size;
+ view.readonly = type == Shiboken::Buffer::ReadOnly;
+ view.ndim = 1;
+ Py_ssize_t shape[] = { size };
+ view.shape = shape;
+ return PyMemoryView_FromBuffer(&view);
+#else
return type == ReadOnly ? PyBuffer_FromMemory(memory, size) : PyBuffer_FromReadWriteMemory(memory, size);
+#endif
}
PyObject* Shiboken::Buffer::newObject(const void* memory, Py_ssize_t size)