[pypy-svn] r51356 - in pypy/dist/pypy/rlib: . test

fijal at codespeak.net fijal at codespeak.net
Sat Feb 9 15:32:31 CET 2008


Author: fijal
Date: Sat Feb  9 15:32:29 2008
New Revision: 51356

Added:
   pypy/dist/pypy/rlib/rbuffer.py   (contents, props changed)
   pypy/dist/pypy/rlib/test/test_rbuffer.py   (contents, props changed)
Log:
Add stub file for rbuffer protocol (the pure-rpython buffer, potentially
used in many places (_rawffi, array, buffer...))


Added: pypy/dist/pypy/rlib/rbuffer.py
==============================================================================
--- (empty file)
+++ pypy/dist/pypy/rlib/rbuffer.py	Sat Feb  9 15:32:29 2008
@@ -0,0 +1,21 @@
+
+""" Implementation of pure-rpython low-level buffer, which allows
+you to take address of underlaying memory. Will be used to implement
+buffer protocol on app-level
+"""
+
+from pypy.rpython.lltypesystem import lltype, rffi
+
+class RBuffer:
+    ll_buffer = lltype.nullptr(rffi.CCHARP.TO)
+    
+    def __init__(self, size):
+        self.ll_buffer = lltype.malloc(rffi.CCHARP.TO, size, flavor='raw')
+        self.size = size
+
+    def address(self):
+        return rffi.cast(rffi.INT, self.ll_buffer)
+
+    def free(self):
+        if self.ll_buffer:
+            lltype.free(self.ll_buffer, flavor='raw')

Added: pypy/dist/pypy/rlib/test/test_rbuffer.py
==============================================================================
--- (empty file)
+++ pypy/dist/pypy/rlib/test/test_rbuffer.py	Sat Feb  9 15:32:29 2008
@@ -0,0 +1,10 @@
+
+import py
+from pypy.rlib.rbuffer import RBuffer
+
+class TestRbuffer:
+    def test_creation(self):
+        buf = RBuffer(3)
+        assert buf.address()
+        buf.free()
+    



More information about the Pypy-commit mailing list