65 lines
1.6 KiB
C
65 lines
1.6 KiB
C
#ifndef FX_COLLECTIONS_ARRAY_H_
|
|
#define FX_COLLECTIONS_ARRAY_H_
|
|
|
|
#include <fx/iterator.h>
|
|
#include <fx/macros.h>
|
|
#include <fx/misc.h>
|
|
#include <fx/status.h>
|
|
|
|
FX_DECLS_BEGIN;
|
|
|
|
#define FX_TYPE_ARRAY (fx_array_get_type())
|
|
#define FX_TYPE_ARRAY_ITERATOR (fx_array_iterator_get_type())
|
|
|
|
struct fx_array_p;
|
|
|
|
FX_DECLARE_TYPE(fx_array);
|
|
FX_DECLARE_TYPE(fx_array_iterator);
|
|
|
|
FX_TYPE_CLASS_DECLARATION_BEGIN(fx_array)
|
|
FX_TYPE_CLASS_DECLARATION_END(fx_array)
|
|
|
|
FX_TYPE_CLASS_DECLARATION_BEGIN(fx_array_iterator)
|
|
FX_TYPE_CLASS_DECLARATION_END(fx_array_iterator)
|
|
|
|
FX_API fx_type_id fx_array_get_type(void);
|
|
FX_API fx_type_id fx_array_iterator_get_type(void);
|
|
|
|
FX_TYPE_DEFAULT_CONSTRUCTOR(fx_array, FX_TYPE_ARRAY);
|
|
|
|
FX_API fx_array *fx_array_create_with_values(
|
|
const fx_value *values,
|
|
size_t nr_values);
|
|
|
|
FX_API void fx_array_clear(fx_array *array);
|
|
|
|
FX_API fx_status fx_array_push_back(fx_array *array, fx_value value);
|
|
|
|
FX_API fx_status fx_array_push_front(fx_array *array, fx_value value);
|
|
|
|
FX_API fx_status fx_array_insert(fx_array *array, fx_value value, size_t at);
|
|
|
|
FX_API fx_status fx_array_remove(fx_array *array, size_t at);
|
|
|
|
FX_API fx_status fx_array_remove_front(fx_array *array);
|
|
|
|
FX_API fx_status fx_array_remove_back(fx_array *array);
|
|
|
|
FX_API fx_value fx_array_pop(fx_array *array, size_t at);
|
|
|
|
FX_API fx_value fx_array_pop_front(fx_array *array);
|
|
|
|
FX_API fx_value fx_array_pop_back(fx_array *array);
|
|
|
|
FX_API fx_value *fx_array_get_ref(const fx_array *array, size_t at);
|
|
|
|
FX_API fx_value fx_array_get(const fx_array *array, size_t at);
|
|
|
|
FX_API size_t fx_array_get_size(const fx_array *array);
|
|
|
|
FX_API size_t fx_array_get_capacity(const fx_array *array);
|
|
|
|
FX_DECLS_END;
|
|
|
|
#endif
|