~ chicken-core (chicken-5) /tests/embedded3.c
Trap1/* 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
16extern double baz(int);
17
18int 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}