Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
        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);
        }