Show More
Commit Description:
Add missing component and message.
Commit Description:
Add missing component and message.
References:
File last commit:
Show/Diff file:
Action:
ImGui.NET/Util.cs
72 lines | 2.0 KiB | text/x-csharp | CSharpLexer
72 lines | 2.0 KiB | text/x-csharp | CSharpLexer
r16 | using System; | |||
using System.Runtime.InteropServices; | ||||
using System.Text; | ||||
namespace ImGuiNET | ||||
{ | ||||
internal static unsafe class Util | ||||
{ | ||||
internal const int StackAllocationSizeLimit = 2048; | ||||
public static string StringFromPtr(byte* ptr) | ||||
{ | ||||
int characters = 0; | ||||
while (ptr[characters] != 0) | ||||
{ | ||||
characters++; | ||||
} | ||||
return Encoding.UTF8.GetString(ptr, characters); | ||||
} | ||||
internal static bool AreStringsEqual(byte* a, int aLength, byte* b) | ||||
{ | ||||
for (int i = 0; i < aLength; i++) | ||||
{ | ||||
if (a[i] != b[i]) { return false; } | ||||
} | ||||
if (b[aLength] != 0) { return false; } | ||||
return true; | ||||
} | ||||
internal static byte* Allocate(int byteCount) => (byte*)Marshal.AllocHGlobal(byteCount); | ||||
r503 | ||||
r16 | internal static void Free(byte* ptr) => Marshal.FreeHGlobal((IntPtr)ptr); | |||
r503 | ||||
internal static int CalcSizeInUtf8(string s, int start, int length) | ||||
{ | ||||
if (start < 0 || length < 0 || start + length > s.Length) | ||||
{ | ||||
throw new ArgumentOutOfRangeException(); | ||||
} | ||||
fixed (char* utf16Ptr = s) | ||||
{ | ||||
return Encoding.UTF8.GetByteCount(utf16Ptr + start, length); | ||||
} | ||||
} | ||||
r16 | internal static int GetUtf8(string s, byte* utf8Bytes, int utf8ByteCount) | |||
{ | ||||
fixed (char* utf16Ptr = s) | ||||
{ | ||||
return Encoding.UTF8.GetBytes(utf16Ptr, s.Length, utf8Bytes, utf8ByteCount); | ||||
} | ||||
} | ||||
r503 | ||||
internal static int GetUtf8(string s, int start, int length, byte* utf8Bytes, int utf8ByteCount) | ||||
{ | ||||
if (start < 0 || length < 0 || start + length > s.Length) | ||||
{ | ||||
throw new ArgumentOutOfRangeException(); | ||||
} | ||||
fixed (char* utf16Ptr = s) | ||||
{ | ||||
return Encoding.UTF8.GetBytes(utf16Ptr + start, length, utf8Bytes, utf8ByteCount); | ||||
} | ||||
} | ||||
r16 | } | |||
} | ||||