<?xml version="1.0"?>
<statsTarget><link>http://cia.vc/stats/project/e/eina</link><counters><counter name="forever" lastEventTime="1329162350" firstEventTime="1265488927">974</counter><counter name="lastMonth" lastEventTime="1328043085" firstEventTime="1325613758">107</counter><counter name="thisMonth" lastEventTime="1329162350" firstEventTime="1328055903">35</counter><counter name="lastWeek" lastEventTime="1328995830" firstEventTime="1328632844">29</counter><counter name="yesterday" lastEventTime="1329162350" firstEventTime="1329162350">1</counter><counter name="thisWeek" lastEventTime="1329162350" firstEventTime="1329162350">1</counter></counters><metadata><item name="subtitle"><value type="text/plain">Enlightenment's Data Type and Helpers Library</value></item><item name="description"><value type="text/plain">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.
</value></item><item name="links-filter"><value type="text/plain">None</value></item><item name="title"><value type="text/plain">Eina</value></item><item name="url"><value type="text/plain">http://trac.enlightenment.org/e/wiki/Eina</value></item><item name="related-filter"><value type="text/plain">None</value></item></metadata><recentMessages><message><generator><name>Python Subversion client for CIA</name><version>1.20</version></generator><source><project>e</project><module>eina</module></source><body><commit><revision>67886</revision><author>barbieri</author><log>eina_value_stringshare: safer copy, to cope copying user-generated structs.

array, list, struct and others set() now copies the values. These
values can be created by user, in this case string is just a stack
object and not a real eina_stringshare.

To cope with it, add the string instead of referencing it. Bit slower,
but nicer behavior.    </log><diffLines>16</diffLines><url>http://trac.enlightenment.org/e/changeset/67886</url><files><file action="modify" uri="http://svn.enlightenment.org/svn/e/trunk/eina/src/lib/eina_value.c">src/lib/eina_value.c</file></files></commit></body><timestamp>1329162349</timestamp></message><message><generator><name>Python Subversion client for CIA</name><version>1.20</version></generator><source><project>e</project><module>eina</module></source><body><commit><revision>67851</revision><author>barbieri</author><log>improve documentation of eina model and value.  </log><diffLines>1388</diffLines><url>http://trac.enlightenment.org/e/changeset/67851</url><files><file action="modify" uri="http://svn.enlightenment.org/svn/e/trunk/eina/src/include/Eina.h">src/include/Eina.h</file><file action="modify" uri="http://svn.enlightenment.org/svn/e/trunk/eina/src/include/eina_error.h">src/include/eina_error.h</file><file action="modify" uri="http://svn.enlightenment.org/svn/e/trunk/eina/src/include/eina_model.h">src/include/eina_model.h</file><file action="modify" uri="http://svn.enlightenment.org/svn/e/trunk/eina/src/include/eina_value.h">src/include/eina_value.h</file></files></commit></body><timestamp>1328995829</timestamp></message><message><generator><name>Python Subversion client for CIA</name><version>1.20</version></generator><source><project>e</project><module>eina</module></source><body><commit><revision>67845</revision><author>barbieri</author><log>model: add helper for common pattern  </log><diffLines>72</diffLines><url>http://trac.enlightenment.org/e/changeset/67845</url><files><file action="modify" uri="http://svn.enlightenment.org/svn/e/trunk/eina/src/include/eina_model.h">src/include/eina_model.h</file><file action="modify" uri="http://svn.enlightenment.org/svn/e/trunk/eina/src/lib/eina_model.c">src/lib/eina_model.c</file></files></commit></body><timestamp>1328933653</timestamp></message><message><generator><name>Python Subversion client for CIA</name><version>1.20</version></generator><source><project>e</project><module>eina</module></source><body><commit><revision>67844</revision><author>barbieri</author><log>one day I'll be less stupid...

