44 lines
2.1 KiB
C
44 lines
2.1 KiB
C
/********************************************************************
|
|
** Copyright (c) 2018-2020 Guan Wenliang
|
|
** This file is part of the Berry default interpreter.
|
|
** skiars@qq.com, https://github.com/Skiars/berry
|
|
** See Copyright Notice in the LICENSE file or at
|
|
** https://github.com/Skiars/berry/blob/master/LICENSE
|
|
********************************************************************/
|
|
#ifndef BE_VECTOR_H
|
|
#define BE_VECTOR_H
|
|
|
|
#include "be_object.h"
|
|
|
|
/* =============================== defines =============================== */
|
|
#define be_vector_data(vector) ((vector)->data)
|
|
#define be_vector_first(vector) ((vector)->data)
|
|
#define be_vector_isend(vector, item) ((item) > (vector)->end)
|
|
#define be_vector_isempty(vector) (!(vector)->count)
|
|
#define be_vector_end(vector) ((vector)->end)
|
|
#define be_vector_count(vector) ((vector)->count)
|
|
#define be_vector_capacity(vector) ((vector)->capacity)
|
|
#define be_stack_init(vm, stack, size) be_vector_init(vm, stack, size)
|
|
#define be_stack_delete(vm, stack) be_vector_delete(vm, stack)
|
|
#define be_stack_clear(stack) be_vector_clear(stack)
|
|
#define be_stack_push(vm, stack, data) be_vector_push(vm, stack, data)
|
|
#define be_stack_pop(stack) be_vector_remove_end(stack)
|
|
#define be_stack_top(stack) be_vector_end(stack)
|
|
#define be_stack_base(stack) be_vector_first(stack)
|
|
#define be_stack_count(stack) be_vector_count(stack)
|
|
#define be_stack_isempty(stack) be_vector_isempty(stack)
|
|
|
|
/* ========================== function extern ========================== */
|
|
void be_vector_init(bvm *vm, bvector *vector, int size);
|
|
void be_vector_delete(bvm *vm, bvector *vector);
|
|
void* be_vector_at(bvector *vector, int index);
|
|
void be_vector_push(bvm *vm, bvector *vector, void *data);
|
|
void be_vector_push_c(bvm *vm, bvector *vector, void *data);
|
|
void be_vector_remove_end(bvector *vector);
|
|
void be_vector_resize(bvm *vm, bvector *vector, int count);
|
|
void be_vector_clear(bvector *vector);
|
|
void* be_vector_release(bvm *vm, bvector *vector);
|
|
int be_nextsize(int value);
|
|
|
|
#endif
|