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

◆ BlockCopy()

static void System.Buffer.BlockCopy ( Array src,
int srcOffset,
Array dst,
int dstOffset,
int count )
inlinestatic

Definition at line 102 of file Buffer.cs.

103 {
104 if (src == null)
105 {
106 throw new ArgumentNullException("src");
107 }
108 if (dst == null)
109 {
110 throw new ArgumentNullException("dst");
111 }
112 nuint num = src.NativeLength;
113 if (src.GetType() != typeof(byte[]))
114 {
115 if (!src.GetCorElementTypeOfElementType().IsPrimitiveType())
116 {
117 throw new ArgumentException(SR.Arg_MustBePrimArray, "src");
118 }
119 num *= src.GetElementSize();
120 }
121 nuint num2 = num;
122 if (src != dst)
123 {
124 num2 = dst.NativeLength;
125 if (dst.GetType() != typeof(byte[]))
126 {
127 if (!dst.GetCorElementTypeOfElementType().IsPrimitiveType())
128 {
129 throw new ArgumentException(SR.Arg_MustBePrimArray, "dst");
130 }
131 num2 *= dst.GetElementSize();
132 }
133 }
134 if (srcOffset < 0)
135 {
136 throw new ArgumentOutOfRangeException("srcOffset", SR.ArgumentOutOfRange_MustBeNonNegInt32);
137 }
138 if (dstOffset < 0)
139 {
140 throw new ArgumentOutOfRangeException("dstOffset", SR.ArgumentOutOfRange_MustBeNonNegInt32);
141 }
142 if (count < 0)
143 {
144 throw new ArgumentOutOfRangeException("count", SR.ArgumentOutOfRange_MustBeNonNegInt32);
145 }
146 nuint num3 = (nuint)count;
147 nuint num4 = (nuint)srcOffset;
148 nuint num5 = (nuint)dstOffset;
149 if (num < num4 + num3 || num2 < num5 + num3)
150 {
151 throw new ArgumentException(SR.Argument_InvalidOffLen);
152 }
153 Memmove(ref Unsafe.AddByteOffset(ref MemoryMarshal.GetArrayDataReference(dst), num5), ref Unsafe.AddByteOffset(ref MemoryMarshal.GetArrayDataReference(src), num4), num3);
154 }
static void Memmove(ref byte dest, ref byte src, nuint len)
Definition Buffer.cs:215
static unsafe ref byte GetArrayDataReference(Array array)

References System.SR.Arg_MustBePrimArray, System.SR.Argument_InvalidOffLen, System.SR.ArgumentOutOfRange_MustBeNonNegInt32, System.count, System.Runtime.InteropServices.MemoryMarshal.GetArrayDataReference(), System.Array.GetCorElementTypeOfElementType(), System.Buffer.Memmove(), and System.Array.NativeLength.

