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: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:415
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:414
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