diff options
Diffstat (limited to 'types.h')
| -rw-r--r-- | types.h | 27 |
1 files changed, 26 insertions, 1 deletions
| @@ -16,6 +16,7 @@ typedef enum _LispType { | |||
| 16 | LISP_TYPE_NIL, | 16 | LISP_TYPE_NIL, |
| 17 | LISP_TYPE_TRUE, | 17 | LISP_TYPE_TRUE, |
| 18 | LISP_TYPE_FALSE, | 18 | LISP_TYPE_FALSE, |
| 19 | LISP_TYPE_FUNC, | ||
| 19 | LISP_TYPE_ERROR | 20 | LISP_TYPE_ERROR |
| 20 | } LispType; | 21 | } LispType; |
| 21 | 22 | ||
| @@ -39,7 +40,7 @@ typedef struct _LispObject { | |||
| 39 | char *error; | 40 | char *error; |
| 40 | long long *number_natural; | 41 | long long *number_natural; |
| 41 | double *number_float; | 42 | double *number_float; |
| 42 | struct _LispObject (*function)(struct _LispObject*); | 43 | struct _LispObject *(*func)(struct _LispObject*); |
| 43 | List *list; | 44 | List *list; |
| 44 | void *ptr; | 45 | void *ptr; |
| 45 | } value; | 46 | } value; |
| @@ -59,7 +60,31 @@ LISP_OBJECT *lisp_object_make_error(char *str); | |||
| 59 | LISP_OBJECT *lisp_object_make_nil(); | 60 | LISP_OBJECT *lisp_object_make_nil(); |
| 60 | LISP_OBJECT *lisp_object_make_true(); | 61 | LISP_OBJECT *lisp_object_make_true(); |
| 61 | LISP_OBJECT *lisp_object_make_false(); | 62 | LISP_OBJECT *lisp_object_make_false(); |
| 63 | LISP_OBJECT *lisp_object_make_func(LISP_OBJECT *(*func)(LISP_OBJECT*)); | ||
| 62 | 64 | ||
| 63 | int lisp_object_print(LISP_OBJECT *obj, int indent); | 65 | int lisp_object_print(LISP_OBJECT *obj, int indent); |
| 64 | 66 | ||
| 67 | int lisp_object_cmp_types(LISP_OBJECT *a, LISP_OBJECT *b); | ||
| 68 | int lisp_object_cmp(LISP_OBJECT *a, LISP_OBJECT *b); | ||
| 69 | int lisp_object_cmp_symbol(LISP_OBJECT *a, LISP_OBJECT *b); | ||
| 70 | int lisp_object_cmp_numbers(LISP_OBJECT *a, LISP_OBJECT *b); | ||
| 71 | int lisp_object_cmp_string(LISP_OBJECT *a, LISP_OBJECT *b); | ||
| 72 | |||
| 73 | typedef struct _HashMap | ||
| 74 | { | ||
| 75 | char *key; | ||
| 76 | LISP_OBJECT *value; | ||
| 77 | struct _HashMap *prev; | ||
| 78 | struct _HashMap *next; | ||
| 79 | |||
| 80 | } HashMap; | ||
| 81 | |||
| 82 | HashMap *hash_map_make(char *key, LISP_OBJECT *value); | ||
| 83 | HashMap *hash_map_push(HashMap *hash_map, char *key, LISP_OBJECT *value); | ||
| 84 | HashMap *hash_map_reverse(HashMap *hash_map); | ||
| 85 | HashMap *hash_map_find(HashMap *hash_map, char* key); | ||
| 86 | HashMap *hash_map_delete(HashMap *hash_map, char* key); | ||
| 87 | void hash_map_free(HashMap *hash_map); | ||
| 88 | void hash_map_print(HashMap *hash_map); | ||
| 89 | |||
| 65 | #endif | 90 | #endif |
