public override T Get(IntPtr L, int index) { T data = default; if (unpackRef == -1) { LunaNative.luna_getstruct(L, index, (IntPtr)Unsafe.AsPointer(ref data), buffer.Addr, buffer.Count); } else { LunaNative.luna_unpackstruct(L, index, unpackRef, (IntPtr)Unsafe.AsPointer(ref data), buffer.Addr, buffer.Count); } return(data); }
object _Get(IntPtr L, int index) { byte *ptr = stackalloc byte[buffer.size]; if (unpackRef == -1) { LunaNative.luna_getstruct(L, index, (IntPtr)ptr, buffer.Addr, buffer.Count); } else { LunaNative.luna_unpackstruct(L, index, unpackRef, (IntPtr)ptr, buffer.Addr, buffer.Count); } object boxed = Marshal.PtrToStructure((IntPtr)ptr, type); return(boxed); }
public override T Get(IntPtr L, int index) { byte *ptr = stackalloc byte[buffer.size]; if (unpackRef == -1) { LunaNative.luna_getstruct(L, index, (IntPtr)ptr, buffer.Addr, buffer.Count); } else { LunaNative.luna_unpackstruct(L, index, unpackRef, (IntPtr)ptr, buffer.Addr, buffer.Count); } buffer.Init(ptr); state = State.Reading; T obj = default; BuildStruct(ref obj); return((T)obj); }