Commit Graph

443 Commits

Author SHA1 Message Date
Gustavo Sverzut Barbieri 61f65ae20a Allow user to redefine the default logging level used by
EINA_LOG_ERR(), EINA_LOG_DBG() and other macros.

This will help us to avoid the cumbersome work of having to define the
local macros. I still find the 3-letter macros handy, but we are not
forced to use them now.

I did a small modification to keep the EINA_LOG_DOMAIN_GLOBAL and use
a different symbol for the define, it is EINA_LOG_DOMAIN_DEFAULT. The
documentation was updated to highlight the 2 usage scenario and care
that must be used.


By: Peter Johnson <tam@hiddenrock.com>



SVN revision: 46700
2010-03-01 15:08:40 +00:00
Cedric BAIL 99f4054ce5 * eina: Don't variable name that could shadow math symbols.
Patch requested by Albin "Lutin" Tonnerre.


SVN revision: 46694
2010-03-01 13:50:35 +00:00
Gustavo Sverzut Barbieri 0cece24af2 remove stupid letter I introduced by mistake.
SVN revision: 46671
2010-02-28 21:56:33 +00:00
Gustavo Sverzut Barbieri 90c5c1daaa doc improvements.
SVN revision: 46670
2010-02-28 21:29:30 +00:00
Gustavo Sverzut Barbieri 66ff799e5e Fix other EINA_PURE/EINA_CONST.
Some of them were working because they were inline, so the compiler
would know an just ignore the flag.

For lists and rbtree there is no problem as after each operation we
must change the pointer to the new head, thus the compiler will
consider it changed.



