Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches
AnsiCharMarshaler.cs
Go to the documentation of this file.
2using System.Text;
3
4namespace System.StubHelpers;
5
6internal static class AnsiCharMarshaler
7{
8 internal unsafe static byte[] DoAnsiConversion(string str, bool fBestFit, bool fThrowOnUnmappableChar, out int cbLength)
9 {
10 byte[] array = new byte[checked((str.Length + 1) * Marshal.SystemMaxDBCSCharSize)];
11 fixed (byte* buffer = &array[0])
12 {
13 cbLength = Marshal.StringToAnsiString(str, buffer, array.Length, fBestFit, fThrowOnUnmappableChar);
14 }
15 return array;
16 }
17
18 internal unsafe static byte ConvertToNative(char managedChar, bool fBestFit, bool fThrowOnUnmappableChar)
19 {
20 int num = 2 * Marshal.SystemMaxDBCSCharSize;
21 byte* ptr = stackalloc byte[(int)(uint)num];
22 int num2 = Marshal.StringToAnsiString(managedChar.ToString(), ptr, num, fBestFit, fThrowOnUnmappableChar);
23 return *ptr;
24 }
25
26 internal static char ConvertToManaged(byte nativeChar)
27 {
28 ReadOnlySpan<byte> bytes = new ReadOnlySpan<byte>(ref nativeChar, 1);
29 string @string = Encoding.Default.GetString(bytes);
30 return @string[0];
31 }
32}
static unsafe int StringToAnsiString(string s, byte *buffer, int bufferLength, bool bestFit=false, bool throwOnUnmappableChar=false)
Definition Marshal.cs:1608
static readonly int SystemMaxDBCSCharSize
Definition Marshal.cs:19
static unsafe byte[] DoAnsiConversion(string str, bool fBestFit, bool fThrowOnUnmappableChar, out int cbLength)
static char ConvertToManaged(byte nativeChar)
static unsafe byte ConvertToNative(char managedChar, bool fBestFit, bool fThrowOnUnmappableChar)
static Encoding Default
Definition Encoding.cs:345