Beispiel #1
0
        public static byte[] duk_to_lstring(IntPtr ctx, duk_idx_t idx)
        {
            var size_t = 0U;
            var ptr      = DuktapeDLL.duk_unity_to_lstring(ctx, idx, out size_t);
            var out_size = (int)size_t;

            if (ptr != IntPtr.Zero && out_size > 0)
            {
                var bytes = new byte[out_size];
                Marshal.Copy(ptr, bytes, 0, out_size);
                return(bytes);
            }
            return(null);
        }
Beispiel #2
0
        public static byte[] duk_get_buffer_data(IntPtr ctx, duk_idx_t idx)
        {
            var size_t = 0U;
            var ptr = DuktapeDLL.duk_unity_get_buffer_data(ctx, idx, out size_t);

            if (ptr != IntPtr.Zero)
            {
                var size  = (int)size_t;
                var bytes = new byte[size];
                Marshal.Copy(ptr, bytes, 0, size);
                return(bytes);
            }
            return(null);
        }
Beispiel #3
0
        public static string duk_to_string(IntPtr ctx, duk_idx_t idx)
        {
            var len = 0U;
            var ptr = DuktapeDLL.duk_unity_to_lstring(ctx, idx, out len);

            if (ptr != IntPtr.Zero)
            {
                var str = Marshal.PtrToStringAnsi(ptr, (int)len);
                if (str == null)
                {
                    var buffer = new byte[len];
                    Marshal.Copy(ptr, buffer, 0, (int)len);
                    return(Encoding.UTF8.GetString(buffer));
                }
                return(str);
            }
            return(null);
        }
        public static string duk_to_string(IntPtr ctx, duk_idx_t idx)
        {
            var ptr = DuktapeDLL.duk_to_string(ctx, idx);

            return(Marshal.PtrToStringAnsi(ptr));
        }