Added the events: loaded and unloaded to notify eina_model_load() and
eina_model_unload() were called.
To be more specific, the interfaces used by EINA_MODEL_TYPE_MIXIN
(Eina_Model_Interface_Properties and Eina_Model_Interface_Children)
also do:
* properties,loaded
* properties,unloaded
* children,loaded
* children,unloaded
SVN revision: 68035
HUMAN_POOPER_IFACE must have ANIMAL_POOPER_IFACE as parent interface,
otherwise the order will be incorrect.
The test were also improved in other ways:
* use ck_assert_int_eq() instead of fail_if()... it prints the incorrect value
* check refcount
* unref models
* shutdown eina
SVN revision: 68034
I did a bad decision to steal memory for Array, List, Hash and Struct
types, it was nice to not have to copy it internally, but breaks when
one needs to set a new value that was set elsewhere. What did not
happen with string, integers and other basic types.
This was exposed by Raphael Kubo using eina_model_property_set() with
complex types (Array, List and Hash) and it was not possible to
correctly set such properties.
Now it's all set, but the behavior changed and the memory is not
stolen and released anymore. Test eina_test_value.c was changed to
reflect it.
SVN revision: 67843
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
This is a simple to use generic hierarchical data access. It includes
properties, children, reference counting and notifications (callbacks).
It can be understood in the same lines as GObject or PyObject, but I
believe the best usage is just to provide data models, not generic
Object Oriented Programming in C.
It misses most of documentation, although the important bits are
there. Need help here :-/
SVN revision: 67405
efficient storage with named access, can specify compare, alloc, free
and other operations for even better management.
no changelog/news as this is under eina_value, all new for 1.2 release.
SVN revision: 67155
Nice type that even supports configurable operations such as compare,
free, copy and to_string.
the usual is also supported: provide no ops (operations) and memory
will be left untouched.
nice feature to dump as string :-)
SVN revision: 67109
Similar to list and array, but takes string keys instead of position.
It can convert to string, I've added tests for it, but hash algorithm
changes may break the simple comparison I did... and I don't want to
parse the string to be more accurate.
SVN revision: 67103
Similar to array, but less efficient as uses list nodes. If possible
values are stored on list->data itself, otherwise they are allocated
and the pointer goes as list->data.
SVN revision: 67096
eina value is a generic value storage, it's quite efficient to space
(16 bytes) and speed (inlines for basic types).
It's basically a structure describing how to manage memory
(Eina_Value_Type), with default implementation for char, short, int,
long, int64_t (and unsigned variants), float, double, stringshare and
string.
If a type 'value_size' is smaller than 8 bytes, it's stored
inline. Otherwise a value is allocated and managed.
Most of the methods are inline, with special handling for char, short,
int... Then no extra calls are made, allowing the compiler to optimize
them.
For array of a single type it is recommend to use Eina_Value_Array, as
it will efficiently store and access members (just a char if subtype
is EINA_VALUE_TYPE_CHAR, etc).
It can copy itself, compare itself. Including arrays.
It would be nice to have something that converts between EET and this.
SVN revision: 67035
It is an inline array, that is, the members are actually in the
allocated buffer, as opposed to a pointer to its data.
It can be used to manage array of integers, floats or other structures
without fragmenting memory.
The lookups should be fast as memory is linear, then CPU prefetch can
kick in and bring data to cache before it's used.
SVN revision: 67003
A clist is an inlist with the following features:
- allows removal of items without knowing which list they are in.
- Two pointers per list item & list head
Signed-off-by: Mike McCormack <mj.mccormack@samsung.com>
SVN revision: 64007