/// <summary> /// Returns a reference to specified element of the span. /// </summary> /// <param name="index">The index</param> /// <returns>The reference to the specified element</returns> public ref T this[int index] { [MethodImpl(MethodImplOptions.AggressiveInlining)] get { DebugGuard.MustBeLessThan(index, this.Length, nameof(index)); byte *ptr = (byte *)this.PointerAtOffset + BufferSpan.SizeOf <T>(index); return(ref Unsafe.AsRef <T>(ptr)); } }
public BufferSpan <T> Slice(int start) { DebugGuard.MustBeLessThan(start, this.Length, nameof(start)); BufferSpan <T> result = default(BufferSpan <T>); result.Array = this.Array; result.Start = this.Start + start; result.PointerAtOffset = this.PointerAtOffset + (Unsafe.SizeOf <T>() * start); result.Length = this.Length - start; return(result); }
public static ref Rgb24 GetRgb24(this Span <byte> bytes, int offset) { DebugGuard.MustBeLessThan(offset + 2, bytes.Length, nameof(offset)); return(ref Unsafe.As <byte, Rgb24>(ref bytes[offset])); }