[pypy-commit] pypy reflex-support: simplify things, clean up some of the immutable hints

cfbolz noreply at buildbot.pypy.org
Fri Jul 15 14:20:19 CEST 2011


Author: Carl Friedrich Bolz <cfbolz at gmx.de>
Branch: reflex-support
Changeset: r45621:69cab0f20d26
Date: 2011-07-15 14:20 +0200
http://bitbucket.org/pypy/pypy/changeset/69cab0f20d26/

Log:	simplify things, clean up some of the immutable hints

diff --git a/pypy/module/cppyy/converter.py b/pypy/module/cppyy/converter.py
--- a/pypy/module/cppyy/converter.py
+++ b/pypy/module/cppyy/converter.py
@@ -26,7 +26,7 @@
 
 
 class TypeConverter(object):
-    _immutable = True
+    _immutable_ = True
     libffitype = lltype.nullptr(clibffi.FFI_TYPE_P.TO)
 
     name = ""
@@ -80,7 +80,7 @@
 
 class ArrayTypeConverterMixin(object):
     _mixin_ = True
-    _immutable = True
+    _immutable_ = True
 
     def __init__(self, space, array_size):
         if array_size <= 0:
@@ -135,7 +135,7 @@
 
 
 class VoidConverter(TypeConverter):
-    _immutable = True
+    _immutable_ = True
     libffitype = libffi.types.void
 
     def __init__(self, space, name):
@@ -147,7 +147,7 @@
 
 
 class BoolConverter(TypeConverter):
-    _immutable = True
+    _immutable_ = True
     libffitype = libffi.types.schar
 
     def _unwrap_object(self, space, w_obj):
@@ -179,7 +179,7 @@
             address[0] = '\x00'
 
 class CharConverter(TypeConverter):
-    _immutable = True
+    _immutable_ = True
     libffitype = libffi.types.schar
 
     def _unwrap_object(self, space, w_value):
@@ -215,7 +215,7 @@
         address[0] = self._unwrap_object(space, w_value)
 
 class IntConverter(TypeConverter):
-    _immutable = True
+    _immutable_ = True
     libffitype = libffi.types.sint
 
     def _unwrap_object(self, space, w_obj):
@@ -239,7 +239,7 @@
         intptr[0] = self._unwrap_object(space, w_value)
 
 class UnsignedIntConverter(TypeConverter):
-    _immutable = True
+    _immutable_ = True
     libffitype = libffi.types.uint
 
     def _unwrap_object(self, space, w_obj):
@@ -263,7 +263,7 @@
         ulongptr[0] = self._unwrap_object(space, w_value)
 
 class LongConverter(TypeConverter):
-    _immutable = True
+    _immutable_ = True
     libffitype = libffi.types.slong
 
     def _unwrap_object(self, space, w_obj):
@@ -287,7 +287,7 @@
         longptr[0] = self._unwrap_object(space, w_value)
 
 class UnsignedLongConverter(TypeConverter):
-    _immutable = True
+    _immutable_ = True
     libffitype = libffi.types.ulong
 
     def _unwrap_object(self, space, w_obj):
@@ -311,7 +311,7 @@
         ulongptr[0] = self._unwrap_object(space, w_value)
 
 class ShortConverter(TypeConverter):
-    _immutable = True
+    _immutable_ = True
     libffitype = libffi.types.sshort
 
     def _unwrap_object(self, space, w_obj):
@@ -335,7 +335,7 @@
         shortptr[0] = self._unwrap_object(space, w_value)
 
 class FloatConverter(TypeConverter):
-    _immutable = True
+    _immutable_ = True
     libffitype = libffi.types.float
 
     def _unwrap_object(self, space, w_obj):
@@ -360,7 +360,7 @@
         floatptr[0] = self._unwrap_object(space, w_value)
 
 class DoubleConverter(TypeConverter):
-    _immutable = True
+    _immutable_ = True
     libffitype = libffi.types.double
 
     def _unwrap_object(self, space, w_obj):
@@ -387,7 +387,7 @@
 
 
 class CStringConverter(TypeConverter):
-    _immutable = True
+    _immutable_ = True
 
     def convert_argument(self, space, w_obj, address):
         x = rffi.cast(rffi.LONGP, address)
@@ -406,70 +406,69 @@
 
 
 class ShortArrayConverter(ArrayTypeConverterMixin, TypeConverter):
-    _immutable_=True
+    _immutable_ = True
     typecode = 'h'
     typesize = rffi.sizeof(rffi.SHORT)
 
 class IntArrayConverter(ArrayTypeConverterMixin, TypeConverter):
-    _immutable_=True
+    _immutable_ = True
     typecode = 'i'
     typesize = rffi.sizeof(rffi.INT)
 
 class UnsignedIntArrayConverter(ArrayTypeConverterMixin, TypeConverter):
-    _immutable_=True
+    _immutable_ = True
     typecode = 'I'
     typesize = rffi.sizeof(rffi.UINT)
 
 class LongArrayConverter(ArrayTypeConverterMixin, TypeConverter):
-    _immutable_=True
+    _immutable_ = True
     typecode = 'l'
     typesize = rffi.sizeof(rffi.LONG)
 
 class FloatArrayConverter(ArrayTypeConverterMixin, TypeConverter):
