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 
145 object Cyc_car(void *data, object lis);
146 object Cyc_cdr(void *data, object lis);
147 list malloc_make_pair(object, object);
148 object Cyc_set_cell(void *, object l, object val);
149 object Cyc_set_car(void *, object l, object val);
150 object Cyc_set_cdr(void *, object l, object val);
151 object Cyc_length(void *d, object l);
152 object Cyc_list2vector(void *data, object cont, object l);
153 object Cyc_list2string(void *d, object cont, object lst);
154 object Cyc_list(void *data, int argc, object cont, ...);
155 object memberp(void *data, object x, list l);
156 object memqp(void *data, object x, list l);
157 list assq(void *data, object x, list l);
158 list assoc(void *data, object x, list l);
166 object apply(void *data, object cont, object func, object args);
167 void Cyc_apply(void *data, int argc, closure cont, object prim, ...);
168 void dispatch_apply_va(void *data, int argc, object clo, object cont, object func, ...);
169 object apply_va(void *data, object cont, int argc, object func, ...);
170 void dispatch(void *data, int argc, function_type func, object clo, object cont,
171  object args);
172 void dispatch_va(void *data, int argc, function_type_va func, object clo,
173  object cont, object args);
174 void do_dispatch(void *data, int argc, function_type func, object clo,
175  object * buffer);
176 
183 object Cyc_string_cmp(void *data, object str1, object str2);
184 object dispatch_string_91append(void *data, int argc, object clo, object cont,
185  object str1, ...);
186 object Cyc_string2number_(void *d, object cont, object str);
187 object Cyc_string2number2_(void *data, object cont, int argc, object str, ...);
188 int binstr2int(const char *str);
189 int octstr2int(const char *str);
190 object Cyc_string_append(void *data, object cont, int argc, object str1, ...);
191 object Cyc_string_length(void *data, object str);
192 object Cyc_substring(void *data, object cont, object str, object start,
193  object end);
194 object Cyc_string_ref(void *data, object str, object k);
195 object Cyc_string_set(void *data, object str, object k, object chr);
202 object Cyc_char2integer(object chr);
209 object Cyc_symbol2string(void *d, object cont, object sym);
210 object Cyc_string2symbol(void *d, object str);
222 object add_symbol(symbol_type * psym);
223 object add_symbol_by_name(const char *name);
224 object find_symbol_by_name(const char *name);
225 object find_or_add_symbol(const char *name);
226 char *_strdup(const char *s);
233 extern object Cyc_global_variables;
234 cvar_type *mcvar(object * var);
235 object Cyc_get_global_variables();
236 object Cyc_get_cvar(object var);
237 object Cyc_set_cvar(object var, object value);
244 object Cyc_display(void *data, object, FILE * port);
245 void dispatch_display_va(void *data, int argc, object clo, object cont,
246  object x, ...);
247 object Cyc_display_va(void *data, int argc, object x, ...);
248 object Cyc_display_va_list(void *data, int argc, object x, va_list ap);
249 object Cyc_write_char(void *data, object c, object port);
250 object Cyc_write(void *data, object, FILE * port);
251 void dispatch_write_va(void *data, int argc, object clo, object cont,
252  object x, ...);
253 object Cyc_write_va(void *data, int argc, object x, ...);
254 object Cyc_write_va_list(void *data, int argc, object x, va_list ap);
255 port_type Cyc_stdout(void);
256 port_type Cyc_stdin(void);
257 port_type Cyc_stderr(void);
258 port_type Cyc_io_open_input_file(void *data, object str);
259 port_type Cyc_io_open_output_file(void *data, object str);
261 port_type *Cyc_io_open_input_string(void *data, object str);
262 port_type *Cyc_io_open_input_bytevector(void *data, object bv);
263 void Cyc_io_get_output_string(void *data, object cont, object port);
264 void Cyc_io_get_output_bytevector(void *data, object cont, object port);
265 object Cyc_io_close_port(void *data, object port);
266 object Cyc_io_close_input_port(void *data, object port);
267 object Cyc_io_close_output_port(void *data, object port);
268 object Cyc_io_flush_output_port(void *data, object port);
269 object Cyc_io_read_char(void *data, object cont, object port);
270 object Cyc_io_peek_char(void *data, object cont, object port);
271 object Cyc_io_read_line(void *data, object cont, object port);
280 #define return_inexact_double_op(data, cont, OP, z) \
281  make_double(d, 0.0); \
282  Cyc_check_num(data, z); \
283  if (obj_is_int(z)) { \
284  d.value = OP(obj_obj2int(z)); \
285  } else if (type_of(z) == integer_tag) { \
286  d.value = OP(((integer_type *)z)->value); \
287  } else if (type_of(z) == bignum_tag) { \
288  d.value = OP(mp_get_double(&bignum_value(z))); \
289  } else { \
290  d.value = OP(((double_type *)z)->value); \
291  } \
292  return_closcall1(data, cont, &d)
293 
294 #define return_exact_double_op(data, cont, OP, z) \
295  int i = 0; \
296  Cyc_check_num(data, z); \
297  if (obj_is_int(z)) { \
298  i = obj_obj2int(z); \
299  } else if (type_of(z) == integer_tag) { \
300  i = (int)OP(((integer_type *)z)->value); \
301  } else if (type_of(z) == bignum_tag) { \
302  return_closcall1(data, cont, z); \
303  } else { \
304  i = (int)OP(((double_type *)z)->value); \
305  } \
306  return_closcall1(data, cont, obj_int2obj(i))
307 
308 #define unbox_number(n) \
309  ((obj_is_int(n) ? obj_obj2int(n) : \
310  ((type_of(n) == integer_tag) ? \
311  ((integer_type *)n)->value : \
312  ((double_type *)n)->value)))
313 
314 object Cyc_num_eq(void *, object cont, int argc, object n, ...);
315 object Cyc_num_gt(void *, object cont, int argc, object n, ...);
316 object Cyc_num_lt(void *, object cont, int argc, object n, ...);
317 object Cyc_num_gte(void *, object cont, int argc, object n, ...);
318 object Cyc_num_lte(void *, object cont, int argc, object n, ...);
319 int Cyc_num_eq_op(void *, object x, object y);
320 int Cyc_num_gt_op(void *, object x, object y);
321 int Cyc_num_lt_op(void *, object x, object y);
322 int Cyc_num_gte_op(void *, object x, object y);
323 int Cyc_num_lte_op(void *, object x, object y);
324 object Cyc_num_fast_eq_op(void *data, object x, object y);
325 object Cyc_num_fast_gt_op(void *data, object x, object y);
326 object Cyc_num_fast_lt_op(void *data, object x, object y);
327 object Cyc_num_fast_gte_op(void *data, object x, object y);
328 object Cyc_num_fast_lte_op(void *data, object x, object y);
329 object Cyc_num_cmp_va_list(void *data, int argc,
330  int (fn_op(void *, object, object)), object n,
331  va_list ns);
332 void Cyc_expt(void *data, object cont, object x, object y);
333 void Cyc_remainder(void *data, object cont, object num1, object num2);
334 object Cyc_number2string2(void *data, object cont, int argc, object n, ...);
335 object Cyc_integer2char(void *data, object n);
336 object Cyc_sum_op(void *data, common_type * x, object y);
337 object Cyc_sub_op(void *data, common_type * x, object y);
338 object Cyc_mul_op(void *data, common_type * x, object y);
339 object Cyc_div_op(void *data, common_type * x, object y);
340 object Cyc_sum(void *data, object cont, int argc, object n, ...);
341 object Cyc_sub(void *data, object cont, int argc, object n, ...);
342 object Cyc_mul(void *data, object cont, int argc, object n, ...);
343 object Cyc_div(void *data, object cont, int argc, object n, ...);
344 object Cyc_fast_sum(void *data, object ptr, object x, object y);
345 object Cyc_fast_sub(void *data, object ptr, object x, object y);
346 object Cyc_fast_mul(void *data, object ptr, object x, object y);
347 object Cyc_fast_div(void *data, object ptr, object x, object y);
348 object Cyc_bit_unset(void *data, object n1, object n2);
349 object Cyc_bit_set(void *data, object n1, object n2);
350 object Cyc_num_op_va_list(void *data, int argc,
351  object(fn_op(void *, common_type *, object)),
352  int default_no_args, int default_one_arg, object n,
353  va_list ns, common_type * buf);
354 double MRG32k3a (double seed);
360 object Cyc_eq(object x, object y);
361 int equal(object, object);
362 object equalp(object, object);
363 object Cyc_has_cycle(object lst);
364 object Cyc_is_boolean(object o);
365 object Cyc_is_pair(object o);
366 object Cyc_is_null(object o);
367 object Cyc_is_number(object o);
368 object Cyc_is_real(object o);
369 object Cyc_is_integer(object o);
370 object Cyc_is_bignum(object o);
371 object Cyc_is_vector(object o);
372 object Cyc_is_bytevector(object o);
373 object Cyc_is_port(object o);
374 object Cyc_is_mutex(object o);
375 object Cyc_is_cond_var(object o);
376 object Cyc_is_symbol(object o);
377 object Cyc_is_string(object o);
378 object Cyc_is_char(object o);
379 object Cyc_is_procedure(void *data, object o);
380 object Cyc_is_macro(object o);
381 object Cyc_is_eof_object(object o);
382 object Cyc_is_cvar(object o);
383 object Cyc_is_opaque(object o);
390 object Cyc_vector_length(void *data, object v);
391 object Cyc_vector_ref(void *d, object v, object k);
392 object Cyc_vector_set(void *d, object v, object k, object obj);
393 object Cyc_make_vector(void *data, object cont, int argc, object len, ...);
400 object Cyc_make_bytevector(void *data, object cont, int argc, object len, ...);
401 object Cyc_bytevector(void *data, object cont, int argc, object bval, ...);
402 object Cyc_bytevector_length(void *data, object bv);
403 object Cyc_bytevector_append(void *data, object cont, int _argc, object bv,
404  ...);
405 object Cyc_bytevector_copy(void *data, object cont, object bv, object start,
406  object end);
407 object Cyc_bytevector_u8_ref(void *data, object bv, object k);
408 object Cyc_bytevector_u8_set(void *data, object bv, object k, object b);
409 object Cyc_utf82string(void *data, object cont, object bv, object start,
410  object end);
411 object Cyc_string2utf8(void *data, object cont, object str, object start,
412  object end);
420 char **_cyc_argv;
421 object Cyc_installation_dir(void *data, object cont, object type);
422 object Cyc_compilation_environment(void *data, object cont, object var);
423 object Cyc_command_line_arguments(void *data, object cont);
424 object Cyc_system(object cmd);
425 void Cyc_halt(object obj);
426 object __halt(object obj);
427 object Cyc_io_delete_file(void *data, object filename);
428 object Cyc_io_file_exists(void *data, object filename);
435 object Cyc_spawn_thread(object thunk);
437 void Cyc_end_thread(gc_thread_data * thd);
438 void Cyc_exit_thread(gc_thread_data * thd);
439 object Cyc_thread_sleep(void *data, object timeout);
447 object Cyc_trigger_minor_gc(void *data, object cont);
448 object copy2heap(void *data, object obj);
457 void Cyc_st_add(void *data, char *frame);
458 void Cyc_st_print(void *data, FILE * out);
467 extern list global_table;
468 void add_global(object * glo);
479 extern const object primitive_Cyc_91global_91vars;
480 extern const object primitive_Cyc_91get_91cvar;
481 extern const object primitive_Cyc_91set_91cvar_67;
482 extern const object primitive_Cyc_91cvar_127;
483 extern const object primitive_Cyc_91opaque_127;
484 extern const object primitive_Cyc_91has_91cycle_127;
485 extern const object primitive_Cyc_91spawn_91thread_67;
486 extern const object primitive_Cyc_91end_91thread_67;
487 extern const object primitive__87;
488 extern const object primitive__91;
489 extern const object primitive__85;
490 extern const object primitive__95;
491 extern const object primitive__123;
492 extern const object primitive__125;
493 extern const object primitive__121;
494 extern const object primitive__125_123;
495 extern const object primitive__121_123;
496 extern const object primitive_apply;
497 extern const object primitive__75halt;
498 extern const object primitive_exit;
501 extern const object primitive_cons;
502 extern const object primitive_cell_91get;
503 extern const object primitive_set_91global_67;
504 extern const object primitive_set_91cell_67;
505 extern const object primitive_cell;
506 extern const object primitive_eq_127;
507 extern const object primitive_eqv_127;
508 extern const object primitive_equal_127;
509 extern const object primitive_assq;
510 extern const object primitive_assv;
511 extern const object primitive_memq;
512 extern const object primitive_memv;
513 extern const object primitive_length;
514 extern const object primitive_vector_91length;
515 extern const object primitive_bytevector_91length;
516 extern const object primitive_set_91car_67;
517 extern const object primitive_set_91cdr_67;
518 extern const object primitive_car;
519 extern const object primitive_cdr;
520 extern const object primitive_caar;
521 extern const object primitive_cadr;
522 extern const object primitive_cdar;
523 extern const object primitive_cddr;
524 extern const object primitive_caaar;
525 extern const object primitive_caadr;
526 extern const object primitive_cadar;
527 extern const object primitive_caddr;
528 extern const object primitive_cdaar;
529 extern const object primitive_cdadr;
530 extern const object primitive_cddar;
531 extern const object primitive_cdddr;
532 extern const object primitive_caaaar;
533 extern const object primitive_caaadr;
534 extern const object primitive_caadar;
535 extern const object primitive_caaddr;
536 extern const object primitive_cadaar;
537 extern const object primitive_cadadr;
538 extern const object primitive_caddar;
539 extern const object primitive_cadddr;
540 extern const object primitive_cdaaar;
541 extern const object primitive_cdaadr;
542 extern const object primitive_cdadar;
543 extern const object primitive_cdaddr;
544 extern const object primitive_cddaar;
545 extern const object primitive_cddadr;
546 extern const object primitive_cdddar;
547 extern const object primitive_cddddr;
548 extern const object primitive_char_91_125integer;
549 extern const object primitive_integer_91_125char;
550 extern const object primitive_string_91_125number;
551 extern const object primitive_string_91cmp;
552 extern const object primitive_string_91append;
553 extern const object primitive_list_91_125string;
554 extern const object primitive_string_91_125symbol;
555 extern const object primitive_symbol_91_125string;
556 extern const object primitive_number_91_125string;
557 extern const object primitive_string_91length;
558 extern const object primitive_substring;
559 extern const object primitive_make_91bytevector;
560 extern const object primitive_make_91vector;
561 extern const object primitive_list_91_125vector;
562 extern const object primitive_vector_91ref;
563 extern const object primitive_vector_91set_67;
564 extern const object primitive_bytevector;
565 extern const object primitive_bytevector_91append;
566 extern const object primitive_Cyc_91bytevector_91copy;
567 extern const object primitive_Cyc_91string_91_125utf8;
568 extern const object primitive_Cyc_91utf8_91_125string;
569 extern const object primitive_bytevector_91u8_91ref;
570 extern const object primitive_bytevector_91u8_91set_67;
571 extern const object primitive_string_91ref;
572 extern const object primitive_string_91set_67;
573 extern const object primitive_Cyc_91installation_91dir;
575 extern const object primitive_command_91line_91arguments;
576 extern const object primitive_system;
577 extern const object primitive_boolean_127;
578 extern const object primitive_char_127;
579 extern const object primitive_eof_91object_127;
580 extern const object primitive_null_127;
581 extern const object primitive_number_127;
582 extern const object primitive_real_127;
583 extern const object primitive_integer_127;
584 extern const object primitive_pair_127;
585 extern const object primitive_procedure_127;
586 extern const object primitive_macro_127;
587 extern const object primitive_Cyc_91macro_127;
588 extern const object primitive_port_127;
589 extern const object primitive_vector_127;
590 extern const object primitive_bytevector_127;
591 extern const object primitive_string_127;
592 extern const object primitive_symbol_127;
593 extern const object primitive_open_91input_91file;
594 extern const object primitive_open_91output_91file;
595 extern const object primitive_close_91port;
596 extern const object primitive_close_91input_91port;
597 extern const object primitive_close_91output_91port;
598 extern const object primitive_Cyc_91flush_91output_91port;
599 extern const object primitive_file_91exists_127;
600 extern const object primitive_delete_91file;
601 extern const object primitive_read_91char;
602 extern const object primitive_peek_91char;
603 extern const object primitive_Cyc_91read_91line;
604 extern const object primitive_Cyc_91write_91char;
605 extern const object primitive_Cyc_91write;
606 extern const object primitive_Cyc_91display;
607 extern const object primitive_call_95cc;
608 /* -------------------------------------------- */
619 extern object Cyc_glo_eval_from_c;
620 extern object Cyc_glo_call_cc;
621 
622 #define __glo_eval_91from_91c_scheme_eval Cyc_glo_eval_from_c
623 #define __glo_call_95cc_scheme_base Cyc_glo_call_cc
624 
630 object Cyc_default_exception_handler(void *data, int argc, closure _, object err);
631 
632 object Cyc_current_exception_handler(void *data);
633 void Cyc_rt_raise(void *data, object err);
634 void Cyc_rt_raise2(void *data, const char *msg, object err);
635 void Cyc_rt_raise_msg(void *data, const char *err);
640 #endif /* CYCLONE_RUNTIME_H */
object Cyc_is_pair(object o)
Definition: runtime.c:1435
const object primitive_cdaar
Definition: runtime.c:5230
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:1047
const object primitive_substring
Definition: runtime.c:5254
A closed-over function with no variables.
Definition: types.h:948
object Cyc_vector_ref(void *d, object v, object k)
Definition: runtime.c:1644
long global_heap_size
object copy2heap(void *data, object obj)
Definition: runtime.c:5418
object Cyc_bit_set(void *data, object n1, object n2)
Definition: runtime.c:5461
object Cyc_write(void *data, object, FILE *port)
Definition: runtime.c:1040
object Cyc_is_symbol(object o)
Definition: runtime.c:1480
char ** get_env_variables()
Definition: runtime.c:156
const object primitive_Cyc_91write_91char
Definition: runtime.c:5312
const object primitive_caar
Definition: runtime.c:5222
object add_symbol_by_name(const char *name)
Definition: runtime.c:365
object Cyc_get_global_variables()
Definition: runtime.c:624
port_type Cyc_io_open_input_file(void *data, object str)
Definition: runtime.c:3310
const object primitive_memq
Definition: runtime.c:5211
The port object type.
Definition: types.h:757
const object primitive_command_91line_91arguments
Definition: runtime.c:5261
const object primitive_open_91input_91file
Definition: runtime.c:5300
object Cyc_string_append(void *data, object cont, int argc, object str1,...)
Definition: runtime.c:2008
object Cyc_is_eof_object(object o)
Definition: runtime.c:1569
void Cyc_st_add(void *data, char *frame)
Definition: runtime.c:294
const object primitive_cdadar
Definition: runtime.c:5244
object Cyc_is_bytevector(object o)
Definition: runtime.c:1494
const object primitive_port_127
Definition: runtime.c:5296
object memberp(void *data, object x, list l)
Definition: runtime.c:1062
object Cyc_is_macro(object o)
Definition: runtime.c:1557
const object primitive_cdddr
Definition: runtime.c:5233
const object quote_void
Definition: runtime.c:291
void add_global(object *glo)
Definition: runtime.c:388
object Cyc_fast_mul(void *data, object ptr, object x, object y)
Definition: runtime.c:2838
object Cyc_cdr(void *data, object lis)
Definition: runtime.c:618
object add_symbol(symbol_type *psym)
Definition: runtime.c:356
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:3172
object Cyc_string_ref(void *data, object str, object k)
Definition: runtime.c:2043
object Cyc_string_set(void *data, object str, object k, object chr)
Definition: runtime.c:2022
port_type Cyc_stdout(void)
Definition: runtime.c:3292
const object primitive_Cyc_91macro_127
Definition: runtime.c:5294
The pair (cons) type.
Definition: types.h:830
double MRG32k3a(double seed)
Definition: runtime.c:5490
const object primitive_cdaddr
Definition: runtime.c:5245
Definition: types.h:256
const object primitive_Cyc_91read_91line
Definition: runtime.c:5311
const object primitive_caddar
Definition: runtime.c:5240
const object primitive_string_91length
Definition: runtime.c:5253
object Cyc_fast_sum(void *data, object ptr, object x, object y)
Definition: runtime.c:2687
const object primitive_symbol_127
Definition: runtime.c:5299
const object primitive_Cyc_91flush_91output_91port
Definition: runtime.c:5305
const object Cyc_EOF
Definition: runtime.c:150
object equalp(object, object)
Definition: runtime.c:1125
int Cyc_num_lte_op(void *, object x, object y)
const object primitive_procedure_127
Definition: runtime.c:5292
const object primitive_integer_127
Definition: runtime.c:5290
void dispatch_display_va(void *data, int argc, object clo, object cont, object x,...)
Definition: runtime.c:714
void Cyc_apply(void *data, int argc, closure cont, object prim,...)
Definition: runtime.c:4516
object Cyc_is_boolean(object o)
Definition: runtime.c:1426
const object primitive_cdaadr
Definition: runtime.c:5243
object Cyc_io_close_output_port(void *data, object port)
Definition: runtime.c:3341
object Cyc_glo_call_cc
Definition: runtime.c:456
const object primitive_open_91output_91file
Definition: runtime.c:5301
object Cyc_io_read_char(void *data, object cont, object port)
Definition: runtime.c:3403
const object primitive_cadaar
Definition: runtime.c:5238
const object primitive_cddaar
Definition: runtime.c:5246
const object primitive_cell
Definition: runtime.c:5205
object Cyc_char2integer(object chr)
Definition: runtime.c:2531
const object primitive_caaar
Definition: runtime.c:5226
object Cyc_is_bignum(object o)
Definition: runtime.c:1473
const object primitive_caaadr
Definition: runtime.c:5235
object Cyc_thread_sleep(void *data, object timeout)
Definition: runtime.c:5404
const object primitive__125
Definition: runtime.c:5190
void(* function_type_va)(int, object, object, object,...)
Definition: types.h:515
object Cyc_string2symbol(void *d, object str)
Definition: runtime.c:1771
const object primitive_list_91_125string
Definition: runtime.c:5266
void dispatch(void *data, int argc, function_type func, object clo, object cont, object args)
Definition: runtime.c:4892
object Cyc_substring(void *data, object cont, object str, object start, object end)
Definition: runtime.c:2062
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:4911
object Cyc_is_cond_var(object o)
Definition: runtime.c:1515
const object primitive_string_127
Definition: runtime.c:5295
const object primitive__121_123
Definition: runtime.c:5193
const object primitive_apply
Definition: runtime.c:5194
cvar_type * mcvar(object *var)
Definition: runtime.c:3477
object Cyc_compilation_environment(void *data, object cont, object var)
Definition: runtime.c:2128
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:1597
void Cyc_start_trampoline(gc_thread_data *thd)
Definition: runtime.c:4574
void dispatch_write_va(void *data, int argc, object clo, object cont, object x,...)
Definition: runtime.c:893
object Cyc_car(void *data, object lis)
Definition: runtime.c:612
void Cyc_remainder(void *data, object cont, object num1, object num2)
Definition: runtime.c:3234
const object primitive_delete_91file
Definition: runtime.c:5308
object Cyc_num_cmp_va_list(void *data, int argc, int(fn_op(void *, object, object)), object n, va_list ns)
Definition: runtime.c:1183
const object primitive_cons
Definition: runtime.c:5201
object Cyc_is_vector(object o)
Definition: runtime.c:1487
char * _strdup(const char *s)
Definition: runtime.c:337
object Cyc_make_bytevector(void *data, object cont, int argc, object len,...)
Definition: runtime.c:2234
int equal(object, object)
Definition: runtime.c:536
void Cyc_rt_raise_msg(void *data, const char *err)
Definition: runtime.c:528
object Cyc_num_fast_lte_op(void *data, object x, object y)
object Cyc_list2vector(void *data, object cont, object l)
Definition: runtime.c:2499
const object boolean_f
Definition: runtime.c:287
object Cyc_io_delete_file(void *data, object filename)
Definition: runtime.c:3378
const object primitive_vector_91set_67
Definition: runtime.c:5217
const object primitive_string_91ref
Definition: runtime.c:5255
const object primitive_set_91car_67
Definition: runtime.c:5218
int Cyc_num_gt_op(void *, object x, object y)
object Cyc_length(void *d, object l)
Definition: runtime.c:1668
const object primitive_car
Definition: runtime.c:5220
const object primitive_Cyc_91display
Definition: runtime.c:5314
int binstr2int(const char *str)
Definition: runtime.c:1942
object Cyc_spawn_thread(object thunk)
Definition: runtime.c:5341
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:5269
object Cyc_io_flush_output_port(void *data, object port)
Definition: runtime.c:3364
object Cyc_default_exception_handler(void *data, int argc, closure _, object err)
Definition: runtime.c:460
const object primitive_string_91append
Definition: runtime.c:5265
const object primitive_set_91cdr_67
Definition: runtime.c:5219
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:1501
object Cyc_io_read_line(void *data, object cont, object port)
Definition: runtime.c:3420
const object primitive_cddr
Definition: runtime.c:5225
void Cyc_rt_raise(void *data, object err)
Definition: runtime.c:504
object Cyc_bytevector_u8_ref(void *data, object bv, object k)
Definition: runtime.c:2450
object Cyc_global_variables
Definition: runtime.c:144
const object primitive_close_91input_91port
Definition: runtime.c:5303
void Cyc_io_get_output_bytevector(void *data, object cont, object port)
Definition: mstreams.c:109
const object primitive_caddr
Definition: runtime.c:5229
const object primitive_null_127
Definition: runtime.c:5287
object Cyc_write_va(void *data, int argc, object x,...)
Definition: runtime.c:904
char ** _cyc_argv
Definition: runtime.h:420
C-variable integration type - wrapper around a Cyclone object pointer.
Definition: types.h:520
object Cyc_system(object cmd)
Definition: runtime.c:2523
const object primitive__95
Definition: runtime.c:5188
object Cyc_string2number_(void *d, object cont, object str)
Definition: runtime.c:1907
const object primitive_make_91bytevector
Definition: runtime.c:5270
object Cyc_display_va_list(void *data, int argc, object x, va_list ap)
Definition: runtime.c:735
object Cyc_make_vector(void *data, object cont, int argc, object len,...)
Definition: runtime.c:2182
const object primitive_equal_127
Definition: runtime.c:5208
const object boolean_t
Definition: runtime.c:286
const object primitive_char_127
Definition: runtime.c:5285
const object primitive__123
Definition: runtime.c:5189
const object primitive_Cyc_91write
Definition: runtime.c:5313
const object primitive_Cyc_91set_91cvar_67
Definition: runtime.c:5178
const object primitive_Cyc_91bytevector_91copy
Definition: runtime.c:5274
const object primitive_cdr
Definition: runtime.c:5221
const object primitive_Cyc_91default_91exception_91handler
Definition: runtime.c:5199
const object primitive_Cyc_91opaque_127
Definition: runtime.c:5180
object Cyc_get_cvar(object var)
Definition: runtime.c:629
long global_stack_size
object Cyc_number2string2(void *data, object cont, int argc, object n,...)
Definition: runtime.c:1703
const object primitive__121
Definition: runtime.c:5191
const object primitive__75halt
Definition: runtime.c:5195
void Cyc_rt_raise2(void *data, const char *msg, object err)
Definition: runtime.c:515
object Cyc_list(void *data, int argc, object cont,...)
Definition: runtime.c:1806
const object primitive_caadar
Definition: runtime.c:5236
void gc_init_heap(long heap_size)
Definition: runtime.c:262
const object primitive_read_91char
Definition: runtime.c:5309
const object primitive_Cyc_91end_91thread_67
Definition: runtime.c:5184
object Cyc_integer2char(void *data, object n)
Definition: runtime.c:2536
object Cyc_io_file_exists(void *data, object filename)
Definition: runtime.c:3388
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:1953
object Cyc_string2utf8(void *data, object cont, object str, object start, object end)
Definition: runtime.c:2421
void Cyc_end_thread(gc_thread_data *thd)
Definition: runtime.c:5377
object find_or_add_symbol(const char *name)
Definition: runtime.c:373
const object primitive_file_91exists_127
Definition: runtime.c:5307
object Cyc_string2number2_(void *data, object cont, int argc, object str,...)
Definition: runtime.c:1813
object cell_get(object cell)
Definition: runtime.c:277
object Cyc_bytevector_u8_set(void *data, object bv, object k, object b)
Definition: runtime.c:2470
const object primitive_assv
Definition: runtime.c:5210
object apply_va(void *data, object cont, int argc, object func,...)
Definition: runtime.c:4424
list malloc_make_pair(object, object)
Definition: runtime.c:3466
const object primitive_vector_127
Definition: runtime.c:5297
const object primitive_bytevector
Definition: runtime.c:5272
object Cyc_io_peek_char(void *data, object cont, object port)
Definition: runtime.c:3446
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:3078
object Cyc_bytevector_length(void *data, object bv)
Definition: runtime.c:2489
const object primitive_exit
Definition: runtime.c:5196
const object primitive_caaaar
Definition: runtime.c:5234
const object primitive_vector_91length
Definition: runtime.c:5215
const object primitive_call_95cc
Definition: runtime.c:5315
object find_symbol_by_name(const char *name)
Definition: runtime.c:346
object Cyc_set_car(void *, object l, object val)
Definition: runtime.c:1606
object Cyc_bytevector_append(void *data, object cont, int _argc, object bv,...)
Definition: runtime.c:2354
const object primitive__125_123
Definition: runtime.c:5192
object __halt(object obj)
Definition: runtime.c:2553
object Cyc_string_cmp(void *data, object str1, object str2)
Definition: runtime.c:1963
const object primitive_eof_91object_127
Definition: runtime.c:5286
const object primitive_bytevector_91u8_91set_67
Definition: runtime.c:5277
object Cyc_is_null(object o)
Definition: runtime.c:1442
const object primitive_eq_127
Definition: runtime.c:5206
object Cyc_set_cdr(void *, object l, object val)
Definition: runtime.c:1616
object Cyc_is_opaque(object o)
Definition: runtime.c:1583
const object primitive_Cyc_91string_91_125utf8
Definition: runtime.c:5279
object Cyc_mul_op(void *data, common_type *x, object y)
const object primitive_cdaaar
Definition: runtime.c:5242
const object primitive_string_91_125number
Definition: runtime.c:5252
const object primitive_eqv_127
Definition: runtime.c:5207
object Cyc_is_char(object o)
Definition: runtime.c:1529
const object primitive_string_91_125symbol
Definition: runtime.c:5267
const object primitive_cadddr
Definition: runtime.c:5241
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:5386
object Cyc_write_va_list(void *data, int argc, object x, va_list ap)
Definition: runtime.c:914
const object primitive_bytevector_91u8_91ref
Definition: runtime.c:5276
object Cyc_vector_set(void *d, object v, object k, object obj)
Definition: runtime.c:1626
const object primitive__91
Definition: runtime.c:5186
const object primitive_list_91_125vector
Definition: runtime.c:5283
int Cyc_num_gte_op(void *, object x, object y)
const object primitive_vector_91ref
Definition: runtime.c:5216
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:2015
object Cyc_has_cycle(object lst)
Definition: runtime.c:657
object Cyc_is_mutex(object o)
Definition: runtime.c:1508
object Cyc_trigger_minor_gc(void *data, object cont)
Definition: runtime.c:4733
const object primitive_system
Definition: runtime.c:5263
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:1782
object Cyc_fast_div(void *data, object ptr, object x, object y)
Definition: runtime.c:2913
object Cyc_glo_eval_from_c
Definition: runtime.c:457
object Cyc_display_va(void *data, int argc, object x,...)
Definition: runtime.c:725
const object primitive_macro_127
Definition: runtime.c:5293
const object primitive_memv
Definition: runtime.c:5212
const object primitive_peek_91char
Definition: runtime.c:5310
const object primitive_cadar
Definition: runtime.c:5228
object Cyc_utf82string(void *data, object cont, object bv, object start, object end)
Definition: runtime.c:2388
object Cyc_io_close_input_port(void *data, object port)
Definition: runtime.c:3336
object dispatch_string_91append(void *data, int argc, object clo, object cont, object str1,...)
Definition: runtime.c:2000
object Cyc_sub(void *data, object cont, int argc, object n,...)
const object primitive_symbol_91_125string
Definition: runtime.c:5268
port_type Cyc_stdin(void)
Definition: runtime.c:3298
const object primitive_boolean_127
Definition: runtime.c:5284
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:2359
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:2763
const object primitive_Cyc_91installation_91dir
Definition: runtime.c:5257
const object primitive_Cyc_91cvar_127
Definition: runtime.c:5179
const object primitive_caadr
Definition: runtime.c:5227
const object primitive_close_91output_91port
Definition: runtime.c:5304
const object primitive_bytevector_127
Definition: runtime.c:5298
const object primitive_make_91vector
Definition: runtime.c:5271
const object primitive_cadr
Definition: runtime.c:5223
object Cyc_is_cvar(object o)
Definition: runtime.c:1576
object Cyc_mul(void *data, object cont, int argc, object n,...)
const object primitive_bytevector_91length
Definition: runtime.c:5214
const object primitive_set_91global_67
Definition: runtime.c:5203
object Cyc_is_real(object o)
Definition: runtime.c:1459
object Cyc_num_fast_gt_op(void *data, object x, object y)
void Cyc_st_print(void *data, FILE *out)
Definition: runtime.c:305
int Cyc_num_lt_op(void *, object x, object y)
const object primitive_assq
Definition: runtime.c:5209
object Cyc_bit_unset(void *data, object n1, object n2)
Definition: runtime.c:5453
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:5251
object Cyc_div(void *data, object cont, int argc, object n,...)
Definition: runtime.c:3051
void Cyc_invalid_type_error(void *data, int tag, object found)
Definition: runtime.c:58
const object primitive_caaddr
Definition: runtime.c:5237
const object primitive_cdadr
Definition: runtime.c:5231
const object primitive_char_91_125integer
Definition: runtime.c:5250
port_type Cyc_stderr(void)
Definition: runtime.c:3304
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:4413
object Cyc_display(void *data, object, FILE *port)
Definition: runtime.c:751
int _cyc_argc
Definition: runtime.h:419
const object primitive__85
Definition: runtime.c:5187
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:1762
const object primitive_bytevector_91append
Definition: runtime.c:5273
object Cyc_current_exception_handler(void *data)
Definition: runtime.c:493
const object primitive_Cyc_91get_91cvar
Definition: runtime.c:5177
object Cyc_set_cvar(object var, object value)
Definition: runtime.c:637
void Cyc_halt(object obj)
Definition: runtime.c:2545
object Cyc_num_gte(void *, object cont, int argc, object n,...)
const object primitive_Cyc_91has_91cycle_127
Definition: runtime.c:5181
object memqp(void *data, object x, list l)
Definition: runtime.c:1072
object Cyc_is_number(object o)
Definition: runtime.c:1449
object Cyc_is_integer(object o)
Definition: runtime.c:1464
const object primitive_Cyc_91current_91exception_91handler
Definition: runtime.c:5197
const object primitive_Cyc_91utf8_91_125string
Definition: runtime.c:5281
object Cyc_io_close_port(void *data, object port)
Definition: runtime.c:3346
object Cyc_command_line_arguments(void *data, object cont)
Definition: runtime.c:2163
const object primitive_set_91cell_67
Definition: runtime.c:5204
object Cyc_is_string(object o)
Definition: runtime.c:1522
const object primitive_cdddar
Definition: runtime.c:5248
object Cyc_bytevector(void *data, object cont, int argc, object bval,...)
Definition: runtime.c:2308
list global_table
Definition: runtime.c:386
const object primitive_length
Definition: runtime.c:5213
object Cyc_is_procedure(void *data, object o)
Definition: runtime.c:1536
list assoc(void *data, object x, list l)
Definition: runtime.c:1095
const object primitive_Cyc_91spawn_91thread_67
Definition: runtime.c:5182
const object primitive_Cyc_91compilation_91environment
Definition: runtime.c:5259
const object primitive_Cyc_91global_91vars
Definition: runtime.c:5176
const object primitive_cddddr
Definition: runtime.c:5249
object Cyc_installation_dir(void *data, object cont, object type)
Definition: runtime.c:2099
object Cyc_eq(object x, object y)
Definition: runtime.c:1590
object Cyc_sum_op(void *data, common_type *x, object y)
const object primitive_string_91cmp
Definition: runtime.c:5264
object Cyc_vector_length(void *data, object v)
Definition: runtime.c:1658
object apply(void *data, object cont, object func, object args)
Definition: runtime.c:4439
const object primitive_cell_91get
Definition: runtime.c:5202
const object primitive_pair_127
Definition: runtime.c:5291
#define prim(x)
Definition: types.h:1018
const object primitive__87
Definition: runtime.c:5185
const object primitive_cadadr
Definition: runtime.c:5239
const object primitive_number_127
Definition: runtime.c:5288
object Cyc_num_lte(void *, object cont, int argc, object n,...)
list assq(void *data, object x, list l)
Definition: runtime.c:1082
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:3323
void GC(void *, closure, object *, int)
Definition: runtime.c:4877
object Cyc_num_fast_gte_op(void *data, object x, object y)
const object primitive_real_127
Definition: runtime.c:5289
const object primitive_string_91set_67
Definition: runtime.c:5256
const object primitive_cdar
Definition: runtime.c:5224
const object primitive_cddadr
Definition: runtime.c:5247
object Cyc_div_op(void *data, common_type *x, object y)
Definition: runtime.c:2980
const object primitive_cddar
Definition: runtime.c:5232
const object primitive_close_91port
Definition: runtime.c:5302