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);
167 object apply(void *data, object cont, object func, object args);
168 void Cyc_apply(void *data, int argc, closure cont, object prim, ...);
169 void dispatch_apply_va(void *data, int argc, object clo, object cont, object func, ...);
170 object apply_va(void *data, object cont, int argc, object func, ...);
171 void dispatch(void *data, int argc, function_type func, object clo, object cont,
172  object args);
173 void dispatch_va(void *data, int argc, function_type_va func, object clo,
174  object cont, object args);
175 void do_dispatch(void *data, int argc, function_type func, object clo,
176  object * buffer);
177 
185 object Cyc_string_cmp(void *data, object str1, object str2);
186 object dispatch_string_91append(void *data, int argc, object clo, object cont,
187  object str1, ...);
188 object Cyc_string2number_(void *d, object cont, object str);
189 object Cyc_string2number2_(void *data, object cont, int argc, object str, ...);
190 int binstr2int(const char *str);
191 int octstr2int(const char *str);
192 object Cyc_string_append(void *data, object cont, int argc, object str1, ...);
193 object Cyc_string_length(void *data, object str);
194 object Cyc_substring(void *data, object cont, object str, object start,
195  object end);
196 object Cyc_string_ref(void *data, object str, object k);
197 object Cyc_string_set(void *data, object str, object k, object chr);
205 object Cyc_char2integer(object chr);
213 object Cyc_symbol2string(void *d, object cont, object sym);
214 object Cyc_string2symbol(void *d, object str);
222 extern object Cyc_global_variables;
223 cvar_type *mcvar(object * var);
224 object Cyc_get_global_variables();
225 object Cyc_get_cvar(object var);
226 object Cyc_set_cvar(object var, object value);
234 object Cyc_display(void *data, object, FILE * port);
235 void dispatch_display_va(void *data, int argc, object clo, object cont,
236  object x, ...);
237 object Cyc_display_va(void *data, int argc, object x, ...);
238 object Cyc_display_va_list(void *data, int argc, object x, va_list ap);
239 object Cyc_write_char(void *data, object c, object port);
240 object Cyc_write(void *data, object, FILE * port);
241 void dispatch_write_va(void *data, int argc, object clo, object cont,
242  object x, ...);
243 object Cyc_write_va(void *data, int argc, object x, ...);
244 object Cyc_write_va_list(void *data, int argc, object x, va_list ap);
245 port_type Cyc_stdout(void);
246 port_type Cyc_stdin(void);
247 port_type Cyc_stderr(void);
248 port_type Cyc_io_open_input_file(void *data, object str);
249 port_type Cyc_io_open_output_file(void *data, object str);
251 port_type *Cyc_io_open_input_string(void *data, object str);
252 port_type *Cyc_io_open_input_bytevector(void *data, object bv);
253 void Cyc_io_get_output_string(void *data, object cont, object port);
254 void Cyc_io_get_output_bytevector(void *data, object cont, object port);
255 object Cyc_io_close_port(void *data, object port);
256 object Cyc_io_close_input_port(void *data, object port);
257 object Cyc_io_close_output_port(void *data, object port);
258 object Cyc_io_flush_output_port(void *data, object port);
259 object Cyc_io_read_char(void *data, object cont, object port);
260 object Cyc_io_peek_char(void *data, object cont, object port);
261 object Cyc_io_read_line(void *data, object cont, object port);
271 #define return_inexact_double_op(data, cont, OP, z) \
272  make_double(d, 0.0); \
273  Cyc_check_num(data, z); \
274  if (obj_is_int(z)) { \
275  d.value = OP(obj_obj2int(z)); \
276  } else if (type_of(z) == integer_tag) { \
277  d.value = OP(((integer_type *)z)->value); \
278  } else if (type_of(z) == bignum_tag) { \
279  d.value = OP(mp_get_double(&bignum_value(z))); \
280  } else { \
281  d.value = OP(((double_type *)z)->value); \
282  } \
283  return_closcall1(data, cont, &d)
284 
285 #define return_exact_double_op(data, cont, OP, z) \
286  int i = 0; \
287  Cyc_check_num(data, z); \
288  if (obj_is_int(z)) { \
289  i = obj_obj2int(z); \
290  } else if (type_of(z) == integer_tag) { \
291  i = (int)OP(((integer_type *)z)->value); \
292  } else if (type_of(z) == bignum_tag) { \
293  return_closcall1(data, cont, z); \
294  } else { \
295  i = (int)OP(((double_type *)z)->value); \
296  } \
297  return_closcall1(data, cont, obj_int2obj(i))
298 
299 #define unbox_number(n) \
300  ((obj_is_int(n) ? obj_obj2int(n) : \
301  ((type_of(n) == integer_tag) ? \
302  ((integer_type *)n)->value : \
303  ((double_type *)n)->value)))
304 
305 object Cyc_num_eq(void *, object cont, int argc, object n, ...);
306 object Cyc_num_gt(void *, object cont, int argc, object n, ...);
307 object Cyc_num_lt(void *, object cont, int argc, object n, ...);
308 object Cyc_num_gte(void *, object cont, int argc, object n, ...);
309 object Cyc_num_lte(void *, object cont, int argc, object n, ...);
310 int Cyc_num_eq_op(void *, object x, object y);
311 int Cyc_num_gt_op(void *, object x, object y);
312 int Cyc_num_lt_op(void *, object x, object y);
313 int Cyc_num_gte_op(void *, object x, object y);
314 int Cyc_num_lte_op(void *, object x, object y);
315 object Cyc_num_fast_eq_op(void *data, object x, object y);
316 object Cyc_num_fast_gt_op(void *data, object x, object y);
317 object Cyc_num_fast_lt_op(void *data, object x, object y);
318 object Cyc_num_fast_gte_op(void *data, object x, object y);
319 object Cyc_num_fast_lte_op(void *data, object x, object y);
320 object Cyc_num_cmp_va_list(void *data, int argc,
321  int (fn_op(void *, object, object)), object n,
322  va_list ns);
323 void Cyc_expt(void *data, object cont, object x, object y);
324 void Cyc_remainder(void *data, object cont, object num1, object num2);
325 object Cyc_number2string2(void *data, object cont, int argc, object n, ...);
326 object Cyc_integer2char(void *data, object n);
327 object Cyc_sum_op(void *data, common_type * x, object y);
328 object Cyc_sub_op(void *data, common_type * x, object y);
329 object Cyc_mul_op(void *data, common_type * x, object y);
330 object Cyc_div_op(void *data, common_type * x, object y);
331 object Cyc_sum(void *data, object cont, int argc, object n, ...);
332 object Cyc_sub(void *data, object cont, int argc, object n, ...);
333 object Cyc_mul(void *data, object cont, int argc, object n, ...);
334 object Cyc_div(void *data, object cont, int argc, object n, ...);
335 object Cyc_fast_sum(void *data, object ptr, object x, object y);
336 object Cyc_fast_sub(void *data, object ptr, object x, object y);
337 object Cyc_fast_mul(void *data, object ptr, object x, object y);
338 object Cyc_fast_div(void *data, object ptr, object x, object y);
339 object Cyc_bit_unset(void *data, object n1, object n2);
340 object Cyc_bit_set(void *data, object n1, object n2);
341 object Cyc_num_op_va_list(void *data, int argc,
342  object(fn_op(void *, common_type *, object)),
343  int default_no_args, int default_one_arg, object n,
344  va_list ns, common_type * buf);
345 double MRG32k3a (double seed);
351 object Cyc_eq(object x, object y);
352 int equal(object, object);
353 object equalp(object, object);
354 object Cyc_has_cycle(object lst);
355 object Cyc_is_boolean(object o);
356 object Cyc_is_pair(object o);
357 object Cyc_is_null(object o);
358 object Cyc_is_number(object o);
359 object Cyc_is_real(object o);
360 object Cyc_is_integer(object o);
361 object Cyc_is_bignum(object o);
362 object Cyc_is_vector(object o);
363 object Cyc_is_bytevector(object o);
364 object Cyc_is_port(object o);
365 object Cyc_is_mutex(object o);
366 object Cyc_is_cond_var(object o);
367 object Cyc_is_symbol(object o);
368 object Cyc_is_string(object o);
369 object Cyc_is_char(object o);
370 object Cyc_is_procedure(void *data, object o);
371 object Cyc_is_macro(object o);
372 object Cyc_is_eof_object(object o);
373 object Cyc_is_cvar(object o);
374 object Cyc_is_opaque(object o);
382 object Cyc_vector_length(void *data, object v);
383 object Cyc_vector_ref(void *d, object v, object k);
384 object Cyc_vector_set(void *d, object v, object k, object obj);
385 object Cyc_make_vector(void *data, object cont, int argc, object len, ...);
393 object Cyc_make_bytevector(void *data, object cont, int argc, object len, ...);
394 object Cyc_bytevector(void *data, object cont, int argc, object bval, ...);
395 object Cyc_bytevector_length(void *data, object bv);
396 object Cyc_bytevector_append(void *data, object cont, int _argc, object bv,
397  ...);
398 object Cyc_bytevector_copy(void *data, object cont, object bv, object start,
399  object end);
400 object Cyc_bytevector_u8_ref(void *data, object bv, object k);
401 object Cyc_bytevector_u8_set(void *data, object bv, object k, object b);
402 object Cyc_utf82string(void *data, object cont, object bv, object start,
403  object end);
404 object Cyc_string2utf8(void *data, object cont, object str, object start,
405  object end);
414 char **_cyc_argv;
415 object Cyc_installation_dir(void *data, object cont, object type);
416 object Cyc_compilation_environment(void *data, object cont, object var);
417 object Cyc_command_line_arguments(void *data, object cont);
418 object Cyc_system(object cmd);
419 void Cyc_halt(object obj);
420 object __halt(object obj);
421 object Cyc_io_delete_file(void *data, object filename);
422 object Cyc_io_file_exists(void *data, object filename);
433 object Cyc_spawn_thread(object thunk);
435 void Cyc_end_thread(gc_thread_data * thd);
436 void Cyc_exit_thread(gc_thread_data * thd);
437 object Cyc_thread_sleep(void *data, object timeout);
445 object Cyc_trigger_minor_gc(void *data, object cont);
446 object copy2heap(void *data, object obj);
455 void Cyc_st_add(void *data, char *frame);
456 void Cyc_st_print(void *data, FILE * out);
467 extern const object primitive_Cyc_91global_91vars;
468 extern const object primitive_Cyc_91get_91cvar;
469 extern const object primitive_Cyc_91set_91cvar_67;
470 extern const object primitive_Cyc_91cvar_127;
471 extern const object primitive_Cyc_91opaque_127;
472 extern const object primitive_Cyc_91has_91cycle_127;
473 extern const object primitive_Cyc_91spawn_91thread_67;
474 extern const object primitive_Cyc_91end_91thread_67;
475 extern const object primitive__87;
476 extern const object primitive__91;
477 extern const object primitive__85;
478 extern const object primitive__95;
479 extern const object primitive__123;
480 extern const object primitive__125;
481 extern const object primitive__121;
482 extern const object primitive__125_123;
483 extern const object primitive__121_123;
484 extern const object primitive_apply;
485 extern const object primitive__75halt;
486 extern const object primitive_exit;
489 extern const object primitive_cons;
490 extern const object primitive_cell_91get;
491 extern const object primitive_set_91global_67;
492 extern const object primitive_set_91cell_67;
493 extern const object primitive_cell;
494 extern const object primitive_eq_127;
495 extern const object primitive_eqv_127;
496 extern const object primitive_equal_127;
497 extern const object primitive_assq;
498 extern const object primitive_assv;
499 extern const object primitive_memq;
500 extern const object primitive_memv;
501 extern const object primitive_length;
502 extern const object primitive_vector_91length;
503 extern const object primitive_bytevector_91length;
504 extern const object primitive_set_91car_67;
505 extern const object primitive_set_91cdr_67;
506 extern const object primitive_car;
507 extern const object primitive_cdr;
508 extern const object primitive_caar;
509 extern const object primitive_cadr;
510 extern const object primitive_cdar;
511 extern const object primitive_cddr;
512 extern const object primitive_caaar;
513 extern const object primitive_caadr;
514 extern const object primitive_cadar;
515 extern const object primitive_caddr;
516 extern const object primitive_cdaar;
517 extern const object primitive_cdadr;
518 extern const object primitive_cddar;
519 extern const object primitive_cdddr;
520 extern const object primitive_caaaar;
521 extern const object primitive_caaadr;
522 extern const object primitive_caadar;
523 extern const object primitive_caaddr;
524 extern const object primitive_cadaar;
525 extern const object primitive_cadadr;
526 extern const object primitive_caddar;
527 extern const object primitive_cadddr;
528 extern const object primitive_cdaaar;
529 extern const object primitive_cdaadr;
530 extern const object primitive_cdadar;
531 extern const object primitive_cdaddr;
532 extern const object primitive_cddaar;
533 extern const object primitive_cddadr;
534 extern const object primitive_cdddar;
535 extern const object primitive_cddddr;
536 extern const object primitive_char_91_125integer;
537 extern const object primitive_integer_91_125char;
538 extern const object primitive_string_91_125number;
539 extern const object primitive_string_91cmp;
540 extern const object primitive_string_91append;
541 extern const object primitive_list_91_125string;
542 extern const object primitive_string_91_125symbol;
543 extern const object primitive_symbol_91_125string;
544 extern const object primitive_number_91_125string;
545 extern const object primitive_string_91length;
546 extern const object primitive_substring;
547 extern const object primitive_make_91bytevector;
548 extern const object primitive_make_91vector;
549 extern const object primitive_list_91_125vector;
550 extern const object primitive_vector_91ref;
551 extern const object primitive_vector_91set_67;
552 extern const object primitive_bytevector;
553 extern const object primitive_bytevector_91append;
554 extern const object primitive_Cyc_91bytevector_91copy;
555 extern const object primitive_Cyc_91string_91_125utf8;
556 extern const object primitive_Cyc_91utf8_91_125string;
557 extern const object primitive_bytevector_91u8_91ref;
558 extern const object primitive_bytevector_91u8_91set_67;
559 extern const object primitive_string_91ref;
560 extern const object primitive_string_91set_67;
561 extern const object primitive_Cyc_91installation_91dir;
563 extern const object primitive_command_91line_91arguments;
564 extern const object primitive_system;
565 extern const object primitive_boolean_127;
566 extern const object primitive_char_127;
567 extern const object primitive_eof_91object_127;
568 extern const object primitive_null_127;
569 extern const object primitive_number_127;
570 extern const object primitive_real_127;
571 extern const object primitive_integer_127;
572 extern const object primitive_pair_127;
573 extern const object primitive_procedure_127;
574 extern const object primitive_macro_127;
575 extern const object primitive_Cyc_91macro_127;
576 extern const object primitive_port_127;
577 extern const object primitive_vector_127;
578 extern const object primitive_bytevector_127;
579 extern const object primitive_string_127;
580 extern const object primitive_symbol_127;
581 extern const object primitive_open_91input_91file;
582 extern const object primitive_open_91output_91file;
583 extern const object primitive_close_91port;
584 extern const object primitive_close_91input_91port;
585 extern const object primitive_close_91output_91port;
586 extern const object primitive_Cyc_91flush_91output_91port;
587 extern const object primitive_file_91exists_127;
588 extern const object primitive_delete_91file;
589 extern const object primitive_read_91char;
590 extern const object primitive_peek_91char;
591 extern const object primitive_Cyc_91read_91line;
592 extern const object primitive_Cyc_91write_91char;
593 extern const object primitive_Cyc_91write;
594 extern const object primitive_Cyc_91display;
595 extern const object primitive_call_95cc;
596 /* -------------------------------------------- */
607 extern object Cyc_glo_eval_from_c;
608 extern object Cyc_glo_call_cc;
609 
610 #define __glo_eval_91from_91c_scheme_eval Cyc_glo_eval_from_c
611 #define __glo_call_95cc_scheme_base Cyc_glo_call_cc
612 
618 object Cyc_default_exception_handler(void *data, int argc, closure _, object err);
619 
620 object Cyc_current_exception_handler(void *data);
621 void Cyc_rt_raise(void *data, object err);
622 void Cyc_rt_raise2(void *data, const char *msg, object err);
623 void Cyc_rt_raise_msg(void *data, const char *err);
637 object add_symbol(symbol_type * psym);
638 object add_symbol_by_name(const char *name);
639 object find_symbol_by_name(const char *name);
640 object find_or_add_symbol(const char *name);
641 char *_strdup(const char *s);
650 extern list global_table;
651 void add_global(object * glo);
654 #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:414
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
object find_or_add_symbol(const char *name)
Definition: runtime.c:373
void Cyc_end_thread(gc_thread_data *thd)
Definition: runtime.c:5377
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)
Definition: dispatch.c:5
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:413
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