[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