#ifndef EINA_INLINE_ARRAY_X_
#define EINA_INLINE_ARRAY_X_
-#ifdef EINA_RWLOCKS_ENABLED
-# include <pthread.h>
-#endif
-
-extern Eina_Bool _eina_array_threadsafety;
/**
* @cond LOCAL
*/
{
if (!data) return EINA_FALSE;
-#ifdef EINA_RWLOCKS_ENABLED
- if (_eina_array_threadsafety)
- pthread_rwlock_wrlock(&array->lock);
-#endif
+ if (!eina_array_wrlock(array))
+ return EINA_FALSE;
if (EINA_UNLIKELY((array->count + 1) > array->total))
if (!eina_array_grow(array))
{
-
-#ifdef EINA_RWLOCKS_ENABLED
- if (_eina_array_threadsafety)
- pthread_rwlock_unlock(&array->lock);
-#endif
-
+ eina_array_unlock(array);
return EINA_FALSE;
}
array->data[array->count++] = (void*) data;
-#ifdef EINA_RWLOCKS_ENABLED
- if (_eina_array_threadsafety)
- pthread_rwlock_unlock(&array->lock);
-#endif
+ eina_array_unlock(array);
return EINA_TRUE;
}
{
void *ret = NULL;
-#ifdef EINA_RWLOCKS_ENABLED
- if (_eina_array_threadsafety)
- pthread_rwlock_wrlock(&array->lock);
-#endif
+ if (!eina_array_wrlock(array))
+ return NULL;
if (array->count <= 0)
{
-
-#ifdef EINA_RWLOCKS_ENABLED
- if (_eina_array_threadsafety)
- pthread_rwlock_unlock(&array->lock);
-#endif
-
+ eina_array_unlock(array);
return NULL;
}
ret = array->data[--array->count];
-#ifdef EINA_RWLOCKS_ENABLED
- if (_eina_array_threadsafety)
- pthread_rwlock_unlock(&array->lock);
-#endif
+ eina_array_unlock(array);
return ret;
}
* idx. If it is @c NULL or invalid, the program may crash.
*/
static inline void *
-eina_array_data_get(Eina_Array *array, unsigned int idx)
+eina_array_data_get(const Eina_Array *array, unsigned int idx)
{
- void *ret = NULL;
-
-#ifdef EINA_RWLOCKS_ENABLED
- if (_eina_array_threadsafety)
- pthread_rwlock_rdlock(&array->lock);
-#endif
-
- ret = array->data[idx];
-
-#ifdef EINA_RWLOCKS_ENABLED
- if (_eina_array_threadsafety)
- pthread_rwlock_unlock(&array->lock);
-#endif
-
- return ret;
+ return array->data[idx];
}
/**
* idx. If it is @c NULL or invalid, the program may crash.
*/
static inline void
-eina_array_data_set(Eina_Array *array, unsigned int idx, const void *data)
+eina_array_data_set(const Eina_Array *array, unsigned int idx, const void *data)
{
-#ifdef EINA_RWLOCKS_ENABLED
- if (_eina_array_threadsafety)
- pthread_rwlock_wrlock(&array->lock);
-#endif
-
array->data[idx] = (void*) data;
-
-#ifdef EINA_RWLOCKS_ENABLED
- if (_eina_array_threadsafety)
- pthread_rwlock_unlock(&array->lock);
-#endif
}
/**
* @c NULL or invalid, the program may crash.
*/
static inline unsigned int
-eina_array_count_get(Eina_Array *array)
+eina_array_count_get(const Eina_Array *array)
{
-#ifdef EINA_RWLOCKS_ENABLED
- if (_eina_array_threadsafety)
- pthread_rwlock_rdlock(&array->lock);
-#endif
-
return array->count;
-
-#ifdef EINA_RWLOCKS_ENABLED
- if (_eina_array_threadsafety)
- pthread_rwlock_unlock(&array->lock);
-#endif
}
/**