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; } } } --