The eina_value code TYPE_CHAR conversion code assumes that 'char' is a signed
type, which is not true on some platforms like ARM and PPC. We need to
explicitely use signed chars to make sure the value is correct.
Patch by Albin 'Lutin' Tonnerre <albin.tonnerre@gmail.com>
SVN revision: 71195
Since k-s is on the road this days, we'd better write some code ourselves.
This is array counterpart of eina_value_struct_value_get(), and retrieves
an item from an Eina_Value_Array as an Eina_Value.
Code writing the setter is welcome.
Patch by: "Raphael Kubo da Costa" <kubo@profusion.mobi>
SVN revision: 68581
if user get and then set the same value, we should not crash and this
may happen with previous code as the old
string/array/value/list... were released, then you ended with the
released memory still being pointed.
SVN revision: 67841
We should not flush and then setup the memory, instead we leave
vset/pset functions do their own stuff to clean previous data, if any.
SVN revision: 67840
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
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
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
Should be more portable and work with C++.
NOTE: I still see an aliasing break in eina_value_pset, but wasn't
able to figure how to solve it.
SVN revision: 67065
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