... or one day we'll move to git so I can rewrite stupid commits :-D   </log><diffLines>47</diffLines><url>http://trac.enlightenment.org/e/changeset/67844</url><files><file action="modify" uri="http://svn.enlightenment.org/svn/e/trunk/eina/src/tests/eina_test_model.c">src/tests/eina_test_model.c</file></files></commit></body><timestamp>1328933250</timestamp></message><message><generator><name>Python Subversion client for CIA</name><version>1.20</version></generator><source><project>e</project><module>eina</module></source><body><commit><revision>67843</revision><author>barbieri</author><log>eina_value: break usage, but makes it more uniform and correct.

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.   </log><diffLines>478</diffLines><url>http://trac.enlightenment.org/e/changeset/67843</url><files><file action="modify" uri="http://svn.enlightenment.org/svn/e/trunk/eina/src/include/eina_model.h">src/include/eina_model.h</file><file action="modify" uri="http://svn.enlightenment.org/svn/e/trunk/eina/src/include/eina_value.h">src/include/eina_value.h</file><file action="modify" uri="http://svn.enlightenment.org/svn/e/trunk/eina/src/lib/eina_value.c">src/lib/eina_value.c</file><file action="modify" uri="http://svn.enlightenment.org/svn/e/trunk/eina/src/tests/eina_test_model.c">src/tests/eina_test_model.c</file><file action="modify" uri="http://svn.enlightenment.org/svn/e/trunk/eina/src/tests/eina_test_value.c">src/tests/eina_test_value.c</file></files></commit></body><timestamp>1328932796</timestamp></message><message><generator><name>Python Subversion client for CIA</name><version>1.20</version></generator><source><project>e</project><module>eina</module></source><body><commit><revision>67841</revision><author>barbieri</author><log>value: be safer on reset of existing values.

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.   </log><diffLines>240</diffLines><url>http://trac.enlightenment.org/e/changeset/67841</url><files><file action="modify" uri="http://svn.enlightenment.org/svn/e/trunk/eina/src/include/eina_inline_value.x">src/include/eina_inline_value.x</file><file action="modify" uri="http://svn.enlightenment.org/svn/e/trunk/eina/src/lib/eina_value.c">src/lib/eina_value.c</file></files></commit></body><timestamp>1328923755</timestamp></message><message><generator><name>Python Subversion client for CIA</name><version>1.20</version></generator><source><project>e</project><module>eina</module></source><body><commit><revision>67840</revision><author>barbieri</author><log>value: just setup on new memory!

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.   </log><diffLines>220</diffLines><url>http://trac.enlightenment.org/e/changeset/67840</url><files><file action="modify" uri="http://svn.enlightenment.org/svn/e/trunk/eina/src/include/eina_inline_value.x">src/include/eina_inline_value.x</file></files></commit></body><timestamp>1328922561</timestamp></message><message><generator><name>Python Subversion client for CIA</name><version>1.20</version></generator><source><project>e</project><module>eina</module></source><body><commit><revision>67839</revision><author>barbieri</author><log>value: allow multiple flush.

