~~Title: Efl.Model~~
====== Efl.Model (interface) ======
===== Description =====
%%Basic Model abstraction.%%
%%A model in EFL can have a set of key-value properties, where key can only be a string. The value can be anything within an Eina_Value. If a property is not yet available EAGAIN is returned.%%
%%Additionally a model can have a list of children. The fetching of the children is asynchronous, this has the advantage of having as few data sets as possible in the memory itself.%%
//Since 1.23//
{{page>:develop:api-include:efl:model:description&nouser&nolink&nodate}}
===== Members =====
**[[:develop:api:efl:model:method:child_add|child_add]]**\\
> %%Add a new child.%%
Efl_Object *efl_model_child_add(Eo *obj);
\\
**[[:develop:api:efl:model:method:child_del|child_del]]**\\
> %%Remove a child.%%
void efl_model_child_del(Eo *obj, Efl_Object *child);
\\
**[[:develop:api:efl:model:property:children_count|children_count]]** //**(get)**//\\
>
unsigned int efl_model_children_count_get(const Eo *obj);
\\
**[[:develop:api:efl:model:method:children_slice_get|children_slice_get]]**\\
> %%Get children slice OR full range.%%
Eina_Future *efl_model_children_slice_get(Eo *obj, unsigned int start, unsigned int count);
\\
**[[:develop:api:efl:model:property:properties|properties]]** //**(get)**//\\
>
Eina_Iterator *efl_model_properties_get(const Eo *obj);
\\
**[[:develop:api:efl:model:property:property|property]]** //**(get, set)**//\\
> %%No description supplied.%%
Eina_Value *efl_model_property_get(const Eo *obj, const char *property);
Eina_Future *efl_model_property_set(Eo *obj, const char *property, Eina_Value *value);
\\
**[[:develop:api:efl:model:method:property_ready_get|property_ready_get]]**\\
> %%Get a future value when it changes to something that is not error:EAGAIN%%
Eina_Future *efl_model_property_ready_get(Eo *obj, const char *property);
\\
===== Events =====
**[[:develop:api:efl:model:event:child_added|child,added]]**\\
> %%Event dispatched when new child is added.%%
EFL_MODEL_EVENT_CHILD_ADDED(Efl_Model_Children_Event, @beta)
\\ **[[:develop:api:efl:model:event:child_removed|child,removed]]**\\
> %%Event dispatched when child is removed.%%
EFL_MODEL_EVENT_CHILD_REMOVED(Efl_Model_Children_Event, @beta)
\\ **[[:develop:api:efl:model:event:children_count_changed|children,count,changed]]**\\
> %%Event dispatched when children count is finished.%%
EFL_MODEL_EVENT_CHILDREN_COUNT_CHANGED(void)
\\ **[[:develop:api:efl:model:event:properties_changed|properties,changed]]**\\
> %%Event dispatched when properties list is available.%%
EFL_MODEL_EVENT_PROPERTIES_CHANGED(Efl_Model_Property_Event)
\\