object INativeType.SetValue(MemoryHolder address, int offset, object value)
{
Pointer ptr;
_Array array;
if (value == null)
{
address.WriteIntPtr(offset, IntPtr.Zero);
}
else if (value is int)
{
address.WriteIntPtr(offset, new IntPtr((int)value));
}
else if (value is BigInteger)
{
address.WriteIntPtr(offset, new IntPtr((long)(BigInteger)value));
}
else if ((ptr = value as Pointer) != null)
{
address.WriteIntPtr(offset, ptr._memHolder.ReadMemoryHolder(0));
return(PythonOps.MakeDictFromItems(ptr, "0", ptr._objects, "1"));
}
else if ((array = value as _Array) != null)
{
address.WriteIntPtr(offset, array._memHolder);
return(array);
}
else
{
throw PythonOps.TypeErrorForTypeMismatch(Name, value);
}
return(null);
}