Author: Carl Friedrich Bolz <cfb...@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 _______________________________________________ pypy-commit mailing list pypy-commit@python.org http://mail.python.org/mailman/listinfo/pypy-commit