multiple flush may happen when handling errors. May be used in some cases.    </log><diffLines>51</diffLines><url>http://trac.enlightenment.org/e/changeset/67839</url><files><file action="modify" uri="http://svn.enlightenment.org/svn/e/trunk/eina/src/lib/eina_value.c">src/lib/eina_value.c</file></files></commit></body><timestamp>1328921993</timestamp></message><message><generator><name>Python Subversion client for CIA</name><version>1.20</version></generator><source><project>e</project><module>eina</module></source><body><commit><revision>67838</revision><author>barbieri</author><log>eina_value: fix convert to string on empty/null cases.  </log><diffLines>91</diffLines><url>http://trac.enlightenment.org/e/changeset/67838</url><files><file action="modify" uri="http://svn.enlightenment.org/svn/e/trunk/eina/src/lib/eina_value.c">src/lib/eina_value.c</file></files></commit></body><timestamp>1328921064</timestamp></message><message><generator><name>Python Subversion client for CIA</name><version>1.20</version></generator><source><project>e</project><module>eina</module></source><body><commit><revision>67837</revision><author>barbieri</author><log>ignore generated files.  </log><diffLines>137</diffLines><url>http://trac.enlightenment.org/e/changeset/67837</url><files><file uri="http://svn.enlightenment.org/svn/e/trunk/eina/"/><file uri="http://svn.enlightenment.org/svn/e/trunk/eina/src/examples/">src/examples/</file><file uri="http://svn.enlightenment.org/svn/e/trunk/eina/src/tests/">src/tests/</file></files></commit></body><timestamp>1328919732</timestamp></message><message><generator><name>Python Subversion client for CIA</name><version>1.20</version></generator><source><project>e</project><module>eina</module></source><body><commit><revision>67836</revision><author>barbieri</author><log>fix test leaks  </log><diffLines>22</diffLines><url>http://trac.enlightenment.org/e/changeset/67836</url><files><file action="modify" uri="http://svn.enlightenment.org/svn/e/trunk/eina/src/tests/eina_test_value.c">src/tests/eina_test_value.c</file></files></commit></body><timestamp>1328918691</timestamp></message><message><generator><name>Python Subversion client for CIA</name><version>1.20</version></generator><source><project>e</project><module>eina</module></source><body><commit><revision>67835</revision><author>barbieri</author><log>eina_value_hash: must free hash value after it's flushed.  </log><diffLines>14</diffLines><url>http://trac.enlightenment.org/e/changeset/67835</url><files><file action="modify" uri="http://svn.enlightenment.org/svn/e/trunk/eina/src/lib/eina_value.c">src/lib/eina_value.c</file></files></commit></body><timestamp>1328918671</timestamp></message><message><generator><name>Python Subversion client for CIA</name><version>1.20</version></generator><source><project>e</project><module>eina</module></source><body><commit><revision>67834</revision><author>barbieri</author><log>fix memleak in test suite.  </log><diffLines>15</diffLines><url>http://trac.enlightenment.org/e/changeset/67834</url><files><file action="modify" uri="http://svn.enlightenment.org/svn/e/trunk/eina/src/tests/eina_suite.c">src/tests/eina_suite.c</file></files></commit></body><timestamp>1328918632</timestamp></message><message><generator><name>Python Subversion client for CIA</name><version>1.20</version></generator><source><project>e</project><module>eina</module></source><body><commit><revision>67832</revision><author>barbieri</author><log>Another example for eina_model.

Patch by: &quot;Jonas M. Gastal&quot; &lt;jgastal@profusion.mobi&gt;   </log><diffLines>422</diffLines><url>http://trac.enlightenment.org/e/changeset/67832</url><files><file action="modify" uri="http://svn.enlightenment.org/svn/e/trunk/eina/src/examples/Makefile.am">src/examples/Makefile.am</file><file action="add" uri="http://svn.enlightenment.org/svn/e/trunk/eina/src/examples/addr_book.txt">src/examples/addr_book.txt</file><file action="add" uri="http://svn.enlightenment.org/svn/e/trunk/eina/src/examples/eina_model_03.c">src/examples/eina_model_03.c</file><file action="modify" uri="http://svn.enlightenment.org/svn/e/trunk/eina/src/include/eina_model.h">src/include/eina_model.h</file></files></commit></body><timestamp>1328906610</timestamp></message><message><generator><name>Python Subversion client for CIA</name><version>1.20</version></generator><source><project>e</project><module>eina</module></source><body><commit><revision>67822</revision><author>barbieri</author><log>thanks vincent.

I just did that mistake to see if you were paying attention... /me liar! :-)  </log><diffLines>24</diffLines><url>http://trac.enlightenment.org/e/changeset/67822</url><files><file action="modify" uri="http://svn.enlightenment.org/svn/e/trunk/eina/configure.ac">configure.ac</file></files></commit></body><timestamp>1328884108</timestamp></message><message><generator><name>Python Subversion client for CIA</name><version>1.20</version></generator><source><project>e</project><module>eina</module></source><body><commit><revision>67821</revision><author>barbieri</author><log>eina_model: add xref/xunref, xrefs_get and models_usage_dump!

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 :-)    </log><diffLines>648</diffLines><url>http://trac.enlightenment.org/e/changeset/67821</url><files><file action="modify" uri="http://svn.enlightenment.org/svn/e/trunk/eina/configure.ac">configure.ac</file><file action="modify" uri="http://svn.enlightenment.org/svn/e/trunk/eina/src/include/eina_model.h">src/include/eina_model.h</file><file action="modify" uri="http://svn.enlightenment.org/svn/e/trunk/eina/src/lib/eina_model.c">src/lib/eina_model.c</file></files></commit></body><timestamp>1328883229</timestamp></message><message><generator><name>Python Subversion client for CIA</name><version>1.20</version></generator><source><project>e</project><module>eina</module></source><body><commit><revision>67818</revision><author>barbieri</author><log>add missing shutdown  </log><diffLines>14</diffLines><url>http://trac.enlightenment.org/e/changeset/67818</url><files><file action="modify" uri="http://svn.enlightenment.org/svn/e/trunk/eina/src/examples/eina_model_02.c">src/examples/eina_model_02.c</file></files></commit></body><timestamp>1328882370</timestamp></message><message><generator><name>Python Subversion client for CIA</name><version>1.20</version></generator><source><project>e</project><module>eina</module></source><body><commit><revision>67799</revision><author>barbieri</author><log>remove @EINA_CPPFLAGS@ from remaining Makefile.am

