Voxia OS v0.0.1
Hobby Project Operating System Targeting x86-64
Loading...
Searching...
No Matches
vector.h File Reference
#include <type.h>
#include <memory/kalloc.h>

Go to the source code of this file.

Data Structures

struct  vector_T
 

Macros

#define VECTOR_MINIMUM_ITEM   5
 
#define vector(T)
 
#define define_vector(T)
 
#define vector_init(v)
 
#define vector_expand_capacity(v)
 
#define vector_push_back(v, val)
 
#define vector_destroy(v)
 
#define vector_clear(v)
 
#define vector_pop_back(v)
 

Macro Definition Documentation

◆ define_vector

#define define_vector ( T)
Value:
vector(T) { \
T* data; \
size_t size; \
size_t capacity; \
size_t alloc_size; \
}
struct fs_data data
Definition filesystem.h:1
#define vector(T)
Definition vector.h:11
size_t size
Definition vnode.h:3

Definition at line 12 of file vector.h.

◆ vector

◆ vector_clear

#define vector_clear ( v)
Value:
do { \
(v)->size = 0; \
} while (0)

Definition at line 57 of file vector.h.

◆ vector_destroy

#define vector_destroy ( v)
Value:
do { \
kfree((v)->data, (v)->capacity*(v)->alloc_size); \
} while (0)

Definition at line 52 of file vector.h.

◆ vector_expand_capacity

#define vector_expand_capacity ( v)
Value:
do { \
size_t new_capacity = (v)->capacity ? (v)->capacity * 2 : 4; \
typeof((v)->data) new_data = (typeof((v)->data)) kalloc( \
new_capacity * (v)->alloc_size); \
\
if ((v)->data) { \
memcopy(new_data, (v)->data, \
(v)->capacity*(v)->alloc_size); \
kfree((v)->data, (v)->capacity*(v)->alloc_size); \
} \
\
(v)->data = new_data; \
(v)->capacity = new_capacity; \
} while (0)
void * kalloc(size_t size)

Definition at line 29 of file vector.h.

◆ vector_init

#define vector_init ( v)
Value:
do { \
(v)->alloc_size = sizeof(typeof(*(v)->data)); \
(v)->data = (typeof(*(v)->data)*) kalloc(VECTOR_MINIMUM_ITEM \
* (v)->alloc_size); \
(v)->capacity = VECTOR_MINIMUM_ITEM; \
(v)->size = 0; \
} while (0)
#define VECTOR_MINIMUM_ITEM
Definition vector.h:9

Definition at line 20 of file vector.h.

Referenced by elf_dyn_map_all(), elf_get_symbol(), INIT(), and proccess_elf().

◆ VECTOR_MINIMUM_ITEM

#define VECTOR_MINIMUM_ITEM   5

Definition at line 9 of file vector.h.

Referenced by Vector< T >::Vector().

◆ vector_pop_back

#define vector_pop_back ( v)
Value:
do { \
if ((v)->size == 0) \
return NULL; \
(typeof((v)->data)) * ret = \
(typeof((v)->data)) ((uint8_t*) (v)->data \
+ ((v)->size - 1) \
* (v)->alloc_size); \
(v)->size--; \
return ret; \
} while (0)
#define NULL
Definition type.h:76
unsigned char uint8_t
Definition type.h:7

Definition at line 62 of file vector.h.

◆ vector_push_back

#define vector_push_back ( v,
val )
Value:
do { \
if ((v)->size >= (v)->capacity) \
vector_expand_capacity((v)); \
(v)->data[(v)->size++] = (val); \
} while (0)

Definition at line 45 of file vector.h.

Referenced by elf_dyn_map_all(), elf_get_symbol(), proccess_elf(), and symbols_register().