Exemplo n.º 1
0
        public Memory <T> ReadMemoryBlock <T>(
            int uoffset,
            int sizePerItem) where T : struct
        {
            checked
            {
                // The local value stores a uoffset_t, so follow that now.
                uoffset = uoffset + this.ReadUOffset(uoffset);

                Memory <byte> innerMemory = this.ReadByteMemoryBlockProtected(
                    uoffset + sizeof(uint),
                    ((int)this.ReadUInt(uoffset)) * sizePerItem);

                MemoryTypeChanger <T> typeChanger = new MemoryTypeChanger <T>(innerMemory);
                return(typeChanger.Memory);
            }
        }
Exemplo n.º 2
0
        private Memory <T> ReadMemoryBlockImpl <T>(
            int uoffset,
            int sizePerItem,
            Func <int, int, ReadOnlyMemory <byte> > callback) where T : struct
        {
            checked
            {
                // The local value stores a uoffset_t, so follow that now.
                uoffset = uoffset + this.ReadUOffset(uoffset);

                ReadOnlyMemory <byte> innerMemory = callback(
                    uoffset + sizeof(uint),
                    ((int)this.ReadUInt(uoffset)) * sizePerItem);

                MemoryTypeChanger <T> typeChanger = new MemoryTypeChanger <T>(MemoryMarshal.AsMemory(innerMemory));
                return(typeChanger.Memory);
            }
        }