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
they are not so expensive and will help detect bugs.
also, safety can be disabled at compile time... if performance is so
critical.
SVN revision: 67393
library files should ALWAYS include config.h, they should not include
Eina.h using "<Eina.h>" to avoid messing with system's version.
Last but definitely not least: include safety checks BEFORE your local
header, otherwise the macros EINA_ARG_NONNULL() will remove every
check for null pointers! eina_safety_checks.h redefines it to empty so
compiler does not optimize these things.
SVN revision: 67392
This removes the annoying:
make[2]: warning: jobserver unavailable: using -j1. Add `+' to parent make rule.
and with the package name I can upload it easily to somewhere else.
SVN revision: 67343
NOTE: it is worth enabling it and see EINA_LOG_INFO displaying how much memory
we are wasting. Should help tune our memory allocator usage.
SVN revision: 67296
be 1.1 (or 1.5) for the last release. too late. THIS is why i'm sick
and tired of all the bloody separate libs that have to be versiioned
and build and released separately. :( too many places to go fix up per
release.
SVN revision: 67284
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
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
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
We must check for cflags/ldflags and evil/escape libs before looking
for headers (like sys/mman.h) because they could be provided by one
of those libs. We must also set CFLAGS/LDFLAGS/LIBS variables to the
EINA_CFLAGS/EINA_LDFLAGS/EINA_LIBS vars so they get picked up properly
SVN revision: 66954
because now many libraries and api's don't have prototyopes for
malloc/calloc and much more and this goes horribly wrong especially on
64bit! the eina headers have provided these includes historically and
removing them is a BREAK in api. apps that used to compile and run
just fine now don't. it's unacceptable to break api.
i'm stuck here in unity for crying out loud! this deservves a big FAT
REVERT for that! :-P
SVN revision: 65983