blob: bc4652701ddf9f0c0813020a09056500b267a24a [file] [log] [blame]
yuezonghe824eb0c2024-06-27 02:32:26 -07001#ifndef __VECTOR_H__
2#define __VECTOR_H__
3
4#include <stdlib.h>
5#include <string.h>
6#include <stdio.h>
7#include <errno.h>
8#include <assert.h>
9
10#define VECTOR_DEFAULT_CAPACITY (100)
11
12typedef enum
13{
14 TYPE_UNDEFINED,
15 IS_LONG,
16 IS_FLOAT,
17 IS_STRING
18} Type;
19
20typedef struct var
21{
22 Type type;
23 union
24 {
25 long lval;
26 float fval;
27 struct
28 {
29 size_t len;
30 char* sval;
31 } str;
32 } val;
33}Var;
34
35typedef struct vector
36{
37 size_t size;
38 size_t capacity;
39 Var** data;
40} vector_t;
41
42Var* var_long(long value);
43Var* var_float(float value);
44Var* var_string(char* value);
45void var_print(Var* var);
46void var_destroy(Var* var);
47const char* const var_type_of_token(Type t);
48
49vector_t* vector_init();
50void vector_push_back(vector_t*, Var*);
51size_t vector_size(vector_t*);
52Var* vector_get(vector_t*, size_t);
53void vector_free(vector_t*);
54
55#endif /* __VECTOR_H__ */