Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ WriteSpan< T >()

unsafe void System.Runtime.InteropServices.SafeBuffer.WriteSpan< T > ( ulong byteOffset,
ReadOnlySpan< T > data )
inlineinherited
Type Constraints
T :struct 

Definition at line 205 of file SafeBuffer.cs.

205 : struct
206 {
208 {
209 throw NotInitialized();
210 }
211 uint num = AlignedSizeOf<T>();
212 byte* ptr = (byte*)(void*)handle + byteOffset;
213 SpaceCheck(ptr, checked((nuint)(num * data.Length)));
214 bool success = false;
215 try
216 {
217 DangerousAddRef(ref success);
218 ref T reference = ref MemoryMarshal.GetReference(data);
219 for (int i = 0; i < data.Length; i++)
220 {
221 Buffer.Memmove(ref Unsafe.AsRef<T>(ptr + num * i), ref Unsafe.Add(ref reference, i), 1u);
222 }
223 }
224 finally
225 {
226 if (success)
227 {
229 }
230 }
231 }
unsafe void SpaceCheck(byte *ptr, nuint sizeInBytes)
static InvalidOperationException NotInitialized()
void DangerousAddRef(ref bool success)
Definition SafeHandle.cs:76

References System.Runtime.InteropServices.SafeBuffer._numBytes, System.Runtime.InteropServices.SafeBuffer.AlignedSizeOf< T >(), System.Runtime.InteropServices.SafeHandle.DangerousAddRef(), System.Runtime.InteropServices.SafeHandle.DangerousRelease(), System.Runtime.InteropServices.SafeHandle.handle, System.Buffer.Memmove(), System.Runtime.InteropServices.SafeBuffer.NotInitialized(), System.Runtime.InteropServices.SafeBuffer.SpaceCheck(), and System.Runtime.InteropServices.SafeBuffer.Uninitialized.