bu5hm4n pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=ef4dde48a035006b9d4dcd083eca836402bc5735

commit ef4dde48a035006b9d4dcd083eca836402bc5735
Author: Cedric BAIL <cedric.b...@free.fr>
Date:   Thu Apr 18 16:15:16 2019 -0700

    ecore: implement reflection for Efl.LoopModel properties.
    
    This enable relying on Eo reflection capabilities to expose Efl.Model 
properties.
    Should make API nicer to maintain.
    
    Reviewed-by: Marcel Hollerbach <m...@marcel-hollerbach.de>
    Differential Revision: https://phab.enlightenment.org/D8652
---
 src/lib/ecore/efl_loop_model.c  | 27 +++++++++++++++++++++++++++
 src/lib/ecore/efl_loop_model.eo |  1 +
 2 files changed, 28 insertions(+)

diff --git a/src/lib/ecore/efl_loop_model.c b/src/lib/ecore/efl_loop_model.c
index 0f212f1283..48309a5102 100644
--- a/src/lib/ecore/efl_loop_model.c
+++ b/src/lib/ecore/efl_loop_model.c
@@ -125,6 +125,33 @@ _efl_loop_model_volatile_make(Eo *obj, void *pd 
EINA_UNUSED)
    efl_event_callback_add(obj, EFL_EVENT_NOREF, _noref_death, NULL);
 }
 
+static Eina_Future *
+_efl_loop_model_efl_model_property_set(Eo *obj, void *pd EINA_UNUSED,
+                                       const char *property, Eina_Value *value)
+{
+   Eina_Error err;
+
+   if (!value) return efl_loop_future_rejected(obj, 
EFL_MODEL_ERROR_INCORRECT_VALUE);
+   err = efl_property_reflection_set(obj, property, *value);
+   if (err) return efl_loop_future_rejected(obj, err);
+
+   return efl_loop_future_resolved(obj, efl_property_reflection_get(obj, 
property));
+}
+
+static Eina_Value *
+_efl_loop_model_efl_model_property_get(const Eo *obj, void *pd EINA_UNUSED,
+                                       const char *property)
+{
+   Eina_Value *r;
+   Eina_Value direct;
+
+   direct = efl_property_reflection_get(obj, property);
+   r = eina_value_dup(&direct);
+   eina_value_flush(&direct);
+
+   return r;
+}
+
 static void
 _efl_loop_model_efl_object_invalidate(Eo *obj, void *pd EINA_UNUSED)
 {
diff --git a/src/lib/ecore/efl_loop_model.eo b/src/lib/ecore/efl_loop_model.eo
index 362b8bff09..7d727efbc3 100644
--- a/src/lib/ecore/efl_loop_model.eo
+++ b/src/lib/ecore/efl_loop_model.eo
@@ -14,5 +14,6 @@ abstract @beta Efl.Loop_Model extends Efl.Loop_Consumer 
implements Efl.Model
    implements {
       Efl.Object.invalidate;
       Efl.Model.property_ready_get;
+      Efl.Model.property { get; set; }
    }
 }

-- 


Reply via email to