⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 array.c

📁 FinC is Fava in C! A C-like syntax language. It s designed to apply to embededd system.
💻 C
字号:
#include <array.h>#include <mem.h>#include <object.h>struct _Array{    Object parent;    ADT* data;        int item_size;    int size;};Array* array_new (int p_item_size){    Array *self;    self = (Array*)mem_new(sizeof(Array));    object_init_object (OBJECT (self), array_destroy);    self->data = NULL;    self->item_size = p_item_size;    self->size = 0;    return self;}Array* array_new_size (int p_item_size, int p_size){    Array* self;        self = (Array*)mem_new(sizeof(Array));    object_init_object (OBJECT(self), array_destroy);    self->data = mem_new(p_size*p_item_size);    self->item_size = p_item_size;    self->size = 0;    }void array_destroy (Object* self){    array_clear ( (Array*)self );    mem_destroy ( ((Array*)self)->data);    mem_destroy (self);}void array_clear (Array* self){    while (array_get_size (self))array_remove (self, 0);}Bool array_isempty (Array* self){    return self->size==0? TRUE:FALSE;}int array_get_size (Array* self){    return self->size;}void array_resize (Array* self, int p_newsize){    self->data = mem_resize( self->data, p_newsize * self->item_size);    self->size = p_newsize;}ADT array_at (Array* self, int p_index){    if (p_index < self->size)	return addref (Object, self->data+p_index*self->item_size);    else	return NULL;}void array_set (Array* self, int p_index, ADT p_item){    mem_copy(self->data+p_index*self->item_size, p_item, self->item_size);}void array_insert (Array* self, ADT p_item){    self->size++;    array_resize (self, self->size);    mem_copy(self->data+self->item_size*self->size, p_item, self->item_size);}void array_remove (Array* self, int p_index){    self->size--;    unref (self->data[p_index]);    mem_copy (&(self->data+p_index*self->item_size + 1), &(self->data+p_index*self->item_size), (self->size - p_index) * self->item_size);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -