[ Web Proxy ]
URL:
Viewing: https://raw.githubusercontent.com/chid/pythonnet/develop/pythonnet/src/runtime/monosupport.cs [Back]  [Original]

// ==========================================================================
// 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


Web Proxy Viewer  |  New URL  |  Original Page