Separate MemoryHandle and StringHandle
authorRémi Denis-Courmont <rdenis@simphalempin.com>
Sun, 22 Feb 2009 08:06:15 +0000 (10:06 +0200)
committerRémi Denis-Courmont <rdenis@simphalempin.com>
Sun, 22 Feb 2009 08:06:15 +0000 (10:06 +0200)
bindings/cil/src/libvlc.cs
bindings/cil/src/media.cs
bindings/cil/src/ustring.cs

index 570d189..3fcfe59 100644 (file)
@@ -98,7 +98,7 @@ namespace VideoLAN.LibVLC
 
         [DllImport ("libvlc.dll", EntryPoint="libvlc_media_get_mrl")]
         public static extern
 
         [DllImport ("libvlc.dll", EntryPoint="libvlc_media_get_mrl")]
         public static extern
-        MemoryHandle MediaGetMRL (MediaHandle media, NativeException ex);
+        StringHandle MediaGetMRL (MediaHandle media, NativeException ex);
 
         [DllImport ("libvlc.dll", EntryPoint="libvlc_media_duplicate")]
         public static extern
 
         [DllImport ("libvlc.dll", EntryPoint="libvlc_media_duplicate")]
         public static extern
index 39f0290..a6ed833 100644 (file)
@@ -102,7 +102,7 @@ namespace VideoLAN.LibVLC
         {
             get
             {
         {
             get
             {
-                MemoryHandle str = LibVLC.MediaGetMRL (Handle, ex);
+                StringHandle str = LibVLC.MediaGetMRL (Handle, ex);
                 Raise ();
                 return str.Transform ();
             }
                 Raise ();
                 return str.Transform ();
             }
index f70eb2b..e55c425 100644 (file)
@@ -96,7 +96,7 @@ namespace VideoLAN.LibVLC
      * @brief MemoryHandle: heap allocation by the C run-time
      * @ingroup Internals
      */
      * @brief MemoryHandle: heap allocation by the C run-time
      * @ingroup Internals
      */
-    internal sealed class MemoryHandle : NonNullHandle
+    internal class MemoryHandle : NonNullHandle
     {
         [DllImport ("libvlc.dll", EntryPoint="libvlc_free")]
         private static extern void Free (IntPtr ptr);
     {
         [DllImport ("libvlc.dll", EntryPoint="libvlc_free")]
         private static extern void Free (IntPtr ptr);
@@ -108,7 +108,19 @@ namespace VideoLAN.LibVLC
         {
             Free (handle);
         }
         {
             Free (handle);
         }
+    };
 
 
+    /**
+     * @brief StringHandle: heap-allocated characters array
+     * @ingroup Internals
+     */
+    internal sealed class StringHandle : MemoryHandle
+    {
+        /**
+         * Converts an heap-allocated nul-terminated UTF-8 characters array
+         * into a managed string.
+         * @return the resulting managed string.
+         */
         public override string ToString ()
         {
             return U8String.FromNative (handle);
         public override string ToString ()
         {
             return U8String.FromNative (handle);