SVN revision: 46583
2010-02-27 15:17:15 +00:00
Gustavo Sverzut Barbieri 8daa98f42e ouch, SPANK SPANK SPANK... me :-( wrong function attributes.
I forgot that EINA_CONST refer to the pointer itself, not to its
contents, as such the pointer did not changed, so gcc was optimizing
subsequent fetches of the value.

There should be another optimization to check for this... but then I
guess it's just c++



SVN revision: 46580
2010-02-27 14:51:52 +00:00
Gustavo Sverzut Barbieri f98c65afcc missing useful warnings for eina_str
SVN revision: 46549
2010-02-27 03:49:13 +00:00
Gustavo Sverzut Barbieri 08127ecc3e eina_str speedups.
* eina_str_split() now does the minimum number of passes and
   allocations. The first pass figures out the string size (strlen())
   and number of delimiters, so we can allocate the exact number of
   elements in array. The second repeats the loop copying elements to
   string and also setting them to the result array.

 * eina_str_split_full() is a variation of eina_str_split() that
   returns also the number of elements in array, in the case you need
   to pre-allocate another array to copy.

 * eina_strlen_bounded() is introduced to limit strlen() results, this
   is used in has_prefix and has_suffix, but possibly other use cases
   where string must be of a maximum size as we don't do useless
   iterations;



SVN revision: 46547
2010-02-27 03:42:27 +00:00
Gustavo Sverzut Barbieri 6769ba3b45 optimization attributes for functions.
SVN revision: 46523
2010-02-26 21:42:03 +00:00
Gustavo Sverzut Barbieri 7dfc83a627 add missing macro for prepend.
SVN revision: 46522
2010-02-26 21:34:28 +00:00
Gustavo Sverzut Barbieri bba70aef2e eina_strbuf_insert variants and fix leak with eina_strbuf_append_escaped()
SVN revision: 46521
2010-02-26 21:33:17 +00:00
Gustavo Sverzut Barbieri f32672764d add eina_strbuf_append_length()
SVN revision: 46516
2010-02-26 20:09:36 +00:00
Gustavo Sverzut Barbieri e3c9d3f62a TRUE/FALSE are gone, use EINA_TRUE/EINA_FALSE instead.
SVN revision: 46500
2010-02-26 00:59:11 +00:00
Gustavo Sverzut Barbieri ff6532a1bd minor documentation fixes.
still needs someone to read and review that.


SVN revision: 46499
2010-02-26 00:57:20 +00:00
Gustavo Sverzut Barbieri 7c8ca04def Remove eina_error deprecated functions.
There were deprecated looooooooong ago, use eina_log if there are some
alien users out there.



SVN revision: 46496
2010-02-26 00:28:58 +00:00
Sebastian Dransfeld 5c49be6e01 Add const where we don't modify pointer
SVN revision: 46153
2010-02-13 19:06:16 +00:00
Vincent Torri 1213602ae5 constants should be unsigned
SVN revision: 46108
2010-02-12 07:27:27 +00:00
Sebastian Dransfeld 229e5de19d remove trailing whitespace
SVN revision: 46029
2010-02-09 21:12:03 +00:00
Sebastian Dransfeld 5847c6f245 string_remove -> string_steal
Better naming

SVN revision: 46028
2010-02-09 21:06:27 +00:00
Sebastian Dransfeld fe99f062e9 Check whether alloc works, return false on error
SVN revision: 46027
2010-02-09 21:06:16 +00:00
Sebastian Dransfeld dca87fdf87 Typo
SVN revision: 46025
2010-02-09 21:05:56 +00:00
Gustavo Sverzut Barbieri ebed1f20fe minor matching speedups.
keep log level name size (namelen) and use it before strcmp().



SVN revision: 45998
2010-02-09 02:13:55 +00:00
Gustavo Sverzut Barbieri 191d87d78a eina log level utilities.
couple of functions that are useful outside and should be fast.



SVN revision: 45996
2010-02-09 01:43:58 +00:00
Gustavo Sverzut Barbieri f7cd9786f1 eina log parameters getters and setters.
allow external users to check or set flags that are initialized based
on environment variables such as EINA_LOG_COLOR_DISABLE.



SVN revision: 45995
2010-02-09 00:52:00 +00:00
Sebastian Dransfeld 95d903dab7 And correct return type
SVN revision: 45967
2010-02-07 19:24:28 +00:00
Sebastian Dransfeld 2587c28d9a Add eina_strbuf_reset
Function to reset the internal string, so we can reuse the allocated
mem.

SVN revision: 45952
2010-02-06 21:43:22 +00:00
Sebastian Dransfeld 522a0ab1ab Add eina_strbuf_append_escaped for edje
SVN revision: 45950
2010-02-06 21:43:02 +00:00
Sebastian Dransfeld 72fccca0eb Add eina_str_escape
SVN revision: 45949
2010-02-06 21:42:51 +00:00
Sebastian Dransfeld 4a1ac380b1 Add functions to match evas strbuf
SVN revision: 45943
2010-02-06 20:41:43 +00:00
Sebastian Dransfeld ac60497dbf EINA_ARG_NONNULL
SVN revision: 45942
2010-02-06 20:41:32 +00:00
Sebastian Dransfeld eb29a86306 copy ecore_txt_convert to eina_str_convert
SVN revision: 45790
2010-02-02 04:49:38 +00:00
Vincent Torri 9b5ea1110b eina_str:
* return Eina_Bool instead of int when necessary
 * improve documentation
 * formatting


SVN revision: 45753
2010-01-31 12:27:41 +00:00
Sebastian Dransfeld c6ca24216c Add EINA_MAGIC to strbuf
SVN revision: 45651
2010-01-27 20:48:27 +00:00
Sebastian Dransfeld 436249c412 Move ecore_str and ecore_strbuf to eina
SVN revision: 45650
2010-01-27 20:47:47 +00:00
Carsten Haitzler 735ad48c39 eina - does modules like the rest of efl, so it's able to be installed with
multiple versions at the same time. eventually will neeed to also include
major number in release name too.



SVN revision: 45594
2010-01-26 15:54:28 +00:00
Cedric BAIL a9a3813966 * eina: Allow compilation with -Wshadow.
Patch from Albin Tonerre.


SVN revision: 45497
2010-01-23 19:53:27 +00:00
Mikhail Gusarov 4f7ae8764a eina: fix eina_module_list_get prototype: 'path' argument can be NULL
SVN revision: 45246
2010-01-17 06:01:20 +00:00
Sebastian Dransfeld a1270e5796 Remove unused defines
SORT_MIN and SORT_MAX are not used in eina, and will result in errors if
used. eina_list_sort(list, EINA_SORT_MAX, ...) will not give the
expexted result.

SVN revision: 45222
2010-01-16 13:54:38 +00:00
Vincent Torri 990576cd0e news is a valid stringshare
SVN revision: 45095
2010-01-13 21:20:32 +00:00
Jorge Luis Zapata Muga f3fb3dea17 + [Eina] API change. eina_module_list_flush() -> eina_module_list_free()
as we are on the modules context not the array.
  All the referenced projects are changed too. Remember that the list_free()
  already calls the unload() on each module so no need to call list_unload()



SVN revision: 44978
2010-01-08 12:22:23 +00:00
Vincent Torri 09d1853ea0 * finish benchmark tutorial
* move internal _init and _shutdown functions in the Global
   part of the code, as it is where they belong
 * fix minor documentation stuff


SVN revision: 44730
2009-12-27 08:45:30 +00:00
Vincent Torri 8c14ca031e minor fixes
SVN revision: 44720
2009-12-25 16:22:13 +00:00
Cedric BAIL 63d651b7ad * eina: Improve precision of f32p32 sinus/cosinus.
SVN revision: 44322
2009-12-09 13:03:23 +00:00
Vincent Torri efc50c5541 including Evil.h here cause big troubles with vc++ and EAPI. So
typedef here the needed types

SVN revision: 44318
2009-12-09 08:25:58 +00:00
Vincent Torri abe9190501 fix parenthesis order. Thanks, vc++ !! :p
SVN revision: 44316
2009-12-09 08:20:37 +00:00
Carsten Haitzler 1f5c54b2f4 shut up llabs!
SVN revision: 44312
2009-12-09 07:25:41 +00:00
Cedric BAIL 274ab1e01e * eina: Add sin and cos fixed point fonction.
SVN revision: 44287
2009-12-08 18:30:41 +00:00
Cedric BAIL b6183fe571 * eina: Fix negativ case and handle div with more accuracy.
SVN revision: 44281
2009-12-08 16:02:10 +00:00
Cedric BAIL 78d547c505 * eina: Fix precision of eina_f32p32_div.
SVN revision: 44252
2009-12-07 17:48:40 +00:00
Cedric BAIL 5a5d81812c * eina_fp: Fix rounding with Eina_F32p32 multiplaction, add
operation to multiply a FP with an int.


SVN revision: 44238
2009-12-07 09:27:53 +00:00
Gustavo Sverzut Barbieri 4e817e8ecd eina_module: more constness.
Thanks to Fabiano Fidencio for spotting those.



SVN revision: 43921
2009-11-23 13:24:48 +00:00
Gustavo Sverzut Barbieri d2fd0b36e0 eina_module_find: constness and gcc attribute.
Mark both array and module as const as we'll not modify them anyhow
inside this function.

Also mark this function as pure, so gcc will know how to optimize
multiple calls of it. Not that important for this function, but
doesn't hurt either.



SVN revision: 43918
2009-11-23 13:20:34 +00:00
Cedric BAIL ffb0bf8830 * eina_module: Add eina_module_find. Thanks to Fabiano Fidêncio <fidencio@profusion.mobi>.
SVN revision: 43847
2009-11-20 20:46:24 +00:00
Jonathan Atton 6ea6dc0856 Eina : now eina stringshare is thread safe if eina_threads_init() is called. Eina log which was thread safe is now thread safe only if the previous functions is called
SVN revision: 43398
2009-11-01 19:50:18 +00:00
Jonathan Atton cc1863fc96 Eina: add eina_list_split_list()
SVN revision: 43307
2009-10-27 10:26:20 +00:00
Cedric BAIL 96437266c8 * eina: Fix EINA_LIST_REVERSE_FOREACH_SAFE typo from Gustavo Chaves.
SVN revision: 43186
2009-10-21 19:02:52 +00:00
Cedric BAIL a9413206ef * eina_hash: First parameter could be NULL.
SVN revision: 43053
2009-10-13 17:11:58 +00:00
Cedric BAIL 17c820aef7 * eina: This initialisation is not needed, but will reduce llvm warning noise.
SVN revision: 42935
2009-10-07 12:06:52 +00:00
Cedric BAIL 7a51d7bf39 * eina: Cleanup Eina fixed point implementation.
SVN revision: 42798
2009-09-29 12:04:50 +00:00
Rafael Antognolli ea4efcb441 Fix eina_tile_grid_slicer_setup when a 0x0 rectangle was given as argument.
In this case slc->first wasn't being set, as well as the info.col and
info.row. This could bring some strange behavior like a call to
eina_tile_grid_slicer_next() not returning false.



SVN revision: 42783
2009-09-28 20:03:56 +00:00
Cedric BAIL 340ac0ee30 * eina: Fix build without amalgamation.
SVN revision: 42698
2009-09-25 11:36:56 +00:00
Cedric BAIL 6a284f8178 * eina: Add eina_atofp.
SVN revision: 42694
2009-09-25 10:03:19 +00:00
Cedric BAIL 4ddba5724d * eina: Add eina_fptoa.
This is a small piece of code, but a big one for an edje fixed point implementation.


SVN revision: 42646
2009-09-23 16:47:08 +00:00
Vincent Torri 0ba193bae0 move EINA_DEPRECATED at the beginning of the declaration,
because it's more visible, and vc++ does not like it at
the end.

SVN revision: 42498
2009-09-15 21:19:15 +00:00
Rafael Antognolli 52de9e33cd Added the Eina_Tile_Grid_Slicer iterator.
This new iterator receives a rectangle as argument and tile_w X tile_h sized
tile, and slices the rectangle iterating over it on each iteration.



SVN revision: 42427
2009-09-11 23:51:47 +00:00
Gustavo Sverzut Barbieri 7d1745e3c1 constness++
SVN revision: 42426
2009-09-11 23:10:57 +00:00
Gustavo Sverzut Barbieri f98cb6e5f5 fix lighblue and add cyan.
SVN revision: 42410
2009-09-11 14:22:24 +00:00
Iván Briano bbce7b5e0d Avoid clashes.
SVN revision: 42368
2009-09-09 15:53:50 +00:00
Iván Briano 555de0f914 Support EINA_INLIST to be anywhere in the struct with _FOREACH macros.
Fix pointer arithmetic with EINA_CONTAINER_GET.
Change Inlist test to have the int first and not assume a direct cast works.


SVN revision: 42366
2009-09-09 14:05:31 +00:00
Gustavo Sverzut Barbieri c98bf92366 replace UNLIKELY() with EINA_UNLIKELY()
SVN revision: 42354
2009-09-08 21:42:17 +00:00
Gustavo Sverzut Barbieri a4bd77905d malloc--: error and magic can take statically defined strings so no
need to strdup them.



SVN revision: 42311
2009-09-07 03:32:22 +00:00
Gustavo Sverzut Barbieri 404e3e09fb API BREAK: eina_magic_string_set() does not change existing strings anymore.
It's pointless to be able to change magic number string after it's
created, so let's avoid walking the existing list and just remove
places where strings were being duplicated (list/array both inited
magic strings for accessor/iterators).

Also an optimization, register using an array and sort it before
searching. Sort will just happen when array was changed, and this is
just done when eina_magic_string_get() is called.




SVN revision: 42310
2009-09-07 02:33:54 +00:00
Gustavo Sverzut Barbieri e4af7c100c EINA API BREAK: no more individual modules init/shutdown.
Being able to indivually initialize individual modules was initially
"good", but at end it's putting complexities on users that would try
to "optimize" by doing just what they used, but in the end most people
would get them wrong, users would have to do lots of code and etc. At
the end it does not worth.

Most module init just register handful errors and log domains, so are
cheap. The exception is mempool users, that would dlopen() stuff, but
people that are concerned (embedded) can just compile those statically
in eina.

Since at the end any real application would use most of modules, we
actually end saving lots of function calls that would do nothing other
than increment a global counter.

I also did the init/shutdown use an array, making it easier to
maintain. The inital dependencies were analysed by a script I wrote, I
hope it's all right.

Please fix any breakages you find!



SVN revision: 42300
2009-09-06 22:21:56 +00:00
Gustavo Sverzut Barbieri 86aa8a433b mark log functions as not_instrument_function.
SVN revision: 42270
2009-09-04 21:55:03 +00:00
Gustavo Sverzut Barbieri b5397eea63 eina_log optimization: allow to compile out some debug messages.
Users may opt to set EINA_LOG_LEVEL_MAXIMUM to some integer and macro
will then evaluate to check for that value before actually call
eina_log_print() macro. By using optimizations compilers will
effectivelly compile out the code if it is never reached, thus saving
the check and function call in possible critical paths.



SVN revision: 42269
2009-09-04 21:28:50 +00:00
Vincent Torri 5e05323794 include eina_log.h in eina_error.h as some log macro are used in it
SVN revision: 42249
2009-09-04 16:54:38 +00:00
Gustavo Sverzut Barbieri eef2d35ea6 eina_matrixsparse: loggify, install header, remove warnings and coding style.
* use eina_log
 * install eina_matrixsparse.h
 * remove unused variable
 * fix coding style issue reported by Vincent



SVN revision: 42246
2009-09-04 14:18:05 +00:00
Gustavo Sverzut Barbieri 643958705b eina_matrixsparse: welcome sparse matrix implementation and tests.
Sparse Matrix was implemented and tested by Rafael Antognolli and
myself in order to implement optimized large sparse matrix walk in
some products, one of them WebKit-EFL optimizations.

We have done extensive tests, with good code coverage. Similar to
lists/inlists, we keep pointer to last known element and similar to
iterators we keep reference to last accessed row and cell inside
rows. This allows fast sequential access (for i... for j... m[i,j]),
that is our most common usage case.

Rows are kept in a list, with cells inside that row as another
list. It's not similar to most book implementations where cells keep
reference to their sibling cells in other rows as well, we opted to
not do that to save some pointers and make algorithms simpler, still
do great for our use case.

This code was developed on behalf of our client, that wants to remain
unnamed so far. Thanks client ;-)



