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 |