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)
Exemple #2
0
 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)
Exemple #3
0
 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)
Exemple #4
0
 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)