SVN revision: 42243
2009-09-04 13:43:44 +00:00
Gustavo Sverzut Barbieri 8ca1675c51 eina_error: deprecated old logging, move to eina_log.
SVN revision: 42220
2009-09-04 01:37:11 +00:00
Gustavo Sverzut Barbieri eeb2d38d38 eina_log_vprint() for those that want to wrap it in other functions.
SVN revision: 42216
2009-09-04 00:57:09 +00:00
Gustavo Sverzut Barbieri 07d2bde900 eina_safety_checks_init()
All these individual init functions are getting messy, some modules
lack them and it's easy to get inconsistent. Safety check needs error
and log, but these need safety checks as well, some modules (lalloc,
rbtree and others) use safety checks but provide no _init().

I want to know if we really gain something to init individual
modules. It should not be that expensive as init should not allocate
heavy resources and the recommendation is to call eina_init() so most
users will do that anyway.

If people agree I'll unmark all *_init() as EAPI and make them private
to eina lib.



SVN revision: 42214
2009-09-04 00:53:19 +00:00
Gustavo Sverzut Barbieri 4d37971d60 eina_safety_checks now uses eina_log.
SVN revision: 42213
2009-09-03 23:36:27 +00:00
Gustavo Sverzut Barbieri 8024360138 eina_log: thread safe logging!
eina_log_threads_enable() and then get thread safe logging with
non-main threads being printed with special notation to easily spot
those.



