2 #pragma warning disable CS1591
4 using System.Runtime.InteropServices;
5 using System.Collections.Generic;
7 using System.Threading;
8 using System.ComponentModel;
11 /// <summary>Event argument wrapper for event <see cref="Efl.LoopMessageHandler.MessageEvt"/>.</summary>
12 [Efl.Eo.BindingEntity]
13 public class LoopMessageHandlerMessageEvt_Args : EventArgs {
14 /// <summary>Actual event payload.</summary>
15 /// <value>The message payload data</value>
16 public Efl.LoopMessage arg { get; set; }
18 /// <summary>Message handlers represent a single message type on the Efl.Loop parent object. These message handlers can be used to listen for that message type by listening to the message event for the generic case or a class specific event type to get specific message object typing correct.</summary>
19 /// <remarks>This is a <b>BETA</b> class. It can be modified or removed in the future. Do not use it for product development.</remarks>
20 [Efl.LoopMessageHandler.NativeMethods]
21 [Efl.Eo.BindingEntity]
22 public class LoopMessageHandler : Efl.Object
24 /// <summary>Pointer to the native class description.</summary>
25 public override System.IntPtr NativeClass
29 if (((object)this).GetType() == typeof(LoopMessageHandler))
31 return GetEflClassStatic();
35 return Efl.Eo.ClassRegister.klassFromType[((object)this).GetType()];
40 [System.Runtime.InteropServices.DllImport(efl.Libs.Ecore)] internal static extern System.IntPtr
41 efl_loop_message_handler_class_get();
42 /// <summary>Initializes a new instance of the <see cref="LoopMessageHandler"/> class.</summary>
43 /// <param name="parent">Parent instance.</param>
44 public LoopMessageHandler(Efl.Object parent= null
45 ) : base(efl_loop_message_handler_class_get(), parent)
47 FinishInstantiation();
50 /// <summary>Subclasses should override this constructor if they are expected to be instantiated from native code.
51 /// Do not call this constructor directly.</summary>
52 /// <param name="ch">Tag struct storing the native handle of the object being constructed.</param>
53 protected LoopMessageHandler(ConstructingHandle ch) : base(ch)
57 /// <summary>Initializes a new instance of the <see cref="LoopMessageHandler"/> class.
58 /// Internal usage: Constructs an instance from a native pointer. This is used when interacting with C code and should not be used directly.</summary>
59 /// <param name="wh">The native pointer to be wrapped.</param>
60 protected LoopMessageHandler(Efl.Eo.Globals.WrappingHandle wh) : base(wh)
64 /// <summary>Initializes a new instance of the <see cref="LoopMessageHandler"/> class.
65 /// Internal usage: Constructor to forward the wrapper initialization to the root class that interfaces with native code. Should not be used directly.</summary>
66 /// <param name="baseKlass">The pointer to the base native Eo class.</param>
67 /// <param name="parent">The Efl.Object parent of this instance.</param>
68 protected LoopMessageHandler(IntPtr baseKlass, Efl.Object parent) : base(baseKlass, parent)
72 /// <summary>The message payload data</summary>
73 /// <value><see cref="Efl.LoopMessageHandlerMessageEvt_Args"/></value>
74 public event EventHandler<Efl.LoopMessageHandlerMessageEvt_Args> MessageEvt
78 lock (eflBindingEventLock)
80 Efl.EventCb callerCb = (IntPtr data, ref Efl.Event.NativeStruct evt) =>
82 var obj = Efl.Eo.Globals.WrapperSupervisorPtrToManaged(data).Target;
85 Efl.LoopMessageHandlerMessageEvt_Args args = new Efl.LoopMessageHandlerMessageEvt_Args();
86 args.arg = (Efl.Eo.Globals.CreateWrapperFor(evt.Info) as Efl.LoopMessage);
89 value?.Invoke(obj, args);
93 Eina.Log.Error(e.ToString());
94 Eina.Error.Set(Eina.Error.UNHANDLED_EXCEPTION);
99 string key = "_EFL_LOOP_MESSAGE_HANDLER_EVENT_MESSAGE";
100 AddNativeEventHandler(efl.Libs.Ecore, key, callerCb, value);
106 lock (eflBindingEventLock)
108 string key = "_EFL_LOOP_MESSAGE_HANDLER_EVENT_MESSAGE";
109 RemoveNativeEventHandler(efl.Libs.Ecore, key, value);
113 /// <summary>Method to raise event MessageEvt.</summary>
114 public void OnMessageEvt(Efl.LoopMessageHandlerMessageEvt_Args e)
116 var key = "_EFL_LOOP_MESSAGE_HANDLER_EVENT_MESSAGE";
117 IntPtr desc = Efl.EventDescription.GetNative(efl.Libs.Ecore, key);
118 if (desc == IntPtr.Zero)
120 Eina.Log.Error($"Failed to get native event {key}");
124 IntPtr info = e.arg.NativeHandle;
125 Efl.Eo.Globals.efl_event_callback_call(this.NativeHandle, desc, info);
127 /// <summary>Creates a new message object of the correct type for this message type.</summary>
128 /// <returns>The new message payload object.</returns>
129 virtual public Efl.LoopMessage AddMessage() {
130 var _ret_var = Efl.LoopMessageHandler.NativeMethods.efl_loop_message_handler_message_add_ptr.Value.Delegate((IsGeneratedBindingClass ? this.NativeHandle : Efl.Eo.Globals.efl_super(this.NativeHandle, this.NativeClass)));
131 Eina.Error.RaiseIfUnhandledException();
134 /// <summary>Place the message on the queue to be called later when message_process() is called on the loop object.</summary>
135 /// <param name="message">The message to place on the queue.</param>
136 virtual public void MessageSend(Efl.LoopMessage message) {
137 Efl.LoopMessageHandler.NativeMethods.efl_loop_message_handler_message_send_ptr.Value.Delegate((IsGeneratedBindingClass ? this.NativeHandle : Efl.Eo.Globals.efl_super(this.NativeHandle, this.NativeClass)),message);
138 Eina.Error.RaiseIfUnhandledException();
140 /// <summary>Overide me (implement) then call super after calling the right callback type if you specialize the message type.</summary>
141 /// <param name="message">Generic message event type</param>
142 virtual public void CallMessage(Efl.LoopMessage message) {
143 Efl.LoopMessageHandler.NativeMethods.efl_loop_message_handler_message_call_ptr.Value.Delegate((IsGeneratedBindingClass ? this.NativeHandle : Efl.Eo.Globals.efl_super(this.NativeHandle, this.NativeClass)),message);
144 Eina.Error.RaiseIfUnhandledException();
146 /// <summary>Delete all queued messages belonging to this message handler that are pending on the queue so they are not processed later.</summary>
147 /// <returns>True if any messages of this type were cleared.</returns>
148 virtual public bool ClearMessage() {
149 var _ret_var = Efl.LoopMessageHandler.NativeMethods.efl_loop_message_handler_message_clear_ptr.Value.Delegate((IsGeneratedBindingClass ? this.NativeHandle : Efl.Eo.Globals.efl_super(this.NativeHandle, this.NativeClass)));
150 Eina.Error.RaiseIfUnhandledException();
153 private static IntPtr GetEflClassStatic()
155 return Efl.LoopMessageHandler.efl_loop_message_handler_class_get();
157 /// <summary>Wrapper for native methods and virtual method delegates.
158 /// For internal use by generated code only.</summary>
159 public new class NativeMethods : Efl.Object.NativeMethods
161 private static Efl.Eo.NativeModule Module = new Efl.Eo.NativeModule( efl.Libs.Ecore);
162 /// <summary>Gets the list of Eo operations to override.</summary>
163 /// <returns>The list of Eo operations to be overload.</returns>
164 public override System.Collections.Generic.List<Efl_Op_Description> GetEoOps(System.Type type)
166 var descs = new System.Collections.Generic.List<Efl_Op_Description>();
167 var methods = Efl.Eo.Globals.GetUserMethods(type);
169 if (efl_loop_message_handler_message_add_static_delegate == null)
171 efl_loop_message_handler_message_add_static_delegate = new efl_loop_message_handler_message_add_delegate(message_add);
174 if (methods.FirstOrDefault(m => m.Name == "AddMessage") != null)
176 descs.Add(new Efl_Op_Description() {api_func = Efl.Eo.FunctionInterop.LoadFunctionPointer(Module.Module, "efl_loop_message_handler_message_add"), func = Marshal.GetFunctionPointerForDelegate(efl_loop_message_handler_message_add_static_delegate) });
179 if (efl_loop_message_handler_message_send_static_delegate == null)
181 efl_loop_message_handler_message_send_static_delegate = new efl_loop_message_handler_message_send_delegate(message_send);
184 if (methods.FirstOrDefault(m => m.Name == "MessageSend") != null)
186 descs.Add(new Efl_Op_Description() {api_func = Efl.Eo.FunctionInterop.LoadFunctionPointer(Module.Module, "efl_loop_message_handler_message_send"), func = Marshal.GetFunctionPointerForDelegate(efl_loop_message_handler_message_send_static_delegate) });
189 if (efl_loop_message_handler_message_call_static_delegate == null)
191 efl_loop_message_handler_message_call_static_delegate = new efl_loop_message_handler_message_call_delegate(message_call);
194 if (methods.FirstOrDefault(m => m.Name == "CallMessage") != null)
196 descs.Add(new Efl_Op_Description() {api_func = Efl.Eo.FunctionInterop.LoadFunctionPointer(Module.Module, "efl_loop_message_handler_message_call"), func = Marshal.GetFunctionPointerForDelegate(efl_loop_message_handler_message_call_static_delegate) });
199 if (efl_loop_message_handler_message_clear_static_delegate == null)
201 efl_loop_message_handler_message_clear_static_delegate = new efl_loop_message_handler_message_clear_delegate(message_clear);
204 if (methods.FirstOrDefault(m => m.Name == "ClearMessage") != null)
206 descs.Add(new Efl_Op_Description() {api_func = Efl.Eo.FunctionInterop.LoadFunctionPointer(Module.Module, "efl_loop_message_handler_message_clear"), func = Marshal.GetFunctionPointerForDelegate(efl_loop_message_handler_message_clear_static_delegate) });
209 descs.AddRange(base.GetEoOps(type));
212 /// <summary>Returns the Eo class for the native methods of this class.</summary>
213 /// <returns>The native class pointer.</returns>
214 public override IntPtr GetEflClass()
216 return Efl.LoopMessageHandler.efl_loop_message_handler_class_get();
219 #pragma warning disable CA1707, CS1591, SA1300, SA1600
221 [return:MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef=typeof(Efl.Eo.MarshalEo<Efl.Eo.NonOwnTag>))]
222 private delegate Efl.LoopMessage efl_loop_message_handler_message_add_delegate(System.IntPtr obj, System.IntPtr pd);
224 [return:MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef=typeof(Efl.Eo.MarshalEo<Efl.Eo.NonOwnTag>))]
225 public delegate Efl.LoopMessage efl_loop_message_handler_message_add_api_delegate(System.IntPtr obj);
227 public static Efl.Eo.FunctionWrapper<efl_loop_message_handler_message_add_api_delegate> efl_loop_message_handler_message_add_ptr = new Efl.Eo.FunctionWrapper<efl_loop_message_handler_message_add_api_delegate>(Module, "efl_loop_message_handler_message_add");
229 private static Efl.LoopMessage message_add(System.IntPtr obj, System.IntPtr pd)
231 Eina.Log.Debug("function efl_loop_message_handler_message_add was called");
232 var ws = Efl.Eo.Globals.GetWrapperSupervisor(obj);
235 Efl.LoopMessage _ret_var = default(Efl.LoopMessage);
238 _ret_var = ((LoopMessageHandler)ws.Target).AddMessage();
242 Eina.Log.Warning($"Callback error: {e.ToString()}");
243 Eina.Error.Set(Eina.Error.UNHANDLED_EXCEPTION);
251 return efl_loop_message_handler_message_add_ptr.Value.Delegate(Efl.Eo.Globals.efl_super(obj, Efl.Eo.Globals.efl_class_get(obj)));
255 private static efl_loop_message_handler_message_add_delegate efl_loop_message_handler_message_add_static_delegate;
258 private delegate void efl_loop_message_handler_message_send_delegate(System.IntPtr obj, System.IntPtr pd, [MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef=typeof(Efl.Eo.MarshalEo<Efl.Eo.NonOwnTag>))] Efl.LoopMessage message);
261 public delegate void efl_loop_message_handler_message_send_api_delegate(System.IntPtr obj, [MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef=typeof(Efl.Eo.MarshalEo<Efl.Eo.NonOwnTag>))] Efl.LoopMessage message);
263 public static Efl.Eo.FunctionWrapper<efl_loop_message_handler_message_send_api_delegate> efl_loop_message_handler_message_send_ptr = new Efl.Eo.FunctionWrapper<efl_loop_message_handler_message_send_api_delegate>(Module, "efl_loop_message_handler_message_send");
265 private static void message_send(System.IntPtr obj, System.IntPtr pd, Efl.LoopMessage message)
267 Eina.Log.Debug("function efl_loop_message_handler_message_send was called");
268 var ws = Efl.Eo.Globals.GetWrapperSupervisor(obj);
274 ((LoopMessageHandler)ws.Target).MessageSend(message);
278 Eina.Log.Warning($"Callback error: {e.ToString()}");
279 Eina.Error.Set(Eina.Error.UNHANDLED_EXCEPTION);
286 efl_loop_message_handler_message_send_ptr.Value.Delegate(Efl.Eo.Globals.efl_super(obj, Efl.Eo.Globals.efl_class_get(obj)), message);
290 private static efl_loop_message_handler_message_send_delegate efl_loop_message_handler_message_send_static_delegate;
293 private delegate void efl_loop_message_handler_message_call_delegate(System.IntPtr obj, System.IntPtr pd, [MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef=typeof(Efl.Eo.MarshalEo<Efl.Eo.NonOwnTag>))] Efl.LoopMessage message);
296 public delegate void efl_loop_message_handler_message_call_api_delegate(System.IntPtr obj, [MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef=typeof(Efl.Eo.MarshalEo<Efl.Eo.NonOwnTag>))] Efl.LoopMessage message);
298 public static Efl.Eo.FunctionWrapper<efl_loop_message_handler_message_call_api_delegate> efl_loop_message_handler_message_call_ptr = new Efl.Eo.FunctionWrapper<efl_loop_message_handler_message_call_api_delegate>(Module, "efl_loop_message_handler_message_call");
300 private static void message_call(System.IntPtr obj, System.IntPtr pd, Efl.LoopMessage message)
302 Eina.Log.Debug("function efl_loop_message_handler_message_call was called");
303 var ws = Efl.Eo.Globals.GetWrapperSupervisor(obj);
309 ((LoopMessageHandler)ws.Target).CallMessage(message);
313 Eina.Log.Warning($"Callback error: {e.ToString()}");
314 Eina.Error.Set(Eina.Error.UNHANDLED_EXCEPTION);
321 efl_loop_message_handler_message_call_ptr.Value.Delegate(Efl.Eo.Globals.efl_super(obj, Efl.Eo.Globals.efl_class_get(obj)), message);
325 private static efl_loop_message_handler_message_call_delegate efl_loop_message_handler_message_call_static_delegate;
327 [return: MarshalAs(UnmanagedType.U1)]
328 private delegate bool efl_loop_message_handler_message_clear_delegate(System.IntPtr obj, System.IntPtr pd);
330 [return: MarshalAs(UnmanagedType.U1)]
331 public delegate bool efl_loop_message_handler_message_clear_api_delegate(System.IntPtr obj);
333 public static Efl.Eo.FunctionWrapper<efl_loop_message_handler_message_clear_api_delegate> efl_loop_message_handler_message_clear_ptr = new Efl.Eo.FunctionWrapper<efl_loop_message_handler_message_clear_api_delegate>(Module, "efl_loop_message_handler_message_clear");
335 private static bool message_clear(System.IntPtr obj, System.IntPtr pd)
337 Eina.Log.Debug("function efl_loop_message_handler_message_clear was called");
338 var ws = Efl.Eo.Globals.GetWrapperSupervisor(obj);
341 bool _ret_var = default(bool);
344 _ret_var = ((LoopMessageHandler)ws.Target).ClearMessage();
348 Eina.Log.Warning($"Callback error: {e.ToString()}");
349 Eina.Error.Set(Eina.Error.UNHANDLED_EXCEPTION);
357 return efl_loop_message_handler_message_clear_ptr.Value.Delegate(Efl.Eo.Globals.efl_super(obj, Efl.Eo.Globals.efl_class_get(obj)));
361 private static efl_loop_message_handler_message_clear_delegate efl_loop_message_handler_message_clear_static_delegate;
363 #pragma warning restore CA1707, CS1591, SA1300, SA1600
370 #pragma warning disable CS1591
371 public static class EflLoopMessageHandler_ExtensionMethods {
373 #pragma warning restore CS1591