summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLauro Moura <lauromoura@expertisesolutions.com.br>2019-03-20 11:26:49 +0100
committerXavi Artigas <xavierartigas@yahoo.es>2019-03-20 11:35:58 +0100
commit0860c4f1d7a6fa0f6ecae556cf35d33fa7c13a66 (patch)
tree6a91520035c9c9ef36673d566565b7e7a63c17de
parent171467b1fa630853ecf5f59bcc0369f1167865e4 (diff)
csharp: Remove missing doc warning by filling them.
Summary: Added basic documentation for things that were missing. Some other files are silent due to a pragma disabling CS1591. They should be handled later. Also, removed `Efl.Io.Positioner` from the blacklist as it is referenced from the `Efl.Io.Reader.eos` event documentation. Reviewers: segfaultxavi Reviewed By: segfaultxavi Subscribers: felipealmeida, cedric, #reviewers, #committers Tags: #efl Differential Revision: https://phab.enlightenment.org/D8370
-rw-r--r--src/bindings/mono/efl_mono/efl_all.cs9
-rw-r--r--src/bindings/mono/efl_mono/efl_csharp_application.cs3
-rw-r--r--src/bindings/mono/eina_mono/eina_accessor.cs41
-rw-r--r--src/bindings/mono/eina_mono/eina_promises.cs25
-rw-r--r--src/bindings/mono/eo_mono/FunctionWrapper.cs61
-rw-r--r--src/bindings/mono/eo_mono/FunctionWrapper_Unix.cs9
-rw-r--r--src/bindings/mono/eo_mono/NativeModule.cs5
-rw-r--r--src/bindings/mono/eo_mono/NativeModule_Unix.cs32
-rw-r--r--src/bindings/mono/meson.build1
9 files changed, 157 insertions, 29 deletions
diff --git a/src/bindings/mono/efl_mono/efl_all.cs b/src/bindings/mono/efl_mono/efl_all.cs
index d8c08d3890..bf78df1d3d 100644
--- a/src/bindings/mono/efl_mono/efl_all.cs
+++ b/src/bindings/mono/efl_mono/efl_all.cs
@@ -36,22 +36,17 @@ static class UnsafeNativeMethods {
36 } 36 }
37} 37}
38 38
39public enum Components {
40 Basic,
41 Ui
42}
43
44public static class All { 39public static class All {
45 private static bool InitializedUi = false; 40 private static bool InitializedUi = false;
46 41
47 public static void Init(Efl.Components components=Components.Basic) { 42 public static void Init(Efl.Csharp.Components components=Efl.Csharp.Components.Basic) {
48 Eina.Config.Init(); 43 Eina.Config.Init();
49 Efl.Eo.Config.Init(); 44 Efl.Eo.Config.Init();
50 ecore_init(); 45 ecore_init();
51 evas_init(); 46 evas_init();
52 eldbus.Config.Init(); 47 eldbus.Config.Init();
53 48
54 if (components == Components.Ui) { 49 if (components == Efl.Csharp.Components.Ui) {
55 Efl.Ui.Config.Init(); 50 Efl.Ui.Config.Init();
56 InitializedUi = true; 51 InitializedUi = true;
57 } 52 }
diff --git a/src/bindings/mono/efl_mono/efl_csharp_application.cs b/src/bindings/mono/efl_mono/efl_csharp_application.cs
index b487cf6289..f067b288ec 100644
--- a/src/bindings/mono/efl_mono/efl_csharp_application.cs
+++ b/src/bindings/mono/efl_mono/efl_csharp_application.cs
@@ -14,8 +14,11 @@ static class UnsafeNativeMethods {
14 14
15namespace Efl { 15namespace Efl {
16 namespace Csharp { 16 namespace Csharp {
17 ///<summary>The components to be initialized.</summary>
17 public enum Components { 18 public enum Components {
19 ///<summary>Basic components: Eina, Eo, Ecore, Evas and DBus.</summary>
18 Basic, 20 Basic,
21 ///<summary>The same components of <see cref="Efl.Csharp.Components.Basic"/> and the Elementary widget toolkit.</summary>
19 Ui, 22 Ui,
20 } 23 }
21 /// <summary> 24 /// <summary>
diff --git a/src/bindings/mono/eina_mono/eina_accessor.cs b/src/bindings/mono/eina_mono/eina_accessor.cs
index c3c09c4966..3f2f71b2b3 100644
--- a/src/bindings/mono/eina_mono/eina_accessor.cs
+++ b/src/bindings/mono/eina_mono/eina_accessor.cs
@@ -27,6 +27,7 @@ public class Accessor<T> : IEnumerable<T>, IDisposable
27 private Ownership Ownership { get; set; } 27 private Ownership Ownership { get; set; }
28 28
29 // FIXME Part of the implicit EFL Container interface. Need to make it explicit. 29 // FIXME Part of the implicit EFL Container interface. Need to make it explicit.
30 ///<summary>Whether this wrapper owns the native accessor.</summary>
30 public bool Own 31 public bool Own
31 { 32 {
32 get 33 get
@@ -40,12 +41,18 @@ public class Accessor<T> : IEnumerable<T>, IDisposable
40 } 41 }
41 42
42 /// <summary>Create a new accessor wrapping the given pointer.</summary> 43 /// <summary>Create a new accessor wrapping the given pointer.</summary>
44 /// <param name="handle">The native handle to be wrapped.</param>
45 /// <param name="owner">Whether this wrapper owns the native accessor.</param>
43 public Accessor(IntPtr handle, Ownership owner=Ownership.Managed) 46 public Accessor(IntPtr handle, Ownership owner=Ownership.Managed)
44 { 47 {
45 Handle = handle; 48 Handle = handle;
46 Ownership = owner; 49 Ownership = owner;
47 } 50 }
48 51
52 /// <summary>Create a new accessor wrapping the given pointer.</summary>
53 /// <param name="handle">The native handle to be wrapped.</param>
54 /// <param name="own">Whether this wrapper owns the native accessor.</param>
55 /// <param name="ownContent">For compatibility with other EFL# containers. Ignored in acessors.</param>
49 public Accessor(IntPtr handle, bool own, bool ownContent=false) 56 public Accessor(IntPtr handle, bool own, bool ownContent=false)
50 : this(handle, own ? Ownership.Managed : Ownership.Unmanaged) 57 : this(handle, own ? Ownership.Managed : Ownership.Unmanaged)
51 { 58 {
@@ -57,6 +64,9 @@ public class Accessor<T> : IEnumerable<T>, IDisposable
57 Dispose(true); 64 Dispose(true);
58 } 65 }
59 66
67 /// <summary>Disposes of this wrapper, releasing the native accessor if owned.</summary>
68 /// <param name="disposing">True if this was called from <see cref="Dispose()"/> public method. False if
69 /// called from the C# finalizer.</param>
60 protected virtual void Dispose(bool disposing) 70 protected virtual void Dispose(bool disposing)
61 { 71 {
62 if (Ownership == Ownership.Managed && Handle != IntPtr.Zero) 72 if (Ownership == Ownership.Managed && Handle != IntPtr.Zero)
@@ -66,17 +76,23 @@ public class Accessor<T> : IEnumerable<T>, IDisposable
66 } 76 }
67 } 77 }
68 78
79 /// <summary>Finalizer to be called from the Garbage Collector.</summary>
69 ~Accessor() 80 ~Accessor()
70 { 81 {
71 Dispose(false); 82 Dispose(false);
72 } 83 }
73 84
74 public virtual T Convert(IntPtr data) 85 /// <summary>Convert the native data into managed. This is used when returning the data through a
86 /// <see cref="System.Collections.Generic.IEnumerator&lt;T&gt;"/>.</summary>
87 /// <param name="data">The data to be converted</param>
88 /// <returns>The managed data representing <c>data</c>.</returns>
89 protected virtual T Convert(IntPtr data)
75 { 90 {
76 return NativeToManaged<T>(data); 91 return NativeToManaged<T>(data);
77 } 92 }
78 93
79 /// <summary>Returns an enumerator that iterates throught this accessor.</summary> 94 /// <summary>Returns an enumerator that iterates throught this accessor.</summary>
95 /// <returns>An enumerator to walk through the acessor items.</returns>
80 public IEnumerator<T> GetEnumerator() 96 public IEnumerator<T> GetEnumerator()
81 { 97 {
82 if (Handle == IntPtr.Zero) 98 if (Handle == IntPtr.Zero)
@@ -105,19 +121,38 @@ public class Accessor<T> : IEnumerable<T>, IDisposable
105 } 121 }
106} 122}
107 123
124///<summary>Accessor for Inlists.</summary>
108public class AccessorInList<T> : Accessor<T> 125public class AccessorInList<T> : Accessor<T>
109{ 126{
127
128 /// <summary>Create a new accessor wrapping the given pointer.</summary>
129 /// <param name="handle">The native handle to be wrapped.</param>
130 /// <param name="own">Whether this wrapper owns the native accessor.</param>
110 public AccessorInList(IntPtr handle, Ownership own): base(handle, own) {} 131 public AccessorInList(IntPtr handle, Ownership own): base(handle, own) {}
111 public override T Convert(IntPtr data) 132
133 /// <summary>Convert the native data into managed. This is used when returning the data through a
134 /// <see cref="System.Collections.Generic.IEnumerator&lt;T&gt;"/>.</summary>
135 /// <param name="data">The data to be converted</param>
136 /// <returns>The managed data representing <c>data</c>.</returns>
137 protected override T Convert(IntPtr data)
112 { 138 {
113 return NativeToManagedInlistNode<T>(data); 139 return NativeToManagedInlistNode<T>(data);
114 } 140 }
115} 141}
116 142
143///<summary>Accessor for Inarrays.</summary>
117public class AccessorInArray<T> : Accessor<T> 144public class AccessorInArray<T> : Accessor<T>
118{ 145{
146 /// <summary>Create a new accessor wrapping the given pointer.</summary>
147 /// <param name="handle">The native handle to be wrapped.</param>
148 /// <param name="own">Whether this wrapper owns the native accessor.</param>
119 public AccessorInArray(IntPtr handle, Ownership own): base(handle, own) {} 149 public AccessorInArray(IntPtr handle, Ownership own): base(handle, own) {}
120 public override T Convert(IntPtr data) 150
151 /// <summary>Convert the native data into managed. This is used when returning the data through a
152 /// <see cref="System.Collections.Generic.IEnumerator&lt;T&gt;"/>.</summary>
153 /// <param name="data">The data to be converted</param>
154 /// <returns>The managed data representing <c>data</c>.</returns>
155 protected override T Convert(IntPtr data)
121 { 156 {
122 return NativeToManagedInplace<T>(data); 157 return NativeToManagedInplace<T>(data);
123 } 158 }
diff --git a/src/bindings/mono/eina_mono/eina_promises.cs b/src/bindings/mono/eina_mono/eina_promises.cs
index 8be5f9d6cb..176a8835ae 100644
--- a/src/bindings/mono/eina_mono/eina_promises.cs
+++ b/src/bindings/mono/eina_mono/eina_promises.cs
@@ -129,6 +129,9 @@ public class Promise : IDisposable
129 Dispose(false); 129 Dispose(false);
130 } 130 }
131 131
132 /// <summary>Disposes of this wrapper, rejecting the native promise with <see cref="Eina.Error.ECANCELED"/></summary>
133 /// <param name="disposing">True if this was called from <see cref="Dispose()"/> public method. False if
134 /// called from the C# finalizer.</param>
132 protected virtual void Dispose(bool disposing) 135 protected virtual void Dispose(bool disposing)
133 { 136 {
134 if (Handle != IntPtr.Zero) 137 if (Handle != IntPtr.Zero)
@@ -190,7 +193,7 @@ public class Future
190 /// </summary> 193 /// </summary>
191 public delegate Eina.Value ResolvedCb(Eina.Value value); 194 public delegate Eina.Value ResolvedCb(Eina.Value value);
192 195
193 public IntPtr Handle { get; internal set; } 196 internal IntPtr Handle;
194 197
195 /// <summary> 198 /// <summary>
196 /// Creates a Future from a native pointer. 199 /// Creates a Future from a native pointer.
@@ -317,14 +320,23 @@ public class Future
317 } 320 }
318} 321}
319 322
323/// <summary>Custom marshaler to convert between managed and native <see cref="Eina.Future"/>.
324/// Internal usage in generated code.</summary>
320public class FutureMarshaler : ICustomMarshaler 325public class FutureMarshaler : ICustomMarshaler
321{ 326{
322 327
328 ///<summary>Wrap the native future with a managed wrapper.</summary>
329 ///<param name="pNativeData">Handle to the native future.</param>
330 ///<returns>An <see cref="Eina.Future"/> wrapping the native future.</returns>
323 public object MarshalNativeToManaged(IntPtr pNativeData) 331 public object MarshalNativeToManaged(IntPtr pNativeData)
324 { 332 {
325 return new Future(pNativeData); 333 return new Future(pNativeData);
326 } 334 }
327 335
336 ///<summary>Extracts the native future from a managed wrapper.</summary>
337 ///<param name="managedObj">The managed wrapper. If it is not an <see cref="Eina.Future"/>, the value returned
338 ///is <see cref="System.IntPtr.Zero"/>.</param>
339 ///<returns>A <see cref="System.IntPtr"/> pointing to the native future.</returns>
328 public IntPtr MarshalManagedToNative(object managedObj) 340 public IntPtr MarshalManagedToNative(object managedObj)
329 { 341 {
330 Future f = managedObj as Future; 342 Future f = managedObj as Future;
@@ -333,20 +345,27 @@ public class FutureMarshaler : ICustomMarshaler
333 return f.Handle; 345 return f.Handle;
334 } 346 }
335 347
348 ///<summary>Not implemented. The code receiving the native data is in charge of releasing it.</summary>
349 ///<param name="pNativeData">The native pointer to be released.</param>
336 public void CleanUpNativeData(IntPtr pNativeData) { } 350 public void CleanUpNativeData(IntPtr pNativeData) { }
337 351
352 ///<summary>Not implemented. The runtime takes care of releasing it.</summary>
353 ///<param name="managedObj">The managed object to be cleaned.</param>
338 public void CleanUpManagedData(object managedObj) { } 354 public void CleanUpManagedData(object managedObj) { }
339 355
356 ///<summary>Size of the native data size returned</summary>
357 ///<returns>The size of the data.</returns>
340 public int GetNativeDataSize() 358 public int GetNativeDataSize()
341 { 359 {
342 return -1; 360 return -1;
343 } 361 }
344 362
363 ///<summary>Gets an instance of this marshaller.</summary>
364 ///<param name="cookie">A name that could be used to customize the returned marshaller. Currently not used.</param>
365 ///<returns>The <see cref="Eina.FutureMarshaler"/> instance that will marshall the data.</returns>
345 public static ICustomMarshaler GetInstance(string cookie) { 366 public static ICustomMarshaler GetInstance(string cookie) {
346 if (marshaler == null) 367 if (marshaler == null)
347 {
348 marshaler = new FutureMarshaler(); 368 marshaler = new FutureMarshaler();
349 }
350 return marshaler; 369 return marshaler;
351 } 370 }
352 371
diff --git a/src/bindings/mono/eo_mono/FunctionWrapper.cs b/src/bindings/mono/eo_mono/FunctionWrapper.cs
index 03e81383bb..5aa4030a2f 100644
--- a/src/bindings/mono/eo_mono/FunctionWrapper.cs
+++ b/src/bindings/mono/eo_mono/FunctionWrapper.cs
@@ -3,8 +3,17 @@ using System.Runtime.InteropServices;
3 3
4namespace Efl { namespace Eo { 4namespace Efl { namespace Eo {
5 5
6///<summary>Class to load functions pointers from a native module.
7///
8///This class has a platform-dependent implementation on whether it
9///is compiled for Windows (using LoadLibrary/GetProcAddress) or Unix
10///(dlopen/dlsym).</summary>
6public partial class FunctionInterop 11public partial class FunctionInterop
7{ 12{
13 ///<summary>Loads a function pointer from the given module.</summary>
14 ///<param name="moduleName">The name of the module containing the function.</param>
15 ///<param name="functionName">The name of the function to search for.</param>
16 ///<returns>A function pointer that can be used with delegates.</returns>
8 public static IntPtr LoadFunctionPointer(string moduleName, string functionName) 17 public static IntPtr LoadFunctionPointer(string moduleName, string functionName)
9 { 18 {
10 NativeModule module = new NativeModule(moduleName); 19 NativeModule module = new NativeModule(moduleName);
@@ -13,6 +22,10 @@ public partial class FunctionInterop
13 Eina.Log.Debug($"searching {module.Module} for{functionName}, result {s}"); 22 Eina.Log.Debug($"searching {module.Module} for{functionName}, result {s}");
14 return s; 23 return s;
15 } 24 }
25
26 ///<summary>Loads a function pointer from the default module.</summary>
27 ///<param name="functionName">The name of the function to search for.</param>
28 ///<returns>A function pointer that can be used with delegates.</returns>
16 public static IntPtr LoadFunctionPointer(string functionName) 29 public static IntPtr LoadFunctionPointer(string functionName)
17 { 30 {
18 Eina.Log.Debug($"searching {null} for {functionName}"); 31 Eina.Log.Debug($"searching {null} for {functionName}");
@@ -21,8 +34,14 @@ public partial class FunctionInterop
21 return s; 34 return s;
22 } 35 }
23} 36}
24 37
25public class FunctionWrapper<T> 38///<summary>Wraps a native function in a portable manner.
39///
40///This is intended as a workaround DllImport limitations when switching between mono and dotnet.
41///
42///The parameter T must be a delegate.
43///</summary>
44public class FunctionWrapper<T> // NOTE: When supporting C# >=7.3, add a where T: System.Delegate?
26{ 45{
27 private Lazy<FunctionLoadResult<T>> loadResult; 46 private Lazy<FunctionLoadResult<T>> loadResult;
28#pragma warning disable 0414 47#pragma warning disable 0414
@@ -42,12 +61,18 @@ public class FunctionWrapper<T>
42 return new FunctionLoadResult<T>(Marshal.GetDelegateForFunctionPointer<T>(funcptr)); 61 return new FunctionLoadResult<T>(Marshal.GetDelegateForFunctionPointer<T>(funcptr));
43 } 62 }
44 } 63 }
45 64
65 ///<summary>Creates a wrapper for the given function of the given module.</summary>
66 ///<param name="moduleName">The name of the module containing the function.</param>
67 ///<param name="functionName">The name of the function to search for.</param>
46 public FunctionWrapper(string moduleName, string functionName) 68 public FunctionWrapper(string moduleName, string functionName)
47 : this (new NativeModule(moduleName), functionName) 69 : this (new NativeModule(moduleName), functionName)
48 { 70 {
49 } 71 }
50 72
73 ///<summary>Creates a wrapper for the given function of the given module.</summary>
74 ///<param name="module">The module wrapper containing the function.</param>
75 ///<param name="functionName">The name of the function to search for.</param>
51 public FunctionWrapper(NativeModule module, string functionName) 76 public FunctionWrapper(NativeModule module, string functionName)
52 { 77 {
53 this.module = module; 78 this.module = module;
@@ -58,6 +83,8 @@ public class FunctionWrapper<T>
58 }); 83 });
59 } 84 }
60 85
86 ///<summary>Retrieves the result of function load.</summary>
87 ///<returns>The load result.</returns>
61 public FunctionLoadResult<T> Value 88 public FunctionLoadResult<T> Value
62 { 89 {
63 get 90 get
@@ -67,12 +94,26 @@ public class FunctionWrapper<T>
67 } 94 }
68} 95}
69 96
70public enum FunctionLoadResultKind { Success, LibraryNotFound, FunctionNotFound } 97///<summary>The outcome of the function load process.</summary>
71 98public enum FunctionLoadResultKind {
99 ///<summary>Function was loaded successfully.</summary>
100 Success,
101 ///<summary>Library was not found.</summary>
102 LibraryNotFound,
103 ///<summary>Function symbol was not found in the given module.</summary>
104 FunctionNotFound
105}
106
107///<summary>Represents the result of loading a function pointer.</summary>
72public class FunctionLoadResult<T> 108public class FunctionLoadResult<T>
73{ 109{
110 ///<summary>The status of the load.</summary>
74 public FunctionLoadResultKind Kind; 111 public FunctionLoadResultKind Kind;
75 public T _Delegate; 112 private T _Delegate;
113
114 ///<summary>The delegate wrapping the loaded function pointer.
115 ///
116 ///Throws InvalidOperationException if trying to access while not loaded.</summary>
76 public T Delegate 117 public T Delegate
77 { 118 {
78 get { 119 get {
@@ -82,10 +123,15 @@ public class FunctionLoadResult<T>
82 } 123 }
83 } 124 }
84 125
126 ///<summary>Creates a new load result of the given kind.</summary>
127 ///<param name="kind">The outcome of the load process.</param>
85 public FunctionLoadResult(FunctionLoadResultKind kind) 128 public FunctionLoadResult(FunctionLoadResultKind kind)
86 { 129 {
87 this.Kind = kind; 130 this.Kind = kind;
88 } 131 }
132
133 ///<summary>Creates a new load result with the given delegate.</summary>
134 ///<param name="Delegate">The delegate wrapping the native function.</param>
89 public FunctionLoadResult(T Delegate) 135 public FunctionLoadResult(T Delegate)
90 { 136 {
91 this._Delegate = Delegate; 137 this._Delegate = Delegate;
@@ -93,5 +139,4 @@ public class FunctionLoadResult<T>
93 } 139 }
94} 140}
95 141
96
97} } 142} }
diff --git a/src/bindings/mono/eo_mono/FunctionWrapper_Unix.cs b/src/bindings/mono/eo_mono/FunctionWrapper_Unix.cs
index 76ee4892ef..845f8239e0 100644
--- a/src/bindings/mono/eo_mono/FunctionWrapper_Unix.cs
+++ b/src/bindings/mono/eo_mono/FunctionWrapper_Unix.cs
@@ -6,8 +6,12 @@ namespace Efl { namespace Eo {
6public partial class FunctionInterop 6public partial class FunctionInterop
7{ 7{
8 [DllImport(efl.Libs.Libdl)] 8 [DllImport(efl.Libs.Libdl)]
9 public static extern IntPtr dlsym(IntPtr handle, string symbol); 9 private static extern IntPtr dlsym(IntPtr handle, string symbol);
10 10
11 ///<summary>Loads a function pointer from the given module.</summary>
12 ///<param name="nativeLibraryHandle">The module containing the function.</param>
13 ///<param name="functionName">The name of the function to search for.</param>
14 ///<returns>A function pointer that can be used with delegates.</returns>
11 public static IntPtr LoadFunctionPointer(IntPtr nativeLibraryHandle, string functionName) 15 public static IntPtr LoadFunctionPointer(IntPtr nativeLibraryHandle, string functionName)
12 { 16 {
13 Eina.Log.Debug("searching {nativeLibraryHandle} for {functionName}"); 17 Eina.Log.Debug("searching {nativeLibraryHandle} for {functionName}");
@@ -17,5 +21,4 @@ public partial class FunctionInterop
17 } 21 }
18} 22}
19 23
20
21} } 24} }
diff --git a/src/bindings/mono/eo_mono/NativeModule.cs b/src/bindings/mono/eo_mono/NativeModule.cs
index 324a933b65..400f24fb87 100644
--- a/src/bindings/mono/eo_mono/NativeModule.cs
+++ b/src/bindings/mono/eo_mono/NativeModule.cs
@@ -2,10 +2,13 @@ using System;
2 2
3namespace Efl { namespace Eo { 3namespace Efl { namespace Eo {
4 4
5///<summary>Wraps a native module that was opened with dlopen/LoadLibrary.</summary>
5public partial class NativeModule : IDisposable 6public partial class NativeModule : IDisposable
6{ 7{
7 private Lazy<IntPtr> module; 8 private Lazy<IntPtr> module;
8 9
10 ///<summary>Lazily tries to load the module with the given name.</summary>
11 ///<param name="libName">The name of the module to load.</param>
9 public NativeModule(string libName) 12 public NativeModule(string libName)
10 { 13 {
11 module = new Lazy<IntPtr> 14 module = new Lazy<IntPtr>
@@ -15,6 +18,7 @@ public partial class NativeModule : IDisposable
15 }); 18 });
16 } 19 }
17 20
21 ///<summary>The module that was loaded.</summary>
18 public IntPtr Module 22 public IntPtr Module
19 { 23 {
20 get 24 get
@@ -23,6 +27,7 @@ public partial class NativeModule : IDisposable
23 } 27 }
24 } 28 }
25 29
30 ///<summary>Unload and released the handle to the wrapped module.</summary>
26 public void Dispose() 31 public void Dispose()
27 { 32 {
28 UnloadLibrary(module.Value); 33 UnloadLibrary(module.Value);
diff --git a/src/bindings/mono/eo_mono/NativeModule_Unix.cs b/src/bindings/mono/eo_mono/NativeModule_Unix.cs
index 6f6939546c..8783895b14 100644
--- a/src/bindings/mono/eo_mono/NativeModule_Unix.cs
+++ b/src/bindings/mono/eo_mono/NativeModule_Unix.cs
@@ -5,21 +5,45 @@ namespace Efl { namespace Eo {
5 5
6public partial class NativeModule 6public partial class NativeModule
7{ 7{
8 public const int RTLD_NOW = 0x002; 8 private const int RTLD_NOW = 0x002;
9 // Currently we are using GLOBAL due to issues 9 // Currently we are using GLOBAL due to issues
10 // with the way evas modules are built. 10 // with the way evas modules are built.
11 public const int RTLD_GLOBAL = 0x100; 11 private const int RTLD_GLOBAL = 0x100;
12 12
13 [DllImport(efl.Libs.Libdl)] 13 [DllImport(efl.Libs.Libdl)]
14 public static extern IntPtr dlopen(string fileName, int flag); 14 private static extern IntPtr dlopen(string fileName, int flag);
15 [DllImport(efl.Libs.Libdl)] 15 [DllImport(efl.Libs.Libdl)]
16 public static extern int dlclose(IntPtr handle); 16 private static extern int dlclose(IntPtr handle);
17 17
18 ///<summary>Closes the library handle.</summary>
19 ///<param name="handle">The handle to the library.</param>
18 public static void UnloadLibrary(IntPtr handle) 20 public static void UnloadLibrary(IntPtr handle)
19 { 21 {
20 dlclose(handle); 22 dlclose(handle);
21 } 23 }
22 24
25 ///<summary>Loads the given library.
26 ///
27 ///It attempts to load using the following list of names based on the <c>filename</c>
28 ///parameter:
29 ///
30 ///<list type="bullet">
31 ///<item>
32 ///<description><c>filename</c></description>
33 ///</item>
34 ///<item>
35 ///<description><c>libfilename</c></description>
36 ///</item>
37 ///<item>
38 ///<description><c>filename.so</c></description>
39 ///</item>
40 ///<item>
41 ///<description><c>libfilename.so</c></description>
42 ///</item>
43 ///</list>
44 ///</summary>
45 ///<param name="filename">The name to search for.</param>
46 ///<returns>The loaded library handle or <see cref="System.IntPtr.Zero"/> on failure.</returns>
23 public static IntPtr LoadLibrary(string filename) 47 public static IntPtr LoadLibrary(string filename)
24 { 48 {
25 Eina.Log.Debug($"Loading library {filename}"); 49 Eina.Log.Debug($"Loading library {filename}");
diff --git a/src/bindings/mono/meson.build b/src/bindings/mono/meson.build
index 3d844e7dac..67c77a647d 100644
--- a/src/bindings/mono/meson.build
+++ b/src/bindings/mono/meson.build
@@ -62,7 +62,6 @@ blacklisted_files = [
62 'efl_vg_root_node.eo', 62 'efl_vg_root_node.eo',
63 'efl_vg_shape.eo.cs', 63 'efl_vg_shape.eo.cs',
64 'efl_io_buffer.eo', 64 'efl_io_buffer.eo',
65 'efl_io_positioner.eo',
66 'efl_io_queue.eo', 65 'efl_io_queue.eo',
67 'efl_io_sizer.eo', 66 'efl_io_sizer.eo',
68 'efl_io_closer_fd.eo', 67 'efl_io_closer_fd.eo',