X-Git-Url: https://projects.mako.cc/source/harrypotter-wikipedia-cdsw/blobdiff_plain/ce5c13c094d659125fe85d59b9bc0e4c2bf40072..3248892a26a9f80a1a8d6ef5da9ad89a26ca03df:/win_unicode_console/buffer.py?ds=sidebyside diff --git a/win_unicode_console/buffer.py b/win_unicode_console/buffer.py deleted file mode 100644 index cd5853c..0000000 --- a/win_unicode_console/buffer.py +++ /dev/null @@ -1,51 +0,0 @@ - -from ctypes import (byref, POINTER, Structure, pythonapi, - c_int, c_char, c_char_p, c_void_p, py_object, c_ssize_t) -import sys - -c_ssize_p = POINTER(c_ssize_t) - -PyObject_GetBuffer = pythonapi.PyObject_GetBuffer -PyBuffer_Release = pythonapi.PyBuffer_Release - - -PyBUF_SIMPLE = 0 -PyBUF_WRITABLE = 1 - - -class Py_buffer(Structure): - _fields_ = [ - ("buf", c_void_p), - ("obj", py_object), - ("len", c_ssize_t), - ("itemsize", c_ssize_t), - ("readonly", c_int), - ("ndim", c_int), - ("format", c_char_p), - ("shape", c_ssize_p), - ("strides", c_ssize_p), - ("suboffsets", c_ssize_p), - ("internal", c_void_p) - ] - - if sys.version_info[0] < 3: - _fields_.insert(-1, ("smalltable", c_ssize_t * 2)) - - @classmethod - def get_from(cls, obj, flags=PyBUF_SIMPLE): - buf = cls() - PyObject_GetBuffer(py_object(obj), byref(buf), flags) - return buf - - def release(self): - PyBuffer_Release(byref(self)) - - -def get_buffer(obj, writable=False): - buf = Py_buffer.get_from(obj, PyBUF_WRITABLE if writable else PyBUF_SIMPLE) - try: - buffer_type = c_char * buf.len - return buffer_type.from_address(buf.buf) - finally: - buf.release() -