def __setattr__(self, name, value): try: fieldtype = self._fieldtypes[name].ctype except KeyError: return _CData.__setattr__(self, name, value) if ensure_objects(value) is not None: key = keepalive_key(getattr(self.__class__, name).num) store_reference(self, key, value._objects) arg = fieldtype._CData_value(value) if fieldtype._fficompositesize is not None: from ctypes import memmove dest = self._buffer.fieldaddress(name) memmove(dest, arg, fieldtype._fficompositesize) else: self._buffer.__setattr__(name, arg)
def __setattr__(self, name, value): try: field = self._fieldtypes[name] except KeyError: return _CData.__setattr__(self, name, value) fieldtype = field.ctype cobj = fieldtype.from_param(value) if ensure_objects(cobj) is not None: key = keepalive_key(field.num) store_reference(self, key, cobj._objects) arg = cobj._get_buffer_value() if fieldtype._fficompositesize is not None: from ctypes import memmove dest = self._buffer.fieldaddress(name) memmove(dest, arg, fieldtype._fficompositesize) else: self._buffer.__setattr__(name, arg)