using System.Runtime.InteropServices;
using System.Collections.Generic;
using System.Linq;
+using System.Threading;
using System.ComponentModel;
-namespace Efl {
+namespace Efl {
+
/// <summary>Efl media playable interface</summary>
-[IPlayableNativeInherit]
+[Efl.IPlayableConcrete.NativeMethods]
public interface IPlayable :
Efl.Eo.IWrapper, IDisposable
{
/// <summary>Get the length of play for the media file.</summary>
/// <returns>The length of the stream in seconds.</returns>
double GetLength();
- /// <summary></summary>
-/// <returns></returns>
-bool GetPlayable();
+ bool GetPlayable();
/// <summary>Get whether the media file is seekable.</summary>
/// <returns><c>true</c> if seekable.</returns>
bool GetSeekable();
double Length {
get ;
}
- /// <summary></summary>
-/// <value></value>
- bool Playable {
+ bool Playable {
get ;
}
/// <summary>Get whether the media file is seekable.</summary>
{
///<summary>Pointer to the native class description.</summary>
- public System.IntPtr NativeClass {
- get {
- if (((object)this).GetType() == typeof (IPlayableConcrete))
- return Efl.IPlayableNativeInherit.GetEflClassStatic();
+ public System.IntPtr NativeClass
+ {
+ get
+ {
+ if (((object)this).GetType() == typeof(IPlayableConcrete))
+ {
+ return GetEflClassStatic();
+ }
else
+ {
return Efl.Eo.ClassRegister.klassFromType[((object)this).GetType()];
+ }
}
}
+
private System.IntPtr handle;
///<summary>Pointer to the native instance.</summary>
- public System.IntPtr NativeHandle {
+ public System.IntPtr NativeHandle
+ {
get { return handle; }
}
+
[System.Runtime.InteropServices.DllImport(efl.Libs.Efl)] internal static extern System.IntPtr
efl_playable_interface_get();
- ///<summary>Internal usage: Constructs an instance from a native pointer. This is used when interacting with C code and should not be used directly.</summary>
+ /// <summary>Initializes a new instance of the <see cref="IPlayable"/> class.
+ /// Internal usage: This is used when interacting with C code and should not be used directly.</summary>
private IPlayableConcrete(System.IntPtr raw)
{
handle = raw;
- RegisterEventProxies();
}
///<summary>Destructor.</summary>
~IPlayableConcrete()
{
Dispose(false);
}
+
///<summary>Releases the underlying native instance.</summary>
- void Dispose(bool disposing)
+ private void Dispose(bool disposing)
{
- if (handle != System.IntPtr.Zero) {
- Efl.Eo.Globals.efl_unref(handle);
- handle = System.IntPtr.Zero;
+ if (handle != System.IntPtr.Zero)
+ {
+ IntPtr h = handle;
+ handle = IntPtr.Zero;
+
+ IntPtr gcHandlePtr = IntPtr.Zero;
+ if (disposing)
+ {
+ Efl.Eo.Globals.efl_mono_native_dispose(h, gcHandlePtr);
+ }
+ else
+ {
+ Monitor.Enter(Efl.All.InitLock);
+ if (Efl.All.MainLoopInitialized)
+ {
+ Efl.Eo.Globals.efl_mono_thread_safe_native_dispose(h, gcHandlePtr);
+ }
+
+ Monitor.Exit(Efl.All.InitLock);
+ }
}
+
}
+
///<summary>Releases the underlying native instance.</summary>
public void Dispose()
{
Dispose(true);
GC.SuppressFinalize(this);
}
- ///<summary>Verifies if the given object is equal to this one.</summary>
- public override bool Equals(object obj)
+
+ /// <summary>Verifies if the given object is equal to this one.</summary>
+ /// <param name="instance">The object to compare to.</param>
+ /// <returns>True if both objects point to the same native object.</returns>
+ public override bool Equals(object instance)
{
- var other = obj as Efl.Object;
+ var other = instance as Efl.Object;
if (other == null)
+ {
return false;
+ }
return this.NativeHandle == other.NativeHandle;
}
- ///<summary>Gets the hash code for this object based on the native pointer it points to.</summary>
+
+ /// <summary>Gets the hash code for this object based on the native pointer it points to.</summary>
+ /// <returns>The value of the pointer, to be used as the hash code of this object.</returns>
public override int GetHashCode()
{
return this.NativeHandle.ToInt32();
}
- ///<summary>Turns the native pointer into a string representation.</summary>
+
+ /// <summary>Turns the native pointer into a string representation.</summary>
+ /// <returns>A string with the type and the native pointer for this object.</returns>
public override String ToString()
{
return $"{this.GetType().Name}@[{this.NativeHandle.ToInt32():x}]";
}
- ///<summary>Register the Eo event wrappers making the bridge to C# events. Internal usage only.</summary>
- void RegisterEventProxies()
- {
- }
+
/// <summary>Get the length of play for the media file.</summary>
/// <returns>The length of the stream in seconds.</returns>
public double GetLength() {
- var _ret_var = Efl.IPlayableNativeInherit.efl_playable_length_get_ptr.Value.Delegate(this.NativeHandle);
+ var _ret_var = Efl.IPlayableConcrete.NativeMethods.efl_playable_length_get_ptr.Value.Delegate(this.NativeHandle);
Eina.Error.RaiseIfUnhandledException();
return _ret_var;
}
- /// <summary></summary>
- /// <returns></returns>
public bool GetPlayable() {
- var _ret_var = Efl.IPlayableNativeInherit.efl_playable_get_ptr.Value.Delegate(this.NativeHandle);
+ var _ret_var = Efl.IPlayableConcrete.NativeMethods.efl_playable_get_ptr.Value.Delegate(this.NativeHandle);
Eina.Error.RaiseIfUnhandledException();
return _ret_var;
}
/// <summary>Get whether the media file is seekable.</summary>
/// <returns><c>true</c> if seekable.</returns>
public bool GetSeekable() {
- var _ret_var = Efl.IPlayableNativeInherit.efl_playable_seekable_get_ptr.Value.Delegate(this.NativeHandle);
+ var _ret_var = Efl.IPlayableConcrete.NativeMethods.efl_playable_seekable_get_ptr.Value.Delegate(this.NativeHandle);
Eina.Error.RaiseIfUnhandledException();
return _ret_var;
}
public double Length {
get { return GetLength(); }
}
- /// <summary></summary>
-/// <value></value>
- public bool Playable {
+ public bool Playable {
get { return GetPlayable(); }
}
/// <summary>Get whether the media file is seekable.</summary>
{
return Efl.IPlayableConcrete.efl_playable_interface_get();
}
-}
-public class IPlayableNativeInherit : Efl.Eo.NativeClass{
- public static Efl.Eo.NativeModule _Module = new Efl.Eo.NativeModule(efl.Libs.Efl);
- public override System.Collections.Generic.List<Efl_Op_Description> GetEoOps(System.Type type)
- {
- var descs = new System.Collections.Generic.List<Efl_Op_Description>();
- var methods = Efl.Eo.Globals.GetUserMethods(type);
- if (efl_playable_length_get_static_delegate == null)
- efl_playable_length_get_static_delegate = new efl_playable_length_get_delegate(length_get);
- if (methods.FirstOrDefault(m => m.Name == "GetLength") != null)
- descs.Add(new Efl_Op_Description() {api_func = Efl.Eo.FunctionInterop.LoadFunctionPointer(_Module.Module, "efl_playable_length_get"), func = Marshal.GetFunctionPointerForDelegate(efl_playable_length_get_static_delegate)});
- if (efl_playable_get_static_delegate == null)
- efl_playable_get_static_delegate = new efl_playable_get_delegate(playable_get);
- if (methods.FirstOrDefault(m => m.Name == "GetPlayable") != null)
- descs.Add(new Efl_Op_Description() {api_func = Efl.Eo.FunctionInterop.LoadFunctionPointer(_Module.Module, "efl_playable_get"), func = Marshal.GetFunctionPointerForDelegate(efl_playable_get_static_delegate)});
- if (efl_playable_seekable_get_static_delegate == null)
- efl_playable_seekable_get_static_delegate = new efl_playable_seekable_get_delegate(seekable_get);
- if (methods.FirstOrDefault(m => m.Name == "GetSeekable") != null)
- descs.Add(new Efl_Op_Description() {api_func = Efl.Eo.FunctionInterop.LoadFunctionPointer(_Module.Module, "efl_playable_seekable_get"), func = Marshal.GetFunctionPointerForDelegate(efl_playable_seekable_get_static_delegate)});
- return descs;
- }
- public override IntPtr GetEflClass()
- {
- return Efl.IPlayableConcrete.efl_playable_interface_get();
- }
- public static IntPtr GetEflClassStatic()
+ /// <summary>Wrapper for native methods and virtual method delegates.
+ /// For internal use by generated code only.</summary>
+ public class NativeMethods : Efl.Eo.NativeClass
{
- return Efl.IPlayableConcrete.efl_playable_interface_get();
- }
+ private static Efl.Eo.NativeModule Module = new Efl.Eo.NativeModule( efl.Libs.Efl);
+ /// <summary>Gets the list of Eo operations to override.</summary>
+ /// <returns>The list of Eo operations to be overload.</returns>
+ public override System.Collections.Generic.List<Efl_Op_Description> GetEoOps(System.Type type)
+ {
+ var descs = new System.Collections.Generic.List<Efl_Op_Description>();
+ var methods = Efl.Eo.Globals.GetUserMethods(type);
+ if (efl_playable_length_get_static_delegate == null)
+ {
+ efl_playable_length_get_static_delegate = new efl_playable_length_get_delegate(length_get);
+ }
- private delegate double efl_playable_length_get_delegate(System.IntPtr obj, System.IntPtr pd);
+ if (methods.FirstOrDefault(m => m.Name == "GetLength") != null)
+ {
+ descs.Add(new Efl_Op_Description() {api_func = Efl.Eo.FunctionInterop.LoadFunctionPointer(Module.Module, "efl_playable_length_get"), func = Marshal.GetFunctionPointerForDelegate(efl_playable_length_get_static_delegate) });
+ }
+ if (efl_playable_get_static_delegate == null)
+ {
+ efl_playable_get_static_delegate = new efl_playable_get_delegate(playable_get);
+ }
- public delegate double efl_playable_length_get_api_delegate(System.IntPtr obj);
- public static Efl.Eo.FunctionWrapper<efl_playable_length_get_api_delegate> efl_playable_length_get_ptr = new Efl.Eo.FunctionWrapper<efl_playable_length_get_api_delegate>(_Module, "efl_playable_length_get");
- private static double length_get(System.IntPtr obj, System.IntPtr pd)
- {
- Eina.Log.Debug("function efl_playable_length_get was called");
- Efl.Eo.IWrapper wrapper = Efl.Eo.Globals.PrivateDataGet(pd);
- if(wrapper != null) {
- double _ret_var = default(double);
- try {
- _ret_var = ((IPlayable)wrapper).GetLength();
- } catch (Exception e) {
- Eina.Log.Warning($"Callback error: {e.ToString()}");
- Eina.Error.Set(Eina.Error.UNHANDLED_EXCEPTION);
+ if (methods.FirstOrDefault(m => m.Name == "GetPlayable") != null)
+ {
+ descs.Add(new Efl_Op_Description() {api_func = Efl.Eo.FunctionInterop.LoadFunctionPointer(Module.Module, "efl_playable_get"), func = Marshal.GetFunctionPointerForDelegate(efl_playable_get_static_delegate) });
}
- return _ret_var;
- } else {
- return efl_playable_length_get_ptr.Value.Delegate(Efl.Eo.Globals.efl_super(obj, Efl.Eo.Globals.efl_class_get(obj)));
+
+ if (efl_playable_seekable_get_static_delegate == null)
+ {
+ efl_playable_seekable_get_static_delegate = new efl_playable_seekable_get_delegate(seekable_get);
+ }
+
+ if (methods.FirstOrDefault(m => m.Name == "GetSeekable") != null)
+ {
+ descs.Add(new Efl_Op_Description() {api_func = Efl.Eo.FunctionInterop.LoadFunctionPointer(Module.Module, "efl_playable_seekable_get"), func = Marshal.GetFunctionPointerForDelegate(efl_playable_seekable_get_static_delegate) });
+ }
+
+ return descs;
+ }
+ /// <summary>Returns the Eo class for the native methods of this class.</summary>
+ /// <returns>The native class pointer.</returns>
+ public override IntPtr GetEflClass()
+ {
+ return Efl.IPlayableConcrete.efl_playable_interface_get();
}
- }
- private static efl_playable_length_get_delegate efl_playable_length_get_static_delegate;
+ #pragma warning disable CA1707, SA1300, SA1600
- [return: MarshalAs(UnmanagedType.U1)] private delegate bool efl_playable_get_delegate(System.IntPtr obj, System.IntPtr pd);
+
+ private delegate double efl_playable_length_get_delegate(System.IntPtr obj, System.IntPtr pd);
+
+ public delegate double efl_playable_length_get_api_delegate(System.IntPtr obj);
+
+ public static Efl.Eo.FunctionWrapper<efl_playable_length_get_api_delegate> efl_playable_length_get_ptr = new Efl.Eo.FunctionWrapper<efl_playable_length_get_api_delegate>(Module, "efl_playable_length_get");
+
+ private static double length_get(System.IntPtr obj, System.IntPtr pd)
+ {
+ Eina.Log.Debug("function efl_playable_length_get was called");
+ Efl.Eo.IWrapper wrapper = Efl.Eo.Globals.PrivateDataGet(pd);
+ if (wrapper != null)
+ {
+ double _ret_var = default(double);
+ try
+ {
+ _ret_var = ((IPlayable)wrapper).GetLength();
+ }
+ catch (Exception e)
+ {
+ Eina.Log.Warning($"Callback error: {e.ToString()}");
+ Eina.Error.Set(Eina.Error.UNHANDLED_EXCEPTION);
+ }
- [return: MarshalAs(UnmanagedType.U1)] public delegate bool efl_playable_get_api_delegate(System.IntPtr obj);
- public static Efl.Eo.FunctionWrapper<efl_playable_get_api_delegate> efl_playable_get_ptr = new Efl.Eo.FunctionWrapper<efl_playable_get_api_delegate>(_Module, "efl_playable_get");
- private static bool playable_get(System.IntPtr obj, System.IntPtr pd)
- {
- Eina.Log.Debug("function efl_playable_get was called");
- Efl.Eo.IWrapper wrapper = Efl.Eo.Globals.PrivateDataGet(pd);
- if(wrapper != null) {
- bool _ret_var = default(bool);
- try {
- _ret_var = ((IPlayable)wrapper).GetPlayable();
- } catch (Exception e) {
- Eina.Log.Warning($"Callback error: {e.ToString()}");
- Eina.Error.Set(Eina.Error.UNHANDLED_EXCEPTION);
- }
return _ret_var;
- } else {
- return efl_playable_get_ptr.Value.Delegate(Efl.Eo.Globals.efl_super(obj, Efl.Eo.Globals.efl_class_get(obj)));
+
+ }
+ else
+ {
+ return efl_playable_length_get_ptr.Value.Delegate(Efl.Eo.Globals.efl_super(obj, Efl.Eo.Globals.efl_class_get(obj)));
+ }
}
- }
- private static efl_playable_get_delegate efl_playable_get_static_delegate;
+ private static efl_playable_length_get_delegate efl_playable_length_get_static_delegate;
- [return: MarshalAs(UnmanagedType.U1)] private delegate bool efl_playable_seekable_get_delegate(System.IntPtr obj, System.IntPtr pd);
+ [return: MarshalAs(UnmanagedType.U1)]
+ private delegate bool efl_playable_get_delegate(System.IntPtr obj, System.IntPtr pd);
+ [return: MarshalAs(UnmanagedType.U1)]
+ public delegate bool efl_playable_get_api_delegate(System.IntPtr obj);
- [return: MarshalAs(UnmanagedType.U1)] public delegate bool efl_playable_seekable_get_api_delegate(System.IntPtr obj);
- public static Efl.Eo.FunctionWrapper<efl_playable_seekable_get_api_delegate> efl_playable_seekable_get_ptr = new Efl.Eo.FunctionWrapper<efl_playable_seekable_get_api_delegate>(_Module, "efl_playable_seekable_get");
- private static bool seekable_get(System.IntPtr obj, System.IntPtr pd)
- {
- Eina.Log.Debug("function efl_playable_seekable_get was called");
- Efl.Eo.IWrapper wrapper = Efl.Eo.Globals.PrivateDataGet(pd);
- if(wrapper != null) {
- bool _ret_var = default(bool);
- try {
- _ret_var = ((IPlayable)wrapper).GetSeekable();
- } catch (Exception e) {
- Eina.Log.Warning($"Callback error: {e.ToString()}");
- Eina.Error.Set(Eina.Error.UNHANDLED_EXCEPTION);
+ public static Efl.Eo.FunctionWrapper<efl_playable_get_api_delegate> efl_playable_get_ptr = new Efl.Eo.FunctionWrapper<efl_playable_get_api_delegate>(Module, "efl_playable_get");
+
+ private static bool playable_get(System.IntPtr obj, System.IntPtr pd)
+ {
+ Eina.Log.Debug("function efl_playable_get was called");
+ Efl.Eo.IWrapper wrapper = Efl.Eo.Globals.PrivateDataGet(pd);
+ if (wrapper != null)
+ {
+ bool _ret_var = default(bool);
+ try
+ {
+ _ret_var = ((IPlayable)wrapper).GetPlayable();
+ }
+ catch (Exception e)
+ {
+ Eina.Log.Warning($"Callback error: {e.ToString()}");
+ Eina.Error.Set(Eina.Error.UNHANDLED_EXCEPTION);
+ }
+
+ return _ret_var;
+
+ }
+ else
+ {
+ return efl_playable_get_ptr.Value.Delegate(Efl.Eo.Globals.efl_super(obj, Efl.Eo.Globals.efl_class_get(obj)));
}
+ }
+
+ private static efl_playable_get_delegate efl_playable_get_static_delegate;
+
+ [return: MarshalAs(UnmanagedType.U1)]
+ private delegate bool efl_playable_seekable_get_delegate(System.IntPtr obj, System.IntPtr pd);
+
+ [return: MarshalAs(UnmanagedType.U1)]
+ public delegate bool efl_playable_seekable_get_api_delegate(System.IntPtr obj);
+
+ public static Efl.Eo.FunctionWrapper<efl_playable_seekable_get_api_delegate> efl_playable_seekable_get_ptr = new Efl.Eo.FunctionWrapper<efl_playable_seekable_get_api_delegate>(Module, "efl_playable_seekable_get");
+
+ private static bool seekable_get(System.IntPtr obj, System.IntPtr pd)
+ {
+ Eina.Log.Debug("function efl_playable_seekable_get was called");
+ Efl.Eo.IWrapper wrapper = Efl.Eo.Globals.PrivateDataGet(pd);
+ if (wrapper != null)
+ {
+ bool _ret_var = default(bool);
+ try
+ {
+ _ret_var = ((IPlayable)wrapper).GetSeekable();
+ }
+ catch (Exception e)
+ {
+ Eina.Log.Warning($"Callback error: {e.ToString()}");
+ Eina.Error.Set(Eina.Error.UNHANDLED_EXCEPTION);
+ }
+
return _ret_var;
- } else {
- return efl_playable_seekable_get_ptr.Value.Delegate(Efl.Eo.Globals.efl_super(obj, Efl.Eo.Globals.efl_class_get(obj)));
+
+ }
+ else
+ {
+ return efl_playable_seekable_get_ptr.Value.Delegate(Efl.Eo.Globals.efl_super(obj, Efl.Eo.Globals.efl_class_get(obj)));
+ }
}
- }
- private static efl_playable_seekable_get_delegate efl_playable_seekable_get_static_delegate;
+
+ private static efl_playable_seekable_get_delegate efl_playable_seekable_get_static_delegate;
+
+ #pragma warning restore CA1707, SA1300, SA1600
+
+}
}
-}
+}
+