1 /* embedded3-c.c */
2 
3 #include <chicken.h>
4 #include <assert.h>
5 
6 #ifdef C_SIXTY_FOUR
7 # ifdef C_LLP
8 #  define UWORD_FORMAT_STRING           "0x%016llx"
9 # else
10 #  define UWORD_FORMAT_STRING           "0x%016lx"
11 # endif
12 #else
13 # define UWORD_FORMAT_STRING           "0x%08x"
14 #endif
15 
16 extern double baz(int);
17 
main()18 int main() {
19   char buffer[ 256 ];
20   int status;
21   C_word val = C_SCHEME_UNDEFINED;
22   C_word *data[ 1 ];
23 
24   data[ 0 ] = &val;
25 
26   CHICKEN_run(C_toplevel);
27 
28   status = CHICKEN_read("(bar 99)", &val);
29   assert(status);
30 
31   C_gc_protect(data, 1);
32 
33   printf("data: "UWORD_FORMAT_STRING"\n", (C_uword)val);
34 
35   status = CHICKEN_eval_string_to_string("(bar)", buffer, 255);
36   assert(!status);
37 
38   CHICKEN_get_error_message(buffer, 255);
39   printf("ouch (expected): %s\n", buffer);
40 
41   status = CHICKEN_eval_string_to_string("(bar 23)", buffer, 255);
42   assert(status);
43 
44   printf("-> %s\n", buffer);
45   printf("data: "UWORD_FORMAT_STRING"\n", (C_uword)val);
46 
47   status = CHICKEN_eval_to_string(val, buffer, 255);
48   assert(status);
49   printf("-> %s\n", buffer);
50 
51   printf("-> %g\n", baz(22));
52 
53   return 0;
54 }
55