Referenced by System.Security.Principal.WindowsIdentity.WindowsIdentity(), System.Net.Security.SafeDeleteContext.AcceptSecurityContext(), System.Net.Security.SafeDeleteContext.AcceptSecurityContext(), System.Diagnostics.Tracing.DataCollector.AddArray(), System.Net.Mail.BufferBuilder.Append(), System.Xml.XmlTextReaderImpl.BlockCopy(), System.Xml.XmlTextReaderImpl.BlockCopyChars(), System.Net.WebSockets.WebSocketBuffer.BufferPayload(), System.Security.Cryptography.X509Certificates.ECDsaX509SignatureGenerator.BuildPublicKey(), System.Text.Json.JsonDocument.MetadataDb.CompleteAllocations(), System.IO.StreamReader.CompressBuffer(), System.Security.Cryptography.PasswordDeriveBytes.ComputeBytes(), Internal.Cryptography.Pal.X509Pal.ComputeCapiSha1OfPublicKey(), Interop.BCrypt.Consume(), System.Text.Json.JsonSerializer.ContinueDeserialize< TValue >(), System.Xml.UTF16Decoder.Convert(), System.Xml.IncrementalReadCharsDecoder.Decode(), Internal.NativeCrypto.CapiHelper.DecryptKey(), System.Reflection.Emit.TypeBuilder.DefineCustomAttribute(), Internal.NativeCrypto.CapiHelper.DeriveKey(), Terraria.Testing.PacketHistory.Dump(), System.Net.NetEventSource.DumpBuffer(), Interop.BCrypt.Emit(), System.Diagnostics.Tracing.FieldMetadata.Encode(), System.Net.Security.NegotiateStreamPal.Encrypt(), Internal.NativeCrypto.CapiHelper.EncryptKey(), System.Net.Sockets.Socket.EndAccept(), System.Net.Sockets.UdpClient.EndReceive(), System.Text.Json.JsonDocument.MetadataDb.Enlarge(), System.Text.Json.JsonDocument.StackRowStack.Enlarge(), System.Net.ArrayBuffer.EnsureAvailableSpace(), System.Net.Mail.BufferBuilder.EnsureBuffer(), System.Reflection.AssemblyName.EnsureDestinationSize(), System.IO.BufferedStream.EnsureShadowBufferAllocated(), System.Xml.XmlCanonicalWriter.EnsureXmlnsBuffer(), System.Reflection.Emit.SignatureHelper.ExpandArray(), System.Security.Cryptography.KeyBlobHelpers.ExportKeyParameter(), System.Net.Http.HttpConnection.FillAsync(), System.Security.Cryptography.PKCS1MaskGenerationMethod.GenerateMask(), System.Security.Cryptography.X509Certificates.X509SubjectKeyIdentifierExtension.GenerateSubjectKeyIdentifierFromPublicKey(), System.Xml.XmlBufferReader.GetBase64(), System.Security.Cryptography.RandomNumberGenerator.GetBytes(), System.Security.Cryptography.Rfc2898DeriveBytes.GetBytes(), System.Security.Cryptography.PasswordDeriveBytes.GetBytes(), System.Xml.UTF16Decoder.GetChars(), System.Transactions.TransactionInterop.GetExportCookie(), System.Xml.XmlBufferReader.GetGuid(), System.Reflection.Metadata.Ecma335.StringHeap.GetNonVirtualStringBytes(), System.Net.NetworkInformation.SystemNetworkInterface.GetPhysicalAddress(), System.Net.Sockets.Socket.GetSocketOption(), System.Transactions.TransactionInterop.GetTransactionFromExportCookie(), System.Net.Http.HttpContent.LimitArrayPoolWriteStream.Grow(), System.Net.Security.SafeDeleteContext.InitializeSecurityContext(), System.Net.Security.SafeDeleteContext.InitializeSecurityContext(), System.Xml.XmlBufferReader.InsertBytes(), System.Reflection.Emit.SignatureHelper.InternalGetSignatureArray(), System.IO.File.InternalReadAllBytesUnknownLengthAsync(), System.Net.Security.NegotiateStreamPal.MakeSignature(), System.Net.Http.HPack.HPackDecoder.OnString(), System.Net.Http.QPack.QPackDecoder.OnString(), System.Text.Json.JsonDocument.ParseValue(), System.Text.Json.JsonDocument.ParseValue(), System.Formats.Asn1.AsnWriter.PopTag(), Internal.Cryptography.Pal.FindPal.PositiveBigIntegerFromByteArray(), System.Net.WebSockets.WebSocketBase.WebSocketOperation.ReceiveOperation.ProcessAction_IndicateReceiveComplete(), System.Xml.ByteStack.Push(), System.Net.BufferedReadStream.Push(), System.Net.BufferedReadStream.ReadAsyncResult.Read(), System.Net.BufferedReadStream.Read(), System.IO.MemoryStream.Read(), System.Runtime.Serialization.Json.JsonEncodingStreamWrapper.Read(), System.Xml.EncodingStreamWrapper.Read(), System.Runtime.Serialization.Formatters.Binary.BinaryParser.ReadArrayAsBytes(), System.Net.BufferedReadStream.ReadAsync(), System.Security.Cryptography.CryptoStream.ReadAsyncCore(), System.Net.Security.SslStream.ReadAsyncInternal< TIOAdapter >(), System.Security.Cryptography.CryptoStream.ReadByte(), System.Xml.Serialization.XmlSerializationReader.ReadByteArray(), System.Xml.XmlBaseReader.ReadBytes(), System.IO.BinaryReader.ReadBytes(), System.IO.BinaryReader.ReadChars(), System.Xml.XmlDictionaryReader.ReadContentAsBytes(), System.Security.Cryptography.XmlKeyHelper.ReadCryptoBinary(), System.IO.BufferedStream.ReadFromBuffer(), System.Text.Json.JsonDocument.ReadToEnd(), System.Text.Json.JsonDocument.ReadToEndAsync(), System.Net.Sockets.UdpClient.Receive(), Terraria.NetMessage.ReceiveBytes(), System.Net.WebSockets.WebSocketBuffer.ReceiveFromBufferedPayload(), Terraria.Testing.PacketHistory.Record(), Terraria.DataStructures.BufferPool.Request(), Terraria.Net.LegacyNetBufferPool.RequestBuffer(), Internal.Cryptography.BasicSymmetricCipherBCrypt.Reset(), System.Net.Security.SslStream.ResetReadBuffer(), System.IO.Strategies.Net5CompatFileStreamStrategy.Seek(), System.Reflection.Emit.SignatureHelper.SetNumberOfSignatureElements(), System.Xml.XmlBufferReader.SetWindow(), System.Formats.Asn1.AsnWriter.SortContents(), System.Net.Http.HttpContent.LimitArrayPoolWriteStream.ToArray(), System.IO.ChunkedMemoryStream.ToArray(), System.Xml.ValueHandle.ToByteArray(), System.Xml.XmlConverter.ToChars(), System.Xml.XmlConverter.ToChars(), System.Security.Cryptography.HashAlgorithm.TransformBlock(), System.Security.Cryptography.HashAlgorithm.TransformFinalBlock(), Internal.Cryptography.Helpers.TrimLargeIV(), System.Xml.XmlBufferReader.TryEnsureBytes(), Internal.NativeCrypto.CapiHelper.UnloadKey(), System.Web.Util.HttpEncoder.UrlEncode(), System.Net.WebUtility.UrlEncodeToBytes(), System.Net.Http.HttpContent.LimitArrayPoolWriteStream.Write(), System.IO.BufferedStream.Write(), System.IO.MemoryStream.Write(), System.Runtime.Serialization.Formatters.Binary.BinaryFormatterWriter.WriteArrayAsBytes(), System.Xml.XmlBaseWriter.WriteBase64(), System.Xml.XmlBaseWriter.WriteBase64AsyncImpl(), System.Xml.XmlStreamNodeWriter.WriteBytes(), System.Net.Http.HttpConnection.WriteBytesAsync(), System.Net.Http.HttpConnection.WriteBytesSlowAsync(), System.Xml.XmlBinaryNodeWriter.WriteGuidText(), System.Formats.Asn1.AsnWriter.WriteIntegerCore(), System.Formats.Asn1.AsnWriter.WriteObjectIdentifierCore(), System.IO.BufferedStream.WriteToBuffer(), System.Xml.XmlStreamNodeWriter.WriteUTF8Chars(), and System.Xml.XmlCanonicalWriter.WriteXmlnsAttribute().