forked from pythonnet/pythonnet
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmonosupport.cs
More file actions
60 lines (51 loc) · 2.14 KB
/
monosupport.cs
File metadata and controls
60 lines (51 loc) · 2.14 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
// ==========================================================================
// 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