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_int(d,obj) Cyc_check_type(d,Cyc_is_integer, integer_tag, obj);
77 #define Cyc_check_str(d,obj) Cyc_check_type(d,Cyc_is_string, string_tag, obj);
78 #define Cyc_check_sym(d,obj) Cyc_check_type(d,Cyc_is_symbol, symbol_tag, obj);
79 #define Cyc_check_vec(d,obj) Cyc_check_type(d,Cyc_is_vector, vector_tag, obj);
80 #define Cyc_check_bvec(d,obj) Cyc_check_type(d,Cyc_is_bytevector, bytevector_tag, obj);
81 #define Cyc_check_port(d,obj) Cyc_check_type(d,Cyc_is_port, port_tag, obj);
82 #define Cyc_check_mutex(d,obj) Cyc_check_type(d,Cyc_is_mutex, mutex_tag, obj);
83 #define Cyc_check_cond_var(d,obj) Cyc_check_type(d,Cyc_is_cond_var, cond_var_tag, obj);
84 void Cyc_invalid_type_error(void *data, int tag, object found);
85 void Cyc_check_obj(void *data, int tag, object obj);
86 void Cyc_check_bounds(void *data, const char *label, int len, int index);
88 /* END error checking */
89 
90 extern long global_stack_size;
91 extern long global_heap_size;
92 
93 char **get_env_variables();
94 void pack_env_variables(void *data, object k);
95 void set_env_variables(char **vars);
96 
97 object cell_get(object cell);
98 
99 #define global_set(glo,value) Cyc_global_set(data, (object *)&glo, value)
100 object Cyc_global_set(void *thd, object * glo, object value);
101 
102 /* Variable argument count support
103 
104  This macro is intended to be executed at the top of a function that
105  is passed 'var' as a variable-length argument. 'count' is the number
106  of varargs that were passed. EG:
107  - C definition: f(object a, ...)
108  - C call: f(1, 2, 3)
109  - var: a
110  - count: 3
111 
112  Argument count would need to be passed by the caller of f. Presumably
113  our compiler will compute the difference between the number of required
114  args and the number of provided ones, and pass the difference as 'count'
115  */
116 #define load_varargs(var, arg_var, count) \
117  list var = (count > 0) ? alloca(sizeof(pair_type)*count) : NULL; \
118  { \
119  int i; \
120  object tmp; \
121  va_list va; \
122  if (count > 0) { \
123  va_start(va, arg_var); \
124  for (i = 0; i < count; i++) { \
125  if (i) { \
126  tmp = va_arg(va, object); \
127  } else { \
128  tmp = arg_var; \
129  } \
130  var[i].hdr.mark = gc_color_red; \
131  var[i].hdr.grayed = 0; \
132  var[i].tag = pair_tag; \
133  var[i].pair_car = tmp; \
134  var[i].pair_cdr = (i == (count-1)) ? NULL : &var[i + 1]; \
135  } \
136  va_end(va); \
137  } \
138  }
139 /* Prototypes for primitive functions. */
140 
146 object Cyc_car(void *data, object lis);
147 object Cyc_cdr(void *data, object lis);
148 list malloc_make_pair(object, object);
149 object Cyc_set_cell(void *, object l, object val);
150 object Cyc_set_car(void *, object l, object val);
151 object Cyc_set_cdr(void *, object l, object val);
152 object Cyc_length(void *d, object l);
153 object Cyc_list2vector(void *data, object cont, object l);
154 object Cyc_list2string(void *d, object cont, object lst);
155 object Cyc_list(void *data, int argc, object cont, ...);
156 object memberp(void *data, object x, list l);
157 object memqp(void *data, object x, list l);
158 list assq(void *data, object x, list l);
159 list assoc(void *data, object x, list l);
168 object apply(void *data, object cont, object func, object args);
169 void Cyc_apply(void *data, int argc, closure cont, object prim, ...);
170 void dispatch_apply_va(void *data, int argc, object clo, object cont, object func, ...);
171 object apply_va(void *data, object cont, int argc, object func, ...);
172 void dispatch(void *data, int argc, function_type func, object clo, object cont,
173  object args);
174 void dispatch_va(void *data, int argc, function_type_va func, object clo,
175  object cont, object args);
176 void do_dispatch(void *data, int argc, function_type func, object clo,
177  object * buffer);
178 
186 object Cyc_string_cmp(void *data, object str1, object str2);
187 object dispatch_string_91append(void *data, int argc, object clo, object cont,
188  object str1, ...);
189 object Cyc_string2number_(void *d, object cont, object str);
190 object Cyc_string2number2_(void *data, object cont, int argc, object str, ...);
191 int binstr2int(const char *str);
192 int octstr2int(const char *str);
193 object Cyc_string_append(void *data, object cont, int argc, object str1, ...);
194 object Cyc_string_length(void *data, object str);
195 object Cyc_substring(void *data, object cont, object str, object start,
196  object end);
197 object Cyc_string_ref(void *data, object str, object k);
198 object Cyc_string_set(void *data, object str, object k, object chr);
206 object Cyc_char2integer(object chr);
214 object Cyc_symbol2string(void *d, object cont, object sym);
215 object Cyc_string2symbol(void *d, object str);
223 extern object Cyc_global_variables;
224 cvar_type *mcvar(object * var);
225 object Cyc_get_global_variables();
226 object Cyc_get_cvar(object var);
227 object Cyc_set_cvar(object var, object value);
235 object Cyc_display(void *data, object, FILE * port);
236 void dispatch_display_va(void *data, int argc, object clo, object cont,
237  object x, ...);
238 object Cyc_display_va(void *data, int argc, object x, ...);
239 object Cyc_display_va_list(void *data, int argc, object x, va_list ap);
240 object Cyc_write_char(void *data, object c, object port);
241 object Cyc_write(void *data, object, FILE * port);
242 void dispatch_write_va(void *data, int argc, object clo, object cont,
243  object x, ...);
244 object Cyc_write_va(void *data, int argc, object x, ...);
245 object Cyc_write_va_list(void *data, int argc, object x, va_list ap);
246 port_type Cyc_stdout(void);
247 port_type Cyc_stdin(void);
248 port_type Cyc_stderr(void);
249 port_type Cyc_io_open_input_file(void *data, object str);
250 port_type Cyc_io_open_output_file(void *data, object str);
252 port_type *Cyc_io_open_input_string(void *data, object str);
253 port_type *Cyc_io_open_input_bytevector(void *data, object bv);
254 void Cyc_io_get_output_string(void *data, object cont, object port);
255 void Cyc_io_get_output_bytevector(void *data, object cont, object port);
256 object Cyc_io_close_port(void *data, object port);
257 object Cyc_io_close_input_port(void *data, object port);
258 object Cyc_io_close_output_port(void *data, object port);
259 object Cyc_io_flush_output_port(void *data, object port);
260 object Cyc_io_read_char(void *data, object cont, object port);
261 object Cyc_io_peek_char(void *data, object cont, object port);
262 object Cyc_io_read_line(void *data, object cont, object port);
272 #define return_inexact_double_op(data, cont, OP, z) \
273  make_double(d, 0.0); \
274  Cyc_check_num(data, z); \
275  if (obj_is_int(z)) { \
276  d.value = OP(obj_obj2int(z)); \
277  } else if (type_of(z) == integer_tag) { \
278  d.value = OP(((integer_type *)z)->value); \
279  } else if (type_of(z) == bignum_tag) { \
280  d.value = OP(mp_get_double(&bignum_value(z))); \
281  } else { \
282  d.value = OP(((double_type *)z)->value); \
283  } \
284  return_closcall1(data, cont, &d)
285 
286 #define return_exact_double_op(data, cont, OP, z) \
287  int i = 0; \
288  Cyc_check_num(data, z); \
289  if (obj_is_int(z)) { \
290  i = obj_obj2int(z); \
291  } else if (type_of(z) == integer_tag) { \
292  i = (int)OP(((integer_type *)z)->value); \
293  } else if (type_of(z) == bignum_tag) { \
294  return_closcall1(data, cont, z); \
295  } else { \
296  i = (int)OP(((double_type *)z)->value); \
297  } \
298  return_closcall1(data, cont, obj_int2obj(i))
299 
300 #define unbox_number(n) \
301  ((obj_is_int(n) ? obj_obj2int(n) : \
302  ((type_of(n) == integer_tag) ? \
303  ((integer_type *)n)->value : \
304  ((double_type *)n)->value)))
305 
306 object Cyc_num_eq(void *, object cont, int argc, object n, ...);
307 object Cyc_num_gt(void *, object cont, int argc, object n, ...);
308 object Cyc_num_lt(void *, object cont, int argc, object n, ...);
309 object Cyc_num_gte(void *, object cont, int argc, object n, ...);
310 object Cyc_num_lte(void *, object cont, int argc, object n, ...);
311 int Cyc_num_eq_op(void *, object x, object y);
312 int Cyc_num_gt_op(void *, object x, object y);
313 int Cyc_num_lt_op(void *, object x, object y);
314 int Cyc_num_gte_op(void *, object x, object y);
315 int Cyc_num_lte_op(void *, object x, object y);
316 object Cyc_num_fast_eq_op(void *data, object x, object y);
317 object Cyc_num_fast_gt_op(void *data, object x, object y);
318 object Cyc_num_fast_lt_op(void *data, object x, object y);
319 object Cyc_num_fast_gte_op(void *data, object x, object y);
320 object Cyc_num_fast_lte_op(void *data, object x, object y);
321 object Cyc_num_cmp_va_list(void *data, int argc,
322  int (fn_op(void *, object, object)), object n,
323  va_list ns);
324 void Cyc_expt(void *data, object cont, object x, object y);
325 void Cyc_remainder(void *data, object cont, object num1, object num2);
326 object Cyc_number2string2(void *data, object cont, int argc, object n, ...);
327 object Cyc_integer2char(void *data, object n);
328 object Cyc_sum_op(void *data, common_type * x, object y);
329 object Cyc_sub_op(void *data, common_type * x, object y);
330 object Cyc_mul_op(void *data, common_type * x, object y);
331 object Cyc_div_op(void *data, common_type * x, object y);
332 object Cyc_sum(void *data, object cont, int argc, object n, ...);
333 object Cyc_sub(void *data, object cont, int argc, object n, ...);
334 object Cyc_mul(void *data, object cont, int argc, object n, ...);
335 object Cyc_div(void *data, object cont, int argc, object n, ...);
336 object Cyc_fast_sum(void *data, object ptr, object x, object y);
337 object Cyc_fast_sub(void *data, object ptr, object x, object y);
338 object Cyc_fast_mul(void *data, object ptr, object x, object y);
339 object Cyc_fast_div(void *data, object ptr, object x, object y);
340 object Cyc_bit_unset(void *data, object n1, object n2);
341 object Cyc_bit_set(void *data, object n1, object n2);
342 object Cyc_num_op_va_list(void *data, int argc,
343  object(fn_op(void *, common_type *, object)),
344  int default_no_args, int default_one_arg, object n,
345  va_list ns, common_type * buf);
346 double MRG32k3a (double seed);
352 object Cyc_eq(object x, object y);
353 int equal(object, object);
354 object equalp(object, object);
355 object Cyc_has_cycle(object lst);
356 object Cyc_is_boolean(object o);
357 object Cyc_is_pair(object o);
358 object Cyc_is_null(object o);
359 object Cyc_is_number(object o);
360 object Cyc_is_real(object o);
361 object Cyc_is_integer(object o);
362 object Cyc_is_bignum(object o);
363 object Cyc_is_vector(object o);
364 object Cyc_is_bytevector(object o);
365 object Cyc_is_port(object o);
366 object Cyc_is_mutex(object o);
367 object Cyc_is_cond_var(object o);
368 object Cyc_is_symbol(object o);
369 object Cyc_is_string(object o);
370 object Cyc_is_char(object o);
371 object Cyc_is_procedure(void *data, object o);
372 object Cyc_is_macro(object o);
373 object Cyc_is_eof_object(object o);
374 object Cyc_is_cvar(object o);
375 object Cyc_is_opaque(object o);
383 object Cyc_vector_length(void *data, object v);
384 object Cyc_vector_ref(void *d, object v, object k);
385 object Cyc_vector_set(void *d, object v, object k, object obj);
386 object Cyc_make_vector(void *data, object cont, int argc, object len, ...);
394 object Cyc_make_bytevector(void *data, object cont, int argc, object len, ...);
395 object Cyc_bytevector(void *data, object cont, int argc, object bval, ...);
396 object Cyc_bytevector_length(void *data, object bv);
397 object Cyc_bytevector_append(void *data, object cont, int _argc, object bv,
398  ...);
399 object Cyc_bytevector_copy(void *data, object cont, object bv, object start,
400  object end);
401 object Cyc_bytevector_u8_ref(void *data, object bv, object k);
402 object Cyc_bytevector_u8_set(void *data, object bv, object k, object b);
403 object Cyc_utf82string(void *data, object cont, object bv, object start,
404  object end);
405 object Cyc_string2utf8(void *data, object cont, object str, object start,
406  object end);
415 char **_cyc_argv;
416 object Cyc_installation_dir(void *data, object cont, object type);
417 object Cyc_compilation_environment(void *data, object cont, object var);
418 object Cyc_command_line_arguments(void *data, object cont);
419 object Cyc_system(object cmd);
420 void Cyc_halt(object obj);
421 object __halt(object obj);
422 object Cyc_io_delete_file(void *data, object filename);
423 object Cyc_io_file_exists(void *data, object filename);
434 object Cyc_spawn_thread(object thunk);
436 void Cyc_end_thread(gc_thread_data * thd);
437 void Cyc_exit_thread(gc_thread_data * thd);
438 object Cyc_thread_sleep(void *data, object timeout);
446 object Cyc_trigger_minor_gc(void *data, object cont);
447 object copy2heap(void *data, object obj);
456 void Cyc_st_add(void *data, char *frame);
457 void Cyc_st_print(void *data, FILE * out);
468 extern const object primitive_Cyc_91global_91vars;
469 extern const object primitive_Cyc_91get_91cvar;
470 extern const object primitive_Cyc_91set_91cvar_67;
471 extern const object primitive_Cyc_91cvar_127;
472 extern const object primitive_Cyc_91opaque_127;
473 extern const object primitive_Cyc_91has_91cycle_127;
474 extern const object primitive_Cyc_91spawn_91thread_67;
475 extern const object primitive_Cyc_91end_91thread_67;
476 extern const object primitive__87;
477 extern const object primitive__91;
478 extern const object primitive__85;
479 extern const object primitive__95;
480 extern const object primitive__123;
481 extern const object primitive__125;
482 extern const object primitive__121;
483 extern const object primitive__125_123;
484 extern const object primitive__121_123;
485 extern const object primitive_apply;
486 extern const object primitive__75halt;
487 extern const object primitive_exit;
490 extern const object primitive_cons;
491 extern const object primitive_cell_91get;
492 extern const object primitive_set_91global_67;
493 extern const object primitive_set_91cell_67;
494 extern const object primitive_cell;
495 extern const object primitive_eq_127;
496 extern const object primitive_eqv_127;
497 extern const object primitive_equal_127;
498 extern const object primitive_assq;
499 extern const object primitive_assv;
500 extern const object primitive_memq;
501 extern const object primitive_memv;
502 extern const object primitive_length;
503 extern const object primitive_vector_91length;
504 extern const object primitive_bytevector_91length;
505 extern const object primitive_set_91car_67;
506 extern const object primitive_set_91cdr_67;
507 extern const object primitive_car;
508 extern const object primitive_cdr;
509 extern const object primitive_caar;
510 extern const object primitive_cadr;
511 extern const object primitive_cdar;
512 extern const object primitive_cddr;
513 extern const object primitive_caaar;
514 extern const object primitive_caadr;
515 extern const object primitive_cadar;
516 extern const object primitive_caddr;
517 extern const object primitive_cdaar;
518 extern const object primitive_cdadr;
519 extern const object primitive_cddar;
520 extern const object primitive_cdddr;
521 extern const object primitive_caaaar;
522 extern const object primitive_caaadr;
523 extern const object primitive_caadar;
524 extern const object primitive_caaddr;
525 extern const object primitive_cadaar;
526 extern const object primitive_cadadr;
527 extern const object primitive_caddar;
528 extern const object primitive_cadddr;
529 extern const object primitive_cdaaar;
530 extern const object primitive_cdaadr;
531 extern const object primitive_cdadar;
532 extern const object primitive_cdaddr;
533 extern const object primitive_cddaar;
534 extern const object primitive_cddadr;
535 extern const object primitive_cdddar;
536 extern const object primitive_cddddr;
537 extern const object primitive_char_91_125integer;
538 extern const object primitive_integer_91_125char;
539 extern const object primitive_string_91_125number;
540 extern const object primitive_string_91cmp;
541 extern const object primitive_string_91append;
542 extern const object primitive_list_91_125string;
543 extern const object primitive_string_91_125symbol;
544 extern const object primitive_symbol_91_125string;
545 extern const object primitive_number_91_125string;
546 extern const object primitive_string_91length;
547 extern const object primitive_substring;
548 extern const object primitive_make_91bytevector;
549 extern const object primitive_make_91vector;
550 extern const object primitive_list_91_125vector;
551 extern const object primitive_vector_91ref;
552 extern const object primitive_vector_91set_67;
553 extern const object primitive_bytevector;
554 extern const object primitive_bytevector_91append;
555 extern const object primitive_Cyc_91bytevector_91copy;
556 extern const object primitive_Cyc_91string_91_125utf8;
557 extern const object primitive_Cyc_91utf8_91_125string;
558 extern const object primitive_bytevector_91u8_91ref;
559 extern const object primitive_bytevector_91u8_91set_67;
560 extern const object primitive_string_91ref;
561 extern const object primitive_string_91set_67;
562 extern const object primitive_Cyc_91installation_91dir;
564 extern const object primitive_command_91line_91arguments;
565 extern const object primitive_system;
566 extern const object primitive_boolean_127;
567 extern const object primitive_char_127;
568 extern const object primitive_eof_91object_127;
569 extern const object primitive_null_127;
570 extern const object primitive_number_127;
571 extern const object primitive_real_127;
572 extern const object primitive_integer_127;
573 extern const object primitive_pair_127;
574 extern const object primitive_procedure_127;
575 extern const object primitive_macro_127;
576 extern const object primitive_Cyc_91macro_127;
577 extern const object primitive_port_127;
578 extern const object primitive_vector_127;
579 extern const object primitive_bytevector_127;
580 extern const object primitive_string_127;
581 extern const object primitive_symbol_127;
582 extern const object primitive_open_91input_91file;
583 extern const object primitive_open_91output_91file;
584 extern const object primitive_close_91port;
585 extern const object primitive_close_91input_91port;
586 extern const object primitive_close_91output_91port;
587 extern const object primitive_Cyc_91flush_91output_91port;
588 extern const object primitive_file_91exists_127;
589 extern const object primitive_delete_91file;
590 extern const object primitive_read_91char;
591 extern const object primitive_peek_91char;
592 extern const object primitive_Cyc_91read_91line;
593 extern const object primitive_Cyc_91write_91char;
594 extern const object primitive_Cyc_91write;
595 extern const object primitive_Cyc_91display;
596 extern const object primitive_call_95cc;
597 /* -------------------------------------------- */
608 extern object Cyc_glo_eval_from_c;
609 extern object Cyc_glo_call_cc;
610 
611 #define __glo_eval_91from_91c_scheme_eval Cyc_glo_eval_from_c
612 #define __glo_call_95cc_scheme_base Cyc_glo_call_cc
613 
619 object Cyc_default_exception_handler(void *data, int argc, closure _, object err);
620 
621 object Cyc_current_exception_handler(void *data);
622 void Cyc_rt_raise(void *data, object err);
623 void Cyc_rt_raise2(void *data, const char *msg, object err);
624 void Cyc_rt_raise_msg(void *data, const char *err);
638 object add_symbol(symbol_type * psym);
639 object add_symbol_by_name(const char *name);
640 object find_symbol_by_name(const char *name);
641 object find_or_add_symbol(const char *name);
642 char *_strdup(const char *s);
651 extern list global_table;
652 void add_global(object * glo);
655 #endif /* CYCLONE_RUNTIME_H */
object Cyc_is_pair(object o)
Definition: runtime.c:1439
const object primitive_cdaar
Definition: runtime.c:5234
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:1051
const object primitive_substring
Definition: runtime.c:5258
A closed-over function with no variables.
Definition: types.h:948
object Cyc_vector_ref(void *d, object v, object k)
Definition: runtime.c:1648
long global_heap_size
object copy2heap(void *data, object obj)
Definition: runtime.c:5422
object Cyc_bit_set(void *data, object n1, object n2)
Definition: runtime.c:5465
object Cyc_write(void *data, object, FILE *port)
Definition: runtime.c:1044
object Cyc_is_symbol(object o)
Definition: runtime.c:1484
char ** get_env_variables()
Definition: runtime.c:156
const object primitive_Cyc_91write_91char
Definition: runtime.c:5316
const object primitive_caar
Definition: runtime.c:5226
object add_symbol_by_name(const char *name)
Definition: runtime.c:369
object Cyc_get_global_variables()
Definition: runtime.c:628
port_type Cyc_io_open_input_file(void *data, object str)
Definition: runtime.c:3314
const object primitive_memq
Definition: runtime.c:5215
The port object type.
Definition: types.h:757
const object primitive_command_91line_91arguments
Definition: runtime.c:5265
const object primitive_open_91input_91file
Definition: runtime.c:5304
object Cyc_string_append(void *data, object cont, int argc, object str1,...)
Definition: runtime.c:2012
object Cyc_is_eof_object(object o)
Definition: runtime.c:1573
void Cyc_st_add(void *data, char *frame)
Definition: runtime.c:298
const object primitive_cdadar
Definition: runtime.c:5248
object Cyc_is_bytevector(object o)
Definition: runtime.c:1498
const object primitive_port_127
Definition: runtime.c:5300
object memberp(void *data, object x, list l)
Definition: runtime.c:1066
object Cyc_is_macro(object o)
Definition: runtime.c:1561
const object primitive_cdddr
Definition: runtime.c:5237
const object quote_void
Definition: runtime.c:295
void add_global(object *glo)
Definition: runtime.c:392
object Cyc_fast_mul(void *data, object ptr, object x, object y)
Definition: runtime.c:2842
object Cyc_cdr(void *data, object lis)
Definition: runtime.c:622
object add_symbol(symbol_type *psym)
Definition: runtime.c:360
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:3176
object Cyc_string_ref(void *data, object str, object k)
Definition: runtime.c:2047
object Cyc_string_set(void *data, object str, object k, object chr)
Definition: runtime.c:2026
port_type Cyc_stdout(void)
Definition: runtime.c:3296
const object primitive_Cyc_91macro_127
Definition: runtime.c:5298
The pair (cons) type.
Definition: types.h:830
double MRG32k3a(double seed)
Definition: runtime.c:5494
const object primitive_cdaddr
Definition: runtime.c:5249
Definition: types.h:256
const object primitive_Cyc_91read_91line
Definition: runtime.c:5315
const object primitive_caddar
Definition: runtime.c:5244
const object primitive_string_91length
Definition: runtime.c:5257
object Cyc_fast_sum(void *data, object ptr, object x, object y)
Definition: runtime.c:2691
const object primitive_symbol_127
Definition: runtime.c:5303
const object primitive_Cyc_91flush_91output_91port
Definition: runtime.c:5309
const object Cyc_EOF
Definition: runtime.c:150
object equalp(object, object)
Definition: runtime.c:1129
int Cyc_num_lte_op(void *, object x, object y)
const object primitive_procedure_127
Definition: runtime.c:5296
const object primitive_integer_127
Definition: runtime.c:5294
void dispatch_display_va(void *data, int argc, object clo, object cont, object x,...)
Definition: runtime.c:718
void Cyc_apply(void *data, int argc, closure cont, object prim,...)
Definition: runtime.c:4520
object Cyc_is_boolean(object o)
Definition: runtime.c:1430
const object primitive_cdaadr
Definition: runtime.c:5247
object Cyc_io_close_output_port(void *data, object port)
Definition: runtime.c:3345
object Cyc_glo_call_cc
Definition: runtime.c:460
const object primitive_open_91output_91file
Definition: runtime.c:5305
object Cyc_io_read_char(void *data, object cont, object port)
Definition: runtime.c:3407
const object primitive_cadaar
Definition: runtime.c:5242
const object primitive_cddaar
Definition: runtime.c:5250
const object primitive_cell
Definition: runtime.c:5209
object Cyc_char2integer(object chr)
Definition: runtime.c:2535
const object primitive_caaar
Definition: runtime.c:5230
object Cyc_is_bignum(object o)
Definition: runtime.c:1477
const object primitive_caaadr
Definition: runtime.c:5239
object Cyc_thread_sleep(void *data, object timeout)
Definition: runtime.c:5408
const object primitive__125
Definition: runtime.c:5194
void(* function_type_va)(int, object, object, object,...)
Definition: types.h:515
object Cyc_string2symbol(void *d, object str)
Definition: runtime.c:1775
const object primitive_list_91_125string
Definition: runtime.c:5270
void dispatch(void *data, int argc, function_type func, object clo, object cont, object args)
Definition: runtime.c:4896
object Cyc_substring(void *data, object cont, object str, object start, object end)
Definition: runtime.c:2066
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:4915
object Cyc_is_cond_var(object o)
Definition: runtime.c:1519
const object primitive_string_127
Definition: runtime.c:5299
const object primitive__121_123
Definition: runtime.c:5197
const object primitive_apply
Definition: runtime.c:5198
cvar_type * mcvar(object *var)
Definition: runtime.c:3481
object Cyc_compilation_environment(void *data, object cont, object var)
Definition: runtime.c:2132
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:1601
void Cyc_start_trampoline(gc_thread_data *thd)
Definition: runtime.c:4578
void dispatch_write_va(void *data, int argc, object clo, object cont, object x,...)
Definition: runtime.c:897
object Cyc_car(void *data, object lis)
Definition: runtime.c:616
void Cyc_remainder(void *data, object cont, object num1, object num2)
Definition: runtime.c:3238
const object primitive_delete_91file
Definition: runtime.c:5312
object Cyc_num_cmp_va_list(void *data, int argc, int(fn_op(void *, object, object)), object n, va_list ns)
Definition: runtime.c:1187
const object primitive_cons
Definition: runtime.c:5205
object Cyc_is_vector(object o)
Definition: runtime.c:1491
char * _strdup(const char *s)
Definition: runtime.c:341
object Cyc_make_bytevector(void *data, object cont, int argc, object len,...)
Definition: runtime.c:2238
int equal(object, object)
Definition: runtime.c:540
void Cyc_rt_raise_msg(void *data, const char *err)
Definition: runtime.c:532
object Cyc_num_fast_lte_op(void *data, object x, object y)
object Cyc_list2vector(void *data, object cont, object l)
Definition: runtime.c:2503
const object boolean_f
Definition: runtime.c:291
object Cyc_io_delete_file(void *data, object filename)
Definition: runtime.c:3382
const object primitive_vector_91set_67
Definition: runtime.c:5221
const object primitive_string_91ref
Definition: runtime.c:5259
const object primitive_set_91car_67
Definition: runtime.c:5222
int Cyc_num_gt_op(void *, object x, object y)
object Cyc_length(void *d, object l)
Definition: runtime.c:1672
const object primitive_car
Definition: runtime.c:5224
const object primitive_Cyc_91display
Definition: runtime.c:5318
int binstr2int(const char *str)
Definition: runtime.c:1946
object Cyc_spawn_thread(object thunk)
Definition: runtime.c:5345
Symbols are similar to strings, but only one instance of each unique symbol is created, so comparisons are O(1).
Definition: types.h:609
const object primitive_number_91_125string
Definition: runtime.c:5273
object Cyc_io_flush_output_port(void *data, object port)
Definition: runtime.c:3368
object Cyc_default_exception_handler(void *data, int argc, closure _, object err)
Definition: runtime.c:464
const object primitive_string_91append
Definition: runtime.c:5269
const object primitive_set_91cdr_67
Definition: runtime.c:5223
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:1505
object Cyc_io_read_line(void *data, object cont, object port)
Definition: runtime.c:3424
const object primitive_cddr
Definition: runtime.c:5229
void Cyc_rt_raise(void *data, object err)
Definition: runtime.c:508
object Cyc_bytevector_u8_ref(void *data, object bv, object k)
Definition: runtime.c:2454
object Cyc_global_variables
Definition: runtime.c:144
const object primitive_close_91input_91port
Definition: runtime.c:5307
void Cyc_io_get_output_bytevector(void *data, object cont, object port)
Definition: mstreams.c:109
const object primitive_caddr
Definition: runtime.c:5233
const object primitive_null_127
Definition: runtime.c:5291
object Cyc_write_va(void *data, int argc, object x,...)
Definition: runtime.c:908
char ** _cyc_argv
Definition: runtime.h:415
C-variable integration type - wrapper around a Cyclone object pointer.
Definition: types.h:520
object Cyc_system(object cmd)
Definition: runtime.c:2527
const object primitive__95
Definition: runtime.c:5192
object Cyc_string2number_(void *d, object cont, object str)
Definition: runtime.c:1911
const object primitive_make_91bytevector
Definition: runtime.c:5274
object Cyc_display_va_list(void *data, int argc, object x, va_list ap)
Definition: runtime.c:739
object Cyc_make_vector(void *data, object cont, int argc, object len,...)
Definition: runtime.c:2186
const object primitive_equal_127
Definition: runtime.c:5212
const object boolean_t
Definition: runtime.c:290
const object primitive_char_127
Definition: runtime.c:5289
const object primitive__123
Definition: runtime.c:5193
const object primitive_Cyc_91write
Definition: runtime.c:5317
const object primitive_Cyc_91set_91cvar_67
Definition: runtime.c:5182
const object primitive_Cyc_91bytevector_91copy
Definition: runtime.c:5278
const object primitive_cdr
Definition: runtime.c:5225
const object primitive_Cyc_91default_91exception_91handler
Definition: runtime.c:5203
const object primitive_Cyc_91opaque_127
Definition: runtime.c:5184
object Cyc_get_cvar(object var)
Definition: runtime.c:633
long global_stack_size
object Cyc_number2string2(void *data, object cont, int argc, object n,...)
Definition: runtime.c:1707
const object primitive__121
Definition: runtime.c:5195
const object primitive__75halt
Definition: runtime.c:5199
void Cyc_rt_raise2(void *data, const char *msg, object err)
Definition: runtime.c:519
object Cyc_list(void *data, int argc, object cont,...)
Definition: runtime.c:1810
const object primitive_caadar
Definition: runtime.c:5240
void gc_init_heap(long heap_size)
Perform one-time heap initializations for the program.
Definition: runtime.c:266
const object primitive_read_91char
Definition: runtime.c:5313
const object primitive_Cyc_91end_91thread_67
Definition: runtime.c:5188
object Cyc_integer2char(void *data, object n)
Definition: runtime.c:2540
object Cyc_io_file_exists(void *data, object filename)
Definition: runtime.c:3392
void set_env_variables(char **vars)
Definition: runtime.c:203
void(* function_type)()
Definition: types.h:512
int octstr2int(const char *str)
Definition: runtime.c:1957
object Cyc_string2utf8(void *data, object cont, object str, object start, object end)
Definition: runtime.c:2425
object find_or_add_symbol(const char *name)
Definition: runtime.c:377
void Cyc_end_thread(gc_thread_data *thd)
Definition: runtime.c:5381
const object primitive_file_91exists_127
Definition: runtime.c:5311
object Cyc_string2number2_(void *data, object cont, int argc, object str,...)
Definition: runtime.c:1817
object cell_get(object cell)
Definition: runtime.c:281
object Cyc_bytevector_u8_set(void *data, object bv, object k, object b)
Definition: runtime.c:2474
const object primitive_assv
Definition: runtime.c:5214
object apply_va(void *data, object cont, int argc, object func,...)
Definition: runtime.c:4428
list malloc_make_pair(object, object)
Definition: runtime.c:3470
const object primitive_vector_127
Definition: runtime.c:5301
const object primitive_bytevector
Definition: runtime.c:5276
object Cyc_io_peek_char(void *data, object cont, object port)
Definition: runtime.c:3450
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:3082
object Cyc_bytevector_length(void *data, object bv)
Definition: runtime.c:2493
const object primitive_exit
Definition: runtime.c:5200
const object primitive_caaaar
Definition: runtime.c:5238
const object primitive_vector_91length
Definition: runtime.c:5219
const object primitive_call_95cc
Definition: runtime.c:5319
object find_symbol_by_name(const char *name)
Definition: runtime.c:350
object Cyc_set_car(void *, object l, object val)
Definition: runtime.c:1610
object Cyc_bytevector_append(void *data, object cont, int _argc, object bv,...)
Definition: runtime.c:2358
const object primitive__125_123
Definition: runtime.c:5196
object __halt(object obj)
Definition: runtime.c:2557
object Cyc_string_cmp(void *data, object str1, object str2)
Definition: runtime.c:1967
const object primitive_eof_91object_127
Definition: runtime.c:5290
const object primitive_bytevector_91u8_91set_67
Definition: runtime.c:5281
object Cyc_is_null(object o)
Definition: runtime.c:1446
const object primitive_eq_127
Definition: runtime.c:5210
object Cyc_set_cdr(void *, object l, object val)
Definition: runtime.c:1620
object Cyc_is_opaque(object o)
Definition: runtime.c:1587
const object primitive_Cyc_91string_91_125utf8
Definition: runtime.c:5283
object Cyc_mul_op(void *data, common_type *x, object y)
const object primitive_cdaaar
Definition: runtime.c:5246
const object primitive_string_91_125number
Definition: runtime.c:5256
const object primitive_eqv_127
Definition: runtime.c:5211
object Cyc_is_char(object o)
Definition: runtime.c:1533
const object primitive_string_91_125symbol
Definition: runtime.c:5271
const object primitive_cadddr
Definition: runtime.c:5245
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:5390
object Cyc_write_va_list(void *data, int argc, object x, va_list ap)
Definition: runtime.c:918
const object primitive_bytevector_91u8_91ref
Definition: runtime.c:5280
object Cyc_vector_set(void *d, object v, object k, object obj)
Definition: runtime.c:1630
const object primitive__91
Definition: runtime.c:5190
const object primitive_list_91_125vector
Definition: runtime.c:5287
int Cyc_num_gte_op(void *, object x, object y)
const object primitive_vector_91ref
Definition: runtime.c:5220
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:2019
object Cyc_has_cycle(object lst)
Definition: runtime.c:661
object Cyc_is_mutex(object o)
Definition: runtime.c:1512
object Cyc_trigger_minor_gc(void *data, object cont)
Definition: runtime.c:4737
const object primitive_system
Definition: runtime.c:5267
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:1786
object Cyc_fast_div(void *data, object ptr, object x, object y)
Definition: runtime.c:2917
object Cyc_glo_eval_from_c
Definition: runtime.c:461
object Cyc_display_va(void *data, int argc, object x,...)
Definition: runtime.c:729
const object primitive_macro_127
Definition: runtime.c:5297
const object primitive_memv
Definition: runtime.c:5216
const object primitive_peek_91char
Definition: runtime.c:5314
const object primitive_cadar
Definition: runtime.c:5232
object Cyc_utf82string(void *data, object cont, object bv, object start, object end)
Definition: runtime.c:2392
object Cyc_io_close_input_port(void *data, object port)
Definition: runtime.c:3340
object dispatch_string_91append(void *data, int argc, object clo, object cont, object str1,...)
Definition: runtime.c:2004
object Cyc_sub(void *data, object cont, int argc, object n,...)
const object primitive_symbol_91_125string
Definition: runtime.c:5272
port_type Cyc_stdin(void)
Definition: runtime.c:3302
const object primitive_boolean_127
Definition: runtime.c:5288
object Cyc_sum(void *data, object cont, int argc, object n,...)
void pack_env_variables(void *data, object k)
Definition: runtime.c:161
object Cyc_bytevector_copy(void *data, object cont, object bv, object start, object end)
Definition: runtime.c:2363
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:2767
const object primitive_Cyc_91installation_91dir
Definition: runtime.c:5261
const object primitive_Cyc_91cvar_127
Definition: runtime.c:5183
const object primitive_caadr
Definition: runtime.c:5231
const object primitive_close_91output_91port
Definition: runtime.c:5308
const object primitive_bytevector_127
Definition: runtime.c:5302
const object primitive_make_91vector
Definition: runtime.c:5275
const object primitive_cadr
Definition: runtime.c:5227
object Cyc_is_cvar(object o)
Definition: runtime.c:1580
object Cyc_mul(void *data, object cont, int argc, object n,...)
const object primitive_bytevector_91length
Definition: runtime.c:5218
const object primitive_set_91global_67
Definition: runtime.c:5207
object Cyc_is_real(object o)
Definition: runtime.c:1463
object Cyc_num_fast_gt_op(void *data, object x, object y)
void Cyc_st_print(void *data, FILE *out)
Definition: runtime.c:309
int Cyc_num_lt_op(void *, object x, object y)
const object primitive_assq
Definition: runtime.c:5213
object Cyc_bit_unset(void *data, object n1, object n2)
Definition: runtime.c:5457
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:5255
object Cyc_div(void *data, object cont, int argc, object n,...)
Definition: runtime.c:3055
void Cyc_invalid_type_error(void *data, int tag, object found)
Definition: runtime.c:58
const object primitive_caaddr
Definition: runtime.c:5241
const object primitive_cdadr
Definition: runtime.c:5235
const object primitive_char_91_125integer
Definition: runtime.c:5254
port_type Cyc_stderr(void)
Definition: runtime.c:3308
A union of all the constant-size objects.
Definition: types.h:1027
void dispatch_apply_va(void *data, int argc, object clo, object cont, object func,...)
Definition: runtime.c:4417
object Cyc_display(void *data, object, FILE *port)
Definition: runtime.c:755
int _cyc_argc
Definition: runtime.h:414
const object primitive__85
Definition: runtime.c:5191
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:1766
const object primitive_bytevector_91append
Definition: runtime.c:5277
object Cyc_current_exception_handler(void *data)
Definition: runtime.c:497
const object primitive_Cyc_91get_91cvar
Definition: runtime.c:5181
object Cyc_set_cvar(object var, object value)
Definition: runtime.c:641
void Cyc_halt(object obj)
Definition: runtime.c:2549
object Cyc_num_gte(void *, object cont, int argc, object n,...)
const object primitive_Cyc_91has_91cycle_127
Definition: runtime.c:5185
object memqp(void *data, object x, list l)
Definition: runtime.c:1076
object Cyc_is_number(object o)
Definition: runtime.c:1453
object Cyc_is_integer(object o)
Definition: runtime.c:1468
const object primitive_Cyc_91current_91exception_91handler
Definition: runtime.c:5201
const object primitive_Cyc_91utf8_91_125string
Definition: runtime.c:5285
object Cyc_io_close_port(void *data, object port)
Definition: runtime.c:3350
object Cyc_command_line_arguments(void *data, object cont)
Definition: runtime.c:2167
const object primitive_set_91cell_67
Definition: runtime.c:5208
object Cyc_is_string(object o)
Definition: runtime.c:1526
const object primitive_cdddar
Definition: runtime.c:5252
object Cyc_bytevector(void *data, object cont, int argc, object bval,...)
Definition: runtime.c:2312
list global_table
Definition: runtime.c:390
const object primitive_length
Definition: runtime.c:5217
object Cyc_is_procedure(void *data, object o)
Definition: runtime.c:1540
list assoc(void *data, object x, list l)
Definition: runtime.c:1099
const object primitive_Cyc_91spawn_91thread_67
Definition: runtime.c:5186
const object primitive_Cyc_91compilation_91environment
Definition: runtime.c:5263
const object primitive_Cyc_91global_91vars
Definition: runtime.c:5180
const object primitive_cddddr
Definition: runtime.c:5253
object Cyc_installation_dir(void *data, object cont, object type)
Definition: runtime.c:2103
object Cyc_eq(object x, object y)
Definition: runtime.c:1594
object Cyc_sum_op(void *data, common_type *x, object y)
const object primitive_string_91cmp
Definition: runtime.c:5268
object Cyc_vector_length(void *data, object v)
Definition: runtime.c:1662
object apply(void *data, object cont, object func, object args)
Definition: runtime.c:4443
const object primitive_cell_91get
Definition: runtime.c:5206
const object primitive_pair_127
Definition: runtime.c:5295
#define prim(x)
Definition: types.h:1018
const object primitive__87
Definition: runtime.c:5189
const object primitive_cadadr
Definition: runtime.c:5243
const object primitive_number_127
Definition: runtime.c:5292
object Cyc_num_lte(void *, object cont, int argc, object n,...)
list assq(void *data, object x, list l)
Definition: runtime.c:1086
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:3327
void GC(void *, closure, object *, int)
Definition: runtime.c:4881
object Cyc_num_fast_gte_op(void *data, object x, object y)
const object primitive_real_127
Definition: runtime.c:5293
const object primitive_string_91set_67
Definition: runtime.c:5260
const object primitive_cdar
Definition: runtime.c:5228
const object primitive_cddadr
Definition: runtime.c:5251
object Cyc_div_op(void *data, common_type *x, object y)
Definition: runtime.c:2984
const object primitive_cddar
Definition: runtime.c:5236
const object primitive_close_91port
Definition: runtime.c:5306