-    _immutable_=True
+    _immutable_ = True
     typecode = 'f'
     typesize = rffi.sizeof(rffi.FLOAT)
 
 class DoubleArrayConverter(ArrayTypeConverterMixin, TypeConverter):
-    _immutable_=True
+    _immutable_ = True
     typecode = 'd'
     typesize = rffi.sizeof(rffi.DOUBLE)
 
 
 class ShortPtrConverter(PtrTypeConverterMixin, TypeConverter):
-    _immutable_=True
+    _immutable_ = True
     typecode = 'h'
     typesize = rffi.sizeof(rffi.SHORT)
 
 class IntPtrConverter(PtrTypeConverterMixin, TypeConverter):
-    _immutable_=True
+    _immutable_ = True
     typecode = 'i'
     typesize = rffi.sizeof(rffi.INT)
 
 class UnsignedIntPtrConverter(PtrTypeConverterMixin, TypeConverter):
-    _immutable_=True
+    _immutable_ = True
     typecode = 'I'
     typesize = rffi.sizeof(rffi.UINT)
 
 class LongPtrConverter(PtrTypeConverterMixin, TypeConverter):
-    _immutable_=True
+    _immutable_ = True
     typecode = 'l'
     typesize = rffi.sizeof(rffi.LONG)
 
 class FloatPtrConverter(PtrTypeConverterMixin, TypeConverter):
-    _immutable_=True
+    _immutable_ = True
     typecode = 'f'
     typesize = rffi.sizeof(rffi.FLOAT)
 
 class DoublePtrConverter(PtrTypeConverterMixin, TypeConverter):
-    _immutable_=True
+    _immutable_ = True
     typecode = 'd'
     typesize = rffi.sizeof(rffi.DOUBLE)
 
 
 class InstancePtrConverter(TypeConverter):
     _immutable_ = True
-    _immutable_fields_ = ["cpptype"]
 
     def __init__(self, space, cpptype, name):
         self.cpptype = cpptype
diff --git a/pypy/module/cppyy/interp_cppyy.py b/pypy/module/cppyy/interp_cppyy.py
--- a/pypy/module/cppyy/interp_cppyy.py
+++ b/pypy/module/cppyy/interp_cppyy.py
@@ -68,7 +68,7 @@
 
 
 class W_CPPLibrary(Wrappable):
-    _immutable_ = True
+    _immutable_fields_ = ["cdll"]
 
     def __init__(self, space, cdll):
         self.cdll = cdll
@@ -77,6 +77,7 @@
 W_CPPLibrary.typedef = TypeDef(
     'CPPLibrary',
 )
+W_CPPLibrary.typedef.acceptable_as_base_class = True
 
 @jit.elidable_promote()
 def get_methptr_getter(handle, method_index):
@@ -106,6 +107,8 @@
         if self.executor is None:
             raise OperationError(self.space.w_TypeError,
                                  self.space.wrap("return type not handled"))
+        if len(self.arg_types) < len(args_w) or len(args_w) < self.args_required:
+            raise OperationError(self.space.w_TypeError, self.space.wrap("wrong number of args"))
 
         if self.methgetter and cppthis: # only for methods
             try:
@@ -122,9 +125,6 @@
     @jit.unroll_safe
     def do_fast_call(self, cppthis, w_type, args_w):
         space = self.space
-        # XXX factor out
-        if len(self.arg_types) < len(args_w) or len(args_w) < self.args_required:
-            raise OperationError(space.w_TypeError, space.wrap("wrong number of args"))
         if self.arg_converters is None:
             self._build_converters()
         jit.promote(self)
@@ -167,8 +167,6 @@
     def prepare_arguments(self, args_w):
         jit.promote(self)
         space = self.space
-        if len(self.arg_types) < len(args_w) or len(args_w) < self.args_required:
-            raise OperationError(space.w_TypeError, space.wrap("wrong number of args"))
         if self.arg_converters is None:
             self._build_converters()
         args = capi.c_allocate_function_args(len(args_w))
@@ -209,23 +207,9 @@
 class CPPFunction(CPPMethod):
     _immutable_ = True
 
-    def call(self, cppthis, w_type, args_w):
-        assert lltype.typeOf(cppthis) == rffi.VOIDP
-        if self.executor is None:
-            raise OperationError(self.space.w_TypeError,
-                                 self.space.wrap("return type not handled"))
-
-        assert not cppthis
-        args = self.prepare_arguments(args_w)
-        try:
-            return self.executor.execute(self.space, w_type, self, NULL_VOIDP,
-                                         len(args_w), args)
-        finally:
-            self.free_arguments(args, len(args_w))
- 
 
 class CPPConstructor(CPPMethod):
-    _immutable_=True
+    _immutable_ = True
 
     def call(self, cppthis, w_type, args_w):
         newthis = capi.c_allocate(self.cpptype.handle)
@@ -241,7 +225,6 @@
 
 
 class W_CPPOverload(Wrappable):
-    _immutable_ = True
     _immutable_fields_ = ["func_name", "functions[*]"]
 
     def __init__(self, space, func_name, functions):
@@ -297,8 +280,7 @@
 
 
 class W_CPPDataMember(Wrappable):
-    _immutable_=True
-    _immutable_fields_ = ["converter", "offset"]
+    _immutable_fields_ = ["converter", "offset", "_is_static"]
 
     def __init__(self, space, type_name, offset, is_static):
         self.space = space


More information about the pypy-commit mailing list