#if (UCS4)
using System;
using System.Runtime.InteropServices;
using System.Text;
using Mono.Unix;
namespace Python.Runtime
{
// The Utf32Marshaler was written Jonathan Pryor and has been placed
// in the PUBLIC DOMAIN.
public class Utf32Marshaler : ICustomMarshaler
{
private static Utf32Marshaler instance = new
Utf32Marshaler();
public static ICustomMarshaler GetInstance(string s)
{
return instance;
}
public void CleanUpManagedData(object o)
{
}
public void CleanUpNativeData(IntPtr pNativeData)
{
UnixMarshal.FreeHeap(pNativeData);
}
public int GetNativeDataSize()
{
return IntPtr.Size;
}
public IntPtr MarshalManagedToNative(object obj)
{
string s = obj as string;
if (s == null)
return IntPtr.Zero;
return UnixMarshal.StringToHeap(s,
Encoding.UTF32);
}
public object MarshalNativeToManaged(IntPtr
pNativeData)
{
return UnixMarshal.PtrToString(pNativeData,
Encoding.UTF32);
}
}
}
#endif