SVN revision: 42199
2009-09-03 01:31:26 +00:00
Gustavo Sverzut Barbieri 9fb9b1259d eina_log: fix stderr, improve log output.
* stderr logger was doing prefix properly but user message to stdout, fixed.
 * log is improved:
   * grep-able, it shows the 3 letter level name as prefix, unknown levels
     will have their number printed.
   * colors just on prefix, less polluted output still easy to spot.
   * function names are highlighted.



SVN revision: 42197
2009-09-03 00:07:25 +00:00
Gustavo Sverzut Barbieri 418c99a8e3 eina_log improvements: docs, micro optimizations and stderr logging by default.
* more docs.
 * do not getenv("EINA_LOG_ABORT") everytime, just at init.
 * EINA_UNLIKELY() in some critical paths (not that big impact anyway)
 * eina_log_print_cb_stderr() and use it by default.




SVN revision: 42196
2009-09-02 23:28:00 +00:00
Gustavo Sverzut Barbieri 2f8ded1037 loggify eina_module, adding couple of debug info.
SVN revision: 42194
2009-09-02 23:06:55 +00:00
Cedric BAIL 49cb141f10 * eina_magic: Test suite now work when magic debug is disabled.
SVN revision: 42150
2009-09-01 12:17:13 +00:00
dieb 7eff1d432b Remove legacy error code definition from eina log.
SVN revision: 42126
2009-08-31 14:40:48 +00:00
Cedric BAIL 2bc38ddb92 * eina: Add more FP type (f8p24 and f32p32).
SVN revision: 42124
2009-08-31 13:52:17 +00:00
Vincent Torri 72b87160a2 * add eina_config.h in all source files. Fix linking with Visual Studio
* move eina_private.h and eina_safety_checks.h just after eina_config.h


SVN revision: 42077
2009-08-28 12:03:34 +00:00
dieb 7bc6284e09 Fix compilation issue reported by Vincent on Windows (stdint and c++ compiler), setup a negative value for flagging the unknown level.
SVN revision: 42049
2009-08-27 21:32:42 +00:00
dieb c891a34a08 Add eina_log module into the main module and global header.
SVN revision: 41985
2009-08-25 21:26:27 +00:00
dieb d7bbc05b12 Initial import of the new eina logging API.
* eina_error might be kept for error messages and codes, but it's logging API
  will be deprecated. For now, it's been kept for not breaking others code and
  for a smoother transition.
* Added test for new logging API, also demonstrates usage.


SVN revision: 41960
2009-08-24 21:43:48 +00:00
Vincent Torri 989ade86dd fix a bit the documentation
SVN revision: 41870
2009-08-19 07:54:13 +00:00
Vincent Torri c45bf860da * remove uneeded semicolons
* fix and add doxygen doc


SVN revision: 41868
2009-08-19 07:09:24 +00:00
Gustavo Sverzut Barbieri 425ebc47f5 improve docs and simplify macro, by kubo.
Kubo just found that docs could be improved and macro could be
simplified during his learning of EFL. Big bonus he did the
improvements =)



SVN revision: 41799
2009-08-16 00:47:23 +00:00
Carsten Haitzler d0c5158f5b eina hamster++
<dieb_> weird, undefined refernce to eina_cpu_count
<raster> you have no cpus!
<dieb_> dammit!
<Sachiel> try eina_hamster_count
<dieb_> lo
<raster> oh god
<raster> now u did it
<raster> i have to add that
<dieb_> heheheh



SVN revision: 41727
2009-08-13 00:47:55 +00:00
Cedric BAIL 2ba87c1129 * eina: Fix SunPro compiler.
SVN revision: 41690
2009-08-11 14:14:42 +00:00
Gustavo Sverzut Barbieri 944be7e745 Bugfix eina_list_search_sorted_near_list() add sorted_insert.
eina_list_search_sorted_near_list() was broken and barfed at my face
during development of eina_list_sorted_insert(), so I rewrote it
following more traditional approach, also adding special cases for
head/tail remembering that random access in lists is not as fast as
array. I also simplified that code.

eina_list_sorted_insert() should be fast, O(log2 n) insert, with
special cases to insert already sorted arrays forwards or backwards,
however I believe that it's better to simply append/prepend in those
cases (if known).



SVN revision: 41625
2009-08-06 22:31:45 +00:00
Gustavo Sverzut Barbieri 4f39f6861a API BREAK: eina_list_search_sorted_near_list() gets one more parameter.
This should not impact anybody, at least in SVN I got no hits for this
function.

The new parameter contains the result of the last call to func(), so
we can know if the node is smaller, bigger or exactly the requested
value and don't need to call func() on node to know for sure.



