static void pic_init_state(pic_state *pic) { pic_defun(pic, "features", pic_state_features); pic_defun(pic, "global-objects", pic_state_global_objects); pic_add_feature(pic, "picrin"); #if __STDC_IEC_559__ pic_add_feature(pic, "ieee-float"); #endif #if _POSIX_SOURCE pic_add_feature(pic, "posix"); #endif #if _WIN32 pic_add_feature(pic, "windows"); #endif #if __unix__ pic_add_feature(pic, "unix"); #endif #if __gnu_linux__ pic_add_feature(pic, "gnu-linux"); #endif #if __FreeBSD__ pic_add_feature(pic, "freebsd"); #endif #if __i386__ pic_add_feature(pic, "i386"); #elif __x86_64__ pic_add_feature(pic, "x86-64"); #elif __ppc__ pic_add_feature(pic, "ppc"); #elif __sparc__ pic_add_feature(pic, "sparc"); #endif #if __ILP32__ pic_add_feature(pic, "ilp32"); #elif __LP64__ pic_add_feature(pic, "lp64"); #endif #if defined(__BYTE_ORDER__) # if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__ pic_add_feature(pic, "little-endian"); # elif __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__ pic_add_feature(pic, "big-endian"); # endif #else # if __LITTLE_ENDIAN__ pic_add_feature(pic, "little-endian"); # elif __BIG_ENDIAN__ pic_add_feature(pic, "big-endian"); # endif #endif }
void pic_nitro_init_time(pic_state *pic) { pic_defun(pic, "scheme.time:current-second", pic_current_second); pic_defun(pic, "scheme.time:current-jiffy", pic_current_jiffy); pic_defun(pic, "scheme.time:jiffies-per-second", pic_jiffies_per_second); }
void pic_init_pair(pic_state *pic) { pic_defun(pic, "pair?", pic_pair_pair_p); pic_defun(pic, "set-car!", pic_pair_set_car); pic_defun(pic, "set-cdr!", pic_pair_set_cdr); }
void pic_init_symbol(pic_state *pic) { pic_defun(pic, "symbol?", pic_symbol_symbol_p); pic_defun(pic, "symbol->string", pic_symbol_symbol_to_string); pic_defun(pic, "string->symbol", pic_symbol_string_to_symbol); }
void pic_init_proc(pic_state *pic) { pic_defun(pic, "procedure?", pic_proc_proc_p); pic_defun(pic, "apply", pic_proc_apply); pic_defun(pic, "map", pic_proc_map); pic_defun(pic, "for-each", pic_proc_for_each); }
void pic_init_write(pic_state *pic) { pic_defun(pic, "write", pic_write_write); pic_defun(pic, "write-simple", pic_write_write_simple); pic_defun(pic, "write-shared", pic_write_write_shared); pic_defun(pic, "display", pic_write_display); }
void pic_init_vector(pic_state *pic) { pic_defun(pic, "vector?", pic_vec_vector_p); pic_defun(pic, "make-vector", pic_vec_make_vector); pic_defun(pic, "vector-length", pic_vec_vector_length); pic_defun(pic, "vector-ref", pic_vec_vector_ref); }
void pic_init_bool(pic_state *pic) { pic_defun(pic, "eq?", pic_bool_eq_p); pic_defun(pic, "eqv?", pic_bool_eqv_p); pic_defun(pic, "not", pic_bool_not); pic_defun(pic, "boolean?", pic_bool_boolean_p); }
void pic_init_system(pic_state *pic) { pic_defun(pic, "command-line", pic_system_cmdline); pic_defun(pic, "exit", pic_system_exit); pic_defun(pic, "emergency-exit", pic_system_emergency_exit); pic_defun(pic, "get-environment-variable", pic_system_getenv); pic_defun(pic, "get-environment-variables", pic_system_getenvs); }
void pic_init_record(pic_state *pic) { pic_defun(pic, "make-record", pic_record_make_record); pic_defun(pic, "record?", pic_record_record_p); pic_defun(pic, "record-type", pic_record_record_type); pic_defun(pic, "record-ref", pic_record_record_ref); pic_defun(pic, "record-set!", pic_record_record_set); }
void pic_init_cont(pic_state *pic) { void pic_defun_vm(pic_state *, const char *, pic_sym *, pic_func_t); pic_defun(pic, "call-with-current-continuation", pic_cont_callcc); pic_defun(pic, "call/cc", pic_cont_callcc); pic_defun(pic, "dynamic-wind", pic_cont_dynamic_wind); pic_defun_vm(pic, "values", pic->rVALUES, pic_cont_values); pic_defun_vm(pic, "call-with-values", pic->rCALL_WITH_VALUES, pic_cont_call_with_values); }
void pic_init_repl(pic_state *pic) { pic_deflibrary(pic, "picrin.repl"); pic_defun(pic, "tty?", pic_repl_tty_p); }
void pic_init_load(pic_state *pic) { pic_deflibrary(pic, "scheme.load"); pic_defun(pic, "load", pic_load_load); }
void pic_init_error(pic_state *pic) { pic_defun(pic, "with-exception-handler", pic_error_with_exception_handler); pic_defun(pic, "raise", pic_error_raise); pic_defun(pic, "raise-continuable", pic_error_raise_continuable); pic_defun(pic, "error", pic_error_error); pic_defun(pic, "make-error-object", pic_error_make_error_object); pic_defun(pic, "error-object?", pic_error_error_object_p); pic_defun(pic, "error-object-message", pic_error_error_object_message); pic_defun(pic, "error-object-irritants", pic_error_error_object_irritants); pic_defun(pic, "error-object-type", pic_error_error_object_type); }
void pic_init_char(pic_state *pic) { pic_defun(pic, "char?", pic_char_char_p); pic_defun(pic, "char->integer", pic_char_char_to_integer); pic_defun(pic, "integer->char", pic_char_integer_to_char); pic_defun(pic, "char=?", pic_char_eq_p); pic_defun(pic, "char<?", pic_char_lt_p); pic_defun(pic, "char>?", pic_char_gt_p); pic_defun(pic, "char<=?", pic_char_le_p); pic_defun(pic, "char>=?", pic_char_ge_p); }
void pic_init_error(pic_state *pic) { pic_defvar(pic, "current-exception-handlers", pic_nil_value(pic), pic_false_value(pic)); pic_defun(pic, "with-exception-handler", pic_error_with_exception_handler); pic_defun(pic, "raise", pic_error_raise); pic_defun(pic, "raise-continuable", pic_error_raise_continuable); pic_defun(pic, "error", pic_error_error); pic_defun(pic, "error-object?", pic_error_error_object_p); pic_defun(pic, "error-object-message", pic_error_error_object_message); pic_defun(pic, "error-object-irritants", pic_error_error_object_irritants); pic_defun(pic, "error-object-type", pic_error_error_object_type); }
void pic_init_file(pic_state *pic) { pic_defun(pic, "open-input-file", pic_file_open_input_file); pic_defun(pic, "open-binary-input-file", pic_file_open_binary_input_file); pic_defun(pic, "open-output-file", pic_file_open_output_file); pic_defun(pic, "open-binary-output-file", pic_file_open_binary_output_file); pic_defun(pic, "file-exists?", pic_file_exists_p); pic_defun(pic, "delete-file", pic_file_delete); }
void pic_init_cont(pic_state *pic) { pic_defun(pic, "call-with-current-continuation", pic_cont_callcc); pic_defun(pic, "call/cc", pic_cont_callcc); pic_defun(pic, "escape", pic_cont_callcc); pic_defun(pic, "dynamic-wind", pic_cont_dynamic_wind); pic_defun(pic, "values", pic_cont_values); pic_defun(pic, "call-with-values", pic_cont_call_with_values); }
void pic_init_macro(pic_state *pic) { pic_defun(pic, "make-identifier", pic_macro_make_identifier); pic_defun(pic, "identifier?", pic_macro_identifier_p); pic_defun(pic, "identifier-variable", pic_macro_identifier_variable); pic_defun(pic, "identifier-environment", pic_macro_identifier_environment); pic_defun(pic, "variable?", pic_macro_variable_p); pic_defun(pic, "variable=?", pic_macro_variable_eq_p); }
void pic_init_port(pic_state *pic) { pic_defvar(pic, "current-input-port", pic_obj_value(pic->xSTDIN), NULL); pic_defvar(pic, "current-output-port", pic_obj_value(pic->xSTDOUT), NULL); pic_defvar(pic, "current-error-port", pic_obj_value(pic->xSTDERR), NULL); pic_defun(pic, "call-with-port", pic_port_call_with_port); pic_defun(pic, "input-port?", pic_port_input_port_p); pic_defun(pic, "output-port?", pic_port_output_port_p); pic_defun(pic, "textual-port?", pic_port_textual_port_p); pic_defun(pic, "binary-port?", pic_port_binary_port_p); pic_defun(pic, "port?", pic_port_port_p); pic_defun(pic, "port-open?", pic_port_port_open_p); pic_defun(pic, "close-port", pic_port_close_port); /* string I/O */ pic_defun(pic, "open-input-string", pic_port_open_input_string); pic_defun(pic, "open-output-string", pic_port_open_output_string); pic_defun(pic, "get-output-string", pic_port_get_output_string); pic_defun(pic, "open-input-bytevector", pic_port_open_input_blob); pic_defun(pic, "open-output-bytevector", pic_port_open_output_bytevector); pic_defun(pic, "get-output-bytevector", pic_port_get_output_bytevector); /* input */ pic_defun(pic, "read-char", pic_port_read_char); pic_defun(pic, "peek-char", pic_port_peek_char); pic_defun(pic, "read-line", pic_port_read_line); pic_defun(pic, "eof-object?", pic_port_eof_object_p); pic_defun(pic, "eof-object", pic_port_eof_object); pic_defun(pic, "char-ready?", pic_port_char_ready_p); pic_defun(pic, "read-string", pic_port_read_string); pic_defun(pic, "read-u8", pic_port_read_byte); pic_defun(pic, "peek-u8", pic_port_peek_byte); pic_defun(pic, "u8-ready?", pic_port_byte_ready_p); pic_defun(pic, "read-bytevector", pic_port_read_blob); pic_defun(pic, "read-bytevector!", pic_port_read_blob_ip); /* output */ pic_defun(pic, "newline", pic_port_newline); pic_defun(pic, "write-char", pic_port_write_char); pic_defun(pic, "write-string", pic_port_write_string); pic_defun(pic, "write-u8", pic_port_write_byte); pic_defun(pic, "write-bytevector", pic_port_write_blob); pic_defun(pic, "flush-output-port", pic_port_flush); }
void pic_init_proc(pic_state *pic) { pic_defun(pic, "procedure?", pic_proc_proc_p); pic_defun(pic, "apply", pic_proc_apply); }
void pic_init_vector(pic_state *pic) { pic_defun(pic, "vector?", pic_vec_vector_p); pic_defun(pic, "vector", pic_vec_vector); pic_defun(pic, "make-vector", pic_vec_make_vector); pic_defun(pic, "vector-length", pic_vec_vector_length); pic_defun(pic, "vector-ref", pic_vec_vector_ref); pic_defun(pic, "vector-set!", pic_vec_vector_set); pic_defun(pic, "vector-copy!", pic_vec_vector_copy_i); pic_defun(pic, "vector-copy", pic_vec_vector_copy); pic_defun(pic, "vector-append", pic_vec_vector_append); pic_defun(pic, "vector-fill!", pic_vec_vector_fill_i); pic_defun(pic, "vector-map", pic_vec_vector_map); pic_defun(pic, "vector-for-each", pic_vec_vector_for_each); pic_defun(pic, "list->vector", pic_vec_list_to_vector); pic_defun(pic, "vector->list", pic_vec_vector_to_list); pic_defun(pic, "string->vector", pic_vec_string_to_vector); pic_defun(pic, "vector->string", pic_vec_vector_to_string); }
void pic_init_weak(pic_state *pic) { pic_defun(pic, "make-ephemeron", pic_weak_make_ephemeron); }
void pic_init_reg(pic_state *pic) { pic_defun(pic, "make-register", pic_reg_make_register); }
void pic_init_math(pic_state *pic) { pic_deflibrary(pic, "picrin.math"); pic_defun(pic, "floor/", pic_number_floor2); pic_defun(pic, "truncate/", pic_number_trunc2); pic_defun(pic, "floor", pic_number_floor); pic_defun(pic, "ceiling", pic_number_ceil); pic_defun(pic, "truncate", pic_number_trunc); pic_defun(pic, "round", pic_number_round); pic_defun(pic, "finite?", pic_number_finite_p); pic_defun(pic, "infinite?", pic_number_infinite_p); pic_defun(pic, "nan?", pic_number_nan_p); pic_defun(pic, "sqrt", pic_number_sqrt); pic_defun(pic, "exp", pic_number_exp); pic_defun(pic, "log", pic_number_log); pic_defun(pic, "sin", pic_number_sin); pic_defun(pic, "cos", pic_number_cos); pic_defun(pic, "tan", pic_number_tan); pic_defun(pic, "acos", pic_number_acos); pic_defun(pic, "asin", pic_number_asin); pic_defun(pic, "atan", pic_number_atan); pic_defun(pic, "abs", pic_number_abs); pic_defun(pic, "expt", pic_number_expt); }
void pic_init_attr(pic_state *pic) { pic_defun(pic, "attribute", pic_attr_attribute); }