45 lines
1.2 KiB
C#
45 lines
1.2 KiB
C#
namespace Cef3.Interop
|
|
{
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Runtime.InteropServices;
|
|
using System.Security;
|
|
using System.Text;
|
|
|
|
[StructLayout(LayoutKind.Sequential, Pack = libcef.ALIGN)]
|
|
internal unsafe partial struct cef_string_t
|
|
{
|
|
internal char* _str;
|
|
internal UIntPtr _length;
|
|
internal IntPtr _dtor;
|
|
|
|
[UnmanagedFunctionPointer(libcef.CEF_CALL)]
|
|
#if !DEBUG
|
|
[SuppressUnmanagedCodeSecurity]
|
|
#endif
|
|
public delegate void dtor_delegate(char* str);
|
|
|
|
public cef_string_t(char* str, int length)
|
|
{
|
|
_str = str;
|
|
_length = (UIntPtr)length;
|
|
_dtor = IntPtr.Zero;
|
|
}
|
|
|
|
public static void Copy(string value, cef_string_t* str)
|
|
{
|
|
fixed (char* value_ptr = value)
|
|
{
|
|
libcef.string_set(value_ptr, value != null ? (UIntPtr)value.Length : UIntPtr.Zero, str, 1); // FIXME: do not ignore result
|
|
}
|
|
}
|
|
|
|
public static string ToString(cef_string_t* obj)
|
|
{
|
|
if (obj == null) return null;
|
|
|
|
return new string((char*)obj->_str, 0, (int)obj->_length);
|
|
}
|
|
}
|
|
}
|