altos/lisp: Build new ao_lisp_stack.c into test and lambdakey
[fw/altos] / src / lisp / ao_lisp.h
index cea834fcd03a161a78c0e0f467741ebaf568717a..af6ff8bbc149c37c95b6af45de11234e99fb722b 100644 (file)
@@ -128,6 +128,7 @@ ao_lisp_is_const(ao_poly poly) {
 
 #define AO_LISP_IS_CONST(a)    (ao_lisp_const <= ((uint8_t *) (a)) && ((uint8_t *) (a)) < ao_lisp_const + AO_LISP_POOL_CONST)
 #define AO_LISP_IS_POOL(a)     (ao_lisp_pool <= ((uint8_t *) (a)) && ((uint8_t *) (a)) < ao_lisp_pool + AO_LISP_POOL)
+#define AO_LISP_IS_INT(p)      (ao_lisp_base_type(p) == AO_LISP_INT);
 
 void *
 ao_lisp_ref(ao_poly poly);
@@ -468,22 +469,26 @@ struct ao_lisp_cons *
 ao_lisp_cons_fetch(int id);
 
 void
-ao_lisp_string_stash(int id, char *string);
+ao_lisp_poly_stash(int id, ao_poly poly);
 
-char *
-ao_lisp_string_fetch(int id);
+ao_poly
+ao_lisp_poly_fetch(int id);
 
 void
-ao_lisp_stack_stash(int id, struct ao_lisp_stack *stack);
+ao_lisp_string_stash(int id, char *string);
 
-struct ao_lisp_stack *
-ao_lisp_stack_fetch(int id);
+char *
+ao_lisp_string_fetch(int id);
 
-void
-ao_lisp_poly_stash(int id, ao_poly poly);
+static inline void
+ao_lisp_stack_stash(int id, struct ao_lisp_stack *stack) {
+       ao_lisp_poly_stash(id, ao_lisp_stack_poly(stack));
+}
 
-ao_poly
-ao_lisp_poly_fetch(int id);
+static inline struct ao_lisp_stack *
+ao_lisp_stack_fetch(int id) {
+       return ao_lisp_poly_stack(ao_lisp_poly_fetch(id));
+}
 
 /* cons */
 extern const struct ao_lisp_type ao_lisp_cons_type;