2004-07-16 02:26:21 -04:00
|
|
|
#include "factor.h"
|
|
|
|
|
2005-01-01 19:30:57 -05:00
|
|
|
void* primitives[] = {
|
2004-08-04 22:43:58 -04:00
|
|
|
undefined,
|
2004-08-23 01:13:09 -04:00
|
|
|
docol,
|
2004-09-28 00:24:36 -04:00
|
|
|
dosym,
|
2004-08-04 22:43:58 -04:00
|
|
|
primitive_execute,
|
|
|
|
primitive_call,
|
|
|
|
primitive_ifte,
|
|
|
|
primitive_cons,
|
|
|
|
primitive_vector,
|
|
|
|
primitive_string_compare,
|
|
|
|
primitive_index_of,
|
|
|
|
primitive_substring,
|
|
|
|
primitive_sbuf,
|
2004-09-19 00:33:40 -04:00
|
|
|
primitive_arithmetic_type,
|
2004-08-04 22:43:58 -04:00
|
|
|
primitive_to_fixnum,
|
|
|
|
primitive_to_bignum,
|
2004-08-05 17:33:02 -04:00
|
|
|
primitive_to_float,
|
2004-09-18 22:29:29 -04:00
|
|
|
primitive_from_fraction,
|
2004-08-05 17:33:02 -04:00
|
|
|
primitive_str_to_float,
|
|
|
|
primitive_float_to_str,
|
2004-08-05 20:29:52 -04:00
|
|
|
primitive_from_rect,
|
2004-09-19 00:33:40 -04:00
|
|
|
primitive_fixnum_add,
|
|
|
|
primitive_fixnum_subtract,
|
|
|
|
primitive_fixnum_multiply,
|
|
|
|
primitive_fixnum_divint,
|
|
|
|
primitive_fixnum_divfloat,
|
|
|
|
primitive_fixnum_mod,
|
|
|
|
primitive_fixnum_divmod,
|
|
|
|
primitive_fixnum_and,
|
|
|
|
primitive_fixnum_or,
|
|
|
|
primitive_fixnum_xor,
|
|
|
|
primitive_fixnum_not,
|
|
|
|
primitive_fixnum_shift,
|
|
|
|
primitive_fixnum_less,
|
|
|
|
primitive_fixnum_lesseq,
|
|
|
|
primitive_fixnum_greater,
|
|
|
|
primitive_fixnum_greatereq,
|
|
|
|
primitive_bignum_eq,
|
|
|
|
primitive_bignum_add,
|
|
|
|
primitive_bignum_subtract,
|
|
|
|
primitive_bignum_multiply,
|
|
|
|
primitive_bignum_divint,
|
|
|
|
primitive_bignum_divfloat,
|
|
|
|
primitive_bignum_mod,
|
|
|
|
primitive_bignum_divmod,
|
|
|
|
primitive_bignum_and,
|
|
|
|
primitive_bignum_or,
|
|
|
|
primitive_bignum_xor,
|
|
|
|
primitive_bignum_not,
|
|
|
|
primitive_bignum_shift,
|
|
|
|
primitive_bignum_less,
|
|
|
|
primitive_bignum_lesseq,
|
|
|
|
primitive_bignum_greater,
|
|
|
|
primitive_bignum_greatereq,
|
|
|
|
primitive_float_eq,
|
|
|
|
primitive_float_add,
|
|
|
|
primitive_float_subtract,
|
|
|
|
primitive_float_multiply,
|
|
|
|
primitive_float_divfloat,
|
|
|
|
primitive_float_less,
|
|
|
|
primitive_float_lesseq,
|
|
|
|
primitive_float_greater,
|
|
|
|
primitive_float_greatereq,
|
2004-08-06 18:40:44 -04:00
|
|
|
primitive_facos,
|
|
|
|
primitive_fasin,
|
|
|
|
primitive_fatan,
|
|
|
|
primitive_fatan2,
|
|
|
|
primitive_fcos,
|
|
|
|
primitive_fexp,
|
|
|
|
primitive_fcosh,
|
|
|
|
primitive_flog,
|
|
|
|
primitive_fpow,
|
|
|
|
primitive_fsin,
|
|
|
|
primitive_fsinh,
|
|
|
|
primitive_fsqrt,
|
2004-08-04 22:43:58 -04:00
|
|
|
primitive_word,
|
2004-12-24 02:52:02 -05:00
|
|
|
primitive_update_xt,
|
2004-10-04 23:58:53 -04:00
|
|
|
primitive_call_profiling,
|
|
|
|
primitive_allot_profiling,
|
|
|
|
primitive_word_compiledp,
|
2004-08-04 22:43:58 -04:00
|
|
|
primitive_drop,
|
|
|
|
primitive_dup,
|
|
|
|
primitive_swap,
|
|
|
|
primitive_over,
|
|
|
|
primitive_pick,
|
|
|
|
primitive_to_r,
|
|
|
|
primitive_from_r,
|
|
|
|
primitive_eq,
|
|
|
|
primitive_getenv,
|
|
|
|
primitive_setenv,
|
2004-08-29 23:30:54 -04:00
|
|
|
primitive_stat,
|
2004-08-30 00:36:44 -04:00
|
|
|
primitive_read_dir,
|
2004-08-04 22:43:58 -04:00
|
|
|
primitive_gc,
|
2004-11-22 19:15:14 -05:00
|
|
|
primitive_gc_time,
|
2004-08-04 22:43:58 -04:00
|
|
|
primitive_save_image,
|
|
|
|
primitive_datastack,
|
|
|
|
primitive_callstack,
|
|
|
|
primitive_set_datastack,
|
|
|
|
primitive_set_callstack,
|
|
|
|
primitive_exit,
|
|
|
|
primitive_room,
|
|
|
|
primitive_os_env,
|
|
|
|
primitive_millis,
|
2004-08-06 02:51:32 -04:00
|
|
|
primitive_random_int,
|
2004-09-18 22:29:29 -04:00
|
|
|
primitive_type,
|
2004-09-04 03:06:53 -04:00
|
|
|
primitive_cwd,
|
2004-09-06 02:32:04 -04:00
|
|
|
primitive_cd,
|
2004-09-06 22:39:12 -04:00
|
|
|
primitive_compiled_offset,
|
|
|
|
primitive_set_compiled_offset,
|
|
|
|
primitive_literal_top,
|
|
|
|
primitive_set_literal_top,
|
2004-09-18 22:29:29 -04:00
|
|
|
primitive_address,
|
2004-09-18 18:15:01 -04:00
|
|
|
primitive_dlopen,
|
|
|
|
primitive_dlsym,
|
2004-09-19 17:39:28 -04:00
|
|
|
primitive_dlclose,
|
|
|
|
primitive_alien,
|
2005-04-09 18:30:46 -04:00
|
|
|
primitive_byte_array,
|
|
|
|
primitive_displaced_alien,
|
2005-03-28 23:45:13 -05:00
|
|
|
primitive_alien_signed_cell,
|
|
|
|
primitive_set_alien_signed_cell,
|
|
|
|
primitive_alien_unsigned_cell,
|
|
|
|
primitive_set_alien_unsigned_cell,
|
|
|
|
primitive_alien_signed_8,
|
|
|
|
primitive_set_alien_signed_8,
|
|
|
|
primitive_alien_unsigned_8,
|
|
|
|
primitive_set_alien_unsigned_8,
|
|
|
|
primitive_alien_signed_4,
|
|
|
|
primitive_set_alien_signed_4,
|
|
|
|
primitive_alien_unsigned_4,
|
|
|
|
primitive_set_alien_unsigned_4,
|
|
|
|
primitive_alien_signed_2,
|
|
|
|
primitive_set_alien_signed_2,
|
|
|
|
primitive_alien_unsigned_2,
|
|
|
|
primitive_set_alien_unsigned_2,
|
|
|
|
primitive_alien_signed_1,
|
|
|
|
primitive_set_alien_signed_1,
|
|
|
|
primitive_alien_unsigned_1,
|
|
|
|
primitive_set_alien_unsigned_1,
|
2005-05-05 03:12:37 -04:00
|
|
|
primitive_alien_float,
|
|
|
|
primitive_set_alien_float,
|
|
|
|
primitive_alien_double,
|
|
|
|
primitive_set_alien_double,
|
|
|
|
primitive_alien_c_string,
|
|
|
|
primitive_set_alien_c_string,
|
2004-12-19 21:07:17 -05:00
|
|
|
primitive_throw,
|
|
|
|
primitive_string_to_memory,
|
2004-12-23 01:14:07 -05:00
|
|
|
primitive_memory_to_string,
|
|
|
|
primitive_alien_address,
|
2004-12-24 02:52:02 -05:00
|
|
|
primitive_slot,
|
|
|
|
primitive_set_slot,
|
|
|
|
primitive_integer_slot,
|
|
|
|
primitive_set_integer_slot,
|
2005-05-05 22:30:58 -04:00
|
|
|
primitive_char_slot,
|
|
|
|
primitive_set_char_slot,
|
2005-01-27 20:06:10 -05:00
|
|
|
primitive_grow_array,
|
2005-05-05 22:30:58 -04:00
|
|
|
primitive_grow_string,
|
2005-01-27 20:06:10 -05:00
|
|
|
primitive_hashtable,
|
2005-01-29 16:39:30 -05:00
|
|
|
primitive_array,
|
2005-01-30 15:57:25 -05:00
|
|
|
primitive_tuple,
|
2005-02-17 21:19:27 -05:00
|
|
|
primitive_begin_scan,
|
|
|
|
primitive_next_object,
|
2005-02-18 20:37:01 -05:00
|
|
|
primitive_end_scan,
|
2005-03-07 00:39:57 -05:00
|
|
|
primitive_size,
|
2005-03-14 11:25:41 -05:00
|
|
|
primitive_die,
|
2005-04-22 20:09:46 -04:00
|
|
|
primitive_flush_icache,
|
|
|
|
primitive_fopen,
|
2005-04-23 19:34:06 -04:00
|
|
|
primitive_fgets,
|
2005-04-22 20:09:46 -04:00
|
|
|
primitive_fwrite,
|
|
|
|
primitive_fflush,
|
|
|
|
primitive_fclose
|
2004-07-16 02:26:21 -04:00
|
|
|
};
|
|
|
|
|
|
|
|
CELL primitive_to_xt(CELL primitive)
|
|
|
|
{
|
|
|
|
if(primitive < 0 || primitive >= PRIMITIVE_COUNT)
|
2004-12-19 21:07:17 -05:00
|
|
|
return (CELL)undefined;
|
|
|
|
else
|
|
|
|
return (CELL)primitives[primitive];
|
2004-07-16 02:26:21 -04:00
|
|
|
}
|