Thanks to Tommy[D] for spotting the problem!  </log><diffLines>92</diffLines><url>http://trac.enlightenment.org/e/changeset/67799</url><files><file action="modify" uri="http://svn.enlightenment.org/svn/e/trunk/eina/src/modules/mp/buddy/Makefile.am">src/modules/mp/buddy/Makefile.am</file><file action="modify" uri="http://svn.enlightenment.org/svn/e/trunk/eina/src/modules/mp/chained_pool/Makefile.am">src/modules/mp/chained_pool/Makefile.am</file><file action="modify" uri="http://svn.enlightenment.org/svn/e/trunk/eina/src/modules/mp/ememoa_fixed/Makefile.am">src/modules/mp/ememoa_fixed/Makefile.am</file><file action="modify" uri="http://svn.enlightenment.org/svn/e/trunk/eina/src/modules/mp/ememoa_unknown/Makefile.am">src/modules/mp/ememoa_unknown/Makefile.am</file><file action="modify" uri="http://svn.enlightenment.org/svn/e/trunk/eina/src/modules/mp/fixed_bitmap/Makefile.am">src/modules/mp/fixed_bitmap/Makefile.am</file><file action="modify" uri="http://svn.enlightenment.org/svn/e/trunk/eina/src/modules/mp/one_big/Makefile.am">src/modules/mp/one_big/Makefile.am</file><file action="modify" uri="http://svn.enlightenment.org/svn/e/trunk/eina/src/modules/mp/pass_through/Makefile.am">src/modules/mp/pass_through/Makefile.am</file></files></commit></body><timestamp>1328836063</timestamp></message><message><generator><name>Python Subversion client for CIA</name><version>1.20</version></generator><source><project>e</project><module>eina</module></source><body><commit><revision>67798</revision><author>barbieri</author><log>add Jonas to authors.

He worked previously with documentation, now is helping me with
Eina_Model and will keep adding some examples and fixes here and
there.   </log><diffLines>11</diffLines><url>http://trac.enlightenment.org/e/changeset/67798</url><files><file action="modify" uri="http://svn.enlightenment.org/svn/e/trunk/eina/AUTHORS">AUTHORS</file></files></commit></body><timestamp>1328831449</timestamp></message><message><generator><name>Python Subversion client for CIA</name><version>1.20</version></generator><source><project>e</project><module>eina</module></source><body><commit><revision>67797</revision><author>barbieri</author><log>More documentation for eina_model.

Patch by: &quot;Jonas M. Gastal&quot; &lt;jgastal@profusion.mobi&gt;   </log><diffLines>407</diffLines><url>http://trac.enlightenment.org/e/changeset/67797</url><files><file action="modify" uri="http://svn.enlightenment.org/svn/e/trunk/eina/src/examples/Makefile.am">src/examples/Makefile.am</file><file action="add" uri="http://svn.enlightenment.org/svn/e/trunk/eina/src/examples/eina_model_02.c">src/examples/eina_model_02.c</file><file action="modify" uri="http://svn.enlightenment.org/svn/e/trunk/eina/src/include/Eina.h">src/include/Eina.h</file><file action="modify" uri="http://svn.enlightenment.org/svn/e/trunk/eina/src/include/eina_model.h">src/include/eina_model.h</file></files></commit></body><timestamp>1328827122</timestamp></message></recentMessages></statsTarget>
