Cyclone Scheme  0.20
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 
38 extern const object Cyc_VOID;
39 
43 void GC(void *, closure, object *, int);
44 
48 void gc_init_heap(long heap_size);
49 
63 #define Cyc_check_num_args(data, fnc_name, num_args, args) { \
64  object l = Cyc_length(data, args); \
65  if (num_args > obj_obj2int(l)) { \
66  char buf[128]; \
67  snprintf(buf, 127, "Expected %d arguments to %s but received %ld", \
68  num_args, fnc_name, obj_obj2int(l)); \
69  Cyc_rt_raise_msg(data, buf); \
70  } \
71 }
72 
73 #define Cyc_verify_mutable(data, obj) { \
74  if (immutable(obj)) Cyc_immutable_obj_error(data, obj); }
75 #define Cyc_verify_immutable(data, obj) { \
76  if (boolean_f == Cyc_is_immutable(obj)) Cyc_mutable_obj_error(data, obj); }
77 #define Cyc_check_type(data, fnc_test, tag, obj) { \
78  if ((boolean_f == fnc_test(obj))) Cyc_invalid_type_error(data, tag, obj); }
79 #define Cyc_check_type2(data, fnc_test, tag, obj) { \
80  if ((boolean_f == fnc_test(data, obj))) Cyc_invalid_type_error(data, tag, obj); }
81 
82 #define Cyc_check_pair_or_null(d,obj) { if (obj != NULL) { Cyc_check_pair(d,obj); }}
83 #define Cyc_check_pair(d,obj) Cyc_check_type(d,Cyc_is_pair, pair_tag, obj)
84 #define Cyc_check_proc(d,obj) Cyc_check_type2(d,Cyc_is_procedure, closureN_tag, obj)
85 #define Cyc_check_num(d,obj) Cyc_check_type(d,Cyc_is_number, integer_tag, obj)
86 #define Cyc_check_fixnum(d,obj) Cyc_check_type(d,Cyc_is_fixnum, integer_tag, obj)
87 #define Cyc_check_int(d,obj) Cyc_check_type(d,Cyc_is_integer, integer_tag, obj)
88 #define Cyc_check_str(d,obj) Cyc_check_type(d,Cyc_is_string, string_tag, obj)
89 #define Cyc_check_sym(d,obj) Cyc_check_type(d,Cyc_is_symbol, symbol_tag, obj)
90 #define Cyc_check_vec(d,obj) Cyc_check_type(d,Cyc_is_vector, vector_tag, obj)
91 #define Cyc_check_bvec(d,obj) Cyc_check_type(d,Cyc_is_bytevector, bytevector_tag, obj)
92 #define Cyc_check_port(d,obj) Cyc_check_type(d,Cyc_is_port, port_tag, obj)
93 #define Cyc_check_mutex(d,obj) Cyc_check_type(d,Cyc_is_mutex, mutex_tag, obj)
94 #define Cyc_check_cond_var(d,obj) Cyc_check_type(d,Cyc_is_cond_var, cond_var_tag, obj)
95 #define Cyc_check_atomic(d,obj) Cyc_check_type(d,Cyc_is_atomic, atomic_tag, obj)
96 #define Cyc_check_opaque(d,obj) Cyc_check_type(d,Cyc_is_opaque, c_opaque_tag, obj)
97 void Cyc_invalid_type_error(void *data, int tag, object found);
98 void Cyc_immutable_obj_error(void *data, object obj);
99 void Cyc_mutable_obj_error(void *data, object obj);
100 void Cyc_check_obj(void *data, int tag, object obj);
101 void Cyc_check_bounds(void *data, const char *label, int len, int index);
103 /* END error checking */
104 
105 extern long global_stack_size;
106 extern long global_heap_size;
107 
108 char **get_env_variables();
109 void pack_env_variables(void *data, object k);
110 void set_env_variables(char **vars);
111 
112 object cell_get(object cell);
113 
114 #define global_set(glo,value) Cyc_global_set(data, NULL, (object *)&glo, value)
115 #define global_set_id(id,glo,value) Cyc_global_set(data, id, (object *)&glo, value)
116 object Cyc_global_set(void *thd, object sym, object * glo, object value);
117 
118 #define global_set_cps(thd,k,glo,value) Cyc_global_set_cps(thd, k, NULL, (object *)&glo, value)
119 #define global_set_cps_id(thd,k,id,glo,value) Cyc_global_set_cps(thd, k, id, (object *)&glo, value)
120 object Cyc_global_set_cps(void *thd, object cont, object sym, object * glo, object value);
121 
122 /* Variable argument count support
123 
124  This macro is intended to be executed at the top of a function that
125  is passed 'var' as a variable-length argument. 'count' is the number
126  of varargs that were passed. EG:
127  - C definition: f(object a, ...)
128  - C call: f(1, 2, 3)
129  - var: a
130  - count: 3
131 
132  Argument count would need to be passed by the caller of f. Presumably
133  our compiler will compute the difference between the number of required
134  args and the number of provided ones, and pass the difference as 'count'
135  */
136 #define load_varargs(var, arg_var, count) \
137  list var = (count > 0) ? alloca(sizeof(pair_type)*count) : NULL; \
138  { \
139  int i; \
140  object tmp; \
141  va_list va; \
142  if (count > 0) { \
143  va_start(va, arg_var); \
144  for (i = 0; i < count; i++) { \
145  if (i) { \
146  tmp = va_arg(va, object); \
147  } else { \
148  tmp = arg_var; \
149  } \
150  var[i].hdr.mark = gc_color_red; \
151  var[i].hdr.grayed = 0; \
152  var[i].hdr.immutable = 0; \
153  var[i].tag = pair_tag; \
154  var[i].pair_car = tmp; \
155  var[i].pair_cdr = (i == (count-1)) ? NULL : &var[i + 1]; \
156  } \
157  va_end(va); \
158  } \
159  }
160 /* Prototypes for primitive functions. */
161 
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_string_byte_length(void *data, object str);
196 object Cyc_substring(void *data, object cont, object str, object start,
197  object end);
198 object Cyc_string_ref(void *data, object str, object k);
199 object Cyc_string_set(void *data, object str, object k, object chr);
207 object Cyc_char2integer(object chr);
208 object Cyc_char_eq_op(void *data, object a, object b);
209 object Cyc_char_gt_op(void *data, object a, object b);
210 object Cyc_char_lt_op(void *data, object a, object b);
211 object Cyc_char_gte_op(void *data, object a, object b);
212 object Cyc_char_lte_op(void *data, object a, object b);
220 object Cyc_symbol2string(void *d, object cont, object sym);
221 object Cyc_string2symbol(void *d, object str);
229 extern object Cyc_global_variables;
230 cvar_type *mcvar(object * var);
231 object Cyc_get_global_variables();
232 object Cyc_get_cvar(object var);
233 object Cyc_set_cvar(object var, object value);
241 object Cyc_display(void *data, object, FILE * port);
242 void dispatch_display_va(void *data, int argc, object clo, object cont,
243  object x, ...);
244 object Cyc_display_va(void *data, int argc, object x, ...);
245 object Cyc_display_va_list(void *data, int argc, object x, va_list ap);
246 object Cyc_write_char(void *data, object c, object port);
247 object Cyc_write(void *data, object, FILE * port);
248 void dispatch_write_va(void *data, int argc, object clo, object cont,
249  object x, ...);
250 object Cyc_write_va(void *data, int argc, object x, ...);
251 object Cyc_write_va_list(void *data, int argc, object x, va_list ap);
252 port_type Cyc_stdout(void);
253 port_type Cyc_stdin(void);
254 port_type Cyc_stderr(void);
255 port_type Cyc_io_open_input_file(void *data, object str);
256 port_type Cyc_io_open_output_file(void *data, object str);
257 port_type Cyc_io_open_binary_input_file(void *data, object str);
258 port_type Cyc_io_open_binary_output_file(void *data, object str);
260 port_type *Cyc_io_open_input_string(void *data, object str);
261 port_type *Cyc_io_open_input_bytevector(void *data, object bv);
262 void Cyc_io_get_output_string(void *data, object cont, object port);
263 void Cyc_io_get_output_bytevector(void *data, object cont, object port);
264 object Cyc_io_close_port(void *data, object port);
265 object Cyc_io_close_input_port(void *data, object port);
266 object Cyc_io_close_output_port(void *data, object port);
267 object Cyc_io_flush_output_port(void *data, object port);
268 object Cyc_io_read_char(void *data, object cont, object port);
269 object Cyc_io_peek_char(void *data, object cont, object port);
270 object Cyc_write_u8(void *data, object c, object port);
271 object Cyc_io_read_u8(void *data, object cont, object port);
272 object Cyc_io_peek_u8(void *data, object cont, object port);
273 object Cyc_write_bytevector(void *data, object bvec, object port, object start, object end);
274 object Cyc_io_read_line(void *data, object cont, object port);
275 void Cyc_io_read_token(void *data, object cont, object port);
285 #define return_inexact_double_op_no_cps(data, ptr, OP, z) \
286  double unboxed; \
287  Cyc_check_num(data, z); \
288  if (obj_is_int(z)) { \
289  unboxed = OP(obj_obj2int(z)); \
290  } else if (type_of(z) == integer_tag) { \
291  unboxed = OP(((integer_type *)z)->value); \
292  } else if (type_of(z) == bignum_tag) { \
293  unboxed = OP(mp_get_double(&bignum_value(z))); \
294  } else { \
295  unboxed = OP(((double_type *)z)->value); \
296  } \
297  assign_double(ptr, unboxed); \
298  return ptr;
299 
300 #define return_inexact_double_op(data, cont, OP, z) \
301  make_double(d, 0.0); \
302  Cyc_check_num(data, z); \
303  if (obj_is_int(z)) { \
304  d.value = OP(obj_obj2int(z)); \
305  } else if (type_of(z) == integer_tag) { \
306  d.value = OP(((integer_type *)z)->value); \
307  } else if (type_of(z) == bignum_tag) { \
308  d.value = OP(mp_get_double(&bignum_value(z))); \
309  } else { \
310  d.value = OP(((double_type *)z)->value); \
311  } \
312  return_closcall1(data, cont, &d)
313 
314 #define return_inexact_double_or_cplx_op_no_cps(data, ptr, OP, CPLX_OP, z) \
315  double unboxed; \
316  Cyc_check_num(data, z); \
317  if (obj_is_int(z)) { \
318  unboxed = OP(obj_obj2int(z)); \
319  } else if (type_of(z) == integer_tag) { \
320  unboxed = OP(((integer_type *)z)->value); \
321  } else if (type_of(z) == bignum_tag) { \
322  unboxed = OP(mp_get_double(&bignum_value(z))); \
323  } else if (type_of(z) == complex_num_tag) { \
324  double complex unboxed = CPLX_OP(complex_num_value(z)); \
325  assign_complex_num(ptr, unboxed); \
326  return ptr; \
327  } else { \
328  unboxed = OP(((double_type *)z)->value); \
329  } \
330  assign_double(ptr, unboxed); \
331  return ptr;
332 
333 #define return_inexact_double_or_cplx_op(data, cont, OP, CPLX_OP, z) \
334  make_double(d, 0.0); \
335  Cyc_check_num(data, z); \
336  if (obj_is_int(z)) { \
337  d.value = OP(obj_obj2int(z)); \
338  } else if (type_of(z) == integer_tag) { \
339  d.value = OP(((integer_type *)z)->value); \
340  } else if (type_of(z) == bignum_tag) { \
341  d.value = OP(mp_get_double(&bignum_value(z))); \
342  } else if (type_of(z) == complex_num_tag) { \
343  complex_num_type cn; \
344  double complex unboxed = CPLX_OP(complex_num_value(z)); \
345  assign_complex_num((&cn), unboxed); \
346  return_closcall1(data, cont, &cn); \
347  } else { \
348  d.value = OP(((double_type *)z)->value); \
349  } \
350  return_closcall1(data, cont, &d)
351 
352 #define return_exact_double_op(data, cont, OP, z) \
353  int i = 0; \
354  Cyc_check_num(data, z); \
355  if (obj_is_int(z)) { \
356  i = obj_obj2int(z); \
357  } else if (type_of(z) == integer_tag) { \
358  i = (int)OP(((integer_type *)z)->value); \
359  } else if (type_of(z) == bignum_tag) { \
360  return_closcall1(data, cont, z); \
361  } else { \
362  i = (int)OP(((double_type *)z)->value); \
363  } \
364  return_closcall1(data, cont, obj_int2obj(i))
365 
366 #define return_exact_double_op_no_cps(data, ptr, OP, z) \
367  int i = 0; \
368  Cyc_check_num(data, z); \
369  if (obj_is_int(z)) { \
370  i = obj_obj2int(z); \
371  } else if (type_of(z) == integer_tag) { \
372  i = (int)OP(((integer_type *)z)->value); \
373  } else if (type_of(z) == bignum_tag) { \
374  return z; \
375  } else { \
376  i = (int)OP(((double_type *)z)->value); \
377  } \
378  return obj_int2obj(i);
379 
380 #define unbox_number(n) \
381  ((obj_is_int(n) ? obj_obj2int(n) : \
382  ((type_of(n) == integer_tag) ? \
383  ((integer_type *)n)->value : \
384  ((double_type *)n)->value)))
385 
386 object Cyc_num_eq(void *, object cont, int argc, object n, ...);
387 object Cyc_num_gt(void *, object cont, int argc, object n, ...);
388 object Cyc_num_lt(void *, object cont, int argc, object n, ...);
389 object Cyc_num_gte(void *, object cont, int argc, object n, ...);
390 object Cyc_num_lte(void *, object cont, int argc, object n, ...);
391 int Cyc_num_eq_op(void *, object x, object y);
392 int Cyc_num_gt_op(void *, object x, object y);
393 int Cyc_num_lt_op(void *, object x, object y);
394 int Cyc_num_gte_op(void *, object x, object y);
395 int Cyc_num_lte_op(void *, object x, object y);
396 object Cyc_num_fast_eq_op(void *data, object x, object y);
397 object Cyc_num_fast_gt_op(void *data, object x, object y);
398 object Cyc_num_fast_lt_op(void *data, object x, object y);
399 object Cyc_num_fast_gte_op(void *data, object x, object y);
400 object Cyc_num_fast_lte_op(void *data, object x, object y);
401 object Cyc_num_cmp_va_list(void *data, int argc,
402  int (fn_op(void *, object, object)), object n,
403  va_list ns);
404 void Cyc_expt(void *data, object cont, object x, object y);
405 void Cyc_remainder(void *data, object cont, object num1, object num2);
406 object Cyc_number2string2(void *data, object cont, int argc, object n, ...);
407 object Cyc_integer2char(void *data, object n);
408 object Cyc_sum_op(void *data, common_type * x, object y);
409 object Cyc_sub_op(void *data, common_type * x, object y);
410 object Cyc_mul_op(void *data, common_type * x, object y);
411 object Cyc_div_op(void *data, common_type * x, object y);
412 object Cyc_sum(void *data, object cont, int argc, object n, ...);
413 object Cyc_sub(void *data, object cont, int argc, object n, ...);
414 object Cyc_mul(void *data, object cont, int argc, object n, ...);
415 object Cyc_div(void *data, object cont, int argc, object n, ...);
416 // Future idea, there may be uses for this in addition to if statements:
417 #define Cyc_if(c,t,e) ((boolean_f != c) ? (t) : (e))
418 object Cyc_fast_sum(void *data, object ptr, object x, object y);
419 object Cyc_fast_sub(void *data, object ptr, object x, object y);
420 object Cyc_fast_mul(void *data, object ptr, object x, object y);
421 object Cyc_fast_div(void *data, object ptr, object x, object y);
422 object Cyc_fast_list_2(object ptr, object x, object y);
423 object Cyc_fast_list_3(object ptr, object a1, object a2, object a3);
424 object Cyc_fast_list_4(object ptr, object a1, object a2, object a3, object a4);
425 object Cyc_fast_vector_2(object ptr, object a1, object a2);
426 object Cyc_fast_vector_3(object ptr, object a1, object a2, object a3);
427 object Cyc_fast_vector_4(object ptr, object a1, object a2, object a3, object a4);
428 object Cyc_fast_vector_5(object ptr, object a1, object a2, object a3, object a4, object a5);
429 object Cyc_bit_unset(void *data, object n1, object n2);
430 object Cyc_bit_set(void *data, object n1, object n2);
431 object Cyc_num_op_va_list(void *data, int argc,
432  object(fn_op(void *, common_type *, object)),
433  int default_no_args, int default_one_arg, object n,
434  va_list ns, common_type * buf);
435 void Cyc_int2bignum(int n, mp_int *bn);
436 object Cyc_bignum_normalize(void *data, object n);
437 int Cyc_bignum_cmp(bn_cmp_type type, object x, int tx, object y, int ty);
438 void Cyc_make_rectangular(void *data, object k, object r, object i);
439 double MRG32k3a (double seed);
445 //object Cyc_eq(object x, object y);
446 object Cyc_eqv(object x, object y);
447 #define Cyc_eq(x, y) (make_boolean(x == y))
448 int equal(object, object);
449 object equalp(object, object);
450 object Cyc_has_cycle(object lst);
451 object Cyc_is_list(object lst);
452 //object Cyc_is_boolean(object o);
453 #define Cyc_is_boolean(o) (make_boolean(o == boolean_f || o == boolean_t))
454 #define Cyc_is_pair(o) ((is_object_type(o) && ((list) o)->tag == pair_tag) ? boolean_t : boolean_f)
455 #define Cyc_is_null(o) (make_boolean(o == NULL))
456 //TODO: convert all of these to macros (if it makes sense, most should), and remove them from runtime.c:
457 object Cyc_is_number(object o);
458 object Cyc_is_real(object o);
459 object Cyc_is_integer(object o);
460 #define Cyc_is_fixnum(o) (make_boolean(obj_is_int(o)))
461 //object Cyc_is_fixnum(object o);
462 #define Cyc_is_bignum(o) (make_boolean(is_object_type(o) && ((list) o)->tag == bignum_tag))
463 //object Cyc_is_complex(object o);
464 #define Cyc_is_complex(o) (make_boolean(is_object_type(o) && ((list) o)->tag == complex_num_tag))
465 //object Cyc_is_bignum(object o);
466 //object Cyc_is_vector(object o);
467 //object Cyc_is_bytevector(object o);
468 //object Cyc_is_port(object o);
469 //object Cyc_is_mutex(object o);
470 //object Cyc_is_cond_var(object o);
471 //object Cyc_is_symbol(object o);
472 //object Cyc_is_string(object o);
473 #define Cyc_is_vector(o) (make_boolean(is_object_type(o) && ((list) o)->tag == vector_tag))
474 #define Cyc_is_bytevector(o) (make_boolean(is_object_type(o) && ((list) o)->tag == bytevector_tag))
475 #define Cyc_is_port(o) (make_boolean(is_object_type(o) && ((list) o)->tag == port_tag))
476 #define Cyc_is_mutex(o) (make_boolean(is_object_type(o) && ((list) o)->tag == mutex_tag))
477 #define Cyc_is_atomic(o) (make_boolean(is_object_type(o) && ((list) o)->tag == atomic_tag))
478 #define Cyc_is_cond_var(o) (make_boolean(is_object_type(o) && ((list) o)->tag == cond_var_tag))
479 #define Cyc_is_symbol(o) (make_boolean(is_object_type(o) && ((list) o)->tag == symbol_tag))
480 #define Cyc_is_string(o) (make_boolean(is_object_type(o) && ((list) o)->tag == string_tag))
481 //object Cyc_is_char(object o);
482 #define Cyc_is_char(o) (make_boolean(obj_is_char(o)))
483 object Cyc_is_procedure(void *data, object o);
484 //object Cyc_is_macro(object o);
485 //object Cyc_is_eof_object(object o);
486 //object Cyc_is_cvar(object o);
487 //object Cyc_is_opaque(object o);
488 #define Cyc_is_macro(o) (make_boolean(is_object_type(o) && ((list) o)->tag == macro_tag))
489 #define Cyc_is_eof_object(o) (make_boolean(is_object_type(o) && ((list) o)->tag == eof_tag))
490 #define Cyc_is_void_object(o) (make_boolean(is_object_type(o) && ((list) o)->tag == void_tag))
491 #define Cyc_is_cvar(o) (make_boolean(is_object_type(o) && ((list) o)->tag == cvar_tag))
492 #define Cyc_is_opaque(o) (make_boolean(is_object_type(o) && ((list) o)->tag == c_opaque_tag))
493 object Cyc_is_immutable(object obj);
501 object Cyc_vector_length(void *data, object v);
502 object Cyc_vector_ref(void *d, object v, object k);
503 #define Cyc_vector_ref_unsafe(d, v, k) \
504  ((vector) v)->elements[obj_obj2int(k)]
505 object Cyc_vector_set(void *d, object v, object k, object obj);
506 object Cyc_vector_set_unsafe(void *d, object v, object k, object obj);
507 object Cyc_vector_set_cps(void *d, object cont, object v, object k, object obj);
508 object Cyc_vector_set_unsafe_cps(void *d, object cont, object v, object k, object obj);
509 object Cyc_make_vector(void *data, object cont, int argc, object len, ...);
517 object Cyc_make_bytevector(void *data, object cont, int argc, object len, ...);
518 object Cyc_bytevector(void *data, object cont, int argc, object bval, ...);
519 object Cyc_bytevector_length(void *data, object bv);
520 object Cyc_bytevector_append(void *data, object cont, int _argc, object bv,
521  ...);
522 object Cyc_bytevector_copy(void *data, object cont, object bv, object start,
523  object end);
524 object Cyc_bytevector_u8_ref(void *data, object bv, object k);
525 object Cyc_bytevector_u8_set(void *data, object bv, object k, object b);
526 object Cyc_utf82string(void *data, object cont, object bv, object start,
527  object end);
528 object Cyc_string2utf8(void *data, object cont, object str, object start,
529  object end);
537 extern int _cyc_argc;
538 extern char **_cyc_argv;
539 object Cyc_installation_dir(void *data, object cont, object type);
540 object Cyc_compilation_environment(void *data, object cont, object var);
541 object Cyc_command_line_arguments(void *data, object cont);
542 object Cyc_system(object cmd);
543 void Cyc_halt(object obj);
544 object __halt(object obj);
545 object Cyc_io_delete_file(void *data, object filename);
546 object Cyc_io_file_exists(void *data, object filename);
547 time_t Cyc_file_last_modified_time(char *path);
558 object Cyc_spawn_thread(object thunk);
560 void Cyc_end_thread(gc_thread_data * thd);
561 void Cyc_exit_thread(gc_thread_data * thd);
562 object Cyc_thread_sleep(void *data, object timeout);
570 object Cyc_trigger_minor_gc(void *data, object cont);
571 object copy2heap(void *data, object obj);
581 //void Cyc_st_add(void *data, char *frame); migrated from runtime.c
587 #define Cyc_st_add(data, frame) \
588 { \
589  gc_thread_data *thd = (gc_thread_data *) data; \
590  /* Do not allow recursion to remove older frames */ \
591  if ((char *)frame != thd->stack_prev_frame) { \
592  thd->stack_prev_frame = frame; \
593  thd->stack_traces[thd->stack_trace_idx] = frame; \
594  thd->stack_trace_idx = (thd->stack_trace_idx + 1) % MAX_STACK_TRACES; \
595  } \
596 }
597 
598 void Cyc_st_print(void *data, FILE * out);
609 extern const object primitive_Cyc_91global_91vars;
610 extern const object primitive_Cyc_91get_91cvar;
611 extern const object primitive_Cyc_91set_91cvar_67;
612 extern const object primitive_Cyc_91cvar_127;
613 extern const object primitive_Cyc_91opaque_127;
614 extern const object primitive_Cyc_91has_91cycle_127;
615 extern const object primitive_Cyc_91spawn_91thread_67;
616 extern const object primitive_Cyc_91end_91thread_67;
617 extern const object primitive__87;
618 extern const object primitive__91;
619 extern const object primitive__85;
620 extern const object primitive__95;
621 extern const object primitive__123;
622 extern const object primitive__125;
623 extern const object primitive__121;
624 extern const object primitive__125_123;
625 extern const object primitive__121_123;
626 extern const object primitive_apply;
627 extern const object primitive__75halt;
628 extern const object primitive_exit;
631 extern const object primitive_cons;
632 extern const object primitive_cell_91get;
633 extern const object primitive_set_91global_67;
634 extern const object primitive_set_91cell_67;
635 extern const object primitive_cell;
636 extern const object primitive_eq_127;
637 extern const object primitive_eqv_127;
638 extern const object primitive_equal_127;
639 extern const object primitive_assq;
640 extern const object primitive_assv;
641 extern const object primitive_memq;
642 extern const object primitive_memv;
643 extern const object primitive_length;
644 extern const object primitive_vector_91length;
645 extern const object primitive_bytevector_91length;
646 extern const object primitive_set_91car_67;
647 extern const object primitive_set_91cdr_67;
648 extern const object primitive_car;
649 extern const object primitive_cdr;
650 extern const object primitive_caar;
651 extern const object primitive_cadr;
652 extern const object primitive_cdar;
653 extern const object primitive_cddr;
654 extern const object primitive_caaar;
655 extern const object primitive_caadr;
656 extern const object primitive_cadar;
657 extern const object primitive_caddr;
658 extern const object primitive_cdaar;
659 extern const object primitive_cdadr;
660 extern const object primitive_cddar;
661 extern const object primitive_cdddr;
662 extern const object primitive_caaaar;
663 extern const object primitive_caaadr;
664 extern const object primitive_caadar;
665 extern const object primitive_caaddr;
666 extern const object primitive_cadaar;
667 extern const object primitive_cadadr;
668 extern const object primitive_caddar;
669 extern const object primitive_cadddr;
670 extern const object primitive_cdaaar;
671 extern const object primitive_cdaadr;
672 extern const object primitive_cdadar;
673 extern const object primitive_cdaddr;
674 extern const object primitive_cddaar;
675 extern const object primitive_cddadr;
676 extern const object primitive_cdddar;
677 extern const object primitive_cddddr;
678 extern const object primitive_char_91_125integer;
679 extern const object primitive_integer_91_125char;
680 extern const object primitive_string_91_125number;
681 extern const object primitive_string_91cmp;
682 extern const object primitive_string_91append;
683 extern const object primitive_list_91_125string;
684 extern const object primitive_string_91_125symbol;
685 extern const object primitive_symbol_91_125string;
686 extern const object primitive_number_91_125string;
687 extern const object primitive_string_91length;
688 extern const object primitive_substring;
689 extern const object primitive_make_91bytevector;
690 extern const object primitive_make_91vector;
691 extern const object primitive_list_91_125vector;
692 extern const object primitive_vector_91ref;
693 extern const object primitive_vector_91set_67;
694 extern const object primitive_bytevector;
695 extern const object primitive_bytevector_91append;
696 extern const object primitive_Cyc_91bytevector_91copy;
697 extern const object primitive_Cyc_91string_91_125utf8;
698 extern const object primitive_Cyc_91utf8_91_125string;
699 extern const object primitive_bytevector_91u8_91ref;
700 extern const object primitive_bytevector_91u8_91set_67;
701 extern const object primitive_string_91ref;
702 extern const object primitive_string_91set_67;
703 extern const object primitive_Cyc_91installation_91dir;
705 extern const object primitive_command_91line_91arguments;
706 extern const object primitive_system;
707 extern const object primitive_boolean_127;
708 extern const object primitive_char_127;
709 extern const object primitive_eof_91object_127;
710 extern const object primitive_null_127;
711 extern const object primitive_number_127;
712 extern const object primitive_real_127;
713 extern const object primitive_integer_127;
714 extern const object primitive_pair_127;
715 extern const object primitive_procedure_127;
716 extern const object primitive_macro_127;
717 extern const object primitive_Cyc_91macro_127;
718 extern const object primitive_port_127;
719 extern const object primitive_vector_127;
720 extern const object primitive_bytevector_127;
721 extern const object primitive_string_127;
722 extern const object primitive_symbol_127;
723 extern const object primitive_open_91input_91file;
724 extern const object primitive_open_91output_91file;
725 extern const object primitive_open_91binary_91input_91file;
726 extern const object primitive_open_91binary_91output_91file;
727 extern const object primitive_close_91port;
728 extern const object primitive_close_91input_91port;
729 extern const object primitive_close_91output_91port;
730 extern const object primitive_Cyc_91flush_91output_91port;
731 extern const object primitive_file_91exists_127;
732 extern const object primitive_delete_91file;
733 extern const object primitive_read_91char;
734 extern const object primitive_peek_91char;
735 extern const object primitive_Cyc_91read_91line;
736 extern const object primitive_Cyc_91write_91char;
737 extern const object primitive_Cyc_91write;
738 extern const object primitive_Cyc_91display;
739 extern const object primitive_call_95cc;
740 /* -------------------------------------------- */
751 extern object Cyc_glo_eval_from_c;
752 extern object Cyc_glo_call_cc;
753 
754 #define __glo_eval_91from_91c_scheme_eval Cyc_glo_eval_from_c
755 #define __glo_call_95cc_scheme_base Cyc_glo_call_cc
756 
762 object Cyc_default_exception_handler(void *data, int argc, closure _, object err);
763 
764 object Cyc_current_exception_handler(void *data);
765 void Cyc_rt_raise(void *data, object err);
766 void Cyc_rt_raise2(void *data, const char *msg, object err);
767 void Cyc_rt_raise_msg(void *data, const char *err);
781 object add_symbol(symbol_type * psym);
782 object find_or_add_symbol(const char *name);
791 object is_library_loaded(const char *name);
792 object register_library(const char *name);
801 extern list global_table;
802 void add_global(const char *identifier, object * glo);
814 #define CYC_UTF8_ACCEPT 0
815 
817 #define CYC_UTF8_REJECT 1
818 
822 #define Cyc_utf8_encode_char(dest, dest_size, char_value) \
823  Cyc_utf8_encode(dest, dest_size, &char_value, 1)
824 
825 int Cyc_utf8_encode(char *dest, int sz, uint32_t *src, int srcsz);
826 int Cyc_utf8_count_code_points(uint8_t* s);
827 uint32_t Cyc_utf8_validate_stream(uint32_t *state, char *str, size_t len);
828 uint32_t Cyc_utf8_validate(char *str, size_t len);
836 //object Cyc_car(void *data, object lis);
837 //object Cyc_cdr(void *data, object lis);
838 static inline object Cyc_car(void *data, object lis)
839 {
840  Cyc_check_pair(data, lis);
841  return car(lis);
842 }
843 
844 static inline object Cyc_cdr(void *data, object lis)
845 {
846  Cyc_check_pair(data, lis);
847  return cdr(lis);
848 }
849 // Unsafe car/cdr
850 #define Cyc_car_unsafe(d, lis) car(lis)
851 #define Cyc_cdr_unsafe(d, lis) cdr(lis)
852 
853 list malloc_make_pair(object, object);
854 object Cyc_set_cell(void *, object l, object val);
855 object Cyc_set_car(void *, object l, object val);
856 object Cyc_set_cdr(void *, object l, object val);
857 object Cyc_set_car_cps(void *, object cont, object l, object val);
858 object Cyc_set_cdr_cps(void *, object cont, object l, object val);
859 object Cyc_length(void *d, object l);
860 object Cyc_length_unsafe(void *d, object l);
861 object Cyc_list2vector(void *data, object cont, object l);
862 object Cyc_list2string(void *d, object cont, object lst);
863 object Cyc_list(void *data, int argc, object cont, ...);
864 object memberp(void *data, object x, list l);
865 object memqp(void *data, object x, list l);
866 list assq(void *data, object x, list l);
867 list assoc(void *data, object x, list l);
868 list assoc_cdr(void *data, object x, list l);
872 #endif /* CYCLONE_RUNTIME_H */
const object primitive_cdaar
Definition: runtime.c:6496
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:1333
const object primitive_substring
Definition: runtime.c:6520
A closed-over function with no variables.
Definition: types.h:1384
object Cyc_write_bytevector(void *data, object bvec, object port, object start, object end)
Definition: runtime.c:1365
uint32_t Cyc_utf8_validate_stream(uint32_t *state, char *str, size_t len)
Use this when validating from a stream, as it may be that the stream stopped in the middle of a codep...
Definition: runtime.c:7992
object Cyc_vector_ref(void *d, object v, object k)
Definition: runtime.c:2245
long global_heap_size
object copy2heap(void *data, object obj)
Copy given object to the heap, if it is from the stack. This function is intended to be called direct...
Definition: runtime.c:6762
object Cyc_bit_set(void *data, object n1, object n2)
Definition: runtime.c:6822
object Cyc_write(void *data, object, FILE *port)
Definition: runtime.c:1326
char ** get_env_variables()
Definition: runtime.c:204
object Cyc_vector_set_cps(void *d, object cont, object v, object k, object obj)
Definition: runtime.c:2199
const object primitive_Cyc_91write_91char
Definition: runtime.c:6580
const object primitive_caar
Definition: runtime.c:6488
object Cyc_get_global_variables()
Definition: runtime.c:847
void Cyc_io_read_token(void *data, object cont, object port)
Read next token from the input port.
Definition: runtime.c:7749
port_type Cyc_io_open_input_file(void *data, object str)
Definition: runtime.c:4488
const object primitive_memq
Definition: runtime.c:6477
The port object type.
Definition: types.h:1091
object Cyc_char_gte_op(void *data, object a, object b)
const object primitive_command_91line_91arguments
Definition: runtime.c:6527
const object primitive_open_91input_91file
Definition: runtime.c:6566
object Cyc_string_append(void *data, object cont, int argc, object str1,...)
Definition: runtime.c:2692
const object primitive_cdadar
Definition: runtime.c:6510
const object primitive_port_127
Definition: runtime.c:6562
object memberp(void *data, object x, list l)
Definition: runtime.c:1399
const object primitive_cdddr
Definition: runtime.c:6499
void Cyc_immutable_obj_error(void *data, object obj)
Definition: runtime.c:68
const object quote_void
Definition: runtime.c:390
object Cyc_length_unsafe(void *d, object l)
Definition: runtime.c:2299
object Cyc_fast_mul(void *data, object ptr, object x, object y)
Definition: runtime.c:3888
object add_symbol(symbol_type *psym)
Definition: runtime.c:447
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:4306
object Cyc_string_ref(void *data, object str, object k)
Definition: runtime.c:2805
object Cyc_string_set(void *data, object str, object k, object chr)
Definition: runtime.c:2711
port_type Cyc_stdout(void)
Definition: runtime.c:4444
const object primitive_Cyc_91macro_127
Definition: runtime.c:6560
object Cyc_global_set_cps(void *thd, object cont, object sym, object *glo, object value)
Definition: runtime.c:359
object Cyc_set_car_cps(void *, object cont, object l, object val)
Definition: runtime.c:2139
The pair (cons) type.
Definition: types.h:1239
double MRG32k3a(double seed)
Definition: runtime.c:6865
const object primitive_cdaddr
Definition: runtime.c:6511
object Cyc_write_u8(void *data, object c, object port)
Definition: runtime.c:1350
Definition: types.h:321
const object primitive_Cyc_91read_91line
Definition: runtime.c:6579
const object primitive_caddar
Definition: runtime.c:6506
const object primitive_string_91length
Definition: runtime.c:6519
object register_library(const char *name)
Definition: runtime.c:485
object Cyc_fast_sum(void *data, object ptr, object x, object y)
Definition: runtime.c:3687
const object primitive_symbol_127
Definition: runtime.c:6565
const object primitive_Cyc_91flush_91output_91port
Definition: runtime.c:6573
const object Cyc_EOF
Definition: runtime.c:196
object equalp(object, object)
Definition: runtime.c:1569
object Cyc_is_immutable(object obj)
Definition: runtime.c:2056
int Cyc_num_lte_op(void *, object x, object y)
const object primitive_procedure_127
Definition: runtime.c:6558
const object primitive_integer_127
Definition: runtime.c:6556
object Cyc_fast_vector_3(object ptr, object a1, object a2, object a3)
Definition: runtime.c:1505
void Cyc_int2bignum(int n, mp_int *bn)
Definition: runtime.c:1673
void dispatch_display_va(void *data, int argc, object clo, object cont, object x,...)
Definition: runtime.c:970
void Cyc_apply(void *data, int argc, closure cont, object prim,...)
Definition: runtime.c:5670
const object primitive_cdaadr
Definition: runtime.c:6509
object Cyc_io_close_output_port(void *data, object port)
Definition: runtime.c:4517
object Cyc_glo_call_cc
Definition: runtime.c:644
const object primitive_open_91output_91file
Definition: runtime.c:6567
object Cyc_io_read_char(void *data, object cont, object port)
Definition: runtime.c:7646
const object primitive_cadaar
Definition: runtime.c:6504
const object primitive_cddaar
Definition: runtime.c:6512
const object primitive_cell
Definition: runtime.c:6471
object Cyc_char2integer(object chr)
Definition: runtime.c:3488
const object primitive_caaar
Definition: runtime.c:6492
const object primitive_caaadr
Definition: runtime.c:6501
object Cyc_thread_sleep(void *data, object timeout)
Accept a number of seconds to sleep according to SRFI-18.
Definition: runtime.c:6742
const object primitive__125
Definition: runtime.c:6456
void(* function_type_va)(int, object, object, object,...)
Definition: types.h:668
object Cyc_string2symbol(void *d, object str)
Definition: runtime.c:2415
const object primitive_list_91_125string
Definition: runtime.c:6532
void dispatch(void *data, int argc, function_type func, object clo, object cont, object args)
Definition: runtime.c:6154
object Cyc_substring(void *data, object cont, object str, object start, object end)
Definition: runtime.c:2841
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:6173
const object primitive_string_127
Definition: runtime.c:6561
const object primitive__121_123
Definition: runtime.c:6459
const object primitive_apply
Definition: runtime.c:6460
cvar_type * mcvar(object *var)
Definition: runtime.c:4608
object Cyc_compilation_environment(void *data, object cont, object var)
Definition: runtime.c:2937
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:2070
void Cyc_start_trampoline(gc_thread_data *thd)
Definition: runtime.c:5730
object Cyc_eqv(object x, object y)
Definition: runtime.c:2044
void dispatch_write_va(void *data, int argc, object clo, object cont, object x,...)
Definition: runtime.c:1176
time_t Cyc_file_last_modified_time(char *path)
Definition: runtime.c:4588
void Cyc_remainder(void *data, object cont, object num1, object num2)
Definition: runtime.c:4368
const object primitive_delete_91file
Definition: runtime.c:6576
object Cyc_num_cmp_va_list(void *data, int argc, int(fn_op(void *, object, object)), object n, va_list ns)
Definition: runtime.c:1627
const object primitive_cons
Definition: runtime.c:6467
object Cyc_make_bytevector(void *data, object cont, int argc, object len,...)
Definition: runtime.c:3065
int equal(object, object)
Definition: runtime.c:752
void Cyc_rt_raise_msg(void *data, const char *err)
Raise an exception from the runtime code.
Definition: runtime.c:744
object Cyc_num_fast_lte_op(void *data, object x, object y)
object Cyc_list2vector(void *data, object cont, object l)
Definition: runtime.c:3415
void Cyc_mutable_obj_error(void *data, object obj)
Definition: runtime.c:73
const object boolean_f
Definition: runtime.c:389
object Cyc_io_delete_file(void *data, object filename)
Definition: runtime.c:4564
const object primitive_vector_91set_67
Definition: runtime.c:6483
const object primitive_string_91ref
Definition: runtime.c:6521
const object primitive_set_91car_67
Definition: runtime.c:6484
int Cyc_num_gt_op(void *, object x, object y)
object Cyc_length(void *d, object l)
Definition: runtime.c:2286
const object primitive_car
Definition: runtime.c:6486
const object primitive_Cyc_91display
Definition: runtime.c:6582
int binstr2int(const char *str)
Definition: runtime.c:2623
object Cyc_spawn_thread(object thunk)
Definition: runtime.c:6677
Symbols are similar to strings, but only one instance of each unique symbol is created, so comparisons are O(1).
Definition: types.h:787
const object primitive_number_91_125string
Definition: runtime.c:6535
object Cyc_io_flush_output_port(void *data, object port)
Definition: runtime.c:4550
object Cyc_default_exception_handler(void *data, int argc, closure _, object err)
The default exception handler.
Definition: runtime.c:654
void add_global(const char *identifier, object *glo)
Definition: runtime.c:502
const object primitive_string_91append
Definition: runtime.c:6531
const object primitive_set_91cdr_67
Definition: runtime.c:6485
uint32_t Cyc_utf8_validate(char *str, size_t len)
Simplified version of Cyc_utf8_validate_stream that must always be called with a complete string buff...
Definition: runtime.c:8012
object Cyc_fast_vector_2(object ptr, object a1, object a2)
Definition: runtime.c:1491
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_io_read_line(void *data, object cont, object port)
Definition: runtime.c:7689
const object primitive_open_91binary_91output_91file
Definition: runtime.c:6569
const object primitive_cddr
Definition: runtime.c:6491
void Cyc_rt_raise(void *data, object err)
Raise an exception from the runtime code.
Definition: runtime.c:709
object Cyc_bytevector_u8_ref(void *data, object bv, object k)
Definition: runtime.c:3365
object Cyc_global_variables
Definition: runtime.c:189
const object primitive_close_91input_91port
Definition: runtime.c:6571
void Cyc_io_get_output_bytevector(void *data, object cont, object port)
Definition: mstreams.c:110
const object primitive_caddr
Definition: runtime.c:6495
#define cdr(x)
Definition: types.h:1306
const object primitive_null_127
Definition: runtime.c:6553
object Cyc_write_va(void *data, int argc, object x,...)
Definition: runtime.c:1187
char ** _cyc_argv
Definition: runtime.c:191
int Cyc_bignum_cmp(bn_cmp_type type, object x, int tx, object y, int ty)
Definition: runtime.c:1681
C-variable integration type - wrapper around a Cyclone object pointer.
Definition: types.h:676
object Cyc_system(object cmd)
Definition: runtime.c:3467
const object primitive__95
Definition: runtime.c:6454
object Cyc_string2number_(void *d, object cont, object str)
Definition: runtime.c:2589
port_type Cyc_io_open_binary_output_file(void *data, object str)
Definition: runtime.c:4505
const object primitive_make_91bytevector
Definition: runtime.c:6536
object Cyc_display_va_list(void *data, int argc, object x, va_list ap)
Definition: runtime.c:991
object Cyc_make_vector(void *data, object cont, int argc, object len,...)
Definition: runtime.c:3002
void Cyc_set_globals_changed(gc_thread_data *thd)
Definition: runtime.c:529
const object primitive_equal_127
Definition: runtime.c:6474
object Cyc_char_eq_op(void *data, object a, object b)
const object boolean_t
Definition: runtime.c:388
const object primitive_char_127
Definition: runtime.c:6551
const object primitive__123
Definition: runtime.c:6455
const object primitive_Cyc_91write
Definition: runtime.c:6581
const object primitive_Cyc_91set_91cvar_67
Definition: runtime.c:6444
const object primitive_Cyc_91bytevector_91copy
Definition: runtime.c:6540
const object primitive_cdr
Definition: runtime.c:6487
void Cyc_make_rectangular(void *data, object k, object r, object i)
Definition: runtime.c:6835
const object primitive_Cyc_91default_91exception_91handler
Definition: runtime.c:6465
object Cyc_global_set(void *thd, object sym, object *glo, object value)
Definition: runtime.c:344
const object primitive_Cyc_91opaque_127
Definition: runtime.c:6446
object Cyc_get_cvar(object var)
Definition: runtime.c:852
long global_stack_size
object Cyc_number2string2(void *data, object cont, int argc, object n,...)
Definition: runtime.c:2331
const object primitive__121
Definition: runtime.c:6457
const object primitive__75halt
Definition: runtime.c:6461
void Cyc_rt_raise2(void *data, const char *msg, object err)
Raise an exception from the runtime code.
Definition: runtime.c:726
object Cyc_list(void *data, int argc, object cont,...)
Definition: runtime.c:2476
object Cyc_fast_vector_5(object ptr, object a1, object a2, object a3, object a4, object a5)
Definition: runtime.c:1536
const object primitive_caadar
Definition: runtime.c:6502
void gc_init_heap(long heap_size)
Perform one-time heap initializations for the program.
Definition: runtime.c:314
const object primitive_read_91char
Definition: runtime.c:6577
const object primitive_Cyc_91end_91thread_67
Definition: runtime.c:6450
object Cyc_integer2char(void *data, object n)
Definition: runtime.c:3493
object Cyc_io_file_exists(void *data, object filename)
Definition: runtime.c:4574
void set_env_variables(char **vars)
Definition: runtime.c:255
void(* function_type)()
Definition: types.h:665
int octstr2int(const char *str)
Definition: runtime.c:2634
object Cyc_string2utf8(void *data, object cont, object str, object start, object end)
Definition: runtime.c:3272
object find_or_add_symbol(const char *name)
Definition: runtime.c:463
void Cyc_end_thread(gc_thread_data *thd)
Definition: runtime.c:6713
const object primitive_file_91exists_127
Definition: runtime.c:6575
object Cyc_string2number2_(void *data, object cont, int argc, object str,...)
Definition: runtime.c:2483
object cell_get(object cell)
Definition: runtime.c:338
object Cyc_bytevector_u8_set(void *data, object bv, object k, object b)
Definition: runtime.c:3385
const object primitive_open_91binary_91input_91file
Definition: runtime.c:6568
const object primitive_assv
Definition: runtime.c:6476
object apply_va(void *data, object cont, int argc, object func,...)
Definition: runtime.c:5578
list malloc_make_pair(object, object)
Definition: runtime.c:4596
const object primitive_vector_127
Definition: runtime.c:6563
const object primitive_bytevector
Definition: runtime.c:6538
object Cyc_io_peek_char(void *data, object cont, object port)
Definition: runtime.c:7551
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:4204
object Cyc_bytevector_length(void *data, object bv)
Definition: runtime.c:3405
const object primitive_exit
Definition: runtime.c:6462
const object primitive_caaaar
Definition: runtime.c:6500
int Cyc_utf8_count_code_points(uint8_t *s)
Count the number of code points in a string. Based on example code from Bjoern Hoehrmann.
Definition: runtime.c:7945
const object primitive_vector_91length
Definition: runtime.c:6481
const object primitive_call_95cc
Definition: runtime.c:6583
int Cyc_utf8_encode(char *dest, int sz, uint32_t *src, int srcsz)
Definition: runtime.c:8057
object Cyc_set_car(void *, object l, object val)
Definition: runtime.c:2079
object Cyc_bytevector_append(void *data, object cont, int _argc, object bv,...)
Definition: runtime.c:3187
const object primitive__125_123
Definition: runtime.c:6458
object __halt(object obj)
Definition: runtime.c:3518
object Cyc_vector_set_unsafe_cps(void *d, object cont, object v, object k, object obj)
Definition: runtime.c:2227
object Cyc_string_cmp(void *data, object str1, object str2)
Definition: runtime.c:2644
const object primitive_eof_91object_127
Definition: runtime.c:6552
const object primitive_bytevector_91u8_91set_67
Definition: runtime.c:6543
const object primitive_eq_127
Definition: runtime.c:6472
port_type Cyc_io_open_binary_input_file(void *data, object str)
Definition: runtime.c:4498
object Cyc_set_cdr(void *, object l, object val)
Definition: runtime.c:2091
const object primitive_Cyc_91string_91_125utf8
Definition: runtime.c:6545
object Cyc_mul_op(void *data, common_type *x, object y)
object Cyc_string_byte_length(void *data, object str)
Definition: runtime.c:2705
const object primitive_cdaaar
Definition: runtime.c:6508
object Cyc_is_list(object lst)
Definition: runtime.c:913
const object primitive_string_91_125number
Definition: runtime.c:6518
const object primitive_eqv_127
Definition: runtime.c:6473
const object primitive_string_91_125symbol
Definition: runtime.c:6533
const object primitive_cadddr
Definition: runtime.c:6507
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:6722
object Cyc_write_va_list(void *data, int argc, object x, va_list ap)
Definition: runtime.c:1197
const object primitive_bytevector_91u8_91ref
Definition: runtime.c:6542
object Cyc_vector_set(void *d, object v, object k, object obj)
Definition: runtime.c:2103
const object primitive__91
Definition: runtime.c:6452
const object primitive_list_91_125vector
Definition: runtime.c:6549
int Cyc_num_gte_op(void *, object x, object y)
const object primitive_vector_91ref
Definition: runtime.c:6482
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:2699
object Cyc_has_cycle(object lst)
Definition: runtime.c:880
object Cyc_trigger_minor_gc(void *data, object cont)
Trigger a minor GC for the calling thread.
Definition: runtime.c:5916
const object primitive_system
Definition: runtime.c:6529
object Cyc_list2string(void *d, object cont, object lst)
Definition: runtime.c:2426
object Cyc_fast_div(void *data, object ptr, object x, object y)
Definition: runtime.c:3988
object Cyc_glo_eval_from_c
Definition: runtime.c:645
object Cyc_display_va(void *data, int argc, object x,...)
Definition: runtime.c:981
const object primitive_macro_127
Definition: runtime.c:6559
object Cyc_char_lte_op(void *data, object a, object b)
const object primitive_memv
Definition: runtime.c:6478
const object primitive_peek_91char
Definition: runtime.c:6578
const object primitive_cadar
Definition: runtime.c:6494
object Cyc_utf82string(void *data, object cont, object bv, object start, object end)
Definition: runtime.c:3238
object Cyc_io_close_input_port(void *data, object port)
Definition: runtime.c:4512
object Cyc_io_read_u8(void *data, object cont, object port)
Definition: runtime.c:7670
object dispatch_string_91append(void *data, int argc, object clo, object cont, object str1,...)
Definition: runtime.c:2684
object Cyc_sub(void *data, object cont, int argc, object n,...)
const object primitive_symbol_91_125string
Definition: runtime.c:6534
object Cyc_char_lt_op(void *data, object a, object b)
port_type Cyc_stdin(void)
Definition: runtime.c:4450
const object primitive_boolean_127
Definition: runtime.c:6550
object Cyc_sum(void *data, object cont, int argc, object n,...)
void pack_env_variables(void *data, object k)
Definition: runtime.c:209
object Cyc_bytevector_copy(void *data, object cont, object bv, object start, object end)
Definition: runtime.c:3192
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:3788
const object primitive_Cyc_91installation_91dir
Definition: runtime.c:6523
const object primitive_Cyc_91cvar_127
Definition: runtime.c:6445
const object primitive_caadr
Definition: runtime.c:6493
const object primitive_close_91output_91port
Definition: runtime.c:6572
const object primitive_bytevector_127
Definition: runtime.c:6564
const object primitive_make_91vector
Definition: runtime.c:6537
const object primitive_cadr
Definition: runtime.c:6489
object Cyc_mul(void *data, object cont, int argc, object n,...)
const object primitive_bytevector_91length
Definition: runtime.c:6480
const object primitive_set_91global_67
Definition: runtime.c:6469
object Cyc_is_real(object o)
Definition: runtime.c:1883
object Cyc_num_fast_gt_op(void *data, object x, object y)
void Cyc_st_print(void *data, FILE *out)
Print the contents of the given thread&#39;s stack trace buffer.
Definition: runtime.c:399
int Cyc_num_lt_op(void *, object x, object y)
const object primitive_assq
Definition: runtime.c:6475
object Cyc_bit_unset(void *data, object n1, object n2)
Definition: runtime.c:6814
void Cyc_check_bounds(void *data, const char *label, int len, int index)
Definition: runtime.c:85
const object primitive_integer_91_125char
Definition: runtime.c:6517
object Cyc_fast_vector_4(object ptr, object a1, object a2, object a3, object a4)
Definition: runtime.c:1520
object Cyc_div(void *data, object cont, int argc, object n,...)
Definition: runtime.c:4177
object Cyc_char_gt_op(void *data, object a, object b)
void Cyc_invalid_type_error(void *data, int tag, object found)
Definition: runtime.c:56
const object primitive_caaddr
Definition: runtime.c:6503
const object primitive_cdadr
Definition: runtime.c:6497
const object primitive_char_91_125integer
Definition: runtime.c:6516
port_type Cyc_stderr(void)
Definition: runtime.c:4456
A union of all the constant-size objects.
Definition: types.h:1476
void dispatch_apply_va(void *data, int argc, object clo, object cont, object func,...)
Definition: runtime.c:5567
object Cyc_display(void *data, object, FILE *port)
Definition: runtime.c:1007
#define car(x)
Definition: types.h:1304
int _cyc_argc
Definition: runtime.c:190
const object primitive__85
Definition: runtime.c:6453
object Cyc_num_eq(void *, object cont, int argc, object n,...)
object Cyc_num_fast_lt_op(void *data, object x, object y)
list assoc_cdr(void *data, object x, list l)
Definition: runtime.c:1450
object Cyc_symbol2string(void *d, object cont, object sym)
Definition: runtime.c:2406
const object primitive_bytevector_91append
Definition: runtime.c:6539
object Cyc_current_exception_handler(void *data)
Return the current exception handler.
Definition: runtime.c:694
const object primitive_Cyc_91get_91cvar
Definition: runtime.c:6443
object Cyc_set_cvar(object var, object value)
Definition: runtime.c:860
void Cyc_halt(object obj)
Definition: runtime.c:3502
object Cyc_fast_list_2(object ptr, object x, object y)
Definition: runtime.c:1464
const object Cyc_VOID
Definition: runtime.c:197
object is_library_loaded(const char *name)
Definition: runtime.c:476
object Cyc_num_gte(void *, object cont, int argc, object n,...)
const object primitive_Cyc_91has_91cycle_127
Definition: runtime.c:6447
object memqp(void *data, object x, list l)
Definition: runtime.c:1409
object Cyc_is_number(object o)
Definition: runtime.c:1872
object Cyc_is_integer(object o)
Definition: runtime.c:1909
const object primitive_Cyc_91current_91exception_91handler
Definition: runtime.c:6463
const object primitive_Cyc_91utf8_91_125string
Definition: runtime.c:6547
object Cyc_io_close_port(void *data, object port)
Definition: runtime.c:4522
object Cyc_command_line_arguments(void *data, object cont)
Definition: runtime.c:2982
const object primitive_set_91cell_67
Definition: runtime.c:6470
const object primitive_cdddar
Definition: runtime.c:6514
object Cyc_bytevector(void *data, object cont, int argc, object bval,...)
Definition: runtime.c:3141
list global_table
Definition: runtime.c:500
const object primitive_length
Definition: runtime.c:6479
object Cyc_is_procedure(void *data, object o)
Definition: runtime.c:1983
bn_cmp_type
Definition: types.h:920
list assoc(void *data, object x, list l)
Definition: runtime.c:1433
const object primitive_Cyc_91spawn_91thread_67
Definition: runtime.c:6448
const object primitive_Cyc_91compilation_91environment
Definition: runtime.c:6525
const object primitive_Cyc_91global_91vars
Definition: runtime.c:6442
const object primitive_cddddr
Definition: runtime.c:6515
object Cyc_installation_dir(void *data, object cont, object type)
Definition: runtime.c:2902
#define Cyc_check_pair(d, obj)
Definition: runtime.h:83
object Cyc_bignum_normalize(void *data, object n)
Definition: runtime.c:1652
object Cyc_vector_set_unsafe(void *d, object v, object k, object obj)
Definition: runtime.c:2122
object Cyc_sum_op(void *data, common_type *x, object y)
const object primitive_string_91cmp
Definition: runtime.c:6530
object Cyc_vector_length(void *data, object v)
Definition: runtime.c:2276
object apply(void *data, object cont, object func, object args)
Definition: runtime.c:5593
object Cyc_fast_list_4(object ptr, object a1, object a2, object a3, object a4)
Definition: runtime.c:1481
const object primitive_cell_91get
Definition: runtime.c:6468
object Cyc_io_peek_u8(void *data, object cont, object port)
Definition: runtime.c:7606
const object primitive_pair_127
Definition: runtime.c:6557
#define prim(x)
Definition: types.h:1467
const object primitive__87
Definition: runtime.c:6451
const object primitive_cadadr
Definition: runtime.c:6505
const object primitive_number_127
Definition: runtime.c:6554
object Cyc_num_lte(void *, object cont, int argc, object n,...)
list assq(void *data, object x, list l)
Definition: runtime.c:1419
object Cyc_set_cdr_cps(void *, object cont, object l, object val)
Definition: runtime.c:2168
void Cyc_check_obj(void *data, int tag, object obj)
Definition: runtime.c:78
port_type Cyc_io_open_output_file(void *data, object str)
Definition: runtime.c:4493
object Cyc_fast_list_3(object ptr, object a1, object a2, object a3)
Definition: runtime.c:1472
void GC(void *, closure, object *, int)
Definition: runtime.c:6079
object Cyc_num_fast_gte_op(void *data, object x, object y)
const object primitive_real_127
Definition: runtime.c:6555
const object primitive_string_91set_67
Definition: runtime.c:6522
const object primitive_cdar
Definition: runtime.c:6490
const object primitive_cddadr
Definition: runtime.c:6513
object Cyc_div_op(void *data, common_type *x, object y)
Definition: runtime.c:4079
const object primitive_cddar
Definition: runtime.c:6498
const object primitive_close_91port
Definition: runtime.c:6570