summaryrefslogtreecommitdiff
blob: 6f8bce8c5bb5362eff703e080d755c952766eaaa (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
<pkgmetadata>
<maintainer type="project">
	<email>enlightenment@gentoo.org</email>
	<name>Project Enlightenment</name>
</maintainer>
<use>
	<flag name="mempool-buddy">Compile 'buddy' memory pool allocation</flag>
	<flag name="mempool-chained-pool">Compile 'chained-pool' memory pool allocation</flag>
	<flag name="mempool-fixed-bitmap">Compile 'fixed-bitmap' memory pool allocation</flag>
	<flag name="mempool-one-big">Compile 'one-big' memory pool allocation</flag>
	<flag name="mempool-pass-through">Compile 'pass-through' (system's malloc) memory pool allocation</flag>
	<flag name="default-mempool">By default use system's allocator (pass-through) instead of custom choice for Eina's own data structures</flag>
	<flag name="valgrind">Compile in valgrind hints for smoother integration</flag>
</use>
<longdescription>
Eina is a multi-platform library that provides optimized data types
and useful tools for projects.

Among its data types, Eina provides efficient implementation of:

 * double linked list with O(1) append and count;

 * double linked inlist (node is built in the data) with O(1) append;

 * stringshare, a pool of read-only strings that are shared in order
   to save memory (no copies!), fast referencing and
   pointer-comparison;

 * hash table with extensible key support, ships by default with
   string, stringshare, pointer and integer hashes by default;

 * array of pointers, with O(1) count and append, configurable step
   growing;

 * red-black tree;

 * sparse matrix;


As for tools, it provides couple of convenience:

 * generic and extensible logging system;

 * easy to use dynamic module loading (on top of dlopen()) that makes
   it easy to change to static/built-in modules;

 * generic safety-checks system covering NULL pointers and other
   incorrect conditions with logging;

 * 'magic' type checking that check and logs if expected magic number
   is incorrect;

 * easy to use and extensible memory allocators (mempools);

 * fixed-point arithmetic;

 * tile splitter and simplifier (merges);

 * generic iterator pattern (how to walk in one direction), just
   implement the given API;

 * generic accessor pattern (how to randomly access items), just
   implement the given API;

 * benchmark helpers.
</longdescription>
</pkgmetadata>