~ chicken-core (chicken-5) /tests/embedded3.c


 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
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}
Trap