SVN revision: 41623
2009-08-06 19:01:47 +00:00
Cedric BAIL 5784d74daa * eina: Add eina_cpu_count.
SVN revision: 41543
2009-07-30 16:45:15 +00:00
Cedric BAIL b02de756a6 * eina: Rename eina_module_list_delete to eina_module_list_flush.
SVN revision: 41385
2009-07-17 11:13:38 +00:00
Cedric BAIL 6ca987941f * eina: Fix declaration according to Vincent Torri review.
SVN revision: 41359
2009-07-16 12:09:29 +00:00
Carsten Haitzler 01062bf98b cast. c++ doesn't like the implied void * -> struct * cast.
SVN revision: 41358
2009-07-16 03:04:56 +00:00
Cedric BAIL a477424685 * eina: Expose an helper for memory pool as Eina_Trash data type.
SVN revision: 41350
2009-07-15 13:13:52 +00:00
Gustavo Sverzut Barbieri a6f46561e7 add missing stddef.h, required by offsetof()
SVN revision: 41327
2009-07-14 15:32:01 +00:00
Vincent Torri 7a3b2110bf * more doc
* check the returned value of eina_error_init() in eina_module_init()


SVN revision: 41218
2009-06-28 06:29:11 +00:00
Vincent Torri c94a92a174 * Remove the use of HAVE___ATTRIBUTE__ (which is defined at
configure time) in an exported header. Use only macros
   defined by the compilers, which is sufficient and simpler.
 * Add missing EINA_DEPRECATED in some cases.


SVN revision: 41199
2009-06-25 19:58:05 +00:00
Vincent Torri ebc20c2236 API BREAK: fix Eina API so that it is more consistent with the other EFL
what is modified:

eina_counter_add -> eina_counter_new
eina_counter_delete -> eina_counter_free
eina_lalloc_delete -> eina_lalloc_free
eina_mempool_new -> eina_mempool_add
eina_mempool_delete -> eina_mempool_del
eina_mempool_alloc -> eina_mempool_malloc
eina_tiler_del -> eina_tiler_free

It remains some questions: have the following API a good name:

eina_module_list_delete
eina_list_free
eina_rbtree_delete

