public override void Push(IntPtr L, T data) { if (newRef == -1) { LunaNative.luna_pushstruct(L, metaRef, (IntPtr)Unsafe.AsPointer(ref data), buffer.Addr, buffer.Count); } else { LunaNative.luna_packstruct(L, newRef, (IntPtr)Unsafe.AsPointer(ref data), buffer.Addr, buffer.Count); } }
void _Push(IntPtr L, object data) { byte *ptr = stackalloc byte[buffer.size]; Marshal.StructureToPtr(data, (IntPtr)ptr, false); if (newRef == -1) { LunaNative.luna_pushstruct(L, metaRef, (IntPtr)ptr, buffer.Addr, buffer.Count); } else { LunaNative.luna_packstruct(L, newRef, (IntPtr)ptr, buffer.Addr, buffer.Count); } }
public override void Push(IntPtr L, T data) { byte *ptr = stackalloc byte[buffer.size]; buffer.Init(ptr); state = State.Writing; BuildStruct(ref data); if (newRef == -1) { LunaNative.luna_pushstruct(L, metaRef, (IntPtr)ptr, buffer.Addr, buffer.Count); } else { LunaNative.luna_packstruct(L, newRef, (IntPtr)ptr, buffer.Addr, buffer.Count); } }