efl: add a way to allocate without memcpy data in an Eina_Inarray.

SVN revision: 81913
This commit is contained in:
Cedric BAIL 2012-12-31 00:05:02 +00:00
parent f8ea554926
commit 375be85b27
2 changed files with 28 additions and 1 deletions

View File

@ -413,6 +413,22 @@ eina_inarray_push(Eina_Inarray *array, const void *data)
return array->len - 1;
}
EAPI void *
eina_inarray_add(Eina_Inarray *array)
{
void *p;
EINA_MAGIC_CHECK_INARRAY(array, NULL);
if (!_eina_inarray_resize(array, array->len + 1))
return NULL;
p = _eina_inarray_get(array, array->len);
array->len++;
return p;
}
EAPI int
eina_inarray_insert(Eina_Inarray *array, const void *data, Eina_Compare_Cb compare)
{
@ -507,7 +523,7 @@ eina_inarray_pop(Eina_Inarray *array)
if (!_eina_inarray_resize(array, array->len - 1))
return NULL;
array->len--;
return _eina_inarray_get(array, array->len + 1);
return _eina_inarray_get(array, array->len);
}
EAPI void *

View File

@ -291,6 +291,17 @@ EAPI void eina_inarray_flush(Eina_Inarray *array) EINA_ARG_NONNULL(1);
EAPI int eina_inarray_push(Eina_Inarray *array,
const void *data) EINA_ARG_NONNULL(1, 2);
/**
* @brief Allocate a new item at the end of the array.
* @param array array object
*
* The returned pointer is only valid until you use any other eina_inarray
* function.
*
* @since 1.8
*/
EAPI void *eina_inarray_add(Eina_Inarray *array);
/**
* @brief Copy the data to array at position found by comparison function
* @param array array object