(see ticket #286)

If you find any problem, please report in that thread


SVN revision: 41187
2009-06-24 16:56:49 +00:00
Cedric BAIL 0c9aead634 Evas_Rectangle are gone. We now use Eina_Rectangle and memory pool is
shared accross the application.


SVN revision: 41170
2009-06-23 13:57:27 +00:00
Vincent Torri 9110d8d574 fix a bit the documentation, but there are still
a lot of doc to write...


SVN revision: 41164
2009-06-22 20:03:58 +00:00
Cedric BAIL af1e7f5dc9 * eina: Fix API naming for eina_rectangle and add a global allocator.
SVN revision: 41155
2009-06-22 13:16:51 +00:00
Cedric BAIL 7a18ab5ebc * eina: Add an eina_hash_stringshare_new.
SVN revision: 41112
2009-06-19 14:44:23 +00:00
Vincent Torri 5bd14d2a05 * modify the way eina_config.h is built (see eina_config.h.in
and configure.ac)
 * include eina_config.h explicitely in files where the macros
   of eina_config.h are used
 * define eina_magic_string_init()  and eina_magic_string_shutdown()
   even when the mugle option is set (magic disabled)
 * formatting and fix in configure.ac


SVN revision: 40962
2009-06-08 08:27:33 +00:00
Vincent Torri 46836c875f fix documentation
SVN revision: 40914
2009-06-06 03:55:32 +00:00
Cedric BAIL c38a387a05 * eina: Patch from Albin Tonnerre that add a new accessor for Inlist container.
SVN revision: 40726
2009-05-18 14:49:57 +00:00
Gustavo Sverzut Barbieri ebeabe3735 enable adding just part of a string.
this allows us to add stringshare from a larger buffer that cannot be
modified.


SVN revision: 40516
2009-05-06 04:11:01 +00:00
Cedric BAIL 5016004597 * eina_rectangle: Use a mempool to reduce memory allocation.
SVN revision: 39909
2009-04-09 15:51:32 +00:00
Carsten Haitzler 1c00a019e9 new -> news. people with g++ using eina in their c++ stuff will be most
un-amused by the use of a variable called "new".



SVN revision: 39905
2009-04-09 05:55:51 +00:00
Gustavo Sverzut Barbieri 2e9a9a9700 eina_stringshare_replace() gets in!
I was replicating this code in many places, it should go into eina itself.

It's the right way to change strings that you don't know are
stringshared before, since it will first add a reference and then
remove, making it impossible to have references to go 0 and string
being released before adding new references, fixing the following
possible problem:

   x = eina_stringshare_add("x");
   replace(x, x);

   then:
   incorrect_replace(const char **b, const char *a) {
      eina_stringshare_del(*b); /* reference gets to 0 */
      eina_stringshare_add(a); /* BUG!!! */
      *b = a;
   }




SVN revision: 39903
2009-04-08 18:25:02 +00:00
Gustavo Sverzut Barbieri 78f4f011d0 export vargs version of eina_error_print().
SVN revision: 39879
2009-04-06 12:41:50 +00:00
Gustavo Sverzut Barbieri 124e0c4a1b deprecated attribute
SVN revision: 39597
2009-03-20 01:00:35 +00:00
Gustavo Sverzut Barbieri 21f6be2f66 constness++
SVN revision: 39596
2009-03-20 01:00:04 +00:00
Cedric BAIL e027bb8a6e * eina_list: Add a eina_list_search_sorted_near_list. Usefull if you want to build
a sorted list.


SVN revision: 39550
2009-03-18 15:00:52 +00:00
Cedric BAIL 9fab9595b5 * eina_list: Add eina_list_search_sorted_list and eina_list_search_unsorted_list.
SVN revision: 39546
2009-03-18 13:29:36 +00:00
Gustavo Sverzut Barbieri bd6ef0cce1 add missing prototype.
SVN revision: 39516
2009-03-17 13:05:02 +00:00
Gustavo Sverzut Barbieri 56d1e979ce fix docs and add clone and reversed iterator calls.
* docs: be clear if it's a copy or in-place.

 * clone: add some apis to create a copy while operates, sort should
   do the same.

 * reversed iterator: new call to walk the list reversed, will make
   life easier in some cases.



SVN revision: 39515
2009-03-17 12:52:38 +00:00
Gustavo Sverzut Barbieri 750bdfce3d inlist: add count.
SVN revision: 39465
2009-03-13 11:32:56 +00:00
Jorge Luis Zapata Muga 07235befaa + Fix the precision when multiplying two fixed point numbers
SVN revision: 39307
2009-03-01 12:35:30 +00:00
Gustavo Sverzut Barbieri e3cce7b79d New macros, documentation and consistency for iterators and accessors.
EINA_ITERATOR_FOREACH() and EINA_ACCESSOR_FOREACH() are new macros to
help us forget about nasty C details (like cast to (void **)).

Document most iterators and accessors.

All iterators now set EINA_ERROR_OUT_OF_MEMORY if it's the case.



SVN revision: 39267
2009-02-27 16:32:22 +00:00
Gustavo Sverzut Barbieri aff2f5ebcf Add reverse iterator macros for eina list.
SVN revision: 39218
2009-02-25 20:19:32 +00:00
Gustavo Sverzut Barbieri 27f001875b Fix EINA_INLIST_GET() macro.
now EINA_INLIST_GET(bla)->next will work, before it was like

 &bla->__in_list->next

which is wrong, since __in_list is not a pointer, rather the memory itself.



SVN revision: 39210
2009-02-25 16:24:00 +00:00
Cedric BAIL b496774e9e * eina/src/include/eina_list.h: Add a macro for freeing each element of an Eina_List.
SVN revision: 39109
2009-02-20 16:44:26 +00:00
Vincent Torri cda565a38e * more doc in the tutorial of the array data type
* minor formatting


SVN revision: 38853
2009-01-29 23:16:23 +00:00
Vincent Torri 8cb92a2ca4 force the files that are in the _DATA primary to be
distributed in the tarball


SVN revision: 38832
2009-01-28 18:00:20 +00:00
Vincent Torri c02331ab22 formatting
SVN revision: 38815
2009-01-27 16:59:06 +00:00
Vincent Torri e9908d6e42 * formatting: new lines are good for reading code
* remove comma after EINA_MAGIC (compilation with Visual Studio)


SVN revision: 38814
2009-01-27 16:44:45 +00:00
Jorge Luis Zapata Muga 75299a9fa3 + Add eina_cpu subsystem: just query cpu simd operations for now.
+ Add eina_tiler subsystem: initially abstraction and import of gustavo's splitter code.

SVN revision: 38793
2009-01-26 16:27:00 +00:00
Jorge Luis Zapata Muga 40d9cab09a + Fix some english typos
+ Fix some macros that need an expression and there are no attributes support, just pass the expression as is

SVN revision: 38792
2009-01-26 16:23:07 +00:00
Cedric BAIL 1caa0562ad Add new set of usefull fonctions for eina list.
SVN revision: 38791
2009-01-26 14:46:02 +00:00
Vincent Torri da4cbd5c95 put eina_init() and eina_shutdown() in their own header file
SVN revision: 38738
2009-01-23 14:46:56 +00:00
Cedric BAIL f0096a167c * eina/src/include/eina_private.h: better use do {} while(0);
* eina/src/lib/eina_array.c: Use gcc attribute to shutdown llvm warning.


SVN revision: 38666
2009-01-20 16:47:19 +00:00
Cedric BAIL 0dda30daf6 * eina/src/include/eina_array.h,
* eina/src/include/eina_f16p16.h,
	* eina/src/include/eina_accessor.h,
	* eina/src/include/eina_list.h,
	* eina/src/include/eina_iterator.h,
	* eina/src/lib/eina_rectangle.c,
	* eina/src/lib/eina_list.c,
	* eina/src/lib/eina_array.c,
	* eina/src/lib/eina_hash.c,
	* eina/src/lib/eina_module.c,
	* eina/src/lib/eina_stringshare.c,
	* eina/src/lib/eina_benchmark.c: Fix for windows compilation.



SVN revision: 38663
2009-01-20 15:56:48 +00:00
Cedric BAIL 8a380803a7 * eina/src/include/eina_private.h,
* eina/src/lib/eina_array.c: Remove potential error detected by llvm in eina_array.


SVN revision: 38662
2009-01-20 15:44:52 +00:00
handyande c2bab4e388 Make eina compile on OSX
SVN revision: 38382
2008-12-31 11:51:37 +00:00
Gustavo Sverzut Barbieri ab95d9183d eina safety checks.
safety checks will report null pointers and other error conditions on
public api's and can be disabled by compile time check.

note that in order to have these checks working we need to make
EINA_ARG_NONNULL() void, otherwise GCC can remove these checks since
they're known to be false.

This commit also make two minor changes:

  * list and hash accessors and iterators are created even for empty
    entities. This is correct in my point of view since NULL should
    indicate error. Having these in were an optimziation, but not
    worth it, these are not the most common case and hitting this path
    is not of much cost.

 * unmarked some parameters as nonnull, mainly on list and inlist.



SVN revision: 38327
2008-12-26 18:31:14 +00:00
Gustavo Sverzut Barbieri b0ee5696a6 eina gets lots of gcc attributes to its api.
this should help with optimizations and code correctness, please see
"info gcc" for detailed explanation on these.

if you experience some functions not working as expected, please
double check if they're not marked with EINA_PURE or EINA_CONST, maybe
I misused them. Remove the macro and try again.

brief explanation:

 * EINA_WARN_UNUSED_RESULT: if you forgot to use the return of some
   function, it will emit a warning (and -Werror will make it an
   error). This way it will be harder to miss the attribution
   "l = eina_list_append(l, v)".

 * EINA_ARG_NONNULL(index, index...): if you give it an explicit NULL
   argument, or some tool (ie: clang) finds it could get a NULL but
   this is not accepted by API, then a warning will be emitted.  This
   will help those that still use eina_hash_add() as if it is
   evas_hash_add().

 * EINA_MALLOC: any non-NULL pointer it returns cannot alias any other
   pointer valid when function returns.

 * EINA_PURE: function have no effects other than the return and this
   return just depend on parameters and/or globals. You might call
   this function in a loop a thousand times and it will return the
   same value, thus you may move this function outside the loop and
   remove it.

 * EINA_CONST: stricter version of EINA_PURE, it will not check for
   global parameters, that is, you cannot consider pointer
   arguments. Use it for math things like "int sqrt(int)".

 * EINA_PRINTF(fmt, arg): will check format parameter specified in
   position "fmt" and passed arguments starting at position "arg", it
   will check for things like giving integers where short or strings
   were expected.

 * EINA_SCANF(fmt, arg): similar to eina_printf().

 * EINA_FORMAT(fmt): for use with things like dgettext(), it will get
   a printf-like format string and modifies it.

Please review and test it with your software, make sure you make clean
before you install the new version so it has any effect.

If you find some functions are missing EINA_WARN_UNUSED_RESULT and
EINA_ARG_NONNULL or others, please add them.



SVN revision: 38323
2008-12-26 13:17:51 +00:00
Cedric BAIL fb238897e5 Use float instead of double.
SVN revision: 38292
2008-12-23 17:23:35 +00:00
Cedric BAIL 889d40abf8 Remove PATH_MAX use.
SVN revision: 38288
2008-12-23 13:12:06 +00:00
Cedric BAIL 5383cabf2b Fix EINA_ARRAY_ITER_NEXT off by one bug. With this fix you can no longer push
NULL pointer inside an array.


SVN revision: 38232
2008-12-19 17:55:57 +00:00
Cedric BAIL 3d41b74146 Update ac_attribute macro and remove __UNUSED__ declaration from eina.
SVN revision: 38179
2008-12-17 13:03:00 +00:00
Cedric BAIL c80a55ee14 Add small bucket support.
SVN revision: 38168
2008-12-16 16:49:29 +00:00
Cedric BAIL 9b9f752379 Only allocate hash bucket when needed.
Make eina_hash_del_by_key really different from eina_hash_del.


SVN revision: 38064
2008-12-09 17:39:48 +00:00
Cedric BAIL 8ee267ec0d Remove uneeded included.
SVN revision: 38058
2008-12-09 14:30:54 +00:00
Cedric BAIL 24c1995b68 Change eina_counter_dump to return a string so it could work easily on windows.
SVN revision: 38055
2008-12-09 13:55:10 +00:00
Cedric BAIL af30207725 eina_hash_del must honor the data parameter when the key is passed. Propagate
it correctly.


SVN revision: 38054
2008-12-09 13:52:09 +00:00
Cedric BAIL 55d9c97446 __UNUSED__ macro is not exported by eina.
SVN revision: 38045
2008-12-09 11:01:12 +00:00
Cedric BAIL 5358b1f84f Add integer and pointer hash table helper.
SVN revision: 38026
2008-12-08 17:31:55 +00:00
Cedric BAIL c7b0e0a6b3 Fix include related to previous Eina Magic patch.
SVN revision: 38017
2008-12-08 10:51:51 +00:00
Cedric BAIL 199f900908 Application and library using Eina Magic API should be able to decide if they
want to check magic or not. This should not be forced by Eina config.


SVN revision: 38014
2008-12-08 10:18:05 +00:00
Gustavo Sverzut Barbieri 8ea28f64b7 hash: better handling of NULL, add magic checking.
* evas: if we automatically destroy hash, check for NULL before
   handling it to eina api, which expect elements to be created with
   eina_hash_new() and thus will fail on NULL.
 * eina: add magic checking for eina_hash and eina_hash_iterator, this will
   help spot when NULL is used.
 * eina_hash_foreach: do not try to create the iterator if hash is NULL.



SVN revision: 37982
2008-12-07 13:28:29 +00:00
Gustavo Sverzut Barbieri b21c687f61 refactor eina_hash_del*, expose simpler functions and avoid GCC hack.
By using simpler functions for hash element deletion we can avoid the
hack to shut up GCC warking about hash_num not being used. As these
simple functions are more often needed than the catch-all, expose them
as well.



SVN revision: 37962
2008-12-06 06:58:56 +00:00
Gustavo Sverzut Barbieri 09924b54e5 Let valgrind help with EINA_MAGIC.
Keep EINA_MAGIC at the end of the structure (WHEN POSSIBLE! Watch out
flexible arrays like char str[] at the end!)

this way if parts use EINA_MAGIC and others do not, it will possible overflow and valgrind can help us.

WARNING: make uninstall before update! Then make clean and make install, check if everything is working with "make check".



SVN revision: 37961
2008-12-06 06:53:14 +00:00
Gustavo Sverzut Barbieri 5939d76d9c Fix couple of issues with MAGIC handling.
eina_magic.h MUST include eina_config.h, otherwise it will not
consider EINA_MAGIC stuff. Worse than that, some files were including
that directly and were considering EINA_MAGIC attribute even if the
file that alloc'ed the memory were not!

Also add missing EINA_MAGIC_SET() to iterators and accessors.



SVN revision: 37960
2008-12-06 06:17:11 +00:00
Gustavo Sverzut Barbieri 08832b519b grow array only when required, use step properly.
We need to grow when we reach total amount, not when current + step > total.



SVN revision: 37959
2008-12-06 06:13:55 +00:00
Gustavo Sverzut Barbieri 6203f4b6be do not segv on NULL inlist.
this was exposed by "make check", counter had no tests and it was failing.



SVN revision: 37957
2008-12-06 06:11:39 +00:00
Gustavo Sverzut Barbieri a00eaac6a6 Make it possible to create iterators outside Eina.
Many places in EFL we just create walk something, create a list with
walked data, return, then the user walks it again and then deletes
(which will walk again). For such cases it's way better to define
iterators or accessors.

I'm not moving any EFL code to it now, but if people are interested,
things like evas_render_method_list(), evas_font_available_list(),
evas_objects_at_xy_get(), evas_objects_in_rectangle_get(),
evas_object_smart_members_get() are good candidates. If the subject is
already using Eina list, then you can just use
eina_list_iterator_new() and return it, otherwise you can define your
own iterator, which is very easy.



SVN revision: 37956
2008-12-06 03:41:03 +00:00
Gustavo Sverzut Barbieri f8868ffa96 Fix namespace: Eina_Foreach -> Eina_Hash_Foreach.
SVN revision: 37950
2008-12-06 02:21:17 +00:00
Gustavo Sverzut Barbieri 03fca99e56 Add safe Eina list walk function.
SVN revision: 37949
2008-12-06 02:13:01 +00:00
Chidambar Zinnoury 5c2c6049f1 Use includedir instead of prefix/include to install Eina headers.
SVN revision: 37925
2008-12-04 16:25:40 +00:00
Cedric BAIL 5257321d9a Fix some constness.
SVN revision: 37576
2008-11-10 16:23:56 +00:00
Cedric BAIL e8ed3963c8 Add eina_array_data_set.
SVN revision: 37475
2008-11-05 17:16:07 +00:00
Cedric BAIL e63dde947d Fix documentation.
SVN revision: 37474
2008-11-05 16:20:37 +00:00
Gustavo Sverzut Barbieri 9e80a086f6 Add and use eina_stringshare_ref().
This is a faster "add", if we know we're using a shared string we know
the node without any need to search it, just increment reference and
exit.



SVN revision: 37458
2008-11-04 16:25:12 +00:00
Vincent Torri c8e2f1f51f small doc fix
SVN revision: 37407
2008-11-02 09:41:14 +00:00
Cedric BAIL 437c220266 Add dladdr and env code for eina_module from Vincent Torri.
SVN revision: 37374
2008-11-01 15:39:53 +00:00
Gustavo Sverzut Barbieri 72ae858dac fix _GET macros.
SVN revision: 37276
2008-10-28 16:37:32 +00:00
Cedric BAIL e243e4408a Make Eina_Rectangle_Pool more usable.
SVN revision: 37275
2008-10-28 15:28:46 +00:00
Gustavo Sverzut Barbieri 24ee564949 Cheap way to get strlen of a shared string.
it's not safe, but it's faster and can help for large strings, maximum
cost is 4 comparisons plus one pointer access.



SVN revision: 37257
2008-10-28 00:31:09 +00:00
Cedric BAIL 72e45419ec Add Eina_Rectangle_Pool support. Typically help for font handling in OpenGL or
any case where you need to split a rectangle in many differents small rectangle.


SVN revision: 37252
2008-10-27 20:24:12 +00:00
Carsten Haitzler 089b8ac181 add a stringshare dumper so we can examine what's in there and improve usage.
SVN revision: 37186
2008-10-27 00:36:22 +00:00
Carsten Haitzler 7d0d0aaf7f handle some bizarre build issues...
SVN revision: 37048
2008-10-24 10:57:00 +00:00
Sebastian Dransfeld a8c2834987 modules most export init and shutdown as EAPI
SVN revision: 37042
2008-10-24 06:24:08 +00:00
Cedric BAIL b114ef85de Really return Eina_Bool.
SVN revision: 37022
2008-10-23 12:50:33 +00:00
Cedric BAIL 4bb02bdf37 Add more error information during eina module load.
SVN revision: 36955
2008-10-22 08:56:19 +00:00
Gustavo Sverzut Barbieri 93a280b7d7 eina_bool is now an unsigned char.
This makes clear what size and if we have a signal or not in our type,
so no compilers have the right to choose different for us (like they
do with enum).

Also fixes compile of C++ programs with eina_rectangle.h, that
contains some inline code, the expression evaluates a boolean
expression and compiler does not know how to convert that to old
Eina_Bool.



SVN revision: 36939
2008-10-21 15:21:37 +00:00
Cedric BAIL 430fb672cd Rename EINA_LIST_ITER_NEXT to EINA_LIST_FOREACH.
SVN revision: 36930
2008-10-21 12:49:29 +00:00
Cedric BAIL 68d377afe6 Rename EINA_INLIST_ITER_NEXT/EINA_INLIST_ITER_LAST to EINA_INLIST_FOREACH/
EINA_INLIST_REVERSE_FOREACH so it best match is behaviour. Asked by Gustavo.



SVN revision: 36928
2008-10-21 12:19:57 +00:00
Cedric BAIL 1950725606 Add merge function to list data type.
SVN revision: 36922
2008-10-21 11:28:38 +00:00
Cedric BAIL c9779e876f Actually include eina_convert in the main header.
SVN revision: 36860
2008-10-20 15:01:01 +00:00
Cedric BAIL a52cc857fa Put the mempool backend structure with other structure.
SVN revision: 36855
2008-10-20 13:23:18 +00:00
Carsten Haitzler 31727e370d actually compile!
SVN revision: 36849
2008-10-20 12:08:16 +00:00
Cedric BAIL 4953eb74fe Apps can now provide their own mempool.
SVN revision: 36847
2008-10-20 11:40:01 +00:00
Cedric BAIL a61ba1c35a Fix some warning.
SVN revision: 36563
2008-10-10 09:33:40 +00:00
Cedric BAIL 5cddd1f760 Remove dead code.
SVN revision: 36493
2008-10-07 11:07:03 +00:00
Cedric BAIL 195b2da188 Give more choice to eina_list mempool.
SVN revision: 36479
2008-10-06 14:47:09 +00:00
Cedric BAIL 36b46ca065 Remove dead declaration.
SVN revision: 36399
2008-10-02 16:23:27 +00:00
Cedric BAIL 439401682d Reduce code size, and improve sort speed.
SVN revision: 36382
2008-10-01 16:30:30 +00:00
Cedric BAIL 7c47066009 Change module API to use Eina_Array as we want to use mempool and module for Eina_List.
Fix at the same time a closing bug in eina_module.c.



SVN revision: 36312
2008-09-29 13:28:42 +00:00
Vincent Torri 79375f9123 * fix clean and dist rules
* create eina-$(maj_version).pc.in file automatically


SVN revision: 36292
2008-09-28 12:43:21 +00:00