Tizen Native API
|
Inline array is a container that stores the data itself, not the pointers to the data,.
- Since (EFL) :
- 1.2
this means there is no memory fragmentation, also for small data types(such as char, short, int, and so on) it's more memory efficient.
Usage of the inline array is very similar to that of other Containers, like all arrays adding elements to the beginning of the array is a lot more costly than appending, so those operations should be minimized.
Functions | |
Eina_Inarray * | eina_inarray_new (unsigned int member_size, unsigned int step) |
Creates a new inline array. | |
void | eina_inarray_free (Eina_Inarray *array) |
Frees an array and its members. | |
void | eina_inarray_step_set (Eina_Inarray *array, unsigned int sizeof_eina_inarray, unsigned int member_size, unsigned int step) |
Initializes an inline array. | |
void | eina_inarray_flush (Eina_Inarray *array) |
Removes every member from the array. | |
int | eina_inarray_push (Eina_Inarray *array, const void *data) 2) |
Copies the data as the last member of the array. | |
int | eina_inarray_insert (Eina_Inarray *array, const void *data, Eina_Compare_Cb compare) 2 |
Copies the data to the array at a position found by the comparison function. | |
int int | eina_inarray_insert_sorted (Eina_Inarray *array, const void *data, Eina_Compare_Cb compare) 2 |
Copies the data to the array at a position found by the comparison function. | |
int int int | eina_inarray_remove (Eina_Inarray *array, const void *data) 2) |
Finds data and removes the matching member. | |
void * | eina_inarray_pop (Eina_Inarray *array) |
Removes the last member of the array. | |
void * | eina_inarray_nth (const Eina_Inarray *array, unsigned int position) |
Gets the member at the given position. | |
Eina_Bool | eina_inarray_insert_at (Eina_Inarray *array, unsigned int position, const void *data) 3) |
Copies the data at the given position in the array. | |
void * | eina_inarray_alloc_at (Eina_Inarray *array, unsigned int position, unsigned int member_count) |
Opens a space at the given position, returning its pointer. | |
Eina_Bool | eina_inarray_replace_at (Eina_Inarray *array, unsigned int position, const void *data) 3) |
Copies the data to the given position. | |
Eina_Bool | eina_inarray_remove_at (Eina_Inarray *array, unsigned int position) |
Removes a member from the given position. | |
void | eina_inarray_reverse (Eina_Inarray *array) |
Reverses members in the array. | |
void | eina_inarray_sort (Eina_Inarray *array, Eina_Compare_Cb compare) 2) |
Applies a quick sort to the array. | |
int | eina_inarray_search (const Eina_Inarray *array, const void *data, Eina_Compare_Cb compare) 2 |
Searches for a member (linear walk). | |
int int | eina_inarray_search_sorted (const Eina_Inarray *array, const void *data, Eina_Compare_Cb compare) 2 |
Searches for member (binary search walk). | |
int int Eina_Bool | eina_inarray_foreach (const Eina_Inarray *array, Eina_Each_Cb function, const void *user_data) 2) |
Calls function for each array member. | |
int | eina_inarray_foreach_remove (Eina_Inarray *array, Eina_Each_Cb match, const void *user_data) 2) |
Removes all the members that match. | |
unsigned int | eina_inarray_count (const Eina_Inarray *array) |
Counts the number of members in an array. | |
Eina_Iterator * | eina_inarray_iterator_new (const Eina_Inarray *array) |
Returns a new iterator associated to an array. | |
Eina_Iterator * | eina_inarray_iterator_reversed_new (const Eina_Inarray *array) |
Returns a new reversed iterator associated to an array. | |
Eina_Accessor * | eina_inarray_accessor_new (const Eina_Inarray *array) |
Returns a new accessor associated to an array. | |
Typedefs | |
typedef struct _Eina_Inarray | Eina_Inarray |
The structure type for the inlined array type. | |
Defines | |
#define | EINA_INARRAY_FOREACH(array, itr) |
Walks through an array linearly from head to tail. | |
#define | EINA_INARRAY_REVERSE_FOREACH(array, itr) |
Walks through an array linearly from tail to head. |
Define Documentation
#define EINA_INARRAY_FOREACH | ( | array, | |
itr | |||
) |
for ((itr) = (array)->members; \
(itr) < (((typeof(*itr)*)(array)->members) + (array)->len); \
(itr)++)
Walks through an array linearly from head to tail.
- Since (EFL) :
- 1.2
- Since :
- 2.3.1
- Remarks:
- itr must be a pointer with sizeof(itr*) == array->member_size.
-
This is fast as it does direct pointer access, but it does not check for
NULL
pointers or invalid array objects. Use eina_inarray_foreach() to do that. - Do not modify an array as you walk through it. If that is desired, then use eina_inarray_foreach_remove().
- Parameters:
-
array The array object itr An iterator pointer
#define EINA_INARRAY_REVERSE_FOREACH | ( | array, | |
itr | |||
) |
for ((itr) = ((((typeof(*(itr))*)(array)->members) + (array)->len) - 1); \
(((itr) >= (typeof(*(itr))*)(array)->members) \
&& ((array)->members != NULL)); \
(itr)--)
Walks through an array linearly from tail to head.
- Since (EFL) :
- 1.2
- Since :
- 2.3.1
- Remarks:
- itr must be a pointer with sizeof(itr*) == array->member_size.
-
This is fast as it does direct pointer access, but it does not check for
NULL
pointers or invalid array objects. - Do not modify an array as you walk through it. If that is desired, then use eina_inarray_foreach_remove().
- Parameters:
-
array The array object itr An iterator pointer
Typedef Documentation
The structure type for the inlined array type.
- Since (EFL) :
- 1.2
Function Documentation
Eina_Accessor* eina_inarray_accessor_new | ( | const Eina_Inarray * | array | ) |
Returns a new accessor associated to an array.
This function returns a newly allocated accessor associated to array.
If the memory cannot be allocated, NULL
is returned and EINA_ERROR_OUT_OF_MEMORY is set. Otherwise, a valid accessor is returned.
- Since (EFL) :
- 1.2
- Since :
- 2.3.1
- Parameters:
-
[in] array The array object
- Returns:
- A new accessor
void* eina_inarray_alloc_at | ( | Eina_Inarray * | array, |
unsigned int | position, | ||
unsigned int | member_count | ||
) |
Opens a space at the given position, returning its pointer.
- Since (EFL) :
- 1.2
- Since :
- 2.3.1
- Remarks:
- This is similar to eina_inarray_insert_at(), but useful if the members contents are still unknown or unallocated. It makes room for the required number of items and returns the pointer to the first item, similar to malloc(member_count * member_size), with the guarantee that all the memory is within the members array.
The new member memory is undefined, it's not automatically zeroed.
- Remarks:
- All the members from position to the end of the array are shifted to the end.
If position is equal to the end of the array (equal to eina_inarray_count()), then the member is appended.
If position is bigger than the array length, it fails.
- Parameters:
-
[in] array The array object [in] position The position to insert first member at (open/allocate space) [in] member_count The number of times member_size
bytes are allocated
- Returns:
- A pointer to the first member memory allocated, otherwise
NULL
on errors
unsigned int eina_inarray_count | ( | const Eina_Inarray * | array | ) |
Counts the number of members in an array.
- Since (EFL) :
- 1.2
- Since :
- 2.3.1
- Parameters:
-
[in] array The array object
- Returns:
- The number of members in the array
void eina_inarray_flush | ( | Eina_Inarray * | array | ) |
Removes every member from the array.
- Since (EFL) :
- 1.2
- Since :
- 2.3.1
- Parameters:
-
[in] array The array object
int int Eina_Bool eina_inarray_foreach | ( | const Eina_Inarray * | array, |
Eina_Each_Cb | function, | ||
const void * | user_data | ||
) |
Calls function for each array member.
This calls function for every given data in array.
- Since (EFL) :
- 1.2
- Since :
- 2.3.1
- Remarks:
- This is a safe way to iterate over an array. function should return
EINA_TRUE
as long as you want the function to continue iterating, by returningEINA_FALSE
it stops and returnsEINA_FALSE
as the result.
The data given to function is a pointer to the member memory itself.
- Parameters:
-
[in] array The array object [in] function The callback function [in] user_data The user data given to a callback function
- Returns:
EINA_TRUE
if it successfully iterates all the items of the array
- See also:
- EINA_INARRAY_FOREACH()
int eina_inarray_foreach_remove | ( | Eina_Inarray * | array, |
Eina_Each_Cb | match, | ||
const void * | user_data | ||
) |
Removes all the members that match.
This removes all the entries in array, where the match function returns EINA_TRUE
.
- Since (EFL) :
- 1.2
- Since :
- 2.3.1
- Parameters:
-
[in] array The array object [in] match The match function [in] user_data The user data given to callback match
- Returns:
- The number of removed entries, otherwise
-1
on error
void eina_inarray_free | ( | Eina_Inarray * | array | ) |
Frees an array and its members.
- Since (EFL) :
- 1.2
- Since :
- 2.3.1
- Parameters:
-
[in] array The array object
- See also:
- eina_inarray_flush()
int eina_inarray_insert | ( | Eina_Inarray * | array, |
const void * | data, | ||
Eina_Compare_Cb | compare | ||
) |
Copies the data to the array at a position found by the comparison function.
This copies the given pointer contents at the array position defined by the given compare function. The pointer is not referenced, instead its contents are copied to the members array using the previously defined member_size
.
- Since (EFL) :
- 1.2
- Since :
- 2.3.1
- Remarks:
- The data given to the compare function is a pointer to the member memory itself, do no change it.
- Parameters:
-
[in] array The array object [in] data The data to be copied [in] compare The compare function
- Returns:
- The index of the new member, otherwise
-1
on errors
Eina_Bool eina_inarray_insert_at | ( | Eina_Inarray * | array, |
unsigned int | position, | ||
const void * | data | ||
) |
Copies the data at the given position in the array.
This copies the given pointer contents at the given position in the array. The pointer is not referenced, instead its contents are copied to the members array using the previously defined member_size
.
All the members from position to the end of the array are shifted to the end.
If position is equal to the end of the array (equal to eina_inarray_count()), then the member is appended.
If position is bigger than the array length, it fails.
- Since (EFL) :
- 1.2
- Since :
- 2.3.1
- Parameters:
-
[in] array The array object [in] position The position to insert the member at [in] data The data to be copied at the position
- Returns:
EINA_TRUE
on success, otherwiseEINA_FALSE
on failure
int int eina_inarray_insert_sorted | ( | Eina_Inarray * | array, |
const void * | data, | ||
Eina_Compare_Cb | compare | ||
) |
Copies the data to the array at a position found by the comparison function.
This copies the given pointer contents at the array position defined by the given compare function. The pointer is not referenced, instead its contents are copied to the members array using the previously defined member_size
.
- Since (EFL) :
- 1.2
- Since :
- 2.3.1
- Remarks:
- The data given to the compare function is a pointer to the member memory itself, do no change it.
- This variation optimizes the insertion position assuming that the array is already sorted by doing a binary search.
- Parameters:
-
[in] array The array object [in] data The data to be copied [in] compare The compare function
- Returns:
- The index of the new member, otherwise
-1
on errors
- See also:
- eina_inarray_sort()
Eina_Iterator* eina_inarray_iterator_new | ( | const Eina_Inarray * | array | ) |
Returns a new iterator associated to an array.
This function returns a newly allocated iterator associated to array.
If the memory cannot be allocated, NULL
is returned and EINA_ERROR_OUT_OF_MEMORY is set. Otherwise, a valid iterator is returned.
- Since (EFL) :
- 1.2
- Since :
- 2.3.1
- Remarks:
- If the array structure changes then the iterator becomes invalid. That is, if you add or remove members this iterator's behavior is undefined and your program may crash.
- Parameters:
-
[in] array The array object
- Returns:
- A new iterator
Eina_Iterator* eina_inarray_iterator_reversed_new | ( | const Eina_Inarray * | array | ) |
Returns a new reversed iterator associated to an array.
This function returns a newly allocated iterator associated to array.
If the memory cannot be allocated, NULL
is returned and EINA_ERROR_OUT_OF_MEMORY is set. Otherwise, a valid iterator is returned.
- Since (EFL) :
- 1.2
- Since :
- 2.3.1
- Remarks:
- Unlike eina_inarray_iterator_new(), this walks through the array backwards.
- If the array structure changes then the iterator becomes invalid. That is, if you add or remove nodes this iterator's behavior is undefined and your program may crash.
- Parameters:
-
[in] array The array object
- Returns:
- A new iterator
Eina_Inarray* eina_inarray_new | ( | unsigned int | member_size, |
unsigned int | step | ||
) |
Creates a new inline array.
This creates a new array where members are inlined in a sequence. Each member has member_size bytes.
- Since (EFL) :
- 1.2
- Since :
- 2.3.1
- Remarks:
- If the step is
0
, then a safe default is chosen. -
On failure,
NULL
is returned and EINA_ERROR_OUT_OF_MEMORY is set. If member_size is zero, thenNULL
is returned.
- Parameters:
-
[in] member_size The size of each member in the array [in] step The step size by which to resize the array, do this using the following extra amount
- Returns:
- The new inline array table, otherwise
NULL
on failure
- See also:
- eina_inarray_free()
void* eina_inarray_nth | ( | const Eina_Inarray * | array, |
unsigned int | position | ||
) |
Gets the member at the given position.
This gets the member given that its position in the array is provided. It is a pointer to its current memory, then it can be invalidated with functions that change the array such as eina_inarray_push(), eina_inarray_insert_at(), or eina_inarray_remove_at(), or variants.
- Since (EFL) :
- 1.2
- Since :
- 2.3.1
- Parameters:
-
[in] array The array object [in] position The member position
- Returns:
- A pointer to current the member memory
- See also:
- eina_inarray_lookup()
- eina_inarray_lookup_sorted()
void* eina_inarray_pop | ( | Eina_Inarray * | array | ) |
Removes the last member of the array.
- Since (EFL) :
- 1.2
- Since :
- 2.3.1
- Remarks:
- The data could be considered valid only until any other operation touched the Inarray.
- Parameters:
-
[in] array The array object
- Returns:
- The data poped out of the array
int eina_inarray_push | ( | Eina_Inarray * | array, |
const void * | data | ||
) |
Copies the data as the last member of the array.
This copies the given pointer contents at the end of the array. The pointer is not referenced, instead its contents are copied to the members array using the previously defined member_size
.
- Since (EFL) :
- 1.2
- Since :
- 2.3.1
- Parameters:
-
[in] array The array object [in] data The data to be copied at the end
- Returns:
- The index of the new member, otherwise
-1
on errors
- See also:
- eina_inarray_insert_at()
int int int eina_inarray_remove | ( | Eina_Inarray * | array, |
const void * | data | ||
) |
Finds data and removes the matching member.
This finds data in the array and removes it. Data may be an existing member of the array (then optimized) or the contents are matched using memcmp().
- Since (EFL) :
- 1.2
- Since :
- 2.3.1
- Parameters:
-
[in] array The array object [in] data The data to be found and removed
- Returns:
- The index of the removed member, otherwise
-1
on errors
Eina_Bool eina_inarray_remove_at | ( | Eina_Inarray * | array, |
unsigned int | position | ||
) |
Removes a member from the given position.
- Since (EFL) :
- 1.2
- Since :
- 2.3.1
- Remarks:
- The member is removed from an array and members after it are moved towards the array head.
- Parameters:
-
[in] array The array object [in] position The position from which to remove a member
- Returns:
EINA_TRUE
on success, otherwiseEINA_FALSE
on failure
- See also:
- eina_inarray_pop()
- eina_inarray_remove()
Eina_Bool eina_inarray_replace_at | ( | Eina_Inarray * | array, |
unsigned int | position, | ||
const void * | data | ||
) |
Copies the data to the given position.
This copies the given pointer contents at the given position in the array. The pointer is not referenced, instead its contents are copied to the members array using the previously defined member_size
.
If position does not exist, it fails.
- Since (EFL) :
- 1.2
- Since :
- 2.3.1
- Parameters:
-
[in] array The array object [in] position The position to copy the member at [in] data The data to be copied at the position
- Returns:
EINA_TRUE
on success, otherwiseEINA_FALSE
on failure
void eina_inarray_reverse | ( | Eina_Inarray * | array | ) |
Reverses members in the array.
- Since (EFL) :
- 1.2
- Since :
- 2.3.1
- Remarks:
- If you do not want to change the array, just walk through its elements backwards, then use the EINA_INARRAY_REVERSE_FOREACH() macro.
- Parameters:
-
[in] array The array object
- See also:
- EINA_INARRAY_REVERSE_FOREACH()
int eina_inarray_search | ( | const Eina_Inarray * | array, |
const void * | data, | ||
Eina_Compare_Cb | compare | ||
) |
Searches for a member (linear walk).
This walks through an array by linearly looking for the given data compared by the compare function.
The data given to the compare function is a pointer to the member memory itself, do no change it.
- Since (EFL) :
- 1.2
- Since :
- 2.3.1
- Parameters:
-
[in] array The array object [in] data The member to search using the compare function [in] compare The compare function
- Returns:
- The member index, otherwise
-1
if not found
- See also:
- eina_inarray_lookup_sorted()
- Since (EFL) :
- 1.2
- Since :
- 2.3.1
int int eina_inarray_search_sorted | ( | const Eina_Inarray * | array, |
const void * | data, | ||
Eina_Compare_Cb | compare | ||
) |
Searches for member (binary search walk).
- Since (EFL) :
- 1.2
- Since :
- 2.3.1
- Remarks:
- Uses a binary search for the given data as compared by the compare function.
The data given to the compare function is a pointer to the member memory itself, do no change it.
- Parameters:
-
[in] array The array object [in] data The member to search using the compare function [in] compare The compare function
- Returns:
- The member index, otherwise
-1
if not found
void eina_inarray_sort | ( | Eina_Inarray * | array, |
Eina_Compare_Cb | compare | ||
) |
Applies a quick sort to the array.
This applies a quick sort to the array.
- Since (EFL) :
- 1.2
- Since :
- 2.3.1
- Remarks:
- The data given to the compare function is a pointer to the member memory itself, do no change it.
- Parameters:
-
[in] array The array object [in] compare The compare function
- See also:
- eina_inarray_insert_sorted()
void eina_inarray_step_set | ( | Eina_Inarray * | array, |
unsigned int | sizeof_eina_inarray, | ||
unsigned int | member_size, | ||
unsigned int | step | ||
) |
Initializes an inline array.
This initializes an array. If the step is 0
, then a safe default is chosen.
- Since (EFL) :
- 1.2
- Since :
- 2.3.1
- Remarks:
- This is useful for arrays inlined into other structures or allocated to a stack.
- Parameters:
-
[in] array The array object to initialize [in] sizeof_eina_inarray The size of array object [in] member_size The size of each member in the array [in] step The step size by which to resize the array, do this using the following extra amount
- See also:
- eina_inarray_flush()