PowerToys/Pythonnet.Runtime/monosupport.cs
2014-01-11 00:19:14 +08:00

61 lines
2.1 KiB
C#

// ==========================================================================
// This software is subject to the provisions of the Zope Public License,
// Version 2.0 (ZPL). A copy of the ZPL should accompany this distribution.
// THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
// WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
// WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
// FOR A PARTICULAR PURPOSE.
// ==========================================================================
#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