| Eina.h | | Eina.h | |
| | | | |
| skipping to change at line 49 | | skipping to change at line 49 | |
| /** | | /** | |
| * @file | | * @file | |
| * @brief Eina Utility library | | * @brief Eina Utility library | |
| * | | * | |
| * These routines are used for Eina. | | * These routines are used for Eina. | |
| */ | | */ | |
| | | | |
| /** | | /** | |
| * @mainpage Eina | | * @mainpage Eina | |
| * | | * | |
|
| * @version 1.1 | | * @version 1.7 | |
| * @date 2008-2012 | | * @date 2008-2012 | |
| * | | * | |
| * @section eina_intro_sec Introduction | | * @section eina_intro_sec Introduction | |
| * | | * | |
| * The Eina library is a library that implements an API for data types | | * The Eina library is a library that implements an API for data types | |
| * in an efficient way. It also provides some useful tools like | | * in an efficient way. It also provides some useful tools like | |
| * opening shared libraries, errors management, type conversion, | | * opening shared libraries, errors management, type conversion, | |
| * time accounting and memory pool. | | * time accounting and memory pool. | |
| * | | * | |
| * This library is cross-platform and can be compiled and used on | | * This library is cross-platform and can be compiled and used on | |
| | | | |
| skipping to change at line 103 | | skipping to change at line 103 | |
| * | | * | |
| * Please see the @ref authors page for contact details. | | * Please see the @ref authors page for contact details. | |
| * | | * | |
| * @defgroup Eina_Data_Types_Group Data Types | | * @defgroup Eina_Data_Types_Group Data Types | |
| * | | * | |
| * Eina provide easy to use and optimized data types and structures. | | * Eina provide easy to use and optimized data types and structures. | |
| * | | * | |
| * | | * | |
| * @defgroup Eina_Containers_Group Containers | | * @defgroup Eina_Containers_Group Containers | |
| * | | * | |
|
| | | * @section Intro Introduction | |
| * Containers are data types that hold data and allow iteration over | | * Containers are data types that hold data and allow iteration over | |
| * their elements with an @ref Eina_Iterator_Group, or eventually an | | * their elements with an @ref Eina_Iterator_Group, or eventually an | |
| * @ref Eina_Accessor_Group. | | * @ref Eina_Accessor_Group. | |
| * | | * | |
| * The containers in eina are designed with performance in mind, one conseq
uence | | * The containers in eina are designed with performance in mind, one conseq
uence | |
| * of this is that they @b don't check the validity of data structures give
n to | | * of this is that they @b don't check the validity of data structures give
n to | |
| * them(@ref Eina_Magic_Group). | | * them(@ref Eina_Magic_Group). | |
| * | | * | |
|
| | | * @section Choice Choosing container type | |
| | | * | |
| * The choice of which container to use in each situation is very important
in | | * The choice of which container to use in each situation is very important
in | |
| * achieving good performance and readable code. The most common container
types | | * achieving good performance and readable code. The most common container
types | |
| * to be used are: | | * to be used are: | |
| * @li List | | * @li List | |
| * @li Inline list | | * @li Inline list | |
| * @li Array | | * @li Array | |
| * @li Inline array | | * @li Inline array | |
| * @li Hash | | * @li Hash | |
| * | | * | |
| * All types have virtues and vices. The following considerations are good | | * All types have virtues and vices. The following considerations are good | |
| | | | |
| skipping to change at line 133 | | skipping to change at line 136 | |
| * @li arrays are good when accessing members by position; | | * @li arrays are good when accessing members by position; | |
| * @li lists provide good versatility for adding elements in any position w
ith | | * @li lists provide good versatility for adding elements in any position w
ith | |
| * minimal overhead; | | * minimal overhead; | |
| * @li inline arrays use very little memory and don't cause fragmentation a
nd | | * @li inline arrays use very little memory and don't cause fragmentation a
nd | |
| * therefore are a good option in memory constrained systems; | | * therefore are a good option in memory constrained systems; | |
| * @li inline lists are the appropriate type to use when the flexibility of
a | | * @li inline lists are the appropriate type to use when the flexibility of
a | |
| * list is required but the overhead of pointer indirection is not acceptab
le. | | * list is required but the overhead of pointer indirection is not acceptab
le. | |
| * @warning These are general considerations, every situation is different, | | * @warning These are general considerations, every situation is different, | |
| * don't follow these recommendations blindly. | | * don't follow these recommendations blindly. | |
| * | | * | |
|
| | | * @section Creation Creating custom container types | |
| | | * | |
| | | * @note Before creating a custom container check if one of the existing on | |
| | | es | |
| | | * doesn't suit your needs. For example, while there is no stack type @ref | |
| | | * Eina_Array_Group is a very good substitute, similarly there is no queue | |
| | | type | |
| | | * however an @ref Eina_List_Group works very well as a queue. | |
| | | * | |
| | | * If creating a custom container type consider allowing access to the data | |
| | | in | |
| | | * your container through @ref Eina_Iterator_Group "Iterators" and @ref | |
| | | * Eina_Accessor_Group "Accessors". To do so your container should have an | |
| | | * iterator creation function and an accessor creation function, these func | |
| | | tions | |
| | | * should return properly populated @ref _Eina_Iterator and @ref _Eina_Acce | |
| | | ssor. | |
| | | * | |
| * @defgroup Eina_Tools_Group Tools | | * @defgroup Eina_Tools_Group Tools | |
| * | | * | |
| * Eina tools aims to help application development, providing ways to | | * Eina tools aims to help application development, providing ways to | |
| * make it safer, log errors, manage memory more efficiently and more. | | * make it safer, log errors, manage memory more efficiently and more. | |
| * | | * | |
| */ | | */ | |
| | | | |
| /** | | /** | |
| * | | * | |
| * @page authors Authors | | * @page authors Authors | |
| | | | |
End of changes. 4 change blocks. |
| 1 lines changed or deleted | | 22 lines changed or added | |
|
| eina_accessor.h | | eina_accessor.h | |
| | | | |
| skipping to change at line 89 | | skipping to change at line 89 | |
| * @addtogroup Eina_Accessor_Group Accessor Functions | | * @addtogroup Eina_Accessor_Group Accessor Functions | |
| * | | * | |
| * @brief These functions manage accessor on containers. | | * @brief These functions manage accessor on containers. | |
| * | | * | |
| * These functions allow to access elements of a container in a | | * These functions allow to access elements of a container in a | |
| * generic way, without knowing which container is used (a bit like | | * generic way, without knowing which container is used (a bit like | |
| * iterators in the C++ STL). Accessors allows random access (that is, any | | * iterators in the C++ STL). Accessors allows random access (that is, any | |
| * element in the container). For sequential access, see | | * element in the container). For sequential access, see | |
| * @ref Eina_Iterator_Group. | | * @ref Eina_Iterator_Group. | |
| * | | * | |
|
| * An accessor is created from container data types, so no creation | | * Getting an accessor to access elements of a given container is done thro | |
| * function is available here. An accessor is deleted with | | ugh | |
| * eina_accessor_free(). To get the data of an element at a given | | * the functions of that particular container. There is no function to crea | |
| | | te | |
| | | * a generic accessor as accessors absolutely depend on the container. This | |
| | | * means you won't find accessor creation function here, those can be found | |
| | | on | |
| | | * the documentation of the container type you're using. Though created wit | |
| | | h | |
| | | * container specific functions accessors are always deleted with the same | |
| | | * function: eina_accessor_free(). | |
| | | * | |
| | | * To get the data of an element at a given | |
| * position, use eina_accessor_data_get(). To call a function on | | * position, use eina_accessor_data_get(). To call a function on | |
| * chosen elements of a container, use eina_accessor_over(). | | * chosen elements of a container, use eina_accessor_over(). | |
| * | | * | |
| * See an example @ref eina_accessor_example_01_page "here". | | * See an example @ref eina_accessor_example_01_page "here". | |
| */ | | */ | |
| | | | |
| /** | | /** | |
| * @addtogroup Eina_Content_Access_Group Content Access | | * @addtogroup Eina_Content_Access_Group Content Access | |
| * | | * | |
| * @{ | | * @{ | |
| | | | |
| skipping to change at line 145 | | skipping to change at line 151 | |
| | | | |
| /** | | /** | |
| * @typedef Eina_Accessor_Lock_Callback | | * @typedef Eina_Accessor_Lock_Callback | |
| * Type for a callback that lock the container. | | * Type for a callback that lock the container. | |
| */ | | */ | |
| typedef Eina_Bool (*Eina_Accessor_Lock_Callback)(Eina_Accessor *it); | | typedef Eina_Bool (*Eina_Accessor_Lock_Callback)(Eina_Accessor *it); | |
| | | | |
| /** | | /** | |
| * @struct _Eina_Accessor | | * @struct _Eina_Accessor | |
| * Type to provide random access to data structures. | | * Type to provide random access to data structures. | |
|
| | | * | |
| | | * If creating an accessor remember to set the type using @ref EINA_MAGIC_S | |
| | | ET. | |
| */ | | */ | |
| struct _Eina_Accessor | | struct _Eina_Accessor | |
| { | | { | |
| #define EINA_ACCESSOR_VERSION 1 | | #define EINA_ACCESSOR_VERSION 1 | |
| int version; /**< Version of the Access
or API. */ | | int version; /**< Version of the Access
or API. */ | |
| | | | |
| Eina_Accessor_Get_At_Callback get_at EINA_ARG_NONNULL(1, 3
) EINA_WARN_UNUSED_RESULT; /**< Callback called when a data element is requ
ested. */ | | Eina_Accessor_Get_At_Callback get_at EINA_ARG_NONNULL(1, 3
) EINA_WARN_UNUSED_RESULT; /**< Callback called when a data element is requ
ested. */ | |
| Eina_Accessor_Get_Container_Callback get_container EINA_ARG_NONNULL(1) E
INA_WARN_UNUSED_RESULT; /**< Callback called when the container is requeste
d. */ | | Eina_Accessor_Get_Container_Callback get_container EINA_ARG_NONNULL(1) E
INA_WARN_UNUSED_RESULT; /**< Callback called when the container is requeste
d. */ | |
| Eina_Accessor_Free_Callback free EINA_ARG_NONNULL(1);
/**< Callback called when the container is freed. */ | | Eina_Accessor_Free_Callback free EINA_ARG_NONNULL(1);
/**< Callback called when the container is freed. */ | |
| | | | |
| | | | |
| skipping to change at line 193 | | skipping to change at line 201 | |
| */ | | */ | |
| #define FUNC_ACCESSOR_LOCK(Function) ((Eina_Accessor_Lock_Callback
)Function) | | #define FUNC_ACCESSOR_LOCK(Function) ((Eina_Accessor_Lock_Callback
)Function) | |
| | | | |
| /** | | /** | |
| * @brief Free an accessor. | | * @brief Free an accessor. | |
| * | | * | |
| * @param accessor The accessor to free. | | * @param accessor The accessor to free. | |
| * | | * | |
| * This function frees @p accessor if it is not @c NULL; | | * This function frees @p accessor if it is not @c NULL; | |
| */ | | */ | |
|
| EAPI void eina_accessor_free(Eina_Accessor *accessor) EINA_ARG_NONNULL
(1); | | EAPI void eina_accessor_free(Eina_Accessor *accessor); | |
| | | | |
| /** | | /** | |
| * @brief Retrieve the data of an accessor at a given position. | | * @brief Retrieve the data of an accessor at a given position. | |
| * | | * | |
| * @param accessor The accessor. | | * @param accessor The accessor. | |
| * @param position The position of the element. | | * @param position The position of the element. | |
| * @param data The pointer that stores the data to retrieve. | | * @param data The pointer that stores the data to retrieve. | |
| * @return #EINA_TRUE on success, #EINA_FALSE otherwise. | | * @return #EINA_TRUE on success, #EINA_FALSE otherwise. | |
| * | | * | |
| * This function retrieves the data of the element pointed by | | * This function retrieves the data of the element pointed by | |
| | | | |
| skipping to change at line 243 | | skipping to change at line 251 | |
| * starting from the element at position @p start and ending to the | | * starting from the element at position @p start and ending to the | |
| * element at position @p end. For Each element, the callback | | * element at position @p end. For Each element, the callback | |
| * @p cb is called with the data @p fdata. If @p accessor is @c NULL | | * @p cb is called with the data @p fdata. If @p accessor is @c NULL | |
| * or if @p start is greter or equal than @p end, the function returns | | * or if @p start is greter or equal than @p end, the function returns | |
| * immediately. | | * immediately. | |
| */ | | */ | |
| EAPI void eina_accessor_over(Eina_Accessor *accessor, | | EAPI void eina_accessor_over(Eina_Accessor *accessor, | |
| Eina_Each_Cb cb, | | Eina_Each_Cb cb, | |
| unsigned int start, | | unsigned int start, | |
| unsigned int end, | | unsigned int end, | |
|
| const void *fdata) EINA_ARG_NONNULL(1, 2); | | const void *fdata) EINA_ARG_NONNULL(2); | |
| | | | |
| /** | | /** | |
| * @brief Lock the container of the accessor. | | * @brief Lock the container of the accessor. | |
| * | | * | |
| * @param accessor The accessor. | | * @param accessor The accessor. | |
| * @return #EINA_TRUE on success, #EINA_FALSE otherwise. | | * @return #EINA_TRUE on success, #EINA_FALSE otherwise. | |
| * | | * | |
| * If the container of the @p accessor permits it, it will be locked. When
a | | * If the container of the @p accessor permits it, it will be locked. When
a | |
| * container is locked calling eina_accessor_over() on it will return | | * container is locked calling eina_accessor_over() on it will return | |
| * immediately. If @p accessor is @c NULL or if a problem occurred, #EINA_F
ALSE | | * immediately. If @p accessor is @c NULL or if a problem occurred, #EINA_F
ALSE | |
| | | | |
| skipping to change at line 322 | | skipping to change at line 330 | |
| * to use iterators to iterate over, as they're likely to be more | | * to use iterators to iterate over, as they're likely to be more | |
| * optimized for such task. | | * optimized for such task. | |
| * | | * | |
| * @note this example is not optimal algorithm to release a list since | | * @note this example is not optimal algorithm to release a list since | |
| * it will walk the list twice, but it serves as an example. For | | * it will walk the list twice, but it serves as an example. For | |
| * optimized version use EINA_LIST_FREE() | | * optimized version use EINA_LIST_FREE() | |
| * | | * | |
| * @warning unless explicitly stated in functions returning accessors, | | * @warning unless explicitly stated in functions returning accessors, | |
| * do not modify the accessed object while you walk it, in this | | * do not modify the accessed object while you walk it, in this | |
| * example using lists, do not remove list nodes or you might | | * example using lists, do not remove list nodes or you might | |
|
| * crash! This is not a limitiation of accessors themselves, | | * crash! This is not a limitation of accessors themselves, | |
| * rather in the accessors implementations to keep them as simple | | * rather in the accessors implementations to keep them as simple | |
| * and fast as possible. | | * and fast as possible. | |
| */ | | */ | |
| #define EINA_ACCESSOR_FOREACH(accessor, counter, data) \ | | #define EINA_ACCESSOR_FOREACH(accessor, counter, data) \ | |
| for ((counter) = 0; \ | | for ((counter) = 0; \ | |
| eina_accessor_data_get((accessor), (counter), (void **)(void *)&(dat
a)); \ | | eina_accessor_data_get((accessor), (counter), (void **)(void *)&(dat
a)); \ | |
| (counter)++) | | (counter)++) | |
| | | | |
| /** | | /** | |
| * @} | | * @} | |
| | | | |
End of changes. 5 change blocks. |
| 6 lines changed or deleted | | 19 lines changed or added | |
|
| eina_array.h | | eina_array.h | |
| | | | |
| skipping to change at line 71 | | skipping to change at line 71 | |
| * Now let us populate our array with some strings: | | * Now let us populate our array with some strings: | |
| * @until push | | * @until push | |
| * @note Notice we use strdup, so we will have to free that memory later on
. | | * @note Notice we use strdup, so we will have to free that memory later on
. | |
| * | | * | |
| * Now lets check the size of the array: | | * Now lets check the size of the array: | |
| * @until printf | | * @until printf | |
| * | | * | |
| * And now we call a function on every member of our array to print it: | | * And now we call a function on every member of our array to print it: | |
| * @until foreach | | * @until foreach | |
| * | | * | |
|
| * One of the strenghts of @ref Eina_Array over @ref Eina_List is that it h
as | | * One of the strengths of @ref Eina_Array over @ref Eina_List is that it h
as | |
| * very fast random access to elements, so this is very efficient: | | * very fast random access to elements, so this is very efficient: | |
| * @until printf | | * @until printf | |
| * | | * | |
| * And now we free up the memory allocated with the strdup()s: | | * And now we free up the memory allocated with the strdup()s: | |
| * @until free | | * @until free | |
| * | | * | |
| * And the array memory itself: | | * And the array memory itself: | |
| * @until array_free | | * @until array_free | |
| * | | * | |
| * And finally shutdown eina and exit: | | * And finally shutdown eina and exit: | |
| | | | |
| skipping to change at line 340 | | skipping to change at line 340 | |
| void *gdata) EINA_ARG_NONNULL(1, 2); | | void *gdata) EINA_ARG_NONNULL(1, 2); | |
| static inline Eina_Bool eina_array_push(Eina_Array *array, | | static inline Eina_Bool eina_array_push(Eina_Array *array, | |
| const void *data) EINA_ARG_NONNULL(
1, 2); | | const void *data) EINA_ARG_NONNULL(
1, 2); | |
| static inline void *eina_array_pop(Eina_Array *array) EINA_ARG_NONNULL(
1); | | static inline void *eina_array_pop(Eina_Array *array) EINA_ARG_NONNULL(
1); | |
| static inline void *eina_array_data_get(const Eina_Array *array, | | static inline void *eina_array_data_get(const Eina_Array *array, | |
| unsigned int idx) EINA_ARG
_NONNULL(1); | | unsigned int idx) EINA_ARG
_NONNULL(1); | |
| /** | | /** | |
| * @brief Set the data at a given position in an array. | | * @brief Set the data at a given position in an array. | |
| * | | * | |
| * @param array The array. | | * @param array The array. | |
|
| * @param idx The potition of the data to set. | | * @param idx The position of the data to set. | |
| * @param data The data to set. | | * @param data The data to set. | |
| * | | * | |
| * This function sets the data at the position @p idx in @p | | * This function sets the data at the position @p idx in @p | |
| * array to @p data, this effectively replaces the previously held data, yo
u | | * array to @p data, this effectively replaces the previously held data, yo
u | |
| * must therefore get a pointer to it first if you need to free it. For | | * must therefore get a pointer to it first if you need to free it. For | |
| * performance reasons, there is no check of @p array or @p idx. If it is @
c | | * performance reasons, there is no check of @p array or @p idx. If it is @
c | |
| * NULL or invalid, the program may crash. | | * NULL or invalid, the program may crash. | |
| */ | | */ | |
| static inline void eina_array_data_set(const Eina_Array *array, | | static inline void eina_array_data_set(const Eina_Array *array, | |
| unsigned int idx, | | unsigned int idx, | |
| | | | |
| skipping to change at line 402 | | skipping to change at line 402 | |
| * by returning #EINA_FALSE it will stop and return #EINA_FALSE as a result
. | | * by returning #EINA_FALSE it will stop and return #EINA_FALSE as a result
. | |
| */ | | */ | |
| static inline Eina_Bool eina_array_foreach(Eina_Array *array, | | static inline Eina_Bool eina_array_foreach(Eina_Array *array, | |
| Eina_Each_Cb cb, | | Eina_Each_Cb cb, | |
| void *fdata); | | void *fdata); | |
| /** | | /** | |
| * @def EINA_ARRAY_ITER_NEXT | | * @def EINA_ARRAY_ITER_NEXT | |
| * @brief Macro to iterate over an array easily. | | * @brief Macro to iterate over an array easily. | |
| * | | * | |
| * @param array The array to iterate over. | | * @param array The array to iterate over. | |
|
| * @param index The integer number that is increased while itareting. | | * @param index The integer number that is increased while iterating. | |
| * @param item The data | | * @param item The data | |
| * @param iterator The iterator | | * @param iterator The iterator | |
| * | | * | |
| * This macro allows the iteration over @p array in an easy way. It | | * This macro allows the iteration over @p array in an easy way. It | |
| * iterates from the first element to the last one. @p index is an | | * iterates from the first element to the last one. @p index is an | |
| * integer that increases from 0 to the number of elements. @p item is | | * integer that increases from 0 to the number of elements. @p item is | |
| * the data of each element of @p array, so it is a pointer to a type | | * the data of each element of @p array, so it is a pointer to a type | |
| * chosen by the user. @p iterator is of type #Eina_Array_Iterator. | | * chosen by the user. @p iterator is of type #Eina_Array_Iterator. | |
| * | | * | |
| * This macro can be used for freeing the data of an array, like in | | * This macro can be used for freeing the data of an array, like in | |
| | | | |
End of changes. 3 change blocks. |
| 3 lines changed or deleted | | 3 lines changed or added | |
|
| eina_benchmark.h | | eina_benchmark.h | |
| | | | |
| skipping to change at line 37 | | skipping to change at line 37 | |
| * The Benchmark module allows you to write easily benchmarks | | * The Benchmark module allows you to write easily benchmarks | |
| * framework in a project for timing critical part and detect slow | | * framework in a project for timing critical part and detect slow | |
| * parts of code. In addition it automatically creates data files of | | * parts of code. In addition it automatically creates data files of | |
| * these benchmark, as well as a gnuplot file which can display the | | * these benchmark, as well as a gnuplot file which can display the | |
| * comparison curves of the benchmarks. | | * comparison curves of the benchmarks. | |
| * | | * | |
| * @section tutorial_benchmark_basic_usage Basic Usage | | * @section tutorial_benchmark_basic_usage Basic Usage | |
| * | | * | |
| * To create a basic benchmark, you have to follow these steps: | | * To create a basic benchmark, you have to follow these steps: | |
| * | | * | |
|
| * @li Create a new bechmark | | * @li Create a new benchmark | |
| * @li Write the functions that wraps the the functions you want to | | * @li Write the functions that wraps the functions you want to | |
| * bechmark. | | * benchmark. | |
| * @li Register these wrappers functions. | | * @li Register these wrappers functions. | |
| * @li Run the benchmark. | | * @li Run the benchmark. | |
| * @li Free the memory. | | * @li Free the memory. | |
| * | | * | |
|
| * Here is a basic example of bechmark which creates two functions | | * Here is a basic example of benchmark which creates two functions | |
| * that will be run. These functions just print a message. | | * that will be run. These functions just print a message. | |
| * | | * | |
| * @code | | * @code | |
| * #include <stdlib.h> | | * #include <stdlib.h> | |
| * #include <stdio.h> | | * #include <stdio.h> | |
| * | | * | |
| * #include <Eina.h> | | * #include <Eina.h> | |
| * | | * | |
| * static | | * static | |
| * void work1(int request) | | * void work1(int request) | |
| | | | |
| skipping to change at line 402 | | skipping to change at line 402 | |
| * @param count_step The step data to be passed to @p bench_cb. | | * @param count_step The step data to be passed to @p bench_cb. | |
| * @return #EINA_FALSE on failure, #EINA_TRUE otherwise. | | * @return #EINA_FALSE on failure, #EINA_TRUE otherwise. | |
| * | | * | |
| * This function adds the test named @p name to @p benchmark. @p | | * This function adds the test named @p name to @p benchmark. @p | |
| * bench_cb is the function called when the test is executed. That | | * bench_cb is the function called when the test is executed. That | |
| * test can be executed a certain amount of time. @p count_start, @p count_
end and | | * test can be executed a certain amount of time. @p count_start, @p count_
end and | |
| * @p count_step define a loop with a step increment. The integer that is | | * @p count_step define a loop with a step increment. The integer that is | |
| * increasing by @p count_step from @p count_start to @p count_end is passe
d to @p | | * increasing by @p count_step from @p count_start to @p count_end is passe
d to @p | |
| * bench_cb when eina_benchmark_run() is called. | | * bench_cb when eina_benchmark_run() is called. | |
| * | | * | |
|
| * If @p bench is @c NULL, this function returns imediatly. If the | | * If @p bench is @c NULL, this function returns immediately. If the | |
| * allocation of the memory of the test to add fails, the error is set | | * allocation of the memory of the test to add fails, the error is set | |
| * to #EINA_ERROR_OUT_OF_MEMORY. This function returns #EINA_FALSE | | * to #EINA_ERROR_OUT_OF_MEMORY. This function returns #EINA_FALSE | |
| * on failure, #EINA_TRUE otherwise. | | * on failure, #EINA_TRUE otherwise. | |
| */ | | */ | |
| EAPI Eina_Bool eina_benchmark_register(Eina_Benchmark *bench
, | | EAPI Eina_Bool eina_benchmark_register(Eina_Benchmark *bench
, | |
| const char *name, | | const char *name, | |
| Eina_Benchmark_Specimens bench
_cb, | | Eina_Benchmark_Specimens bench
_cb, | |
| int count
_start, | | int count
_start, | |
| int count
_end, | | int count
_end, | |
| int count
_step); | | int count
_step); | |
| | | | |
End of changes. 3 change blocks. |
| 5 lines changed or deleted | | 5 lines changed or added | |
|
| eina_binshare.h | | eina_binshare.h | |
| | | | |
| skipping to change at line 137 | | skipping to change at line 137 | |
| /** | | /** | |
| * @brief Note that the given object has lost an instance. | | * @brief Note that the given object has lost an instance. | |
| * | | * | |
| * @param obj object The given object. | | * @param obj object The given object. | |
| * | | * | |
| * This function decreases the reference counter associated to @p obj | | * This function decreases the reference counter associated to @p obj | |
| * if it exists. If that counter reaches 0, the memory associated to | | * if it exists. If that counter reaches 0, the memory associated to | |
| * @p obj is freed. If @p obj is @c NULL, the function returns | | * @p obj is freed. If @p obj is @c NULL, the function returns | |
| * immediately. | | * immediately. | |
| * | | * | |
|
| * Note that if the given pointer is not shared or NULL, bad things | | * @note If the given pointer is not shared, bad things will happen, likely | |
| * will happen, likely a segmentation fault. | | a | |
| | | * segmentation fault. | |
| */ | | */ | |
| EAPI void eina_binshare_del(const void *obj); | | EAPI void eina_binshare_del(const void *obj); | |
| | | | |
| /** | | /** | |
| * @brief Note that the given object @b must be shared. | | * @brief Note that the given object @b must be shared. | |
| * | | * | |
| * @param obj the shared object to know the length. It is safe to | | * @param obj the shared object to know the length. It is safe to | |
| * give @c NULL, in that case @c -1 is returned. | | * give @c NULL, in that case @c -1 is returned. | |
| * @return The length of the shared object. | | * @return The length of the shared object. | |
| * | | * | |
| * This function is a cheap way to known the length of a shared | | * This function is a cheap way to known the length of a shared | |
|
| * object. Note that if the given pointer is not shared, bad | | * object. | |
| * things will happen, likely a segmentation fault. If in doubt, try | | * @note If the given pointer is not shared, bad things will happen, likely | |
| * strlen(). | | a | |
| | | * segmentation fault. If in doubt, try strlen(). | |
| */ | | */ | |
| EAPI int eina_binshare_length(const void *obj) EINA_WARN_UNUSED_RES
ULT; | | EAPI int eina_binshare_length(const void *obj) EINA_WARN_UNUSED_RES
ULT; | |
| | | | |
| /** | | /** | |
| * @brief Dump the contents of the share_common. | | * @brief Dump the contents of the share_common. | |
| * | | * | |
| * This function dumps all objects in the share_common to stdout with a | | * This function dumps all objects in the share_common to stdout with a | |
| * DDD: prefix per line and a memory usage summary. | | * DDD: prefix per line and a memory usage summary. | |
| */ | | */ | |
| EAPI void eina_binshare_dump(void); | | EAPI void eina_binshare_dump(void); | |
| | | | |
End of changes. 2 change blocks. |
| 5 lines changed or deleted | | 7 lines changed or added | |
|
| eina_file.h | | eina_file.h | |
| | | | |
| skipping to change at line 101 | | skipping to change at line 101 | |
| typedef struct _Eina_File_Direct_Info Eina_File_Direct_Info; | | typedef struct _Eina_File_Direct_Info Eina_File_Direct_Info; | |
| | | | |
| /** | | /** | |
| * @typedef Eina_Stat | | * @typedef Eina_Stat | |
| * A typedef to #_Eina_Stat. | | * A typedef to #_Eina_Stat. | |
| * @since 1.2 | | * @since 1.2 | |
| */ | | */ | |
| typedef struct _Eina_Stat Eina_Stat; | | typedef struct _Eina_Stat Eina_Stat; | |
| | | | |
| /** | | /** | |
|
| | | * @typedef Eina_File_Lines | |
| | | * A typedef to #_Eina_File_Lines. | |
| | | */ | |
| | | typedef struct _Eina_File_Line Eina_File_Line; | |
| | | | |
| | | /** | |
| * @typedef Eina_File_Dir_List_Cb | | * @typedef Eina_File_Dir_List_Cb | |
| * Type for a callback to be called when iterating over the files of a | | * Type for a callback to be called when iterating over the files of a | |
| * directory. | | * directory. | |
| * @param The file name EXCLUDING the path | | * @param The file name EXCLUDING the path | |
| * @param path The path passed to eina_file_dir_list() | | * @param path The path passed to eina_file_dir_list() | |
| * @param data The data passed to eina_file_dir_list() | | * @param data The data passed to eina_file_dir_list() | |
| */ | | */ | |
| typedef void (*Eina_File_Dir_List_Cb)(const char *name, const char *path, v
oid *data); | | typedef void (*Eina_File_Dir_List_Cb)(const char *name, const char *path, v
oid *data); | |
| | | | |
| /** | | /** | |
| | | | |
| skipping to change at line 191 | | skipping to change at line 197 | |
| unsigned long int blocks; | | unsigned long int blocks; | |
| unsigned long int atime; | | unsigned long int atime; | |
| unsigned long int atimensec; | | unsigned long int atimensec; | |
| unsigned long int mtime; | | unsigned long int mtime; | |
| unsigned long int mtimensec; | | unsigned long int mtimensec; | |
| unsigned long int ctime; | | unsigned long int ctime; | |
| unsigned long int ctimensec; | | unsigned long int ctimensec; | |
| }; | | }; | |
| | | | |
| /** | | /** | |
|
| | | * @struct _Eina_File_Line | |
| | | * A structure to store information of line | |
| | | * @since 1.3 | |
| | | */ | |
| | | struct _Eina_File_Line | |
| | | { | |
| | | const char *start; | |
| | | const char *end; | |
| | | unsigned int index; | |
| | | unsigned long long length; | |
| | | }; | |
| | | | |
| | | /** | |
| * @def EINA_FILE_DIR_LIST_CB | | * @def EINA_FILE_DIR_LIST_CB | |
| * @brief cast to an #Eina_File_Dir_List_Cb. | | * @brief cast to an #Eina_File_Dir_List_Cb. | |
| * | | * | |
| * @param function The function to cast. | | * @param function The function to cast. | |
| * | | * | |
| * This macro casts @p function to Eina_File_Dir_List_Cb. | | * This macro casts @p function to Eina_File_Dir_List_Cb. | |
| */ | | */ | |
| #define EINA_FILE_DIR_LIST_CB(function) ((Eina_File_Dir_List_Cb)function) | | #define EINA_FILE_DIR_LIST_CB(function) ((Eina_File_Dir_List_Cb)function) | |
| | | | |
| /** | | /** | |
| | | | |
| skipping to change at line 472 | | skipping to change at line 491 | |
| * @brief Unref and unmap memory if possible. | | * @brief Unref and unmap memory if possible. | |
| * | | * | |
| * @param file The file handler to unmap memory from. | | * @param file The file handler to unmap memory from. | |
| * @param map Memory map to unref and unmap. | | * @param map Memory map to unref and unmap. | |
| * | | * | |
| * @since 1.1 | | * @since 1.1 | |
| */ | | */ | |
| EAPI void eina_file_map_free(Eina_File *file, void *map); | | EAPI void eina_file_map_free(Eina_File *file, void *map); | |
| | | | |
| /** | | /** | |
|
| | | * @brief Map line by line in memory efficiently with an Eina_Iterator | |
| | | * @param file The file to run over | |
| | | * @return an Eina_Iterator that will produce @typedef Eina_File_Lines. | |
| | | * | |
| | | * This function return an iterator that will act like fgets without the | |
| | | * useless memcpy. Be aware that once eina_iterator_next has been called, | |
| | | * nothing garanty you that the memory will still be mapped. | |
| | | * | |
| | | * @since 1.3 | |
| | | */ | |
| | | EAPI Eina_Iterator *eina_file_map_lines(Eina_File *file); | |
| | | | |
| | | /** | |
| * @brief Tell if their was an IO error during the life of a mmaped file | | * @brief Tell if their was an IO error during the life of a mmaped file | |
| * | | * | |
| * @param file The file handler to the mmaped file. | | * @param file The file handler to the mmaped file. | |
| * @param map Memory map to check if an error occurred on it. | | * @param map Memory map to check if an error occurred on it. | |
| * @return #EINA_TRUE if there was an IO error, #EINA_FALSE otherwise. | | * @return #EINA_TRUE if there was an IO error, #EINA_FALSE otherwise. | |
| * | | * | |
| * @since 1.2 | | * @since 1.2 | |
| */ | | */ | |
| EAPI Eina_Bool eina_file_map_faulted(Eina_File *file, void *map); | | EAPI Eina_Bool eina_file_map_faulted(Eina_File *file, void *map); | |
| | | | |
| | | | |
End of changes. 3 change blocks. |
| 0 lines changed or deleted | | 32 lines changed or added | |
|
| eina_hash.h | | eina_hash.h | |
| | | | |
| skipping to change at line 301 | | skipping to change at line 301 | |
| struct _Eina_Hash_Tuple | | struct _Eina_Hash_Tuple | |
| { | | { | |
| const void *key; /**< The key */ | | const void *key; /**< The key */ | |
| void *data; /**< The data associated to the key */ | | void *data; /**< The data associated to the key */ | |
| unsigned int key_length; /**< The length of the key */ | | unsigned int key_length; /**< The length of the key */ | |
| }; | | }; | |
| | | | |
| typedef unsigned int (*Eina_Key_Length)(const void *key); | | typedef unsigned int (*Eina_Key_Length)(const void *key); | |
| /** | | /** | |
| * @def EINA_KEY_LENGTH | | * @def EINA_KEY_LENGTH | |
|
| * @param Function The function used to hash calculation. | | * @param Function The function used to calculate length of hash key. | |
| */ | | */ | |
| #define EINA_KEY_LENGTH(Function) ((Eina_Key_Length)Function) | | #define EINA_KEY_LENGTH(Function) ((Eina_Key_Length)Function) | |
| typedef int (*Eina_Key_Cmp)(const void *key1, int key1_length, con
st void *key2, int key2_length); | | typedef int (*Eina_Key_Cmp)(const void *key1, int key1_length, con
st void *key2, int key2_length); | |
| /** | | /** | |
| * @def EINA_KEY_CMP | | * @def EINA_KEY_CMP | |
|
| * @param Function The function used to hash calculation. | | * @param Function The function used to compare hash key. | |
| */ | | */ | |
| #define EINA_KEY_CMP(Function) ((Eina_Key_Cmp)Function) | | #define EINA_KEY_CMP(Function) ((Eina_Key_Cmp)Function) | |
| typedef int (*Eina_Key_Hash)(const void *key, int key_length); | | typedef int (*Eina_Key_Hash)(const void *key, int key_length); | |
| /** | | /** | |
| * @def EINA_KEY_HASH | | * @def EINA_KEY_HASH | |
|
| * @param Function The function used to hash calculation. | | * @param Function The function used to hash key. | |
| */ | | */ | |
| #define EINA_KEY_HASH(Function) ((Eina_Key_Hash)Function) | | #define EINA_KEY_HASH(Function) ((Eina_Key_Hash)Function) | |
| typedef Eina_Bool (*Eina_Hash_Foreach)(const Eina_Hash *hash, const void
*key, void *data, void *fdata); | | typedef Eina_Bool (*Eina_Hash_Foreach)(const Eina_Hash *hash, const void
*key, void *data, void *fdata); | |
| | | | |
| /** | | /** | |
| * @brief Create a new hash table. | | * @brief Create a new hash table. | |
| * | | * | |
| * @param key_length_cb The function called when getting the size of the ke
y. | | * @param key_length_cb The function called when getting the size of the ke
y. | |
| * @param key_cmp_cb The function called when comparing the keys. | | * @param key_cmp_cb The function called when comparing the keys. | |
| * @param key_hash_cb The function called when getting the values. | | * @param key_hash_cb The function called when getting the values. | |
| | | | |
| skipping to change at line 359 | | skipping to change at line 359 | |
| Eina_Key_Hash key_hash_cb, | | Eina_Key_Hash key_hash_cb, | |
| Eina_Free_Cb data_free_cb, | | Eina_Free_Cb data_free_cb, | |
| int buckets_power_size) EINA_MALL
OC EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(2, 3); | | int buckets_power_size) EINA_MALL
OC EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(2, 3); | |
| | | | |
| /** | | /** | |
| * @brief Redefine the callback that clean the data of a hash | | * @brief Redefine the callback that clean the data of a hash | |
| * | | * | |
| * @param hash The given hash table | | * @param hash The given hash table | |
| * @param data_free_cb The function called on each value when the hash | | * @param data_free_cb The function called on each value when the hash | |
| * table is freed, or when an item is deleted from it. @c NULL can be passe
d as | | * table is freed, or when an item is deleted from it. @c NULL can be passe
d as | |
|
| * callback. | | * callback to remove an existing callback. | |
| | | * | |
| | | * The argument received by @p data_free_cb will be that data of the item b | |
| | | eing | |
| | | * removed. | |
| | | * | |
| * @since 1.1 | | * @since 1.1 | |
|
| * See @ref eina_hash_new. | | * @see eina_hash_new. | |
| */ | | */ | |
| EAPI void eina_hash_free_cb_set(Eina_Hash *hash, Eina_Free_Cb data_free_cb)
EINA_ARG_NONNULL(1); | | EAPI void eina_hash_free_cb_set(Eina_Hash *hash, Eina_Free_Cb data_free_cb)
EINA_ARG_NONNULL(1); | |
| | | | |
| /** | | /** | |
| * @brief Create a new hash table using the djb2 algorithm. | | * @brief Create a new hash table using the djb2 algorithm. | |
| * | | * | |
| * @param data_free_cb The function called on each value when the hash tabl
e | | * @param data_free_cb The function called on each value when the hash tabl
e | |
| * is freed, or when an item is deleted from it. @c NULL can be passed as | | * is freed, or when an item is deleted from it. @c NULL can be passed as | |
| * callback. | | * callback. | |
| * @return The new hash table. | | * @return The new hash table. | |
| | | | |
End of changes. 5 change blocks. |
| 5 lines changed or deleted | | 10 lines changed or added | |
|
| eina_inarray.h | | eina_inarray.h | |
| | | | |
| skipping to change at line 79 | | skipping to change at line 79 | |
| * We'll now use our array to store ints, so we need to first erase every m
ember | | * We'll now use our array to store ints, so we need to first erase every m
ember | |
| * currently on the array: | | * currently on the array: | |
| * @until _flush | | * @until _flush | |
| * | | * | |
| * And then to be able to store a different type on the same array we use t
he | | * And then to be able to store a different type on the same array we use t
he | |
| * eina_inarray_step_set() function, which is just like the eina_inarray_ne
w() | | * eina_inarray_step_set() function, which is just like the eina_inarray_ne
w() | |
| * function except it receives already allocated memory. This time we're go
ing | | * function except it receives already allocated memory. This time we're go
ing | |
| * to ask eina to use a step of size 4 because that's how many elements we'
ll be | | * to ask eina to use a step of size 4 because that's how many elements we'
ll be | |
| * putting on the array: | | * putting on the array: | |
| * @until _step_set | | * @until _step_set | |
|
| * @note Strictly speaking the reason to call eina_inarray_setup() is not | | * @note Strictly speaking the reason to call eina_inarray_step_set() is no
t | |
| * because we're storing different type, but rather because our types have | | * because we're storing different type, but rather because our types have | |
| * different sizes. Eina inline arrays don't actually know anything about t
ypes, | | * different sizes. Eina inline arrays don't actually know anything about t
ypes, | |
| * they only deal in blocks of memory of a given size. | | * they only deal in blocks of memory of a given size. | |
| * @note Since eina_inarray_step_set() receives already allocated memory yo
u can(and | | * @note Since eina_inarray_step_set() receives already allocated memory yo
u can(and | |
| * it is in fact good practice) use inline arrays not declared as pointers: | | * it is in fact good practice) use inline arrays not declared as pointers: | |
| * @code | | * @code | |
| * Eina_Inarray arr; | | * Eina_Inarray arr; | |
| * eina_inarray_step_set(&arr, sizeof(arr), sizeof(int), 4); | | * eina_inarray_step_set(&arr, sizeof(arr), sizeof(int), 4); | |
| * @endcode | | * @endcode | |
| * | | * | |
| | | | |
End of changes. 1 change blocks. |
| 1 lines changed or deleted | | 1 lines changed or added | |
|
| eina_inlist.h | | eina_inlist.h | |
| | | | |
| skipping to change at line 343 | | skipping to change at line 343 | |
| * since it is the only one that has the correct information to allow a pro
per | | * since it is the only one that has the correct information to allow a pro
per | |
| * O(1) append to the list. | | * O(1) append to the list. | |
| * | | * | |
| * @section inlist_perf Performance | | * @section inlist_perf Performance | |
| * | | * | |
| * Due to the nature of the inlist, there's no accounting information, and
no | | * Due to the nature of the inlist, there's no accounting information, and
no | |
| * easy access to the last element from each list node. This means that @re
f | | * easy access to the last element from each list node. This means that @re
f | |
| * eina_inlist_count() is order-N, while @ref eina_list_count() is order-1
(constant | | * eina_inlist_count() is order-N, while @ref eina_list_count() is order-1
(constant | |
| * time). | | * time). | |
| * | | * | |
|
| * For the same reasons, @ref eina_inlist_sort() is slower than @ref | | | |
| * eina_list_sort() . If the list is intended to have faster access, be | | | |
| * sorted/merged frequently, or needs to have other complex operations, con | | | |
| sider | | | |
| * using @ref Eina_List instead. | | | |
| * | | | |
| * @section inlist_advanced Advanced Usage | | * @section inlist_advanced Advanced Usage | |
| * | | * | |
| * The basic usage considers a struct that will have the user data, and als
o | | * The basic usage considers a struct that will have the user data, and als
o | |
| * have an inlist node information (prev, next and last pointers) created w
ith | | * have an inlist node information (prev, next and last pointers) created w
ith | |
| * @ref EINA_INLIST during the struct declaration. This allows one to use t
he | | * @ref EINA_INLIST during the struct declaration. This allows one to use t
he | |
| * convenience macros @ref EINA_INLIST_GET(), @ref EINA_INLIST_CONTAINER_GE
T(), | | * convenience macros @ref EINA_INLIST_GET(), @ref EINA_INLIST_CONTAINER_GE
T(), | |
| * @ref EINA_INLIST_FOREACH() and so. This happens because the @ref EINA_IN
LIST | | * @ref EINA_INLIST_FOREACH() and so. This happens because the @ref EINA_IN
LIST | |
| * macro declares a struct member with the name @a __inlist, and all the ot
her | | * macro declares a struct member with the name @a __inlist, and all the ot
her | |
| * macros assume that this struct member has this name. | | * macros assume that this struct member has this name. | |
| * | | * | |
| | | | |
| skipping to change at line 741 | | skipping to change at line 736 | |
| * nodes. | | * nodes. | |
| * @return the new head of list. | | * @return the new head of list. | |
| * | | * | |
| * This function sorts all the elements of @p head. @p func is used to | | * This function sorts all the elements of @p head. @p func is used to | |
| * compare two elements of @p head. If @p head or @p func are @c NULL, | | * compare two elements of @p head. If @p head or @p func are @c NULL, | |
| * this function returns @c NULL. | | * this function returns @c NULL. | |
| * | | * | |
| * @note @b in-place: this will change the given list, so you should | | * @note @b in-place: this will change the given list, so you should | |
| * now point to the new list head that is returned by this function. | | * now point to the new list head that is returned by this function. | |
| * | | * | |
|
| * @note worst case is O(n * log2(n)) comparisons (calls to func()), | | * @note Worst case is O(n * log2(n)) comparisons (calls to func()). | |
| * O(n) comparisons average case. That means that for 1,000,000 list | | * That means that for 1,000,000 list elements, sort will do 20,000,000 | |
| * elements, sort will usually do 1,000,000 comparisons, but may do up | | * comparisons. | |
| * to 20,000,000. | | | |
| * | | * | |
| * Example: | | * Example: | |
| * @code | | * @code | |
| * typedef struct _Sort_Ex Sort_Ex; | | * typedef struct _Sort_Ex Sort_Ex; | |
| * struct _Sort_Ex | | * struct _Sort_Ex | |
| * { | | * { | |
| * INLIST; | | * INLIST; | |
| * const char *text; | | * const char *text; | |
| * }; | | * }; | |
| * | | * | |
| | | | |
End of changes. 2 change blocks. |
| 10 lines changed or deleted | | 3 lines changed or added | |
|
| eina_iterator.h | | eina_iterator.h | |
| | | | |
| skipping to change at line 96 | | skipping to change at line 96 | |
| * @addtogroup Eina_Iterator_Group Iterator Functions | | * @addtogroup Eina_Iterator_Group Iterator Functions | |
| * | | * | |
| * @brief These functions manage iterators on containers. | | * @brief These functions manage iterators on containers. | |
| * | | * | |
| * These functions allow to access elements of a container in a | | * These functions allow to access elements of a container in a | |
| * generic way, without knowing which container is used (a bit like | | * generic way, without knowing which container is used (a bit like | |
| * iterators in the C++ STL). Iterators only allows sequential access | | * iterators in the C++ STL). Iterators only allows sequential access | |
| * (that is, from an element to the next one). For random access, see | | * (that is, from an element to the next one). For random access, see | |
| * @ref Eina_Accessor_Group. | | * @ref Eina_Accessor_Group. | |
| * | | * | |
|
| * An iterator is created from container data types, so no creation | | * Getting an iterator to access elements of a given container is done thro | |
| * function is available here. An iterator is deleted with | | ugh | |
| * eina_iterator_free(). To get the data and iterate, use | | * the functions of that particular container. There is no function to crea | |
| * eina_iterator_next(). To call a function on all the elements of a | | te | |
| * container, use eina_iterator_foreach(). | | * a generic iterator as iterators absolutely depend on the container. This | |
| | | * means you won't find iterator creation function here, those can be found | |
| | | on | |
| | | * the documentation of the container type you're using. Though created wit | |
| | | h | |
| | | * container specific functions iterators are always deleted with the same | |
| | | * function: eina_iterator_free(). | |
| | | * | |
| | | * To get the data and iterate, use eina_iterator_next(). To call a functio | |
| | | n on | |
| | | * all the elements of a container, use eina_iterator_foreach(). | |
| * | | * | |
| * Here an @ref eina_iterator_example_page "example" | | * Here an @ref eina_iterator_example_page "example" | |
| */ | | */ | |
| | | | |
| /** | | /** | |
| * @addtogroup Eina_Content_Access_Group Content Access | | * @addtogroup Eina_Content_Access_Group Content Access | |
| * | | * | |
| * @{ | | * @{ | |
| */ | | */ | |
| | | | |
| | | | |
| skipping to change at line 150 | | skipping to change at line 155 | |
| | | | |
| /** | | /** | |
| * @typedef Eina_Iterator_Lock_Callback | | * @typedef Eina_Iterator_Lock_Callback | |
| * Type for a callback that lock the container. | | * Type for a callback that lock the container. | |
| */ | | */ | |
| typedef Eina_Bool (*Eina_Iterator_Lock_Callback)(Eina_Iterator *i
t); | | typedef Eina_Bool (*Eina_Iterator_Lock_Callback)(Eina_Iterator *i
t); | |
| | | | |
| /** | | /** | |
| * @struct _Eina_Iterator | | * @struct _Eina_Iterator | |
| * structure of an iterator | | * structure of an iterator | |
|
| | | * | |
| | | * If creating an iterator remember to set the type using @ref EINA_MAGIC_S | |
| | | ET. | |
| */ | | */ | |
| struct _Eina_Iterator | | struct _Eina_Iterator | |
| { | | { | |
| #define EINA_ITERATOR_VERSION 1 | | #define EINA_ITERATOR_VERSION 1 | |
| int version; /**< Version of the Iterat
or API. */ | | int version; /**< Version of the Iterat
or API. */ | |
| | | | |
| Eina_Iterator_Next_Callback next EINA_ARG_NONNULL(1, 2
) EINA_WARN_UNUSED_RESULT; /**< Callback called when a next element is requ
ested. */ | | Eina_Iterator_Next_Callback next EINA_ARG_NONNULL(1, 2
) EINA_WARN_UNUSED_RESULT; /**< Callback called when a next element is requ
ested. */ | |
| Eina_Iterator_Get_Container_Callback get_container EINA_ARG_NONNULL(1) E
INA_WARN_UNUSED_RESULT; /**< Callback called when the container is requeste
d. */ | | Eina_Iterator_Get_Container_Callback get_container EINA_ARG_NONNULL(1) E
INA_WARN_UNUSED_RESULT; /**< Callback called when the container is requeste
d. */ | |
| Eina_Iterator_Free_Callback free EINA_ARG_NONNULL(1);
/**< Callback called when the container is freed. */ | | Eina_Iterator_Free_Callback free EINA_ARG_NONNULL(1);
/**< Callback called when the container is freed. */ | |
| | | | |
| | | | |
| skipping to change at line 198 | | skipping to change at line 205 | |
| */ | | */ | |
| #define FUNC_ITERATOR_LOCK(Function) ((Eina_Iterator_Lock_Callback
)Function) | | #define FUNC_ITERATOR_LOCK(Function) ((Eina_Iterator_Lock_Callback
)Function) | |
| | | | |
| /** | | /** | |
| * @brief Free an iterator. | | * @brief Free an iterator. | |
| * | | * | |
| * @param iterator The iterator to free. | | * @param iterator The iterator to free. | |
| * | | * | |
| * This function frees @p iterator if it is not @c NULL; | | * This function frees @p iterator if it is not @c NULL; | |
| */ | | */ | |
|
| EAPI void eina_iterator_free(Eina_Iterator *iterator) EINA_ARG_NONNULL
(1); | | EAPI void eina_iterator_free(Eina_Iterator *iterator); | |
| | | | |
| /** | | /** | |
| * @brief Return the container of an iterator. | | * @brief Return the container of an iterator. | |
| * | | * | |
| * @param iterator The iterator. | | * @param iterator The iterator. | |
| * @return The container which created the iterator. | | * @return The container which created the iterator. | |
| * | | * | |
| * This function returns the container which created @p iterator. If | | * This function returns the container which created @p iterator. If | |
| * @p iterator is @c NULL, this function returns @c NULL. | | * @p iterator is @c NULL, this function returns @c NULL. | |
| */ | | */ | |
| | | | |
| skipping to change at line 224 | | skipping to change at line 231 | |
| * @param iterator The iterator. | | * @param iterator The iterator. | |
| * @param data The data of the element. | | * @param data The data of the element. | |
| * @return #EINA_TRUE on success, #EINA_FALSE otherwise. | | * @return #EINA_TRUE on success, #EINA_FALSE otherwise. | |
| * | | * | |
| * This function returns the value of the current element pointed by | | * This function returns the value of the current element pointed by | |
| * @p iterator in @p data, then goes to the next element. If @p | | * @p iterator in @p data, then goes to the next element. If @p | |
| * iterator is @c NULL or if a problem occurred, #EINA_FALSE is | | * iterator is @c NULL or if a problem occurred, #EINA_FALSE is | |
| * returned, otherwise #EINA_TRUE is returned. | | * returned, otherwise #EINA_TRUE is returned. | |
| */ | | */ | |
| EAPI Eina_Bool eina_iterator_next(Eina_Iterator *iterator, | | EAPI Eina_Bool eina_iterator_next(Eina_Iterator *iterator, | |
|
| void **data) EINA_ARG_NONNULL(1,
2) EINA_WARN_UNUSED_RESULT; | | void **data) EINA_ARG_NONNULL(2)
EINA_WARN_UNUSED_RESULT; | |
| | | | |
| /** | | /** | |
| * @brief Iterate over the container and execute a callback on each element
. | | * @brief Iterate over the container and execute a callback on each element
. | |
| * | | * | |
| * @param iterator The iterator. | | * @param iterator The iterator. | |
| * @param callback The callback called on each iteration. | | * @param callback The callback called on each iteration. | |
| * @param fdata The data passed to the callback. | | * @param fdata The data passed to the callback. | |
| * | | * | |
| * This function iterates over the elements pointed by @p iterator, | | * This function iterates over the elements pointed by @p iterator, | |
| * beginning from the current element. For Each element, the callback | | * beginning from the current element. For Each element, the callback | |
| * @p cb is called with the data @p fdata. If @p iterator is @c NULL, | | * @p cb is called with the data @p fdata. If @p iterator is @c NULL, | |
| * the function returns immediately. Also, if @p cb returns #EINA_FALSE, | | * the function returns immediately. Also, if @p cb returns #EINA_FALSE, | |
| * the iteration stops at that point, if @p cb returns #EINA_TRUE | | * the iteration stops at that point, if @p cb returns #EINA_TRUE | |
| * the iteration continues. | | * the iteration continues. | |
| */ | | */ | |
| EAPI void eina_iterator_foreach(Eina_Iterator *iterator, | | EAPI void eina_iterator_foreach(Eina_Iterator *iterator, | |
| Eina_Each_Cb callback, | | Eina_Each_Cb callback, | |
|
| const void *fdata) EINA_ARG_NONNULL(1, 2
); | | const void *fdata) EINA_ARG_NONNULL(2); | |
| | | | |
| /** | | /** | |
| * @brief Lock the container of the iterator. | | * @brief Lock the container of the iterator. | |
| * | | * | |
| * @param iterator The iterator. | | * @param iterator The iterator. | |
| * @return #EINA_TRUE on success, #EINA_FALSE otherwise. | | * @return #EINA_TRUE on success, #EINA_FALSE otherwise. | |
| * | | * | |
| * If the container of the @p iterator permits it, it will be locked. When
a | | * If the container of the @p iterator permits it, it will be locked. When
a | |
| * container is locked calling eina_iterator_foreach() on it will return | | * container is locked calling eina_iterator_foreach() on it will return | |
| * immediately. If @p iterator is @c NULL or if a problem occurred, #EINA_F
ALSE | | * immediately. If @p iterator is @c NULL or if a problem occurred, #EINA_F
ALSE | |
| | | | |
End of changes. 5 change blocks. |
| 8 lines changed or deleted | | 21 lines changed or added | |
|
| eina_list.h | | eina_list.h | |
| | | | |
| skipping to change at line 565 | | skipping to change at line 565 | |
| EAPI Eina_List *eina_list_sorted_insert(Eina_List *list, Eina_Co
mpare_Cb func, const void *data) EINA_ARG_NONNULL(2, 3) EINA_WARN_UNUSED_RE
SULT; | | EAPI Eina_List *eina_list_sorted_insert(Eina_List *list, Eina_Co
mpare_Cb func, const void *data) EINA_ARG_NONNULL(2, 3) EINA_WARN_UNUSED_RE
SULT; | |
| | | | |
| /** | | /** | |
| * @brief Remove the first instance of the specified data from the given li
st. | | * @brief Remove the first instance of the specified data from the given li
st. | |
| * | | * | |
| * @param list The given list. | | * @param list The given list. | |
| * @param data The specified data. | | * @param data The specified data. | |
| * @return A list pointer. | | * @return A list pointer. | |
| * | | * | |
| * This function removes the first instance of @p data from | | * This function removes the first instance of @p data from | |
|
| * @p list. If the specified data is not in the given list (tihis | | * @p list. If the specified data is not in the given list (this | |
| * include the case where @p data is @c NULL), nothing is done. If | | * includes the case where @p data is @c NULL), nothing is done and the | |
| * @p list is @c NULL, @c NULL is returned, otherwise a new list | | * specified @p list returned. If @p list is @c NULL, @c NULL is returned, | |
| * pointer that should be used in place of the one passed to this | | * otherwise a new list pointer that should be used in place of the one | |
| * function. | | * passed to this function. | |
| * | | * | |
| * @warning @p list must be a pointer to the first element of the list. | | * @warning @p list must be a pointer to the first element of the list. | |
| */ | | */ | |
| EAPI Eina_List *eina_list_remove(Eina_List *list, const void *da
ta) EINA_ARG_NONNULL(2) EINA_WARN_UNUSED_RESULT; | | EAPI Eina_List *eina_list_remove(Eina_List *list, const void *da
ta) EINA_ARG_NONNULL(2) EINA_WARN_UNUSED_RESULT; | |
| | | | |
| /** | | /** | |
| * @brief Remove the specified list node. | | * @brief Remove the specified list node. | |
| * | | * | |
| * @param list The given linked list. | | * @param list The given linked list. | |
| * @param remove_list The list node which is to be removed. | | * @param remove_list The list node which is to be removed. | |
| | | | |
| skipping to change at line 878 | | skipping to change at line 878 | |
| * | | * | |
| * This function sorts @p list. @p size if the number of the first | | * This function sorts @p list. @p size if the number of the first | |
| * element to sort. If @p limit is 0 or greater than the number of | | * element to sort. If @p limit is 0 or greater than the number of | |
| * elements in @p list, all the elements are sorted. @p func is used to | | * elements in @p list, all the elements are sorted. @p func is used to | |
| * compare two elements of @p list. If @p list or @p func are @c NULL, | | * compare two elements of @p list. If @p list or @p func are @c NULL, | |
| * this function returns @c NULL. | | * this function returns @c NULL. | |
| * | | * | |
| * @note @b in-place: this will change the given list, so you should | | * @note @b in-place: this will change the given list, so you should | |
| * now point to the new list head that is returned by this function. | | * now point to the new list head that is returned by this function. | |
| * | | * | |
|
| * @note worst case is O(n * log2(n)) comparisons (calls to func()), | | * @note Worst case is O(n * log2(n)) comparisons (calls to func()). | |
| * O(n) comparisons average case. That means that for 1,000,000 list | | * That means that for 1,000,000 list sort will do 20,000,000 comparisons. | |
| * elements, sort will usually do 1,000,000 comparisons, but may do up | | | |
| * to 20,000,000. | | | |
| * | | * | |
| * Example: | | * Example: | |
| * @code | | * @code | |
| * int | | * int | |
| * sort_cb(const void *d1, const void *d2) | | * sort_cb(const void *d1, const void *d2) | |
| * { | | * { | |
| * const char *txt = d1; | | * const char *txt = d1; | |
| * const char *txt2 = d2; | | * const char *txt2 = d2; | |
| * | | * | |
| * if(!txt) return(1); | | * if(!txt) return(1); | |
| | | | |
End of changes. 2 change blocks. |
| 9 lines changed or deleted | | 7 lines changed or added | |
|
| eina_log.h | | eina_log.h | |
| | | | |
| skipping to change at line 22 | | skipping to change at line 22 | |
| * Lesser General Public License for more details. | | * Lesser General Public License for more details. | |
| * | | * | |
| * You should have received a copy of the GNU Lesser General Public | | * You should have received a copy of the GNU Lesser General Public | |
| * License along with this library; | | * License along with this library; | |
| * if not, see <http://www.gnu.org/licenses/>. | | * if not, see <http://www.gnu.org/licenses/>. | |
| */ | | */ | |
| | | | |
| #ifndef EINA_LOG_H_ | | #ifndef EINA_LOG_H_ | |
| #define EINA_LOG_H_ | | #define EINA_LOG_H_ | |
| | | | |
|
| | | #include <stdio.h> | |
| #include <stdlib.h> | | #include <stdlib.h> | |
| #include <stdarg.h> | | #include <stdarg.h> | |
| #include <sys/types.h> | | #include <sys/types.h> | |
| | | | |
| #include "eina_types.h" | | #include "eina_types.h" | |
| | | | |
| #define EINA_COLOR_LIGHTRED "\033[31;1m" | | #define EINA_COLOR_LIGHTRED "\033[31;1m" | |
| #define EINA_COLOR_RED "\033[31m" | | #define EINA_COLOR_RED "\033[31m" | |
| #define EINA_COLOR_LIGHTBLUE "\033[34;1m" | | #define EINA_COLOR_LIGHTBLUE "\033[34;1m" | |
| #define EINA_COLOR_BLUE "\033[34m" | | #define EINA_COLOR_BLUE "\033[34m" | |
| | | | |
| skipping to change at line 681 | | skipping to change at line 682 | |
| EAPI int eina_log_domain_level_get(const char *domain_name)
EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); | | EAPI int eina_log_domain_level_get(const char *domain_name)
EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); | |
| | | | |
| /** | | /** | |
| * Get the domain level given its identifier. | | * Get the domain level given its identifier. | |
| * | | * | |
| * @param domain identifier, so it must be previously registered with | | * @param domain identifier, so it must be previously registered with | |
| * eina_log_domain_register(). It's a much faster version of | | * eina_log_domain_register(). It's a much faster version of | |
| * eina_log_domain_level_get(), but relies on domain being | | * eina_log_domain_level_get(), but relies on domain being | |
| * present. | | * present. | |
| * | | * | |
|
| * @return level to use to limit eina_log_print() for given domain. On | | * @return #EINA_TRUE if level should be printed, #EINA_FALSE if not. | |
| * error EINA_LOG_LEVEL_UNKNOWN is returned. | | * (domain's level is greater or equal @a level). | |
| */ | | */ | |
| EAPI int eina_log_domain_registered_level_get(int domain) EI
NA_WARN_UNUSED_RESULT; | | EAPI int eina_log_domain_registered_level_get(int domain) EI
NA_WARN_UNUSED_RESULT; | |
| | | | |
| static inline Eina_Bool eina_log_domain_level_check(int domain, int level); | | static inline Eina_Bool eina_log_domain_level_check(int domain, int level); | |
| | | | |
| /* | | /* | |
| * Logging domains | | * Logging domains | |
| */ | | */ | |
| | | | |
| /** | | /** | |
| | | | |
| skipping to change at line 889 | | skipping to change at line 890 | |
| */ | | */ | |
| EAPI void eina_log_print_cb_file(const Eina_Log_Domain *d, | | EAPI void eina_log_print_cb_file(const Eina_Log_Domain *d, | |
| Eina_Log_Level level, | | Eina_Log_Level level, | |
| const char *file, | | const char *file, | |
| const char *fnc, | | const char *fnc, | |
| int line, | | int line, | |
| const char *fmt, | | const char *fmt, | |
| void *data, | | void *data, | |
| va_list args); | | va_list args); | |
| | | | |
|
| | | /** | |
| | | * Configure console color of given file. | |
| | | * | |
| | | * @param fp file to configure console color (usually stderr or stdout). | |
| | | * @param color a VT color code such as #EINA_COLOR_RED or #EINA_COLOR_RESE | |
| | | T. | |
| | | * | |
| | | * @note if color is disabled, nothing is done. See | |
| | | * eina_log_color_disable_get() | |
| | | * @note on windows, both @a fp and @a color is converted automatically. | |
| | | * | |
| | | * @since 1.7 | |
| | | */ | |
| | | EAPI void eina_log_console_color_set(FILE *fp, | |
| | | const char *color) EINA_ARG_NONNULL(1, | |
| | | 2); | |
| | | | |
| #include "eina_inline_log.x" | | #include "eina_inline_log.x" | |
| | | | |
| /** | | /** | |
| * @} | | * @} | |
| */ | | */ | |
| | | | |
| /** | | /** | |
| * @} | | * @} | |
| */ | | */ | |
| | | | |
| | | | |
End of changes. 3 change blocks. |
| 2 lines changed or deleted | | 20 lines changed or added | |
|
| eina_matrixsparse.h | | eina_matrixsparse.h | |
| | | | |
| skipping to change at line 320 | | skipping to change at line 320 | |
| * | | * | |
| * @param m the sparse matrix to operate on. | | * @param m the sparse matrix to operate on. | |
| * @param row the new number of row to clear. | | * @param row the new number of row to clear. | |
| * @param col the new number of column to clear. | | * @param col the new number of column to clear. | |
| * | | * | |
| * @return #EINA_TRUE on success, #EINA_FALSE on failure. It is considered
success if did not | | * @return #EINA_TRUE on success, #EINA_FALSE on failure. It is considered
success if did not | |
| * exist but index is inside matrix size. | | * exist but index is inside matrix size. | |
| * | | * | |
| * @warning cells, rows or columns are not reference counted and thus | | * @warning cells, rows or columns are not reference counted and thus | |
| * after this call any reference might be invalid if instance were | | * after this call any reference might be invalid if instance were | |
|
| * freed. Note that this call might delete container column and | | * freed. | |
| * row if this cell was the last remainder. | | * | |
| | | * @note This call might delete container column and row if this cell was t | |
| | | he | |
| | | * last remainder. | |
| */ | | */ | |
| EAPI Eina_Bool eina_matrixsparse_cell_idx_clear(Eina_Matrixsparse *m, unsig
ned long row, unsigned long col); | | EAPI Eina_Bool eina_matrixsparse_cell_idx_clear(Eina_Matrixsparse *m, unsig
ned long row, unsigned long col); | |
| | | | |
| /** | | /** | |
| * Clear (erase) cell given its reference. | | * Clear (erase) cell given its reference. | |
| * | | * | |
| * @param cell the cell reference, must @b not be @c NULL. | | * @param cell the cell reference, must @b not be @c NULL. | |
| * | | * | |
| * @return #EINA_TRUE on success, #EINA_FALSE on failure. | | * @return #EINA_TRUE on success, #EINA_FALSE on failure. | |
| * | | * | |
| * @warning cells, rows or columns are not reference counted and thus | | * @warning cells, rows or columns are not reference counted and thus | |
| * after this call any reference might be invalid if instance were | | * after this call any reference might be invalid if instance were | |
|
| * freed. Note that this call might delete container column and | | * freed. | |
| * row if this cell was the last remainder. | | * | |
| | | * @note This call might delete container column and row if this cell was t | |
| | | he | |
| | | * last remainder. | |
| */ | | */ | |
| EAPI Eina_Bool eina_matrixsparse_cell_clear(Eina_Matrixsparse_Cell *cell); | | EAPI Eina_Bool eina_matrixsparse_cell_clear(Eina_Matrixsparse_Cell *cell); | |
| | | | |
| /* iterators */ | | /* iterators */ | |
| | | | |
| /** | | /** | |
| * Creates a new iterator over existing matrix cells. | | * Creates a new iterator over existing matrix cells. | |
| * | | * | |
| * This is a cheap walk, it will just report existing cells and holes | | * This is a cheap walk, it will just report existing cells and holes | |
| * in the sparse matrix will be ignored. That means the reported | | * in the sparse matrix will be ignored. That means the reported | |
| | | | |
End of changes. 2 change blocks. |
| 4 lines changed or deleted | | 10 lines changed or added | |
|
| eina_rectangle.h | | eina_rectangle.h | |
| | | | |
| skipping to change at line 140 | | skipping to change at line 140 | |
| * function does nothing. | | * function does nothing. | |
| */ | | */ | |
| EAPI void eina_rectangle_pool_data_set(Eina_Rectangle_Pool
*pool, const void *data) EINA_ARG_NONNULL(1); | | EAPI void eina_rectangle_pool_data_set(Eina_Rectangle_Pool
*pool, const void *data) EINA_ARG_NONNULL(1); | |
| | | | |
| /** | | /** | |
| * @brief Free the given pool. | | * @brief Free the given pool. | |
| * | | * | |
| * @param pool The pool to free. | | * @param pool The pool to free. | |
| * | | * | |
| * This function frees the allocated data of @p pool. If @p pool is | | * This function frees the allocated data of @p pool. If @p pool is | |
|
| * @c NULL, ths function returned immediately. | | * @c NULL, this function returned immediately. | |
| */ | | */ | |
| EAPI void eina_rectangle_pool_free(Eina_Rectangle_Pool *poo
l) EINA_ARG_NONNULL(1); | | EAPI void eina_rectangle_pool_free(Eina_Rectangle_Pool *poo
l) EINA_ARG_NONNULL(1); | |
| | | | |
| /** | | /** | |
| * @brief Return the number of rectangles in the given pool. | | * @brief Return the number of rectangles in the given pool. | |
| * | | * | |
| * @param pool The pool. | | * @param pool The pool. | |
| * @return The number of rectangles in the pool. | | * @return The number of rectangles in the pool. | |
| * | | * | |
| * This function returns the number of rectangles in @p pool. | | * This function returns the number of rectangles in @p pool. | |
| | | | |
| skipping to change at line 177 | | skipping to change at line 177 | |
| * Otherwise it returns @c NULL. | | * Otherwise it returns @c NULL. | |
| */ | | */ | |
| EAPI Eina_Rectangle *eina_rectangle_pool_request(Eina_Rectangle_Pool *
pool, int w, int h) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); | | EAPI Eina_Rectangle *eina_rectangle_pool_request(Eina_Rectangle_Pool *
pool, int w, int h) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); | |
| | | | |
| /** | | /** | |
| * @brief Remove the given rectangle from the pool. | | * @brief Remove the given rectangle from the pool. | |
| * | | * | |
| * @param rect The rectangle to remove from the pool. | | * @param rect The rectangle to remove from the pool. | |
| * | | * | |
| * This function removes @p rect from the pool. If @p rect is | | * This function removes @p rect from the pool. If @p rect is | |
|
| * @c NULL, the function returns immediately. Otherwise it remoes @p | | * @c NULL, the function returns immediately. Otherwise it removes @p | |
| * rect from the pool. | | * rect from the pool. | |
| */ | | */ | |
| EAPI void eina_rectangle_pool_release(Eina_Rectangle *rect)
EINA_ARG_NONNULL(1); | | EAPI void eina_rectangle_pool_release(Eina_Rectangle *rect)
EINA_ARG_NONNULL(1); | |
| | | | |
| /** | | /** | |
| * @def EINA_RECTANGLE_SET | | * @def EINA_RECTANGLE_SET | |
| * @brief Macro to set the values of a #Eina_Rectangle. | | * @brief Macro to set the values of a #Eina_Rectangle. | |
| * | | * | |
| * @param Rectangle The rectangle to set the values. | | * @param Rectangle The rectangle to set the values. | |
| * @param X The X coordinate of the top left corner of the rectangle. | | * @param X The X coordinate of the top left corner of the rectangle. | |
| | | | |
End of changes. 2 change blocks. |
| 2 lines changed or deleted | | 2 lines changed or added | |
|
| eina_str.h | | eina_str.h | |
| | | | |
| skipping to change at line 21 | | skipping to change at line 21 | |
| * @dontinclude eina_str_01.c | | * @dontinclude eina_str_01.c | |
| * | | * | |
| * Whenever using eina we need to include it: | | * Whenever using eina we need to include it: | |
| * @skipline #include | | * @skipline #include | |
| * @line #include | | * @line #include | |
| * | | * | |
| * In our main function we declare(and initialize) some variables and initi
alize | | * In our main function we declare(and initialize) some variables and initi
alize | |
| * eina: | | * eina: | |
| * @until eina_init | | * @until eina_init | |
| * | | * | |
|
| * It's frequentely necessary to split a string into its constituent parts, | | * It's frequently necessary to split a string into its constituent parts, | |
| * eina_str_split() make's it easy to do so: | | * eina_str_split() make's it easy to do so: | |
| * @until printf | | * @until printf | |
| * | | * | |
| * Another common need is to make a string uppercase or lowercase, so let's | | * Another common need is to make a string uppercase or lowercase, so let's | |
| * create a string and make it uppercase and then make it lowercase again: | | * create a string and make it uppercase and then make it lowercase again: | |
| * @until printf | | * @until printf | |
| * @until printf | | * @until printf | |
| * | | * | |
| * Next we use eina to check if our @p names string starts or ends with som
e | | * Next we use eina to check if our @p names string starts or ends with som
e | |
| * values: | | * values: | |
| | | | |
| skipping to change at line 165 | | skipping to change at line 165 | |
| * This function does the same as eina_str_has_suffix(), except it's case | | * This function does the same as eina_str_has_suffix(), except it's case | |
| * insensitive. | | * insensitive. | |
| */ | | */ | |
| EAPI Eina_Bool eina_str_has_extension(const char *str, const char *ex
t) EINA_PURE EINA_ARG_NONNULL(1, 2) EINA_WARN_UNUSED_RESULT; | | EAPI Eina_Bool eina_str_has_extension(const char *str, const char *ex
t) EINA_PURE EINA_ARG_NONNULL(1, 2) EINA_WARN_UNUSED_RESULT; | |
| | | | |
| /** | | /** | |
| * @brief Split a string using a delimiter. | | * @brief Split a string using a delimiter. | |
| * | | * | |
| * @param string The string to split. | | * @param string The string to split. | |
| * @param delimiter The string which specifies the places at which to split
the string. | | * @param delimiter The string which specifies the places at which to split
the string. | |
|
| * @param max_tokens The maximum number of strings to split string into. | | * @param max_tokens The maximum number of strings to split string into, or | |
| | | a number less | |
| | | * than 1 to split as many times as possible. This parame | |
| | | ter | |
| | | * IGNORES the added @c NULL terminator. | |
| * @return A newly-allocated NULL-terminated array of strings or @c NULL if
it | | * @return A newly-allocated NULL-terminated array of strings or @c NULL if
it | |
| * fails to allocate the array. | | * fails to allocate the array. | |
| * | | * | |
|
| * This functin splits @p string into a maximum of @p max_tokens pieces, | | * This function splits @p string into a maximum of @p max_tokens pieces, | |
| * using the given delimiter @p delimiter. @p delimiter is not included in
any | | * using the given delimiter @p delimiter. @p delimiter is not included in
any | |
| * of the resulting strings, unless @p max_tokens is reached. If | | * of the resulting strings, unless @p max_tokens is reached. If | |
|
| * @p max_tokens is less than @c 1, the string is splitted completely. If | | * @p max_tokens is less than @c 1, the string is splitted as many times as
possible. If | |
| * @p max_tokens is reached, the last string in the returned string | | * @p max_tokens is reached, the last string in the returned string | |
| * array contains the remainder of string. The returned value is a | | * array contains the remainder of string. The returned value is a | |
| * newly allocated NULL-terminated array of strings or @c NULL if it fails
to | | * newly allocated NULL-terminated array of strings or @c NULL if it fails
to | |
| * allocate the array. To free it, free the first element of the array and
the | | * allocate the array. To free it, free the first element of the array and
the | |
| * array itself. | | * array itself. | |
| * | | * | |
| * @note If you need the number of elements in the returned array see | | * @note If you need the number of elements in the returned array see | |
| * eina_str_split_full(). | | * eina_str_split_full(). | |
| */ | | */ | |
| EAPI char **eina_str_split(const char *string, const char *delimit
er, int max_tokens) EINA_ARG_NONNULL(1, 2) EINA_MALLOC EINA_WARN_UNUSED_RES
ULT; | | EAPI char **eina_str_split(const char *string, const char *delimit
er, int max_tokens) EINA_ARG_NONNULL(1, 2) EINA_MALLOC EINA_WARN_UNUSED_RES
ULT; | |
| | | | |
| /** | | /** | |
| * @brief Split a string using a delimiter and returns number of elements. | | * @brief Split a string using a delimiter and returns number of elements. | |
| * | | * | |
| * @param string The string to split. | | * @param string The string to split. | |
| * @param delimiter The string which specifies the places at which to split
the string. | | * @param delimiter The string which specifies the places at which to split
the string. | |
|
| * @param max_tokens The maximum number of strings to split string into. | | * @param max_tokens The maximum number of strings to split string into, or | |
| | | a number less | |
| | | * than 1 to split as many times as possible. This parame | |
| | | ter | |
| | | * IGNORES the added @c NULL terminator. | |
| * @param elements Where to return the number of elements in returned | | * @param elements Where to return the number of elements in returned | |
|
| * array (not counting the terminating @c NULL). May be @c NULL. | | * array. This array is guaranteed to be no greater than @p max_toke | |
| | | ns, and | |
| | | * it will NOT count the @c NULL terminator element. | |
| * @return A newly-allocated NULL-terminated array of strings or @c NULL if
it | | * @return A newly-allocated NULL-terminated array of strings or @c NULL if
it | |
| * fails to allocate the array. | | * fails to allocate the array. | |
| * | | * | |
| * This function splits @p string into a maximum of @p max_tokens pieces, | | * This function splits @p string into a maximum of @p max_tokens pieces, | |
| * using the given delimiter @p delimiter. @p delimiter is not included in
any | | * using the given delimiter @p delimiter. @p delimiter is not included in
any | |
| * of the resulting strings, unless @p max_tokens is reached. If | | * of the resulting strings, unless @p max_tokens is reached. If | |
|
| * @p max_tokens is less than @c 1, the string is splitted completely. If | | * @p max_tokens is less than @c 1, the string is splitted as many times as
possible. If | |
| * @p max_tokens is reached, the last string in the returned string | | * @p max_tokens is reached, the last string in the returned string | |
| * array contains the remainder of string. The returned value is a | | * array contains the remainder of string. The returned value is a | |
| * newly allocated NULL-terminated array of strings or @c NULL if it fails
to | | * newly allocated NULL-terminated array of strings or @c NULL if it fails
to | |
| * allocate the array. To free it, free the first element of the array and
the | | * allocate the array. To free it, free the first element of the array and
the | |
| * array itself. | | * array itself. | |
| * | | * | |
|
| | | * @note The actual size of the returned array, when @p elements returns gr | |
| | | eater than zero, | |
| | | * will always be @p elements + 1. This is due to the @c NULL termina | |
| | | tor element that | |
| | | * is added to the array for safety. If it returns @c 6, the number o | |
| | | f split strings returned | |
| | | * will be 6, but the size of the array (including the @c NULL elemen | |
| | | t) will actually be 7. | |
| | | * | |
| * @see eina_str_split() | | * @see eina_str_split() | |
| */ | | */ | |
| EAPI char **eina_str_split_full(const char *string, const char *de
limiter, int max_tokens, unsigned int *elements) EINA_ARG_NONNULL(1, 2, 4)
EINA_MALLOC EINA_WARN_UNUSED_RESULT; | | EAPI char **eina_str_split_full(const char *string, const char *de
limiter, int max_tokens, unsigned int *elements) EINA_ARG_NONNULL(1, 2, 4)
EINA_MALLOC EINA_WARN_UNUSED_RESULT; | |
| | | | |
| /** | | /** | |
| * @brief Join two strings of known length. | | * @brief Join two strings of known length. | |
| * | | * | |
| * @param dst The buffer to store the result. | | * @param dst The buffer to store the result. | |
| * @param size Size (in byte) of the buffer. | | * @param size Size (in byte) of the buffer. | |
| * @param sep The separator character to use. | | * @param sep The separator character to use. | |
| | | | |
End of changes. 8 change blocks. |
| 7 lines changed or deleted | | 26 lines changed or added | |
|
| eina_stringshare.h | | eina_stringshare.h | |
| | | | |
| skipping to change at line 305 | | skipping to change at line 305 | |
| /** | | /** | |
| * @brief Note that the given string has lost an instance. | | * @brief Note that the given string has lost an instance. | |
| * | | * | |
| * @param str string The given string. | | * @param str string The given string. | |
| * | | * | |
| * This function decreases the reference counter associated to @p str | | * This function decreases the reference counter associated to @p str | |
| * if it exists. If that counter reaches 0, the memory associated to | | * if it exists. If that counter reaches 0, the memory associated to | |
| * @p str is freed. If @p str is @c NULL, the function returns | | * @p str is freed. If @p str is @c NULL, the function returns | |
| * immediately. | | * immediately. | |
| * | | * | |
|
| * Note that if the given pointer is not shared or NULL, bad things | | * @note If the given pointer is not shared, bad things will happen, likely | |
| * will happen, likely a segmentation fault. | | a | |
| | | * segmentation fault. | |
| */ | | */ | |
| EAPI void eina_stringshare_del(Eina_Stringshare *str); | | EAPI void eina_stringshare_del(Eina_Stringshare *str); | |
| | | | |
| /** | | /** | |
| * @brief Note that the given string @b must be shared. | | * @brief Note that the given string @b must be shared. | |
| * | | * | |
| * @param str the shared string to know the length. It is safe to | | * @param str the shared string to know the length. It is safe to | |
| * give @c NULL, in that case @c -1 is returned. | | * give @c NULL, in that case @c -1 is returned. | |
| * @return The length of a shared string. | | * @return The length of a shared string. | |
| * | | * | |
| * This function is a cheap way to known the length of a shared | | * This function is a cheap way to known the length of a shared | |
|
| * string. Note that if the given pointer is not shared, bad | | * string. | |
| * things will happen, likely a segmentation fault. If in doubt, try | | * | |
| * strlen(). | | * @note If the given pointer is not shared, bad things will happen, likely | |
| | | a | |
| | | * segmentation fault. If in doubt, try strlen(). | |
| */ | | */ | |
| EAPI int eina_stringshare_strlen(Eina_Stringshare *str) EINA
_PURE EINA_WARN_UNUSED_RESULT; | | EAPI int eina_stringshare_strlen(Eina_Stringshare *str) EINA
_PURE EINA_WARN_UNUSED_RESULT; | |
| | | | |
| /** | | /** | |
| * @brief Dump the contents of the share_common. | | * @brief Dump the contents of the share_common. | |
| * | | * | |
| * This function dumps all strings in the share_common to stdout with a | | * This function dumps all strings in the share_common to stdout with a | |
| * DDD: prefix per line and a memory usage summary. | | * DDD: prefix per line and a memory usage summary. | |
| */ | | */ | |
| EAPI void eina_stringshare_dump(void); | | EAPI void eina_stringshare_dump(void); | |
| | | | |
End of changes. 2 change blocks. |
| 5 lines changed or deleted | | 8 lines changed or added | |
|
| eina_types.h | | eina_types.h | |
| | | | |
| skipping to change at line 102 | | skipping to change at line 102 | |
| #endif | | #endif | |
| #ifdef EINA_NOINSTRUMENT | | #ifdef EINA_NOINSTRUMENT | |
| # undef EINA_NOINSTRUMENT | | # undef EINA_NOINSTRUMENT | |
| #endif | | #endif | |
| #ifdef EINA_UNLIKELY | | #ifdef EINA_UNLIKELY | |
| # undef EINA_UNLIKELY | | # undef EINA_UNLIKELY | |
| #endif | | #endif | |
| #ifdef EINA_LIKELY | | #ifdef EINA_LIKELY | |
| # undef EINA_LIKELY | | # undef EINA_LIKELY | |
| #endif | | #endif | |
|
| | | #ifdef EINA_SENTINEL | |
| | | # undef EINA_SENTINEL | |
| | | #endif | |
| | | | |
| #ifdef __GNUC__ | | #ifdef __GNUC__ | |
| # if __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4) | | # if __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4) | |
| # define EINA_WARN_UNUSED_RESULT __attribute__ ((__warn_unused_result__)) | | # define EINA_WARN_UNUSED_RESULT __attribute__ ((__warn_unused_result__)) | |
| # else | | # else | |
| # define EINA_WARN_UNUSED_RESULT | | # define EINA_WARN_UNUSED_RESULT | |
| # endif | | # endif | |
| | | | |
| # if (!defined(EINA_SAFETY_CHECKS)) && (__GNUC__ > 3 || (__GNUC__ == 3 && _
_GNUC_MINOR__ >= 3)) | | # if (!defined(EINA_SAFETY_CHECKS)) && (__GNUC__ > 3 || (__GNUC__ == 3 && _
_GNUC_MINOR__ >= 3)) | |
| # define EINA_ARG_NONNULL(...) __attribute__ ((__nonnull__(__VA_ARGS__))) | | # define EINA_ARG_NONNULL(...) __attribute__ ((__nonnull__(__VA_ARGS__))) | |
| | | | |
| skipping to change at line 142 | | skipping to change at line 145 | |
| # define EINA_PRINTF(fmt, arg) __attribute__((__format__ (__gnu_printf__,
fmt, arg))) | | # define EINA_PRINTF(fmt, arg) __attribute__((__format__ (__gnu_printf__,
fmt, arg))) | |
| # else | | # else | |
| # define EINA_PRINTF(fmt, arg) __attribute__((__format__ (__printf__, fmt
, arg))) | | # define EINA_PRINTF(fmt, arg) __attribute__((__format__ (__printf__, fmt
, arg))) | |
| # endif | | # endif | |
| # define EINA_SCANF(fmt, arg) __attribute__((__format__ (__scanf__, fmt,
arg))) | | # define EINA_SCANF(fmt, arg) __attribute__((__format__ (__scanf__, fmt,
arg))) | |
| # define EINA_FORMAT(fmt) __attribute__((__format_arg__(fmt))) | | # define EINA_FORMAT(fmt) __attribute__((__format_arg__(fmt))) | |
| # define EINA_CONST __attribute__((__const__)) | | # define EINA_CONST __attribute__((__const__)) | |
| # define EINA_NOINSTRUMENT __attribute__((__no_instrument_function__)) | | # define EINA_NOINSTRUMENT __attribute__((__no_instrument_function__)) | |
| # define EINA_UNLIKELY(exp) __builtin_expect((exp), 0) | | # define EINA_UNLIKELY(exp) __builtin_expect((exp), 0) | |
| # define EINA_LIKELY(exp) __builtin_expect((exp), 1) | | # define EINA_LIKELY(exp) __builtin_expect((exp), 1) | |
|
| | | # define EINA_SENTINEL __attribute__((__sentinel__)) | |
| # else | | # else | |
| # define EINA_PRINTF(fmt, arg) | | # define EINA_PRINTF(fmt, arg) | |
| # define EINA_SCANF(fmt, arg) | | # define EINA_SCANF(fmt, arg) | |
| # define EINA_FORMAT(fmt) | | # define EINA_FORMAT(fmt) | |
| # define EINA_CONST | | # define EINA_CONST | |
| # define EINA_NOINSTRUMENT | | # define EINA_NOINSTRUMENT | |
| # define EINA_UNLIKELY(exp) exp | | # define EINA_UNLIKELY(exp) exp | |
| # define EINA_LIKELY(exp) exp | | # define EINA_LIKELY(exp) exp | |
|
| | | # define EINA_SENTINEL | |
| # endif | | # endif | |
| | | | |
| #elif defined(_WIN32) | | #elif defined(_WIN32) | |
| # define EINA_WARN_UNUSED_RESULT | | # define EINA_WARN_UNUSED_RESULT | |
| # define EINA_ARG_NONNULL(...) | | # define EINA_ARG_NONNULL(...) | |
| # if defined(_MSC_VER) && _MSC_VER >= 1300 | | # if defined(_MSC_VER) && _MSC_VER >= 1300 | |
| # define EINA_DEPRECATED __declspec(deprecated) | | # define EINA_DEPRECATED __declspec(deprecated) | |
| # else | | # else | |
| # define EINA_DEPRECATED | | # define EINA_DEPRECATED | |
| # endif | | # endif | |
| # define EINA_MALLOC | | # define EINA_MALLOC | |
| # define EINA_PURE | | # define EINA_PURE | |
| # define EINA_PRINTF(fmt, arg) | | # define EINA_PRINTF(fmt, arg) | |
| # define EINA_SCANF(fmt, arg) | | # define EINA_SCANF(fmt, arg) | |
| # define EINA_FORMAT(fmt) | | # define EINA_FORMAT(fmt) | |
| # define EINA_CONST | | # define EINA_CONST | |
| # define EINA_NOINSTRUMENT | | # define EINA_NOINSTRUMENT | |
| # define EINA_UNLIKELY(exp) exp | | # define EINA_UNLIKELY(exp) exp | |
| # define EINA_LIKELY(exp) exp | | # define EINA_LIKELY(exp) exp | |
|
| | | # define EINA_SENTINEL | |
| | | | |
| #elif defined(__SUNPRO_C) | | #elif defined(__SUNPRO_C) | |
| # define EINA_WARN_UNUSED_RESULT | | # define EINA_WARN_UNUSED_RESULT | |
| # define EINA_ARG_NONNULL(...) | | # define EINA_ARG_NONNULL(...) | |
| # define EINA_DEPRECATED | | # define EINA_DEPRECATED | |
| # if __SUNPRO_C >= 0x590 | | # if __SUNPRO_C >= 0x590 | |
| # define EINA_MALLOC __attribute__ ((malloc)) | | # define EINA_MALLOC __attribute__ ((malloc)) | |
| # define EINA_PURE __attribute__ ((pure)) | | # define EINA_PURE __attribute__ ((pure)) | |
| # else | | # else | |
| # define EINA_MALLOC | | # define EINA_MALLOC | |
| | | | |
| skipping to change at line 192 | | skipping to change at line 198 | |
| # define EINA_SCANF(fmt, arg) | | # define EINA_SCANF(fmt, arg) | |
| # define EINA_FORMAT(fmt) | | # define EINA_FORMAT(fmt) | |
| # if __SUNPRO_C >= 0x590 | | # if __SUNPRO_C >= 0x590 | |
| # define EINA_CONST __attribute__ ((const)) | | # define EINA_CONST __attribute__ ((const)) | |
| # else | | # else | |
| # define EINA_CONST | | # define EINA_CONST | |
| # endif | | # endif | |
| # define EINA_NOINSTRUMENT | | # define EINA_NOINSTRUMENT | |
| # define EINA_UNLIKELY(exp) exp | | # define EINA_UNLIKELY(exp) exp | |
| # define EINA_LIKELY(exp) exp | | # define EINA_LIKELY(exp) exp | |
|
| | | # define EINA_SENTINEL | |
| | | | |
| #else /* ! __GNUC__ && ! _WIN32 && ! __SUNPRO_C */ | | #else /* ! __GNUC__ && ! _WIN32 && ! __SUNPRO_C */ | |
| | | | |
| /** | | /** | |
| * @def EINA_WARN_UNUSED_RESULT | | * @def EINA_WARN_UNUSED_RESULT | |
| * Used to warn when the returned value of the function is not used. | | * Used to warn when the returned value of the function is not used. | |
| */ | | */ | |
| # define EINA_WARN_UNUSED_RESULT | | # define EINA_WARN_UNUSED_RESULT | |
| | | | |
| /** | | /** | |
| | | | |
| skipping to change at line 263 | | skipping to change at line 270 | |
| /** | | /** | |
| * @def EINA_UNLIKELY | | * @def EINA_UNLIKELY | |
| * @param exp The expression to be used. | | * @param exp The expression to be used. | |
| */ | | */ | |
| # define EINA_UNLIKELY(exp) exp | | # define EINA_UNLIKELY(exp) exp | |
| /** | | /** | |
| * @def EINA_LIKELY | | * @def EINA_LIKELY | |
| * @param exp The expression to be used. | | * @param exp The expression to be used. | |
| */ | | */ | |
| # define EINA_LIKELY(exp) exp | | # define EINA_LIKELY(exp) exp | |
|
| | | /** | |
| | | * @def EINA_SENTINEL | |
| | | * @brief Attribute from gcc to prevent calls without the necessary NULL | |
| | | * sentinel in certain variadic functions | |
| | | * @since 1.7.0 | |
| | | */ | |
| | | # define EINA_SENTINEL | |
| #endif /* ! __GNUC__ && ! _WIN32 && ! __SUNPRO_C */ | | #endif /* ! __GNUC__ && ! _WIN32 && ! __SUNPRO_C */ | |
| | | | |
| /** | | /** | |
| * @typedef Eina_Bool | | * @typedef Eina_Bool | |
| * Type to mimic a boolean. | | * Type to mimic a boolean. | |
| * | | * | |
| * @note it differs from stdbool.h as this is defined as an unsigned | | * @note it differs from stdbool.h as this is defined as an unsigned | |
| * char to make it usable by bitfields (Eina_Bool name:1) and | | * char to make it usable by bitfields (Eina_Bool name:1) and | |
| * also take as few bytes as possible. | | * also take as few bytes as possible. | |
| */ | | */ | |
| | | | |
End of changes. 6 change blocks. |
| 0 lines changed or deleted | | 14 lines changed or added | |
|
| eina_ustringshare.h | | eina_ustringshare.h | |
| | | | |
| skipping to change at line 160 | | skipping to change at line 160 | |
| /** | | /** | |
| * @brief Note that the given string has lost an instance. | | * @brief Note that the given string has lost an instance. | |
| * | | * | |
| * @param str string The given string. | | * @param str string The given string. | |
| * | | * | |
| * This function decreases the reference counter associated to @p str | | * This function decreases the reference counter associated to @p str | |
| * if it exists. If that counter reaches 0, the memory associated to | | * if it exists. If that counter reaches 0, the memory associated to | |
| * @p str is freed. If @p str is @c NULL, the function returns | | * @p str is freed. If @p str is @c NULL, the function returns | |
| * immediately. | | * immediately. | |
| * | | * | |
|
| * Note that if the given pointer is not shared or @c NULL, bad things | | * @note If the given pointer is not shared, bad things will happen, likely | |
| * will happen, likely a segmentation fault. | | a | |
| | | * segmentation fault. | |
| */ | | */ | |
| EAPI void eina_ustringshare_del(const Eina_Unicode *str); | | EAPI void eina_ustringshare_del(const Eina_Unicode *str); | |
| | | | |
| /** | | /** | |
| * @brief Note that the given string @b must be shared. | | * @brief Note that the given string @b must be shared. | |
| * | | * | |
| * @param str the shared string to know the length. It is safe to | | * @param str the shared string to know the length. It is safe to | |
| * give @c NULL, in that case @c -1 is returned. | | * give @c NULL, in that case @c -1 is returned. | |
| * | | * | |
| * This function is a cheap way to known the length of a shared | | * This function is a cheap way to known the length of a shared | |
|
| * string. Note that if the given pointer is not shared, bad | | * string. | |
| * things will happen, likely a segmentation fault. If in doubt, try | | * | |
| * strlen(). | | * @note If the given pointer is not shared, bad things will happen, likely | |
| | | a | |
| | | * segmentation fault. If in doubt, try strlen(). | |
| */ | | */ | |
| EAPI int eina_ustringshare_strlen(const Eina_Unicode *str)
EINA_PURE EINA_WARN_UNUSED_RESULT; | | EAPI int eina_ustringshare_strlen(const Eina_Unicode *str)
EINA_PURE EINA_WARN_UNUSED_RESULT; | |
| | | | |
| /** | | /** | |
| * @brief Dump the contents of the share_common. | | * @brief Dump the contents of the share_common. | |
| * | | * | |
| * This function dumps all strings in the share_common to stdout with a | | * This function dumps all strings in the share_common to stdout with a | |
| * DDD: prefix per line and a memory usage summary. | | * DDD: prefix per line and a memory usage summary. | |
| */ | | */ | |
| EAPI void eina_ustringshare_dump(void); | | EAPI void eina_ustringshare_dump(void); | |
| | | | |
End of changes. 2 change blocks. |
| 5 lines changed or deleted | | 8 lines changed or added | |
|