Cyclone Scheme  0.4
runtime.h
Go to the documentation of this file.
1 
9 #ifndef CYCLONE_RUNTIME_H
10 #define CYCLONE_RUNTIME_H
11 
12 
17 extern const object boolean_t;
22 extern const object boolean_f;
27 extern const object quote_void;
32 extern const object Cyc_EOF;
33 
37 void GC(void *, closure, object *, int);
38 
42 void gc_init_heap(long heap_size);
43 
57 #define Cyc_check_num_args(data, fnc_name, num_args, args) { \
58  object l = Cyc_length(data, args); \
59  if (num_args > obj_obj2int(l)) { \
60  char buf[128]; \
61  snprintf(buf, 127, "Expected %d arguments to %s but received %ld", \
62  num_args, fnc_name, obj_obj2int(l)); \
63  Cyc_rt_raise_msg(data, buf); \
64  } \
65 }
66 
67 #define Cyc_check_type(data, fnc_test, tag, obj) { \
68  if ((boolean_f == fnc_test(obj))) Cyc_invalid_type_error(data, tag, obj); }
69 #define Cyc_check_type2(data, fnc_test, tag, obj) { \
70  if ((boolean_f == fnc_test(data, obj))) Cyc_invalid_type_error(data, tag, obj); }
71 
72 #define Cyc_check_pair_or_null(d,obj) { if (obj != NULL) { Cyc_check_pair(d,obj); }}
73 #define Cyc_check_pair(d,obj) Cyc_check_type(d,Cyc_is_pair, pair_tag, obj);
74 #define Cyc_check_proc(d,obj) Cyc_check_type2(d,Cyc_is_procedure, closureN_tag, obj);
75 #define Cyc_check_num(d,obj) Cyc_check_type(d,Cyc_is_number, integer_tag, obj);
76 #define Cyc_check_fixnum(d,obj) Cyc_check_type(d,Cyc_is_fixnum, integer_tag, obj);
77 #define Cyc_check_int(d,obj) Cyc_check_type(d,Cyc_is_integer, integer_tag, obj);
78 #define Cyc_check_str(d,obj) Cyc_check_type(d,Cyc_is_string, string_tag, obj);
79 #define Cyc_check_sym(d,obj) Cyc_check_type(d,Cyc_is_symbol, symbol_tag, obj);
80 #define Cyc_check_vec(d,obj) Cyc_check_type(d,Cyc_is_vector, vector_tag, obj);
81 #define Cyc_check_bvec(d,obj) Cyc_check_type(d,Cyc_is_bytevector, bytevector_tag, obj);
82 #define Cyc_check_port(d,obj) Cyc_check_type(d,Cyc_is_port, port_tag, obj);
83 #define Cyc_check_mutex(d,obj) Cyc_check_type(d,Cyc_is_mutex, mutex_tag, obj);
84 #define Cyc_check_cond_var(d,obj) Cyc_check_type(d,Cyc_is_cond_var, cond_var_tag, obj);
85 void Cyc_invalid_type_error(void *data, int tag, object found);
86 void Cyc_check_obj(void *data, int tag, object obj);
87 void Cyc_check_bounds(void *data, const char *label, int len, int index);
89 /* END error checking */
90 
91 extern long global_stack_size;
92 extern long global_heap_size;
93 
94 char **get_env_variables();
95 void pack_env_variables(void *data, object k);
96 void set_env_variables(char **vars);
97 
98 object cell_get(object cell);
99 
100 #define global_set(glo,value) Cyc_global_set(data, (object *)&glo, value)
101 object Cyc_global_set(void *thd, object * glo, object value);
102 
103 /* Variable argument count support
104 
105  This macro is intended to be executed at the top of a function that
106  is passed 'var' as a variable-length argument. 'count' is the number
107  of varargs that were passed. EG:
108  - C definition: f(object a, ...)
109  - C call: f(1, 2, 3)
110  - var: a
111  - count: 3
112 
113  Argument count would need to be passed by the caller of f. Presumably
114  our compiler will compute the difference between the number of required
115  args and the number of provided ones, and pass the difference as 'count'
116  */
117 #define load_varargs(var, arg_var, count) \
118  list var = (count > 0) ? alloca(sizeof(pair_type)*count) : NULL; \
119  { \
120  int i; \
121  object tmp; \
122  va_list va; \
123  if (count > 0) { \
124  va_start(va, arg_var); \
125  for (i = 0; i < count; i++) { \
126  if (i) { \
127  tmp = va_arg(va, object); \
128  } else { \
129  tmp = arg_var; \
130  } \
131  var[i].hdr.mark = gc_color_red; \
132  var[i].hdr.grayed = 0; \
133  var[i].tag = pair_tag; \
134  var[i].pair_car = tmp; \
135  var[i].pair_cdr = (i == (count-1)) ? NULL : &var[i + 1]; \
136  } \
137  va_end(va); \
138  } \
139  }
140 /* Prototypes for primitive functions. */
141 
147 object Cyc_car(void *data, object lis);
148 object Cyc_cdr(void *data, object lis);
149 list malloc_make_pair(object, object);
150 object Cyc_set_cell(void *, object l, object val);
151 object Cyc_set_car(void *, object l, object val);
152 object Cyc_set_cdr(void *, object l, object val);
153 object Cyc_length(void *d, object l);
154 object Cyc_list2vector(void *data, object cont, object l);
155 object Cyc_list2string(void *d, object cont, object lst);
156 object Cyc_list(void *data, int argc, object cont, ...);
157 object memberp(void *data, object x, list l);
158 object memqp(void *data, object x, list l);
159 list assq(void *data, object x, list l);
160 list assoc(void *data, object x, list l);
169 object apply(void *data, object cont, object func, object args);
170 void Cyc_apply(void *data, int argc, closure cont, object prim, ...);
171 void dispatch_apply_va(void *data, int argc, object clo, object cont, object func, ...);
172 object apply_va(void *data, object cont, int argc, object func, ...);
173 void dispatch(void *data, int argc, function_type func, object clo, object cont,
174  object args);
175 void dispatch_va(void *data, int argc, function_type_va func, object clo,
176  object cont, object args);
177 void do_dispatch(void *data, int argc, function_type func, object clo,
178  object * buffer);
179 
187 object Cyc_string_cmp(void *data, object str1, object str2);
188 object dispatch_string_91append(void *data, int argc, object clo, object cont,
189  object str1, ...);
190 object Cyc_string2number_(void *d, object cont, object str);
191 object Cyc_string2number2_(void *data, object cont, int argc, object str, ...);
192 int binstr2int(const char *str);
193 int octstr2int(const char *str);
194 object Cyc_string_append(void *data, object cont, int argc, object str1, ...);
195 object Cyc_string_length(void *data, object str);
196 object Cyc_substring(void *data, object cont, object str, object start,
197  object end);
198 object Cyc_string_ref(void *data, object str, object k);
199 object Cyc_string_set(void *data, object str, object k, object chr);
207 object Cyc_char2integer(object chr);
208 object Cyc_char_eq_op(void *data, object a, object b);
209 object Cyc_char_gt_op(void *data, object a, object b);
210 object Cyc_char_lt_op(void *data, object a, object b);
211 object Cyc_char_gte_op(void *data, object a, object b);
212 object Cyc_char_lte_op(void *data, object a, object b);
220 object Cyc_symbol2string(void *d, object cont, object sym);
221 object Cyc_string2symbol(void *d, object str);
229 extern object Cyc_global_variables;
230 cvar_type *mcvar(object * var);
231 object Cyc_get_global_variables();
232 object Cyc_get_cvar(object var);
233 object Cyc_set_cvar(object var, object value);
241 object Cyc_display(void *data, object, FILE * port);
242 void dispatch_display_va(void *data, int argc, object clo, object cont,
243  object x, ...);
244 object Cyc_display_va(void *data, int argc, object x, ...);
245 object Cyc_display_va_list(void *data, int argc, object x, va_list ap);
246 object Cyc_write_char(void *data, object c, object port);
247 object Cyc_write(void *data, object, FILE * port);
248 void dispatch_write_va(void *data, int argc, object clo, object cont,
249  object x, ...);
250 object Cyc_write_va(void *data, int argc, object x, ...);
251 object Cyc_write_va_list(void *data, int argc, object x, va_list ap);
252 port_type Cyc_stdout(void);
253 port_type Cyc_stdin(void);
254 port_type Cyc_stderr(void);
255 port_type Cyc_io_open_input_file(void *data, object str);
256 port_type Cyc_io_open_output_file(void *data, object str);
258 port_type *Cyc_io_open_input_string(void *data, object str);
259 port_type *Cyc_io_open_input_bytevector(void *data, object bv);
260 void Cyc_io_get_output_string(void *data, object cont, object port);
261 void Cyc_io_get_output_bytevector(void *data, object cont, object port);
262 object Cyc_io_close_port(void *data, object port);
263 object Cyc_io_close_input_port(void *data, object port);
264 object Cyc_io_close_output_port(void *data, object port);
265 object Cyc_io_flush_output_port(void *data, object port);
266 object Cyc_io_read_char(void *data, object cont, object port);
267 object Cyc_io_peek_char(void *data, object cont, object port);
268 object Cyc_io_read_line(void *data, object cont, object port);
278 #define return_inexact_double_op_no_cps(data, ptr, OP, z) \
279  double unboxed; \
280  Cyc_check_num(data, z); \
281  if (obj_is_int(z)) { \
282  unboxed = OP(obj_obj2int(z)); \
283  } else if (type_of(z) == integer_tag) { \
284  unboxed = OP(((integer_type *)z)->value); \
285  } else if (type_of(z) == bignum_tag) { \
286  unboxed = OP(mp_get_double(&bignum_value(z))); \
287  } else { \
288  unboxed = OP(((double_type *)z)->value); \
289  } \
290  assign_double(ptr, unboxed); \
291  return ptr;
292 
293 #define return_inexact_double_op(data, cont, OP, z) \
294  make_double(d, 0.0); \
295  Cyc_check_num(data, z); \
296  if (obj_is_int(z)) { \
297  d.value = OP(obj_obj2int(z)); \
298  } else if (type_of(z) == integer_tag) { \
299  d.value = OP(((integer_type *)z)->value); \
300  } else if (type_of(z) == bignum_tag) { \
301  d.value = OP(mp_get_double(&bignum_value(z))); \
302  } else { \
303  d.value = OP(((double_type *)z)->value); \
304  } \
305  return_closcall1(data, cont, &d)
306 
307 #define return_exact_double_op(data, cont, OP, z) \
308  int i = 0; \
309  Cyc_check_num(data, z); \
310  if (obj_is_int(z)) { \
311  i = obj_obj2int(z); \
312  } else if (type_of(z) == integer_tag) { \
313  i = (int)OP(((integer_type *)z)->value); \
314  } else if (type_of(z) == bignum_tag) { \
315  return_closcall1(data, cont, z); \
316  } else { \
317  i = (int)OP(((double_type *)z)->value); \
318  } \
319  return_closcall1(data, cont, obj_int2obj(i))
320 
321 #define return_exact_double_op_no_cps(data, ptr, OP, z) \
322  int i = 0; \
323  Cyc_check_num(data, z); \
324  if (obj_is_int(z)) { \
325  i = obj_obj2int(z); \
326  } else if (type_of(z) == integer_tag) { \
327  i = (int)OP(((integer_type *)z)->value); \
328  } else if (type_of(z) == bignum_tag) { \
329  return z; \
330  } else { \
331  i = (int)OP(((double_type *)z)->value); \
332  } \
333  return obj_int2obj(i);
334 
335 #define unbox_number(n) \
336  ((obj_is_int(n) ? obj_obj2int(n) : \
337  ((type_of(n) == integer_tag) ? \
338  ((integer_type *)n)->value : \
339  ((double_type *)n)->value)))
340 
341 object Cyc_num_eq(void *, object cont, int argc, object n, ...);
342 object Cyc_num_gt(void *, object cont, int argc, object n, ...);
343 object Cyc_num_lt(void *, object cont, int argc, object n, ...);
344 object Cyc_num_gte(void *, object cont, int argc, object n, ...);
345 object Cyc_num_lte(void *, object cont, int argc, object n, ...);
346 int Cyc_num_eq_op(void *, object x, object y);
347 int Cyc_num_gt_op(void *, object x, object y);
348 int Cyc_num_lt_op(void *, object x, object y);
349 int Cyc_num_gte_op(void *, object x, object y);
350 int Cyc_num_lte_op(void *, object x, object y);
351 object Cyc_num_fast_eq_op(void *data, object x, object y);
352 object Cyc_num_fast_gt_op(void *data, object x, object y);
353 object Cyc_num_fast_lt_op(void *data, object x, object y);
354 object Cyc_num_fast_gte_op(void *data, object x, object y);
355 object Cyc_num_fast_lte_op(void *data, object x, object y);
356 object Cyc_num_cmp_va_list(void *data, int argc,
357  int (fn_op(void *, object, object)), object n,
358  va_list ns);
359 void Cyc_expt(void *data, object cont, object x, object y);
360 void Cyc_remainder(void *data, object cont, object num1, object num2);
361 object Cyc_number2string2(void *data, object cont, int argc, object n, ...);
362 object Cyc_integer2char(void *data, object n);
363 object Cyc_sum_op(void *data, common_type * x, object y);
364 object Cyc_sub_op(void *data, common_type * x, object y);
365 object Cyc_mul_op(void *data, common_type * x, object y);
366 object Cyc_div_op(void *data, common_type * x, object y);
367 object Cyc_sum(void *data, object cont, int argc, object n, ...);
368 object Cyc_sub(void *data, object cont, int argc, object n, ...);
369 object Cyc_mul(void *data, object cont, int argc, object n, ...);
370 object Cyc_div(void *data, object cont, int argc, object n, ...);
371 object Cyc_fast_sum(void *data, object ptr, object x, object y);
372 object Cyc_fast_sub(void *data, object ptr, object x, object y);
373 object Cyc_fast_mul(void *data, object ptr, object x, object y);
374 object Cyc_fast_div(void *data, object ptr, object x, object y);
375 object Cyc_bit_unset(void *data, object n1, object n2);
376 object Cyc_bit_set(void *data, object n1, object n2);
377 object Cyc_num_op_va_list(void *data, int argc,
378  object(fn_op(void *, common_type *, object)),
379  int default_no_args, int default_one_arg, object n,
380  va_list ns, common_type * buf);
381 void Cyc_int2bignum(int n, mp_int *bn);
382 object Cyc_bignum_normalize(void *data, object n);
383 int Cyc_bignum_cmp(bn_cmp_type type, object x, int tx, object y, int ty);
384 double MRG32k3a (double seed);
390 object Cyc_eq(object x, object y);
391 int equal(object, object);
392 object equalp(object, object);
393 object Cyc_has_cycle(object lst);
394 object Cyc_is_boolean(object o);
395 object Cyc_is_pair(object o);
396 object Cyc_is_null(object o);
397 object Cyc_is_number(object o);
398 object Cyc_is_real(object o);
399 object Cyc_is_integer(object o);
400 object Cyc_is_fixnum(object o);
401 object Cyc_is_bignum(object o);
402 object Cyc_is_vector(object o);
403 object Cyc_is_bytevector(object o);
404 object Cyc_is_port(object o);
405 object Cyc_is_mutex(object o);
406 object Cyc_is_cond_var(object o);
407 object Cyc_is_symbol(object o);
408 object Cyc_is_string(object o);
409 object Cyc_is_char(object o);
410 object Cyc_is_procedure(void *data, object o);
411 object Cyc_is_macro(object o);
412 object Cyc_is_eof_object(object o);
413 object Cyc_is_cvar(object o);
414 object Cyc_is_opaque(object o);
422 object Cyc_vector_length(void *data, object v);
423 object Cyc_vector_ref(void *d, object v, object k);
424 object Cyc_vector_set(void *d, object v, object k, object obj);
425 object Cyc_make_vector(void *data, object cont, int argc, object len, ...);
433 object Cyc_make_bytevector(void *data, object cont, int argc, object len, ...);
434 object Cyc_bytevector(void *data, object cont, int argc, object bval, ...);
435 object Cyc_bytevector_length(void *data, object bv);
436 object Cyc_bytevector_append(void *data, object cont, int _argc, object bv,
437  ...);
438 object Cyc_bytevector_copy(void *data, object cont, object bv, object start,
439  object end);
440 object Cyc_bytevector_u8_ref(void *data, object bv, object k);
441 object Cyc_bytevector_u8_set(void *data, object bv, object k, object b);
442 object Cyc_utf82string(void *data, object cont, object bv, object start,
443  object end);
444 object Cyc_string2utf8(void *data, object cont, object str, object start,
445  object end);
454 char **_cyc_argv;
455 object Cyc_installation_dir(void *data, object cont, object type);
456 object Cyc_compilation_environment(void *data, object cont, object var);
457 object Cyc_command_line_arguments(void *data, object cont);
458 object Cyc_system(object cmd);
459 void Cyc_halt(object obj);
460 object __halt(object obj);
461 object Cyc_io_delete_file(void *data, object filename);
462 object Cyc_io_file_exists(void *data, object filename);
473 object Cyc_spawn_thread(object thunk);
475 void Cyc_end_thread(gc_thread_data * thd);
476 void Cyc_exit_thread(gc_thread_data * thd);
477 object Cyc_thread_sleep(void *data, object timeout);
485 object Cyc_trigger_minor_gc(void *data, object cont);
486 object copy2heap(void *data, object obj);
495 void Cyc_st_add(void *data, char *frame);
496 void Cyc_st_print(void *data, FILE * out);
507 extern const object primitive_Cyc_91global_91vars;
508 extern const object primitive_Cyc_91get_91cvar;
509 extern const object primitive_Cyc_91set_91cvar_67;
510 extern const object primitive_Cyc_91cvar_127;
511 extern const object primitive_Cyc_91opaque_127;
512 extern const object primitive_Cyc_91has_91cycle_127;
513 extern const object primitive_Cyc_91spawn_91thread_67;
514 extern const object primitive_Cyc_91end_91thread_67;
515 extern const object primitive__87;
516 extern const object primitive__91;
517 extern const object primitive__85;
518 extern const object primitive__95;
519 extern const object primitive__123;
520 extern const object primitive__125;
521 extern const object primitive__121;
522 extern const object primitive__125_123;
523 extern const object primitive__121_123;
524 extern const object primitive_apply;
525 extern const object primitive__75halt;
526 extern const object primitive_exit;
529 extern const object primitive_cons;
530 extern const object primitive_cell_91get;
531 extern const object primitive_set_91global_67;
532 extern const object primitive_set_91cell_67;
533 extern const object primitive_cell;
534 extern const object primitive_eq_127;
535 extern const object primitive_eqv_127;
536 extern const object primitive_equal_127;
537 extern const object primitive_assq;
538 extern const object primitive_assv;
539 extern const object primitive_memq;
540 extern const object primitive_memv;
541 extern const object primitive_length;
542 extern const object primitive_vector_91length;
543 extern const object primitive_bytevector_91length;
544 extern const object primitive_set_91car_67;
545 extern const object primitive_set_91cdr_67;
546 extern const object primitive_car;
547 extern const object primitive_cdr;
548 extern const object primitive_caar;
549 extern const object primitive_cadr;
550 extern const object primitive_cdar;
551 extern const object primitive_cddr;
552 extern const object primitive_caaar;
553 extern const object primitive_caadr;
554 extern const object primitive_cadar;
555 extern const object primitive_caddr;
556 extern const object primitive_cdaar;
557 extern const object primitive_cdadr;
558 extern const object primitive_cddar;
559 extern const object primitive_cdddr;
560 extern const object primitive_caaaar;
561 extern const object primitive_caaadr;
562 extern const object primitive_caadar;
563 extern const object primitive_caaddr;
564 extern const object primitive_cadaar;
565 extern const object primitive_cadadr;
566 extern const object primitive_caddar;
567 extern const object primitive_cadddr;
568 extern const object primitive_cdaaar;
569 extern const object primitive_cdaadr;
570 extern const object primitive_cdadar;
571 extern const object primitive_cdaddr;
572 extern const object primitive_cddaar;
573 extern const object primitive_cddadr;
574 extern const object primitive_cdddar;
575 extern const object primitive_cddddr;
576 extern const object primitive_char_91_125integer;
577 extern const object primitive_integer_91_125char;
578 extern const object primitive_string_91_125number;
579 extern const object primitive_string_91cmp;
580 extern const object primitive_string_91append;
581 extern const object primitive_list_91_125string;
582 extern const object primitive_string_91_125symbol;
583 extern const object primitive_symbol_91_125string;
584 extern const object primitive_number_91_125string;
585 extern const object primitive_string_91length;
586 extern const object primitive_substring;
587 extern const object primitive_make_91bytevector;
588 extern const object primitive_make_91vector;
589 extern const object primitive_list_91_125vector;
590 extern const object primitive_vector_91ref;
591 extern const object primitive_vector_91set_67;
592 extern const object primitive_bytevector;
593 extern const object primitive_bytevector_91append;
594 extern const object primitive_Cyc_91bytevector_91copy;
595 extern const object primitive_Cyc_91string_91_125utf8;
596 extern const object primitive_Cyc_91utf8_91_125string;
597 extern const object primitive_bytevector_91u8_91ref;
598 extern const object primitive_bytevector_91u8_91set_67;
599 extern const object primitive_string_91ref;
600 extern const object primitive_string_91set_67;
601 extern const object primitive_Cyc_91installation_91dir;
603 extern const object primitive_command_91line_91arguments;
604 extern const object primitive_system;
605 extern const object primitive_boolean_127;
606 extern const object primitive_char_127;
607 extern const object primitive_eof_91object_127;
608 extern const object primitive_null_127;
609 extern const object primitive_number_127;
610 extern const object primitive_real_127;
611 extern const object primitive_integer_127;
612 extern const object primitive_pair_127;
613 extern const object primitive_procedure_127;
614 extern const object primitive_macro_127;
615 extern const object primitive_Cyc_91macro_127;
616 extern const object primitive_port_127;
617 extern const object primitive_vector_127;
618 extern const object primitive_bytevector_127;
619 extern const object primitive_string_127;
620 extern const object primitive_symbol_127;
621 extern const object primitive_open_91input_91file;
622 extern const object primitive_open_91output_91file;
623 extern const object primitive_close_91port;
624 extern const object primitive_close_91input_91port;
625 extern const object primitive_close_91output_91port;
626 extern const object primitive_Cyc_91flush_91output_91port;
627 extern const object primitive_file_91exists_127;
628 extern const object primitive_delete_91file;
629 extern const object primitive_read_91char;
630 extern const object primitive_peek_91char;
631 extern const object primitive_Cyc_91read_91line;
632 extern const object primitive_Cyc_91write_91char;
633 extern const object primitive_Cyc_91write;
634 extern const object primitive_Cyc_91display;
635 extern const object primitive_call_95cc;
636 /* -------------------------------------------- */
647 extern object Cyc_glo_eval_from_c;
648 extern object Cyc_glo_call_cc;
649 
650 #define __glo_eval_91from_91c_scheme_eval Cyc_glo_eval_from_c
651 #define __glo_call_95cc_scheme_base Cyc_glo_call_cc
652 
658 object Cyc_default_exception_handler(void *data, int argc, closure _, object err);
659 
660 object Cyc_current_exception_handler(void *data);
661 void Cyc_rt_raise(void *data, object err);
662 void Cyc_rt_raise2(void *data, const char *msg, object err);
663 void Cyc_rt_raise_msg(void *data, const char *err);
677 object add_symbol(symbol_type * psym);
678 object add_symbol_by_name(const char *name);
679 object find_symbol_by_name(const char *name);
680 object find_or_add_symbol(const char *name);
681 char *_strdup(const char *s);
690 object is_library_loaded(const char *name);
691 object register_library(const char *name);
700 extern list global_table;
701 void add_global(object * glo);
704 #endif /* CYCLONE_RUNTIME_H */
object Cyc_is_pair(object o)
Definition: runtime.c:1471
const object primitive_cdaar
Definition: runtime.c:5299
object Cyc_num_fast_eq_op(void *data, object x, object y)
object Cyc_write_char(void *data, object c, object port)
Definition: runtime.c:1083
const object primitive_substring
Definition: runtime.c:5323
A closed-over function with no variables.
Definition: types.h:954
object Cyc_vector_ref(void *d, object v, object k)
Definition: runtime.c:1687
long global_heap_size
object copy2heap(void *data, object obj)
Definition: runtime.c:5527
object Cyc_bit_set(void *data, object n1, object n2)
Definition: runtime.c:5570
object Cyc_write(void *data, object, FILE *port)
Definition: runtime.c:1076
object Cyc_is_symbol(object o)
Definition: runtime.c:1523
char ** get_env_variables()
Definition: runtime.c:157
const object primitive_Cyc_91write_91char
Definition: runtime.c:5381
const object primitive_caar
Definition: runtime.c:5291
object add_symbol_by_name(const char *name)
Definition: runtime.c:377
object Cyc_get_global_variables()
Definition: runtime.c:660
port_type Cyc_io_open_input_file(void *data, object str)
Definition: runtime.c:3378
const object primitive_memq
Definition: runtime.c:5280
The port object type.
Definition: types.h:763
object Cyc_char_gte_op(void *data, object a, object b)
const object primitive_command_91line_91arguments
Definition: runtime.c:5330
const object primitive_open_91input_91file
Definition: runtime.c:5369
object Cyc_string_append(void *data, object cont, int argc, object str1,...)
Definition: runtime.c:2053
object Cyc_is_eof_object(object o)
Definition: runtime.c:1612
void Cyc_st_add(void *data, char *frame)
Definition: runtime.c:306
const object primitive_cdadar
Definition: runtime.c:5313
object Cyc_is_bytevector(object o)
Definition: runtime.c:1537
const object primitive_port_127
Definition: runtime.c:5365
object memberp(void *data, object x, list l)
Definition: runtime.c:1098
object Cyc_is_macro(object o)
Definition: runtime.c:1600
const object primitive_cdddr
Definition: runtime.c:5302
const object quote_void
Definition: runtime.c:303
void add_global(object *glo)
Definition: runtime.c:424
object Cyc_fast_mul(void *data, object ptr, object x, object y)
Definition: runtime.c:2906
object Cyc_cdr(void *data, object lis)
Definition: runtime.c:654
object add_symbol(symbol_type *psym)
Definition: runtime.c:368
port_type * Cyc_io_open_output_string(void *data)
Definition: mstreams.c:77
void Cyc_expt(void *data, object cont, object x, object y)
Definition: runtime.c:3240
object Cyc_string_ref(void *data, object str, object k)
Definition: runtime.c:2088
object Cyc_string_set(void *data, object str, object k, object chr)
Definition: runtime.c:2067
port_type Cyc_stdout(void)
Definition: runtime.c:3360
const object primitive_Cyc_91macro_127
Definition: runtime.c:5363
The pair (cons) type.
Definition: types.h:836
double MRG32k3a(double seed)
Definition: runtime.c:5599
const object primitive_cdaddr
Definition: runtime.c:5314
Definition: types.h:257
const object primitive_Cyc_91read_91line
Definition: runtime.c:5380
const object primitive_caddar
Definition: runtime.c:5309
const object primitive_string_91length
Definition: runtime.c:5322
object register_library(const char *name)
Definition: runtime.c:407
object Cyc_fast_sum(void *data, object ptr, object x, object y)
Definition: runtime.c:2755
const object primitive_symbol_127
Definition: runtime.c:5368
const object primitive_Cyc_91flush_91output_91port
Definition: runtime.c:5374
const object Cyc_EOF
Definition: runtime.c:150
object equalp(object, object)
Definition: runtime.c:1161
int Cyc_num_lte_op(void *, object x, object y)
const object primitive_procedure_127
Definition: runtime.c:5361
const object primitive_integer_127
Definition: runtime.c:5359
void Cyc_int2bignum(int n, mp_int *bn)
Definition: runtime.c:1297
void dispatch_display_va(void *data, int argc, object clo, object cont, object x,...)
Definition: runtime.c:750
void Cyc_apply(void *data, int argc, closure cont, object prim,...)
Definition: runtime.c:4584
object Cyc_is_boolean(object o)
Definition: runtime.c:1462
const object primitive_cdaadr
Definition: runtime.c:5312
object Cyc_io_close_output_port(void *data, object port)
Definition: runtime.c:3409
object Cyc_glo_call_cc
Definition: runtime.c:492
const object primitive_open_91output_91file
Definition: runtime.c:5370
object Cyc_io_read_char(void *data, object cont, object port)
Definition: runtime.c:3471
const object primitive_cadaar
Definition: runtime.c:5307
const object primitive_cddaar
Definition: runtime.c:5315
const object primitive_cell
Definition: runtime.c:5274
object Cyc_char2integer(object chr)
Definition: runtime.c:2599
const object primitive_caaar
Definition: runtime.c:5295
object Cyc_is_bignum(object o)
Definition: runtime.c:1516
const object primitive_caaadr
Definition: runtime.c:5304
object Cyc_thread_sleep(void *data, object timeout)
Definition: runtime.c:5513
const object primitive__125
Definition: runtime.c:5259
void(* function_type_va)(int, object, object, object,...)
Definition: types.h:518
object Cyc_string2symbol(void *d, object str)
Definition: runtime.c:1814
const object primitive_list_91_125string
Definition: runtime.c:5335
void dispatch(void *data, int argc, function_type func, object clo, object cont, object args)
Definition: runtime.c:4961
object Cyc_substring(void *data, object cont, object str, object start, object end)
Definition: runtime.c:2107
object Cyc_sub_op(void *data, common_type *x, object y)
void dispatch_va(void *data, int argc, function_type_va func, object clo, object cont, object args)
Definition: runtime.c:4980
object Cyc_is_cond_var(object o)
Definition: runtime.c:1558
const object primitive_string_127
Definition: runtime.c:5364
const object primitive__121_123
Definition: runtime.c:5262
const object primitive_apply
Definition: runtime.c:5263
cvar_type * mcvar(object *var)
Definition: runtime.c:3545
object Cyc_compilation_environment(void *data, object cont, object var)
Definition: runtime.c:2173
port_type * Cyc_io_open_input_bytevector(void *data, object bv)
Definition: mstreams.c:56
object Cyc_set_cell(void *, object l, object val)
Definition: runtime.c:1640
void Cyc_start_trampoline(gc_thread_data *thd)
Definition: runtime.c:4642
void dispatch_write_va(void *data, int argc, object clo, object cont, object x,...)
Definition: runtime.c:929
object Cyc_car(void *data, object lis)
Definition: runtime.c:648
void Cyc_remainder(void *data, object cont, object num1, object num2)
Definition: runtime.c:3302
const object primitive_delete_91file
Definition: runtime.c:5377
object Cyc_num_cmp_va_list(void *data, int argc, int(fn_op(void *, object, object)), object n, va_list ns)
Definition: runtime.c:1219
const object primitive_cons
Definition: runtime.c:5270
object Cyc_is_vector(object o)
Definition: runtime.c:1530
char * _strdup(const char *s)
Definition: runtime.c:349
object Cyc_make_bytevector(void *data, object cont, int argc, object len,...)
Definition: runtime.c:2289
int equal(object, object)
Definition: runtime.c:572
void Cyc_rt_raise_msg(void *data, const char *err)
Definition: runtime.c:564
object Cyc_num_fast_lte_op(void *data, object x, object y)
object Cyc_list2vector(void *data, object cont, object l)
Definition: runtime.c:2554
const object boolean_f
Definition: runtime.c:299
object Cyc_io_delete_file(void *data, object filename)
Definition: runtime.c:3446
const object primitive_vector_91set_67
Definition: runtime.c:5286
const object primitive_string_91ref
Definition: runtime.c:5324
const object primitive_set_91car_67
Definition: runtime.c:5287
int Cyc_num_gt_op(void *, object x, object y)
object Cyc_length(void *d, object l)
Definition: runtime.c:1711
const object primitive_car
Definition: runtime.c:5289
const object primitive_Cyc_91display
Definition: runtime.c:5383
int binstr2int(const char *str)
Definition: runtime.c:1987
object Cyc_spawn_thread(object thunk)
Definition: runtime.c:5450
Symbols are similar to strings, but only one instance of each unique symbol is created, so comparisons are O(1).
Definition: types.h:615
const object primitive_number_91_125string
Definition: runtime.c:5338
object Cyc_io_flush_output_port(void *data, object port)
Definition: runtime.c:3432
object Cyc_default_exception_handler(void *data, int argc, closure _, object err)
Definition: runtime.c:496
const object primitive_string_91append
Definition: runtime.c:5334
const object primitive_set_91cdr_67
Definition: runtime.c:5288
void Cyc_io_get_output_string(void *data, object cont, object port)
Definition: mstreams.c:93
object Cyc_num_gt(void *, object cont, int argc, object n,...)
object Cyc_is_port(object o)
Definition: runtime.c:1544
object Cyc_io_read_line(void *data, object cont, object port)
Definition: runtime.c:3488
const object primitive_cddr
Definition: runtime.c:5294
void Cyc_rt_raise(void *data, object err)
Definition: runtime.c:540
object Cyc_bytevector_u8_ref(void *data, object bv, object k)
Definition: runtime.c:2505
object Cyc_global_variables
Definition: runtime.c:144
const object primitive_close_91input_91port
Definition: runtime.c:5372
void Cyc_io_get_output_bytevector(void *data, object cont, object port)
Definition: mstreams.c:109
const object primitive_caddr
Definition: runtime.c:5298
const object primitive_null_127
Definition: runtime.c:5356
object Cyc_write_va(void *data, int argc, object x,...)
Definition: runtime.c:940
char ** _cyc_argv
Definition: runtime.h:454
int Cyc_bignum_cmp(bn_cmp_type type, object x, int tx, object y, int ty)
Definition: runtime.c:1305
C-variable integration type - wrapper around a Cyclone object pointer.
Definition: types.h:526
object Cyc_system(object cmd)
Definition: runtime.c:2578
const object primitive__95
Definition: runtime.c:5257
object Cyc_string2number_(void *d, object cont, object str)
Definition: runtime.c:1952
const object primitive_make_91bytevector
Definition: runtime.c:5339
object Cyc_display_va_list(void *data, int argc, object x, va_list ap)
Definition: runtime.c:771
object Cyc_make_vector(void *data, object cont, int argc, object len,...)
Definition: runtime.c:2232
const object primitive_equal_127
Definition: runtime.c:5277
object Cyc_char_eq_op(void *data, object a, object b)
const object boolean_t
Definition: runtime.c:298
const object primitive_char_127
Definition: runtime.c:5354
const object primitive__123
Definition: runtime.c:5258
const object primitive_Cyc_91write
Definition: runtime.c:5382
const object primitive_Cyc_91set_91cvar_67
Definition: runtime.c:5247
const object primitive_Cyc_91bytevector_91copy
Definition: runtime.c:5343
const object primitive_cdr
Definition: runtime.c:5290
const object primitive_Cyc_91default_91exception_91handler
Definition: runtime.c:5268
const object primitive_Cyc_91opaque_127
Definition: runtime.c:5249
object Cyc_get_cvar(object var)
Definition: runtime.c:665
long global_stack_size
object Cyc_number2string2(void *data, object cont, int argc, object n,...)
Definition: runtime.c:1746
const object primitive__121
Definition: runtime.c:5260
const object primitive__75halt
Definition: runtime.c:5264
void Cyc_rt_raise2(void *data, const char *msg, object err)
Definition: runtime.c:551
object Cyc_list(void *data, int argc, object cont,...)
Definition: runtime.c:1849
const object primitive_caadar
Definition: runtime.c:5305
void gc_init_heap(long heap_size)
Perform one-time heap initializations for the program.
Definition: runtime.c:267
const object primitive_read_91char
Definition: runtime.c:5378
const object primitive_Cyc_91end_91thread_67
Definition: runtime.c:5253
object Cyc_integer2char(void *data, object n)
Definition: runtime.c:2604
object Cyc_io_file_exists(void *data, object filename)
Definition: runtime.c:3456
void set_env_variables(char **vars)
Definition: runtime.c:204
void(* function_type)()
Definition: types.h:515
int octstr2int(const char *str)
Definition: runtime.c:1998
object Cyc_string2utf8(void *data, object cont, object str, object start, object end)
Definition: runtime.c:2476
object find_or_add_symbol(const char *name)
Definition: runtime.c:385
void Cyc_end_thread(gc_thread_data *thd)
Definition: runtime.c:5486
const object primitive_file_91exists_127
Definition: runtime.c:5376
object Cyc_string2number2_(void *data, object cont, int argc, object str,...)
Definition: runtime.c:1856
object cell_get(object cell)
Definition: runtime.c:289
object Cyc_bytevector_u8_set(void *data, object bv, object k, object b)
Definition: runtime.c:2525
const object primitive_assv
Definition: runtime.c:5279
object apply_va(void *data, object cont, int argc, object func,...)
Definition: runtime.c:4492
list malloc_make_pair(object, object)
Definition: runtime.c:3534
const object primitive_vector_127
Definition: runtime.c:5366
const object primitive_bytevector
Definition: runtime.c:5341
object Cyc_io_peek_char(void *data, object cont, object port)
Definition: runtime.c:3514
object Cyc_num_lt(void *, object cont, int argc, object n,...)
object Cyc_num_op_va_list(void *data, int argc, object(fn_op(void *, common_type *, object)), int default_no_args, int default_one_arg, object n, va_list ns, common_type *buf)
Definition: runtime.c:3146
object Cyc_bytevector_length(void *data, object bv)
Definition: runtime.c:2544
const object primitive_exit
Definition: runtime.c:5265
const object primitive_caaaar
Definition: runtime.c:5303
const object primitive_vector_91length
Definition: runtime.c:5284
const object primitive_call_95cc
Definition: runtime.c:5384
object find_symbol_by_name(const char *name)
Definition: runtime.c:358
object Cyc_set_car(void *, object l, object val)
Definition: runtime.c:1649
object Cyc_bytevector_append(void *data, object cont, int _argc, object bv,...)
Definition: runtime.c:2409
const object primitive__125_123
Definition: runtime.c:5261
object __halt(object obj)
Definition: runtime.c:2621
object Cyc_string_cmp(void *data, object str1, object str2)
Definition: runtime.c:2008
const object primitive_eof_91object_127
Definition: runtime.c:5355
const object primitive_bytevector_91u8_91set_67
Definition: runtime.c:5346
object Cyc_is_null(object o)
Definition: runtime.c:1478
const object primitive_eq_127
Definition: runtime.c:5275
object Cyc_set_cdr(void *, object l, object val)
Definition: runtime.c:1659
object Cyc_is_opaque(object o)
Definition: runtime.c:1626
const object primitive_Cyc_91string_91_125utf8
Definition: runtime.c:5348
object Cyc_mul_op(void *data, common_type *x, object y)
const object primitive_cdaaar
Definition: runtime.c:5311
const object primitive_string_91_125number
Definition: runtime.c:5321
const object primitive_eqv_127
Definition: runtime.c:5276
object Cyc_is_char(object o)
Definition: runtime.c:1572
const object primitive_string_91_125symbol
Definition: runtime.c:5336
const object primitive_cadddr
Definition: runtime.c:5310
void do_dispatch(void *data, int argc, function_type func, object clo, object *buffer)
void Cyc_exit_thread(gc_thread_data *thd)
Definition: runtime.c:5495
object Cyc_write_va_list(void *data, int argc, object x, va_list ap)
Definition: runtime.c:950
const object primitive_bytevector_91u8_91ref
Definition: runtime.c:5345
object Cyc_vector_set(void *d, object v, object k, object obj)
Definition: runtime.c:1669
const object primitive__91
Definition: runtime.c:5255
const object primitive_list_91_125vector
Definition: runtime.c:5352
int Cyc_num_gte_op(void *, object x, object y)
const object primitive_vector_91ref
Definition: runtime.c:5285
port_type * Cyc_io_open_input_string(void *data, object str)
Definition: mstreams.c:35
object Cyc_string_length(void *data, object str)
Definition: runtime.c:2060
object Cyc_has_cycle(object lst)
Definition: runtime.c:693
object Cyc_is_mutex(object o)
Definition: runtime.c:1551
object Cyc_trigger_minor_gc(void *data, object cont)
Definition: runtime.c:4801
const object primitive_system
Definition: runtime.c:5332
object Cyc_global_set(void *thd, object *glo, object value)
Definition: runtime.c:24
object Cyc_list2string(void *d, object cont, object lst)
Definition: runtime.c:1825
object Cyc_fast_div(void *data, object ptr, object x, object y)
Definition: runtime.c:2981
object Cyc_glo_eval_from_c
Definition: runtime.c:493
object Cyc_display_va(void *data, int argc, object x,...)
Definition: runtime.c:761
const object primitive_macro_127
Definition: runtime.c:5362
object Cyc_char_lte_op(void *data, object a, object b)
const object primitive_memv
Definition: runtime.c:5281
const object primitive_peek_91char
Definition: runtime.c:5379
const object primitive_cadar
Definition: runtime.c:5297
object Cyc_utf82string(void *data, object cont, object bv, object start, object end)
Definition: runtime.c:2443
object Cyc_io_close_input_port(void *data, object port)
Definition: runtime.c:3404
object dispatch_string_91append(void *data, int argc, object clo, object cont, object str1,...)
Definition: runtime.c:2045
object Cyc_sub(void *data, object cont, int argc, object n,...)
const object primitive_symbol_91_125string
Definition: runtime.c:5337
object Cyc_char_lt_op(void *data, object a, object b)
port_type Cyc_stdin(void)
Definition: runtime.c:3366
const object primitive_boolean_127
Definition: runtime.c:5353
object Cyc_sum(void *data, object cont, int argc, object n,...)
void pack_env_variables(void *data, object k)
Definition: runtime.c:162
object Cyc_bytevector_copy(void *data, object cont, object bv, object start, object end)
Definition: runtime.c:2414
int Cyc_num_eq_op(void *, object x, object y)
object Cyc_fast_sub(void *data, object ptr, object x, object y)
Definition: runtime.c:2831
const object primitive_Cyc_91installation_91dir
Definition: runtime.c:5326
const object primitive_Cyc_91cvar_127
Definition: runtime.c:5248
const object primitive_caadr
Definition: runtime.c:5296
const object primitive_close_91output_91port
Definition: runtime.c:5373
const object primitive_bytevector_127
Definition: runtime.c:5367
const object primitive_make_91vector
Definition: runtime.c:5340
const object primitive_cadr
Definition: runtime.c:5292
object Cyc_is_cvar(object o)
Definition: runtime.c:1619
object Cyc_mul(void *data, object cont, int argc, object n,...)
const object primitive_bytevector_91length
Definition: runtime.c:5283
const object primitive_set_91global_67
Definition: runtime.c:5272
object Cyc_is_real(object o)
Definition: runtime.c:1495
object Cyc_num_fast_gt_op(void *data, object x, object y)
void Cyc_st_print(void *data, FILE *out)
Definition: runtime.c:317
int Cyc_num_lt_op(void *, object x, object y)
const object primitive_assq
Definition: runtime.c:5278
object Cyc_bit_unset(void *data, object n1, object n2)
Definition: runtime.c:5562
void Cyc_check_bounds(void *data, const char *label, int len, int index)
Definition: runtime.c:73
const object primitive_integer_91_125char
Definition: runtime.c:5320
object Cyc_div(void *data, object cont, int argc, object n,...)
Definition: runtime.c:3119
object Cyc_char_gt_op(void *data, object a, object b)
void Cyc_invalid_type_error(void *data, int tag, object found)
Definition: runtime.c:58
const object primitive_caaddr
Definition: runtime.c:5306
const object primitive_cdadr
Definition: runtime.c:5300
const object primitive_char_91_125integer
Definition: runtime.c:5319
port_type Cyc_stderr(void)
Definition: runtime.c:3372
A union of all the constant-size objects.
Definition: types.h:1033
void dispatch_apply_va(void *data, int argc, object clo, object cont, object func,...)
Definition: runtime.c:4481
object Cyc_display(void *data, object, FILE *port)
Definition: runtime.c:787
int _cyc_argc
Definition: runtime.h:453
const object primitive__85
Definition: runtime.c:5256
object Cyc_num_eq(void *, object cont, int argc, object n,...)
object Cyc_num_fast_lt_op(void *data, object x, object y)
object Cyc_symbol2string(void *d, object cont, object sym)
Definition: runtime.c:1805
const object primitive_bytevector_91append
Definition: runtime.c:5342
object Cyc_current_exception_handler(void *data)
Definition: runtime.c:529
const object primitive_Cyc_91get_91cvar
Definition: runtime.c:5246
object Cyc_set_cvar(object var, object value)
Definition: runtime.c:673
void Cyc_halt(object obj)
Definition: runtime.c:2613
object is_library_loaded(const char *name)
Definition: runtime.c:398
object Cyc_num_gte(void *, object cont, int argc, object n,...)
const object primitive_Cyc_91has_91cycle_127
Definition: runtime.c:5250
object memqp(void *data, object x, list l)
Definition: runtime.c:1108
object Cyc_is_number(object o)
Definition: runtime.c:1485
object Cyc_is_integer(object o)
Definition: runtime.c:1507
const object primitive_Cyc_91current_91exception_91handler
Definition: runtime.c:5266
const object primitive_Cyc_91utf8_91_125string
Definition: runtime.c:5350
object Cyc_is_fixnum(object o)
Definition: runtime.c:1500
object Cyc_io_close_port(void *data, object port)
Definition: runtime.c:3414
object Cyc_command_line_arguments(void *data, object cont)
Definition: runtime.c:2213
const object primitive_set_91cell_67
Definition: runtime.c:5273
object Cyc_is_string(object o)
Definition: runtime.c:1565
const object primitive_cdddar
Definition: runtime.c:5317
object Cyc_bytevector(void *data, object cont, int argc, object bval,...)
Definition: runtime.c:2363
list global_table
Definition: runtime.c:422
const object primitive_length
Definition: runtime.c:5282
object Cyc_is_procedure(void *data, object o)
Definition: runtime.c:1579
bn_cmp_type
Definition: types.h:697
list assoc(void *data, object x, list l)
Definition: runtime.c:1131
const object primitive_Cyc_91spawn_91thread_67
Definition: runtime.c:5251
const object primitive_Cyc_91compilation_91environment
Definition: runtime.c:5328
const object primitive_Cyc_91global_91vars
Definition: runtime.c:5245
const object primitive_cddddr
Definition: runtime.c:5318
object Cyc_installation_dir(void *data, object cont, object type)
Definition: runtime.c:2144
object Cyc_eq(object x, object y)
Definition: runtime.c:1633
object Cyc_bignum_normalize(void *data, object n)
Definition: runtime.c:1273
object Cyc_sum_op(void *data, common_type *x, object y)
const object primitive_string_91cmp
Definition: runtime.c:5333
object Cyc_vector_length(void *data, object v)
Definition: runtime.c:1701
object apply(void *data, object cont, object func, object args)
Definition: runtime.c:4507
const object primitive_cell_91get
Definition: runtime.c:5271
const object primitive_pair_127
Definition: runtime.c:5360
#define prim(x)
Definition: types.h:1024
const object primitive__87
Definition: runtime.c:5254
const object primitive_cadadr
Definition: runtime.c:5308
const object primitive_number_127
Definition: runtime.c:5357
object Cyc_num_lte(void *, object cont, int argc, object n,...)
list assq(void *data, object x, list l)
Definition: runtime.c:1118
void Cyc_check_obj(void *data, int tag, object obj)
Definition: runtime.c:66
port_type Cyc_io_open_output_file(void *data, object str)
Definition: runtime.c:3391
void GC(void *, closure, object *, int)
Definition: runtime.c:4946
object Cyc_num_fast_gte_op(void *data, object x, object y)
const object primitive_real_127
Definition: runtime.c:5358
const object primitive_string_91set_67
Definition: runtime.c:5325
const object primitive_cdar
Definition: runtime.c:5293
const object primitive_cddadr
Definition: runtime.c:5316
object Cyc_div_op(void *data, common_type *x, object y)
Definition: runtime.c:3048
const object primitive_cddar
Definition: runtime.c:5301
const object primitive_close_91port
Definition: runtime.c:5371