Let's try to help debug by allowing extended reference management that
takes in account an identifier. This identifier is accounted on xref
and xunref and must match.
xrefs_get will return the list of such references, for debugging purposes.
eina_models_list_get() was added to return all live models, just
tracked when EINA_MODEL_DEBUG is enabled.
eina_models_usage_dump() was added and use the same infrastructure as
eina_models_list_get() and eina_model_xrefs_get() to aid debugging :-)
SVN revision: 67821
He worked previously with documentation, now is helping me with
Eina_Model and will keep adding some examples and fixes here and
there.
SVN revision: 67798
Same as the previous commit about "Type" this time about Interface.
This will also hopefully remove the likelihood for hacks.
Previous functions are still available as method_offset_resolve.
SVN revision: 67786
val->value.ptr is just valid on 64bits platforms, as on 32bits both
pointers of the Eina_Value_Struct fits in the 8bytes of val->value.buf.
Always use the function to correctly retrieve it.
SVN revision: 67764
Make it possible to resolve foo (the last item).
struct _My_Object_Type
{
Eina_Model_Type parent_class;
...
void (*foo)(Eina_Model *, int);
};
SVN revision: 67733
1. consider case where the struct was not set for flush and others;
2. flush previous struct on pset;
3. setup the new struct members memory on pset;
4. always use ops->alloc and ops->free if they are provided;
SVN revision: 67662
It's interchangeable with const char *, it's juts there as a visual hint
for functions expecting stringshared values. Docs are not enough...
SVN revision: 67641
Thanks to Tasn review it was noticed that subclasses using "const void *value"
with sub-structure would have to resolve their methods manually, quite bad.
Then the extension will happen with structures inside structures, as
previously used in Evas_Smart_Class. To allow the system to resolve
the methods and keep it, it is now specificed the type_size.
A new function is added to help extensions:
eina_model_type_method_resolve(), together with few helper macros.
To allow Eina_Model_Type to be augmented with more methods without
breaking the ABI, 4 slots are left there. We expect we got it right
from beginning and these will never be used, but we can never be sure
;-)
Last but not least, similar changes were done to Eina_Model_Interface
for consistency matters.
SVN revision: 67635
It is common to already known the member, then no need to query
it. This provides optimized retrieval for people that can manage it.
SVN revision: 67538
this is a killer, should be very efficient in memory and speed to
set/get items: instead of a hash of properties, keep them in a C
struct!
The constraint is that properties have fixed types defined at compile
time and cannot be deleted, but this is expected in many cases (ie:
esql rows).
SVN revision: 67517