[pypy-svn] r53770 - in pypy/dist/pypy/rlib: . test
fijal at codespeak.net
fijal at codespeak.net
Tue Apr 15 05:35:49 CEST 2008
Author: fijal
Date: Tue Apr 15 05:35:47 2008
New Revision: 53770
Added:
pypy/dist/pypy/rlib/rstring.py (contents, props changed)
pypy/dist/pypy/rlib/test/test_rstring.py (contents, props changed)
Log:
string builder implementation, first steps.
Added: pypy/dist/pypy/rlib/rstring.py
==============================================================================
--- (empty file)
+++ pypy/dist/pypy/rlib/rstring.py Tue Apr 15 05:35:47 2008
@@ -0,0 +1,22 @@
+
+from pypy.rpython.extregistry import ExtRegistryEntry
+from pypy.annotation import model as annmodel
+
+def builder(initial_space=20):
+ return []
+
+class SomeStringBuilder(annmodel.SomeObject):
+ def __init__(self, initial_space=0):
+ self.initial_space = initial_space
+
+class StringBuilderEntry(ExtRegistryEntry):
+ _about_ = builder
+
+ def compute_result_annotation(self, s_initial_space=None):
+ if s_initial_space is None:
+ initial_space = 0
+ else:
+ assert s_initial_space.is_constant()
+ initial_space = s_initial_space.const
+ assert isinstance(initial_space, int)
+ return SomeStringBuilder(initial_space)
Added: pypy/dist/pypy/rlib/test/test_rstring.py
==============================================================================
--- (empty file)
+++ pypy/dist/pypy/rlib/test/test_rstring.py Tue Apr 15 05:35:47 2008
@@ -0,0 +1,16 @@
+
+from pypy.translator.translator import TranslationContext
+from pypy.rlib import rstring
+
+class TestAnnotationStringBuilder:
+ def annotate(self, func, args):
+ t = TranslationContext()
+ res = t.buildannotator().build_types(func, args)
+ return t, res
+
+ def test_builder(self):
+ def f():
+ return rstring.builder()
+
+ t, res = self.annotate(f, [])
+ assert isinstance(res, rstring.SomeStringBuilder)
More information about the Pypy-commit
mailing list