56 lines
1.6 KiB
C
56 lines
1.6 KiB
C
#ifndef __al_included_allegro5_aintern_vector_h
|
|
#define __al_included_allegro5_aintern_vector_h
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
|
|
typedef struct _AL_VECTOR
|
|
{
|
|
/* private */
|
|
size_t _itemsize;
|
|
char* _items; /* total size == (size + unused) * itemsize */
|
|
size_t _size;
|
|
size_t _unused;
|
|
} _AL_VECTOR;
|
|
|
|
#define _AL_VECTOR_INITIALIZER(typ) { sizeof(typ), 0, 0, 0 }
|
|
|
|
|
|
AL_FUNC(void, _al_vector_init, (_AL_VECTOR*, size_t itemsize));
|
|
AL_INLINE(size_t, _al_vector_size, (const _AL_VECTOR *vec),
|
|
{
|
|
return vec->_size;
|
|
})
|
|
AL_INLINE(bool, _al_vector_is_empty, (const _AL_VECTOR *vec),
|
|
{
|
|
ASSERT(vec);
|
|
return vec->_size == 0 ? true : false;
|
|
})
|
|
AL_INLINE(bool, _al_vector_is_nonempty, (const _AL_VECTOR *vec),
|
|
{
|
|
ASSERT(vec);
|
|
return !_al_vector_is_empty(vec);
|
|
})
|
|
AL_FUNC(void*, _al_vector_ref, (const _AL_VECTOR*, unsigned int index));
|
|
AL_FUNC(void*, _al_vector_ref_front, (const _AL_VECTOR*));
|
|
AL_FUNC(void*, _al_vector_ref_back, (const _AL_VECTOR*));
|
|
AL_FUNC(bool, _al_vector_append_array, (_AL_VECTOR *vec, unsigned int num, const void *arr));
|
|
AL_FUNC(void*, _al_vector_alloc_back, (_AL_VECTOR*));
|
|
AL_FUNC(void*, _al_vector_alloc_mid, (_AL_VECTOR*, unsigned int index));
|
|
AL_FUNC(int, _al_vector_find, (const _AL_VECTOR*, const void *ptr_item));
|
|
AL_FUNC(bool, _al_vector_contains, (const _AL_VECTOR*, const void *ptr_item));
|
|
AL_FUNC(void, _al_vector_delete_at, (_AL_VECTOR*, unsigned int index));
|
|
AL_FUNC(bool, _al_vector_find_and_delete, (_AL_VECTOR*, const void *ptr_item));
|
|
AL_FUNC(void, _al_vector_free, (_AL_VECTOR*));
|
|
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif
|
|
|
|
/* vi ts=8 sts=3 sw=3 et */
|