Files
fx/fx.collections/include/fx/collections/array.h
T

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