From b4e058bb0dac65dae01781beba1152c50d2f611f Mon Sep 17 00:00:00 2001 From: jgarcia Date: Sun, 16 Mar 2008 12:08:44 +0000 Subject: [PATCH] Remove the need to use ecl.def and ecl-threads.def --- contrib/profile/profile.lisp | 4 + msvc/c/Makefile | 17 +- msvc/ecl-threads.def | 1463 --------------------- msvc/ecl.def | 1438 --------------------- src/CHANGELOG | 4 + src/c/Makefile.in | 2 +- src/c/arch/ffi_x86.d | 2 +- src/c/arch/ffi_x86_64.d | 2 +- src/c/gfun.d | 2 +- src/c/mapfun.d | 24 +- src/cmp/cmptop.lsp | 2 +- src/compile.lsp.in | 6 +- src/h/ecl.h | 22 + src/h/external.h | 2313 +++++++++++++++++----------------- src/h/internal.h | 38 +- src/h/stacks.h | 16 +- src/lsp/config.lsp.in | 2 +- src/util/cut.c | 3 - 18 files changed, 1233 insertions(+), 4127 deletions(-) delete mode 100755 msvc/ecl-threads.def delete mode 100644 msvc/ecl.def diff --git a/contrib/profile/profile.lisp b/contrib/profile/profile.lisp index fdff5d99a..a1fa359dd 100644 --- a/contrib/profile/profile.lisp +++ b/contrib/profile/profile.lisp @@ -36,6 +36,10 @@ `(progn ,@body)) ) +(ffi:clines " +extern ECL_API size_t GC_get_total_bytes(); +") + (defconstant +wrap+ (ffi:c-inline () () :object "ecl_make_unsigned_integer(~((size_t)0))" :one-liner t)) diff --git a/msvc/c/Makefile b/msvc/c/Makefile index a26c81adb..dda9f9fba 100644 --- a/msvc/c/Makefile +++ b/msvc/c/Makefile @@ -16,7 +16,7 @@ THREADS_FLAGS= # TRUE_CC = cl CC = cl -CFLAGS = -c $(ECL_CFLAGS) -I./ -I../ -I$(srcdir) -I$(top_srcdir)/gc/include -I$(top_srcdir)/gc/include/private +CFLAGS = -c $(ECL_CFLAGS) -DECL_API="__declspec(dllexport)" -I./ -I../ -I$(srcdir) -I$(top_srcdir)/gc/include -I$(top_srcdir)/gc/include/private DEFS = $(THREADS_FLAGS) SHELL = /bin/sh @@ -58,7 +58,7 @@ OBJS = main.obj symbol.obj package.obj list.obj\ structure.obj load.obj unixfsys.obj unixsys.obj \ ffi.obj alloc_2.obj tcp.obj $(THREADS_OBJ) ffi_x86.obj -all: $(DPP) ecl\external.h ..\eclmin.lib ..\cinit.obj +all: $(DPP) ..\eclmin.lib ..\cinit.obj .SUFFIXES: .obj .c .d @@ -75,15 +75,6 @@ all: $(DPP) ecl\external.h ..\eclmin.lib ..\cinit.obj .PHONY: all -# -# When compiling the library itself, we have to remove the dllimport -# declarations, because the variables that they mark are in the -# in the library and can be referenced without indirection. -# -ecl\external.h: $(top_srcdir)/h/external.h Makefile - if not exist ecl mkdir ecl - cut.exe removedecl < $(top_srcdir)/h/external.h > $@ - cut.exe: $(top_srcdir)/util/cut.c $(CC) $(LDFLAGS) /Fecut.exe $(top_srcdir)/util/cut.c @@ -95,14 +86,14 @@ clean: -for %f in ($(OBJS:.obj=.c) all_symbols.c) do $(RM) %f -for %f in ($(OBJS) all_symbols.obj all_symbols2.obj) do $(RM) %f -$(RM) *.pdb - -for %f in (..\ecl\config.h dpp dpp.obj $(DPP) ecl\external.h \ + -for %f in (..\ecl\config.h dpp dpp.obj $(DPP) ..\eclmin.lib ..\cinit.obj cinit.c symbols_list2.h) \ do $(RM) %f -for %f in (..\ecl\*.h) do $(RM) %f # Build rules -$(DPP): $(srcdir)/dpp.c $(srcdir)/symbols_list2.h ../ecl/config.h ecl\external.h +$(DPP): $(srcdir)/dpp.c $(srcdir)/symbols_list2.h ../ecl/config.h $(TRUE_CC) -I.. -I./ $(DEFS) $(srcdir)/dpp.c -o $@ ../ecl/config.h: ../ecl/config.h.msvc6 Makefile for %i in ($(HFILES)) do $(CP) %i ..\ecl diff --git a/msvc/ecl-threads.def b/msvc/ecl-threads.def deleted file mode 100755 index 5112f08c4..000000000 --- a/msvc/ecl-threads.def +++ /dev/null @@ -1,1463 +0,0 @@ -EXPORTS - ecl_process_env - cl_core DATA - - ; alloc_2 - - cl_alloc_object - cl_alloc_instance - ecl_cons - si_gc - si_gc_dump - si_set_finalizer - si_get_finalizer - - ; all_symbols - - si_mangle_name - cl_symbols DATA - cl_num_symbols_in_core DATA - - ; apply.c - - APPLY_fixed - APPLY - APPLY_closure - - ; array.c - - cl_row_major_aref - si_row_major_aset - si_make_vector - cl_array_element_type - cl_array_rank - cl_array_dimension - cl_array_total_size - cl_adjustable_array_p - cl_array_displacement - cl_svref - si_svset - cl_array_has_fill_pointer_p - cl_fill_pointer - si_fill_pointer_set - si_replace_array - cl_aref - si_aset - si_make_pure_array - - ecl_to_index - ecl_aref - ecl_aref1 - ecl_aset - ecl_aset1 - ecl_array_allocself - ecl_array_elttype - ecl_symbol_to_elttype - ecl_elttype_to_symbol - ecl_copy_subarray - ecl_reverse_subarray - - - ; assignment.c - - cl_set - cl_makunbound - cl_fmakunbound - si_fset - si_get_sysprop - si_put_sysprop - si_rem_sysprop - - ecl_clear_compiler_properties - - - ; big.c - - big_register0_get - big_register1_get - big_register2_get - big_register_copy - big_register_normalize - big_register_free - bignum1 - bignum2 - ;big_set_fixnum - big_copy - big_minus - big_plus - big_normalize - ;big_to_double - - - ; cfun.c - - si_compiled_function_name - si_compiled_function_block - cl_function_lambda_expression - - cl_make_cfun - cl_make_cfun_va - cl_make_cclosure_va - cl_def_c_function - cl_def_c_macro - cl_def_c_function_va - - - ; character.c - - cl_digit_char_p - cl_charE - cl_charNE - cl_charL - cl_charG - cl_charLE - cl_charGE - cl_char_equal - cl_char_not_equal - cl_char_lessp - cl_char_greaterp - cl_char_not_greaterp - cl_char_not_lessp - cl_digit_char - - cl_alpha_char_p - cl_alphanumericp - cl_both_case_p - cl_char_code - cl_char_downcase - cl_char_int - cl_char_name - cl_char_upcase - cl_character - cl_code_char - cl_graphic_char_p - cl_lower_case_p - cl_name_char - cl_standard_char_p - cl_upper_case_p - - ecl_alpha_char_p - ecl_alphanumericp - ecl_both_case_p - ecl_char_downcase - ecl_char_upcase - ecl_graphic_char_p - ecl_lower_case_p - ecl_standard_char_p - ecl_upper_case_p - ecl_base_char_p - - ;ecl_base_string_case - ecl_char_code - ecl_base_char_code - ecl_digitp - ecl_char_eq - ecl_char_cmp - ecl_char_equal - ecl_char_compare - ecl_digit_char - - ; clos.c - - cl_find_class - cl_class_of - - ; cmpaux.c - - si_specialp - - ecl_ifloor - ecl_imod - ecl_to_char - ecl_to_fixnum - ecl_to_unsigned_integer - ecl_to_float - ecl_to_double - ecl_aref_bv - ecl_aset_bv - cl_throw - cl_return_from - cl_go - cl_parse_key - cl_grab_rest_args - - ; compiler.c - - si_process_lambda_list - si_process_lambda - si_make_lambda - si_function_block_name - si_valid_function_name_p - si_process_declarations - - si_eval_with_env - - ; interpreter.c - - si_interpreter_stack - ecl_stack_frame_reserve - ecl_stack_frame_push - ecl_stack_frame_push_va_list - ecl_stack_frame_close - ecl_stack_frame_pop_values - ecl_stack_frame_elt - ecl_stack_frame_elt_set - ecl_apply_from_stack_frame - - cl_stack_push - cl_stack_pop - cl_stack_index - cl_stack_set_size - cl_stack_set_index - cl_stack_pop_n - cl_stack_insert - cl_stack_push_list - cl_stack_push_va_list - ;cl_stack_push_n - cl_stack_push_values - cl_stack_pop_values - - ecl_apply_lambda - ecl_interpret - - ; disassembler.c - - si_bc_disassemble - si_bc_split - - ; error.c - - cl_error - cl_cerror - - ecl_internal_error - ecl_cs_overflow - FEprogram_error - FEcontrol_error - FEreader_error - FEerror - FEcannot_open - FEend_of_file - FEclosed_stream - FEwrong_type_argument - FEwrong_num_arguments - FEwrong_num_arguments_anonym - FEunbound_variable - FEinvalid_macro_call - FEinvalid_variable - FEassignment_to_constant - FEundefined_function - FEinvalid_function - FEinvalid_function_name - FEtype_error_symbol - FElibc_error - FEwin32_error - CEerror - FEillegal_index - - ; eval.c - - cl_funcall - cl_apply - si_safe_eval - - cl__va_start - cl_va_arg - - si_unlink_symbol - cl_eval - cl_constantp - - cl_apply_from_stack - _ecl_link_call - - ; ffi.c - - si_allocate_foreign_data - si_find_foreign_symbol - si_foreign_data_address - si_foreign_data_pointer - si_foreign_data_ref - si_foreign_data_ref_elt - si_foreign_data_set - si_foreign_data_set_elt - si_foreign_data_tag - si_foreign_data_recast - si_free_foreign_data - si_make_foreign_data_from_array - si_load_foreign_module - si_null_pointer_p - si_size_of_foreign_elt_type - si_call_cfun - - ecl_make_foreign_data - ecl_allocate_foreign_data - ecl_foreign_data_pointer_safe - ecl_base_string_pointer_safe - ecl_null_terminated_base_string - ecl_foreign_data_ref_elt - ecl_foreign_data_set_elt - - ; file.c - - cl_make_synonym_stream - cl_synonym_stream_symbol - cl_make_two_way_stream - cl_two_way_stream_input_stream - cl_two_way_stream_output_stream - cl_make_echo_stream - cl_echo_stream_input_stream - cl_echo_stream_output_stream - cl_make_string_output_stream - cl_get_output_stream_string - cl_streamp - cl_input_stream_p - cl_output_stream_p - cl_stream_element_type - cl_stream_external_format - cl_file_length - si_make_string_output_stream_from_string - si_copy_stream - cl_open_stream_p - cl_make_broadcast_stream - cl_broadcast_stream_streams - cl_make_concatenated_stream - cl_concatenated_stream_streams - cl_make_string_input_stream - cl_close - cl_open - cl_file_position - cl_file_string_length - si_do_write_sequence - si_do_read_sequence - si_file_column - cl_interactive_stream_p - si_set_buffering_mode - - ecl_input_stream_p - ecl_output_stream_p - ecl_open_stream - ecl_make_string_input_stream - ecl_make_string_output_stream - ecl_read_byte - ecl_write_byte - ecl_read_char_noeof - ecl_read_char - ecl_unread_char - ecl_peek_char - ecl_write_char - writestr_stream - ecl_force_output - ecl_clear_input - ecl_clear_output - ecl_listen_stream - ecl_file_position - ecl_file_position_set - cl_file_length - ecl_file_column - ecl_make_stream_from_fd - ecl_stream_to_handle - - - ; format.c - - cl_format - - ; gbc.c - - ecl_register_root - - - ; gfun.c - - ;si_set_funcallable - si_generic_function_p - - _ecl_standard_dispatch - - - ; hash.c - - cl__make_hash_table - cl_hash_table_p - si_hash_set - cl_remhash - cl_clrhash - cl_hash_table_count - cl_sxhash - cl_maphash - cl_hash_table_rehash_size - cl_hash_table_rehash_threshold - cl_hash_table_size - cl_hash_table_test - si_hash_table_iterator - cl_make_hash_table - cl_gethash - si_copy_hash_table - - ;hash_eq - ;hash_eql - ;hash_equal - ecl_sethash - ecl_gethash - ecl_gethash_safe - ecl_remhash - ecl_search_hash - - ; instance.c - - si_allocate_raw_instance - si_instance_class - si_instance_class_set - si_instance_ref - si_instance_ref_safe - si_instance_set - si_instancep - si_unbound - si_sl_boundp - si_sl_makunbound - si_instance_sig - si_instance_sig_set - - ecl_allocate_instance - ecl_instance_ref - ecl_instance_set - si_copy_instance - - - ; list.c - - cl_car - cl_cdr - cl_caar - cl_cadr - cl_cdar - cl_cddr - cl_caaar - cl_caadr - cl_cadar - cl_caddr - cl_cdaar - cl_cdadr - cl_cddar - cl_cdddr - cl_caaaar - cl_caaadr - cl_caadar - cl_caaddr - cl_cadaar - cl_cadadr - cl_caddar - cl_cadddr - cl_cdaaar - cl_cdaadr - cl_cdadar - cl_cdaddr - cl_cddaar - cl_cddadr - cl_cdddar - cl_cddddr - cl_fifth - cl_sixth - cl_seventh - cl_eighth - cl_ninth - cl_tenth - cl_endp - cl_list_length - cl_nth - cl_nthcdr - cl_copy_list - cl_copy_alist - cl_copy_tree - cl_revappend - cl_ldiff - cl_rplaca - cl_rplacd - cl_tailp - si_memq - cl_nreconc - cl_cons - cl_acons - cl_list - cl_listX - cl_append - cl_tree_equal - cl_last - cl_make_list - cl_nconc - cl_butlast - cl_nbutlast - cl_subst - cl_nsubst - cl_sublis - cl_nsublis - cl_member - si_member1 - cl_adjoin - cl_pairlis - cl_rassoc - cl_assoc - - ;list_length - ecl_append - ecl_endp - ecl_nth - ecl_nthcdr - ecl_nconc - ecl_member_eq - ecl_memql - ecl_member - ecl_assq - ecl_assql - ecl_assoc - ecl_assqlp - ecl_remove_eq - ecl_delete_eq - - - ; load.c - - ecl_library_open - ecl_library_symbol - ecl_library_error - ecl_library_close - ecl_library_close_all - si_load_source - si_load_binary - cl_load - - - ; macros.c - - cl_macroexpand - cl_macroexpand_1 - cl_macro_function - - - ; main.c - - si_argc - si_argv - si_getenv - si_setenv - si_getpid - si_pointer - si_quit - - ecl_booted DATA - ecl_self DATA - cl_boot - cl_shutdown - ecl_get_commandline_args - - - ; mapfun.c - - cl_mapcar - cl_maplist - cl_mapc - cl_mapl - cl_mapcan - cl_mapcon - - - ; multival.c - - cl_values_list - cl_values - - - ; num_arith.c - - cl_conjugate - cl_1P - cl_1M - cl_X - cl_P - cl_M - cl_N - cl_gcd - cl_lcm - - fixnum_times - ecl_times - ;number_to_complex - ecl_plus - ecl_minus - ecl_negate - ecl_divide - ecl_integer_divide - ecl_gcd - ecl_one_plus - ecl_one_minus - - - ; number.c - - fixint - fixnnint - ecl_fixnum_in_range - ecl_make_integer - ecl_make_unsigned_integer - ecl_make_ratio - ecl_make_singlefloat - ecl_make_doublefloat - ecl_make_complex - cl_rational - ecl_to_double - - ; num_co.c - - cl_numerator - cl_denominator - cl_mod - cl_rem - cl_decode_float - cl_scale_float - cl_float_radix - cl_float_digits - cl_float_precision - cl_integer_decode_float - cl_realpart - cl_imagpart - cl_float - cl_floor - cl_ceiling - cl_truncate - cl_round - cl_float_sign - cl_complex - - double_to_integer - float_to_integer - ecl_floor1 - ecl_ceiling1 - ecl_truncate1 - ecl_round1 - ecl_floor2 - ecl_ceiling2 - ecl_truncate2 - ecl_round2 - - - ; num_comp.c - - cl_E - cl_NE - cl_L - cl_G - cl_GE - cl_LE - cl_max - cl_min - - ecl_number_equalp - ecl_number_compare - - - ; num_log.c - - cl_lognand - cl_lognor - cl_logandc1 - cl_logandc2 - cl_logorc1 - cl_logorc2 - cl_lognot - cl_boole - cl_logbitp - cl_ash - cl_logcount - cl_integer_length - si_bit_array_op - cl_logior - cl_logxor - cl_logand - cl_logeqv - - ecl_boole - ecl_ash - ecl_fixnum_bit_length - - - ; num_pred.c - - cl_zerop - cl_plusp - cl_minusp - cl_oddp - cl_evenp - - ecl_zerop - ecl_plusp - ecl_minusp - ecl_oddp - ecl_evenp - - - ; num_rand.c - - cl_random_state_p - cl_random - cl_make_random_state - ecl_make_random_state - - - ; num_sfun.c - - ecl_fixnum_expt - cl_exp - cl_expt - ecl_log1 - ecl_log2 - cl_sqrt - ecl_atan2 - ecl_atan1 - cl_sin - cl_cos - cl_tan - cl_sinh - cl_cosh - cl_tanh - cl_atan - cl_log - - - ; package.c - - CEpackage_error - si_select_package - cl_find_package - cl_package_name - cl_package_nicknames - cl_package_use_list - cl_package_used_by_list - cl_package_shadowing_symbols - cl_list_all_packages - si_package_hash_tables - si_package_lock - cl_delete_package - cl_make_package - cl_intern - cl_find_symbol - cl_unintern - cl_export - cl_unexport - cl_import - cl_rename_package - cl_shadowing_import - cl_shadow - cl_use_package - cl_unuse_package - - ecl_make_package - ecl_rename_package - ecl_find_package_nolock - si_coerce_to_package - ecl_current_package - ecl_find_symbol - ecl_intern - _ecl_intern - ecl_unintern - cl_export2 - cl_unexport2 - cl_import2 - ecl_shadowing_import - ecl_shadow - ecl_use_package - ecl_unuse_package - - - ; pathname.c - - cl_pathname - cl_logical_pathname - cl_pathnamep - cl_pathname_host - cl_pathname_device - cl_pathname_directory - cl_pathname_name - cl_pathname_type - cl_pathname_version - cl_namestring - cl_file_namestring - cl_directory_namestring - cl_host_namestring - si_logical_pathname_p - cl_pathname_match_p - cl_translate_pathname - cl_translate_logical_pathname - cl_parse_namestring - ;cl_parse_logical_namestring - cl_merge_pathnames - cl_make_pathname - cl_enough_namestring - si_pathname_translations - si_default_pathname_defaults - cl_wild_pathname_p - - ecl_make_pathname - ecl_parse_namestring - coerce_to_physical_pathname - coerce_to_file_pathname - ecl_namestring - si_coerce_to_filename - ecl_merge_pathnames - ecl_logical_hostname_p - - - ; predicate.c - - cl_identity - cl_null - cl_symbolp - cl_atom - cl_consp - cl_listp - cl_numberp - cl_integerp - cl_rationalp - cl_floatp - cl_realp - cl_complexp - cl_characterp - cl_stringp - cl_bit_vector_p - cl_vectorp - cl_simple_string_p - cl_simple_bit_vector_p - cl_simple_vector_p - cl_arrayp - cl_packagep - cl_functionp - cl_compiled_function_p - cl_eq - cl_eql - cl_equal - cl_equalp - si_fixnump - - ecl_numberp - ecl_eql - ecl_equal - ecl_equalp - ecl_stringp - - ; print.c - - cl_write_byte - cl_write_sequence - cl_write - cl_prin1 - cl_print - cl_pprint - cl_princ - cl_write_char - cl_write_string - cl_write_line - cl_terpri - cl_finish_output - cl_fresh_line - cl_force_output - cl_clear_output - si_write_object - si_write_ugly_object - - ecl_princ - ecl_prin1 - ecl_print - ecl_terpri - ecl_write_string - ecl_princ_str - ecl_princ_char - - - ; profile.c - - - ; read.c - - cl_read_sequence - cl_readtablep - si_string_to_object - si_standard_readtable - cl_read - cl_read_preserving_whitespace - cl_read_delimited_list - cl_read_line - cl_read_char - cl_unread_char - cl_peek_char - cl_listen - cl_read_char_no_hang - cl_clear_input - cl_parse_integer - cl_read_byte - cl_copy_readtable - cl_readtable_case - si_readtable_case_set - cl_set_syntax_from_char - cl_set_macro_character - cl_get_macro_character - cl_make_dispatch_macro_character - cl_set_dispatch_macro_character - cl_get_dispatch_macro_character - si_get_buffer_string - si_put_buffer_string - - ecl_read_object_non_recursive - ecl_read_object - ecl_parse_number - ecl_parse_integer - ecl_invalid_character_p - ecl_copy_readtable - ecl_current_readtable - ecl_current_read_base - ecl_current_read_default_float_format - c_string_to_object - read_VV - - - ; reference.c - - cl_fboundp - cl_symbol_function - cl_fdefinition - si_coerce_to_function - cl_symbol_value - cl_boundp - cl_special_operator_p - - ecl_fdefinition - - ; sequence.c - - cl_elt - si_elt_set - cl_copy_seq - cl_length - cl_reverse - cl_nreverse - cl_subseq - - ecl_alloc_simple_vector - ecl_elt - ecl_elt_set - ecl_length - - - ; stacks.c - - si_ihs_top - si_ihs_fun - si_ihs_env - si_ihs_next - si_ihs_prev - si_frs_top - si_frs_bds - si_frs_tag - si_frs_ihs - ;si_frs_class - si_bds_top - si_bds_var - si_bds_val - si_sch_frs_base - si_reset_stack_limits - - bds_overflow - frs_overflow - bds_unwind - ecl_unwind - frs_sch - ;frs_sch_catch - new_frame_id - _frs_push - - ; string.c - - cl_char - si_char_set - cl_string_trim - cl_string_left_trim - cl_string_right_trim - cl_string - cl_make_string - cl_stringE - cl_string_equal - cl_stringL - cl_stringG - cl_stringLE - cl_stringGE - cl_stringNE - cl_string_lessp - cl_string_greaterp - cl_string_not_greaterp - cl_string_not_lessp - cl_string_not_equal - cl_string_upcase - cl_string_downcase - cl_string_capitalize - cl_nstring_upcase - cl_nstring_downcase - cl_nstring_capitalize - si_base_string_concatenate - - cl_alloc_simple_base_string - cl_alloc_adjustable_base_string - make_simple_base_string - make_base_string_copy - ecl_cstring_to_base_string_or_nil - si_copy_to_simple_base_string - ecl_string_eq - ecl_member_char - ecl_string_push_extend - get_string_start_end - ecl_fits_in_base_string - ecl_char - ecl_char_set - - ; structure.c - - si_structure_subtype_p - cl_copy_structure - si_structure_name - si_structure_ref - si_structure_set - si_structurep - si_make_structure - - ecl_structure_ref - ecl_structure_set - - - ; symbol.c - - cl_make_symbol - cl_remprop - cl_symbol_plist - cl_get_properties - cl_symbol_name - cl_symbol_package - cl_keywordp - si_put_f - si_rem_f - si_set_symbol_plist - si_putprop - si_Xmake_special - si_Xmake_constant - cl_get - cl_getf - cl_copy_symbol - cl_gensym - cl_gentemp - si_put_properties - - ;cl_defvar - ;cl_defparameter - ecl_make_keyword - ecl_symbol_value - ecl_getf - ecl_get - ecl_keywordp - - - ; tcp.c - - si_open_client_stream - si_open_server_stream - si_open_unix_socket_stream - si_lookup_host_entry - ecl_tcp_close_all - - - - ; threads.c - - ;mp_own_process - mp_all_processes - mp_exit_process - mp_interrupt_process - mp_make_process - mp_process_active_p - mp_process_enable - mp_process_yield - ;mp_process_interrupt - mp_process_kill - mp_process_name - mp_process_preset - mp_process_run_function - mp_process_whostate - mp_make_lock - mp_get_lock - mp_giveup_lock - mp_recursive_lock_p - mp_lock_name - mp_lock_holder - mp_make_condition_variable - mp_condition_variable_wait - mp_condition_variable_timedwait - mp_condition_variable_signal - mp_condition_variable_broadcast - - bds_unwind_n - bds_unwind1 - bds_push - bds_bind - ecl_symbol_slot - ecl_set_symbol - ecl_import_current_thread - ecl_release_current_thread - - ; time.c - - cl_get_universal_time - cl_sleep - cl_get_internal_run_time - cl_get_internal_real_time - - ; tkMain.c - - - - ; typespec.c - - assert_type_integer - assert_type_non_negative_integer - assert_type_package - assert_type_cons - assert_type_readtable - assert_type_hash_table - assert_type_array - assert_type_vector - assert_type_list - assert_type_proper_list - cl_type_of - ecl_check_cl_type - ecl_check_type_string - - FEtype_error_character - FEtype_error_cons - FEtype_error_number - FEtype_error_real - FEtype_error_float - FEtype_error_integer - FEtype_error_list - FEtype_error_proper_list - FEtype_error_alist - FEtype_error_stream - FEcircular_list - FEtype_error_index - FEtype_error_string - FEdivision_by_zero - ecl_type_error - - ; unixfsys.c - - cl_truename - cl_rename_file - cl_delete_file - cl_probe_file - cl_file_write_date - cl_file_author - si_file_kind - si_getcwd - si_get_library_pathname - si_chdir - si_mkdir - cl_directory - cl_user_homedir_pathname - si_mkstemp - si_rmdir - - ecl_expand_pathname - ecl_cstring_to_pathname - ecl_backup_fopen - ecl_file_len - ecl_homedir_pathname - - - ; unixint.c - - si_catch_bad_signals - si_uncatch_bad_signals - si_check_pending_interrupts - si_trap_fpe - - - ; unixsys.c - - si_system - si_open_pipe - si_close_pipe - si_run_program - - ; arraylib.lsp - - cl_make_array - cl_vector - cl_array_dimensions - cl_array_in_bounds_p - cl_array_row_major_index - cl_bit - cl_sbit - cl_bit_and - cl_bit_ior - cl_bit_xor - cl_bit_eqv - cl_bit_nand - cl_bit_nor - cl_bit_andc1 - cl_bit_andc2 - cl_bit_orc1 - cl_bit_orc2 - cl_bit_not - cl_vector_push - cl_vector_push_extend - cl_vector_pop - cl_adjust_array - - ; assert.lsp - si_etypecase_error - si_ecase_error - si_ccase_error - - ; defmacro.lsp - - si_check_keyword - si_check_arg_length - si_dm_too_few_arguments - si_dm_bad_key - si_find_declarations - si_find_documentation - si_remove_documentation - - ; defstruct.lsp - - si_assert_slot_type - si_define_structure - - ; helpfile.lsp - - si_expand_set_documentation - si_get_documentation - si_set_documentation - - ; iolib.lsp - - cl_read_from_string - cl_write_to_string - cl_prin1_to_string - cl_princ_to_string - cl_y_or_n_p - cl_yes_or_no_p - - ; listlib.lsp - - cl_union - cl_nunion - cl_intersection - cl_nintersection - cl_set_difference - cl_nset_difference - cl_set_exclusive_or - cl_nset_exclusive_or - cl_subsetp - cl_rassoc_if - cl_rassoc_if_not - cl_assoc_if - cl_assoc_if_not - cl_member_if - cl_member_if_not - cl_subst_if - cl_subst_if_not - cl_nsubst_if - cl_nsubst_if_not - - ; mislib.lsp - - cl_logical_pathname_translations - cl_load_logical_pathname_translations - cl_decode_universal_time - cl_encode_universal_time - cl_get_decoded_time - cl_ensure_directories_exist - si_simple_program_error - si_signal_simple_error - - ; module.lsp - - cl_provide - cl_require - - ; numlib.lsp - - cl_isqrt - cl_abs - cl_phase - cl_signum - cl_cis - cl_asin - cl_acos - cl_asinh - cl_acosh - cl_atanh - cl_ffloor - cl_fceiling - cl_ftruncate - cl_fround - cl_logtest - cl_byte - cl_byte_size - cl_byte_position - cl_ldb - cl_ldb_test - cl_mask_field - cl_dpb - cl_deposit_field - - ; packlib.lsp - - cl_find_all_symbols - cl_apropos - cl_apropos_list - si_packages_iterator - si_find_relative_package - - ; predlib.lsp - - cl_upgraded_array_element_type - cl_upgraded_complex_part_type - cl_typep - cl_coerce - cl_subtypep - si_do_deftype - - ; seq.lsp - - cl_make_sequence - cl_concatenate - cl_map - cl_some - cl_every - cl_notany - cl_notevery - cl_map_into - si_closest_vector_type - si_make_seq_iterator - si_seq_iterator_ref - si_seq_iterator_set - si_seq_iterator_next - - ; seqlib.lsp - - cl_reduce - cl_fill - cl_replace - cl_remove - cl_remove_if - cl_remove_if_not - cl_delete - cl_delete_if - cl_delete_if_not - cl_count - cl_count_if - cl_count_if_not - cl_substitute - cl_substitute_if - cl_substitute_if_not - cl_nsubstitute - cl_nsubstitute_if - cl_nsubstitute_if_not - cl_find - cl_find_if - cl_find_if_not - cl_position - cl_position_if - cl_position_if_not - cl_remove_duplicates - cl_delete_duplicates - cl_mismatch - cl_search - cl_sort - cl_stable_sort - cl_merge - cl_constantly - - ; format.lsp - - si_format_princ - si_format_prin1 - si_format_print_named_character - si_format_print_integer - si_format_print_cardinal - si_format_print_ordinal - si_format_print_old_roman - si_format_print_roman - si_format_fixed - si_format_exponential - si_format_general - si_format_dollars - si_format_relative_tab - si_format_absolute_tab - si_format_justification - - ; pprint.lsp - - cl_pprint_newline - cl_pprint_indent - cl_pprint_tab - cl_pprint_fill - cl_pprint_linear - cl_pprint_tabular - cl_copy_pprint_dispatch - cl_pprint_dispatch - cl_set_pprint_dispatch - si_pprint_logical_block_helper - si_pprint_pop_helper - - ; clos\boot.lsp - - cl_slot_boundp - cl_slot_exists_p - cl_slot_makunbound - cl_slot_value - - ; clos\combin.lsp - ;clos_simple_code_walker - cl_method_combination_error - cl_invalid_method_error - - ; clos\defclass.lsp - - clos_ensure_class - - ; close\generic.lsp - - clos_associate_methods_to_gfun - - ; clos\kernel.lsp - - clos_class_id - clos_class_direct_superclasses - clos_class_direct_subclasses - clos_class_slots - clos_class_precedence_list - clos_class_direct_slots - clos_generic_function_method_combination - clos_generic_function_lambda_list - clos_generic_function_argument_precedence_order - clos_generic_function_method_class - clos_generic_function_methods - clos_method_generic_function - clos_method_lambda_list - clos_method_specializers - cl_method_qualifiers - clos_method_function - clos_method_plist - clos_install_method - - ; clos\standard.lsp - - clos_standard_instance_set - ; unicode diff --git a/msvc/ecl.def b/msvc/ecl.def deleted file mode 100644 index d63821adf..000000000 --- a/msvc/ecl.def +++ /dev/null @@ -1,1438 +0,0 @@ -EXPORTS - cl_env DATA - cl_core DATA - - ; alloc_2 - - cl_alloc_object - cl_alloc_instance - ecl_cons - si_gc - si_gc_dump - si_set_finalizer - si_get_finalizer - - ; all_symbols - - si_mangle_name - cl_symbols DATA - cl_num_symbols_in_core DATA - - ; apply.c - - APPLY_fixed - APPLY - APPLY_closure - - ; array.c - - cl_row_major_aref - si_row_major_aset - si_make_vector - cl_array_element_type - cl_array_rank - cl_array_dimension - cl_array_total_size - cl_adjustable_array_p - cl_array_displacement - cl_svref - si_svset - cl_array_has_fill_pointer_p - cl_fill_pointer - si_fill_pointer_set - si_replace_array - cl_aref - si_aset - si_make_pure_array - - ecl_to_index - ecl_aref - ecl_aref1 - ecl_aset - ecl_aset1 - ecl_array_allocself - ecl_array_elttype - ecl_symbol_to_elttype - ecl_elttype_to_symbol - ecl_copy_subarray - ecl_reverse_subarray - - - ; assignment.c - - cl_set - cl_makunbound - cl_fmakunbound - si_fset - si_get_sysprop - si_put_sysprop - si_rem_sysprop - - ecl_clear_compiler_properties - - - ; big.c - - big_register0_get - big_register1_get - big_register2_get - big_register_copy - big_register_normalize - big_register_free - bignum1 - bignum2 - ;big_set_fixnum - big_copy - big_minus - big_plus - big_normalize - ;big_to_double - - - ; cfun.c - - si_compiled_function_name - si_compiled_function_block - cl_function_lambda_expression - - cl_make_cfun - cl_make_cfun_va - cl_make_cclosure_va - cl_def_c_function - cl_def_c_macro - cl_def_c_function_va - - - ; character.c - - cl_digit_char_p - cl_charE - cl_charNE - cl_charL - cl_charG - cl_charLE - cl_charGE - cl_char_equal - cl_char_not_equal - cl_char_lessp - cl_char_greaterp - cl_char_not_greaterp - cl_char_not_lessp - cl_digit_char - - cl_alpha_char_p - cl_alphanumericp - cl_both_case_p - cl_char_code - cl_char_downcase - cl_char_int - cl_char_name - cl_char_upcase - cl_character - cl_code_char - cl_graphic_char_p - cl_lower_case_p - cl_name_char - cl_standard_char_p - cl_upper_case_p - - ecl_alpha_char_p - ecl_alphanumericp - ecl_both_case_p - ecl_char_downcase - ecl_char_upcase - ecl_graphic_char_p - ecl_lower_case_p - ecl_standard_char_p - ecl_upper_case_p - ecl_base_char_p - - ;ecl_base_string_case - ecl_char_code - ecl_base_char_code - ecl_digitp - ecl_char_eq - ecl_char_cmp - ecl_char_equal - ecl_char_compare - ecl_digit_char - - ; cleanup.c - - ;si_get_finalizer - ;si_set_finalizer - - ; clos.c - - cl_find_class - cl_class_of - - ; cmpaux.c - - si_specialp - - ecl_ifloor - ecl_imod - ecl_to_char - ecl_to_fixnum - ecl_to_unsigned_integer - ecl_to_float - ecl_to_double - ecl_aref_bv - ecl_aset_bv - cl_throw - cl_return_from - cl_go - cl_parse_key - cl_grab_rest_args - - ; compiler.c - - si_process_lambda_list - si_process_lambda - si_make_lambda - si_function_block_name - si_valid_function_name_p - si_process_declarations - - si_eval_with_env - - ; interpreter.c - - si_interpreter_stack - ecl_stack_frame_reserve - ecl_stack_frame_push - ecl_stack_frame_push_va_list - ecl_stack_frame_close - ecl_stack_frame_pop_values - ecl_stack_frame_elt - ecl_stack_frame_elt_set - ecl_apply_from_stack_frame - - cl_stack_push - cl_stack_pop - cl_stack_index - cl_stack_set_size - cl_stack_set_index - cl_stack_pop_n - cl_stack_insert - cl_stack_push_list - cl_stack_push_va_list - ;cl_stack_push_n - cl_stack_push_values - cl_stack_pop_values - - ecl_apply_lambda - ecl_interpret - - ; disassembler.c - - si_bc_disassemble - si_bc_split - - ; error.c - - cl_error - cl_cerror - - ecl_internal_error - ecl_cs_overflow - FEprogram_error - FEcontrol_error - FEreader_error - FEerror - FEcannot_open - FEend_of_file - FEclosed_stream - FEwrong_type_argument - FEwrong_num_arguments - FEwrong_num_arguments_anonym - FEunbound_variable - FEinvalid_macro_call - FEinvalid_variable - FEassignment_to_constant - FEundefined_function - FEinvalid_function - FEinvalid_function_name - FEtype_error_symbol - FElibc_error - FEwin32_error - CEerror - FEillegal_index - - ; eval.c - - cl_funcall - cl_apply - si_safe_eval - - cl__va_start - cl_va_arg - - si_unlink_symbol - cl_eval - cl_constantp - - cl_apply_from_stack - _ecl_link_call - - ; ffi.c - - si_allocate_foreign_data - si_find_foreign_symbol - si_foreign_data_address - si_foreign_data_pointer - si_foreign_data_ref - si_foreign_data_ref_elt - si_foreign_data_set - si_foreign_data_set_elt - si_foreign_data_tag - si_foreign_data_recast - si_free_foreign_data - si_make_foreign_data_from_array - si_load_foreign_module - si_null_pointer_p - si_size_of_foreign_elt_type - si_call_cfun - - ecl_make_foreign_data - ecl_allocate_foreign_data - ecl_foreign_data_pointer_safe - ecl_base_string_pointer_safe - ecl_null_terminated_base_string - ecl_foreign_data_ref_elt - ecl_foreign_data_set_elt - - ; file.c - - cl_make_synonym_stream - cl_synonym_stream_symbol - cl_make_two_way_stream - cl_two_way_stream_input_stream - cl_two_way_stream_output_stream - cl_make_echo_stream - cl_echo_stream_input_stream - cl_echo_stream_output_stream - cl_make_string_output_stream - cl_get_output_stream_string - cl_streamp - cl_input_stream_p - cl_output_stream_p - cl_stream_element_type - cl_stream_external_format - cl_file_length - ;si_get_string_input_stream_index - si_make_string_output_stream_from_string - si_copy_stream - cl_open_stream_p - cl_make_broadcast_stream - cl_broadcast_stream_streams - cl_make_concatenated_stream - cl_concatenated_stream_streams - cl_make_string_input_stream - cl_close - cl_open - cl_file_position - cl_file_string_length - si_do_write_sequence - si_do_read_sequence - si_file_column - cl_interactive_stream_p - si_set_buffering_mode - - ecl_input_stream_p - ecl_output_stream_p - ecl_open_stream - ecl_make_string_input_stream - ecl_make_string_output_stream - ecl_read_byte - ecl_write_byte - ecl_read_char_noeof - ecl_read_char - ecl_unread_char - ecl_peek_char - ecl_write_char - writestr_stream - ecl_force_output - ecl_clear_input - ecl_clear_output - ecl_listen_stream - ecl_file_position - ecl_file_position_set - cl_file_length - ecl_file_column - ecl_make_stream_from_fd - ecl_stream_to_handle - - - ; format.c - - cl_format - - ; gbc.c - - ecl_register_root - - - ; gfun.c - - ;si_set_funcallable - si_generic_function_p - - _ecl_standard_dispatch - - - ; hash.c - - cl__make_hash_table - cl_hash_table_p - si_hash_set - cl_remhash - cl_clrhash - cl_hash_table_count - cl_sxhash - cl_maphash - cl_hash_table_rehash_size - cl_hash_table_rehash_threshold - cl_hash_table_size - cl_hash_table_test - si_hash_table_iterator - cl_make_hash_table - cl_gethash - si_copy_hash_table - - ;hash_eq - ;hash_eql - ;hash_equal - ecl_sethash - ecl_gethash - ecl_gethash_safe - ecl_remhash - ecl_search_hash - - ; instance.c - - si_allocate_raw_instance - si_instance_class - si_instance_class_set - si_instance_ref - si_instance_ref_safe - si_instance_set - si_instancep - si_unbound - si_sl_boundp - si_sl_makunbound - si_instance_sig - si_instance_sig_set - - ecl_allocate_instance - ecl_instance_ref - ecl_instance_set - si_copy_instance - - ecl_slot_value - ecl_slot_value_set - - ; list.c - - cl_car - cl_cdr - cl_caar - cl_cadr - cl_cdar - cl_cddr - cl_caaar - cl_caadr - cl_cadar - cl_caddr - cl_cdaar - cl_cdadr - cl_cddar - cl_cdddr - cl_caaaar - cl_caaadr - cl_caadar - cl_caaddr - cl_cadaar - cl_cadadr - cl_caddar - cl_cadddr - cl_cdaaar - cl_cdaadr - cl_cdadar - cl_cdaddr - cl_cddaar - cl_cddadr - cl_cdddar - cl_cddddr - cl_fifth - cl_sixth - cl_seventh - cl_eighth - cl_ninth - cl_tenth - cl_endp - cl_list_length - cl_nth - cl_nthcdr - cl_copy_list - cl_copy_alist - cl_copy_tree - cl_revappend - cl_ldiff - cl_rplaca - cl_rplacd - cl_tailp - si_memq - cl_nreconc - cl_cons - cl_acons - cl_list - cl_listX - cl_append - cl_tree_equal - cl_last - cl_make_list - cl_nconc - cl_butlast - cl_nbutlast - cl_subst - cl_nsubst - cl_sublis - cl_nsublis - cl_member - si_member1 - cl_adjoin - cl_pairlis - cl_rassoc - cl_assoc - - ;list_length - ecl_append - ecl_endp - ecl_nth - ecl_nthcdr - ecl_nconc - ecl_member_eq - ecl_memql - ecl_member - ecl_assq - ecl_assql - ecl_assoc - ecl_assqlp - ecl_remove_eq - ecl_delete_eq - - - ; load.c - - ecl_library_open - ecl_library_symbol - ecl_library_error - ecl_library_close - ecl_library_close_all - si_load_source - si_load_binary - cl_load - - - ; macros.c - - cl_macroexpand - cl_macroexpand_1 - cl_macro_function - - - ; main.c - - si_argc - si_argv - si_getenv - si_setenv - si_getpid - si_pointer - si_quit - - ecl_booted DATA - ecl_self DATA - cl_boot - cl_shutdown - ecl_get_commandline_args - - - ; mapfun.c - - cl_mapcar - cl_maplist - cl_mapc - cl_mapl - cl_mapcan - cl_mapcon - - - ; multival.c - - cl_values_list - cl_values - - - ; num_arith.c - - cl_conjugate - cl_1P - cl_1M - cl_X - cl_P - cl_M - cl_N - cl_gcd - cl_lcm - - fixnum_times - ecl_times - ;number_to_complex - ecl_plus - ecl_minus - ecl_negate - ecl_divide - ecl_integer_divide - ecl_gcd - ecl_one_plus - ecl_one_minus - - - ; number.c - - fixint - fixnnint - ecl_fixnum_in_range - ecl_make_integer - ecl_make_unsigned_integer - ecl_make_ratio - ecl_make_singlefloat - ecl_make_doublefloat - ecl_make_complex - cl_rational - ecl_to_double - - ; num_co.c - - cl_numerator - cl_denominator - cl_mod - cl_rem - cl_decode_float - cl_scale_float - cl_float_radix - cl_float_digits - cl_float_precision - cl_integer_decode_float - cl_realpart - cl_imagpart - cl_float - cl_floor - cl_ceiling - cl_truncate - cl_round - cl_float_sign - cl_complex - - double_to_integer - float_to_integer - ecl_floor1 - ecl_ceiling1 - ecl_truncate1 - ecl_round1 - ecl_floor2 - ecl_ceiling2 - ecl_truncate2 - ecl_round2 - - - ; num_comp.c - - cl_E - cl_NE - cl_L - cl_G - cl_GE - cl_LE - cl_max - cl_min - - ecl_number_equalp - ecl_number_compare - - - ; num_log.c - - cl_lognand - cl_lognor - cl_logandc1 - cl_logandc2 - cl_logorc1 - cl_logorc2 - cl_lognot - cl_boole - cl_logbitp - cl_ash - cl_logcount - cl_integer_length - si_bit_array_op - cl_logior - cl_logxor - cl_logand - cl_logeqv - - ecl_boole - ecl_ash - ecl_fixnum_bit_length - - - ; num_pred.c - - cl_zerop - cl_plusp - cl_minusp - cl_oddp - cl_evenp - - ecl_zerop - ecl_plusp - ecl_minusp - ecl_oddp - ecl_evenp - - - ; num_rand.c - - cl_random_state_p - cl_random - cl_make_random_state - ecl_make_random_state - - - ; num_sfun.c - - ecl_fixnum_expt - cl_exp - cl_expt - ecl_log1 - ecl_log2 - cl_sqrt - ecl_atan2 - ecl_atan1 - cl_sin - cl_cos - cl_tan - cl_sinh - cl_cosh - cl_tanh - cl_atan - cl_log - - - ; package.c - - CEpackage_error - si_select_package - cl_find_package - cl_package_name - cl_package_nicknames - cl_package_use_list - cl_package_used_by_list - cl_package_shadowing_symbols - cl_list_all_packages - si_package_hash_tables - si_package_lock - cl_delete_package - cl_make_package - cl_intern - cl_find_symbol - cl_unintern - cl_export - cl_unexport - cl_import - cl_rename_package - cl_shadowing_import - cl_shadow - cl_use_package - cl_unuse_package - - ecl_make_package - ecl_rename_package - ecl_find_package_nolock - si_coerce_to_package - ecl_current_package - ecl_find_symbol - ecl_intern - _ecl_intern - ecl_unintern - cl_export2 - cl_unexport2 - cl_import2 - ecl_shadowing_import - ecl_shadow - ecl_use_package - ecl_unuse_package - - - ; pathname.c - - cl_pathname - cl_logical_pathname - cl_pathnamep - cl_pathname_host - cl_pathname_device - cl_pathname_directory - cl_pathname_name - cl_pathname_type - cl_pathname_version - cl_namestring - cl_file_namestring - cl_directory_namestring - cl_host_namestring - si_logical_pathname_p - cl_pathname_match_p - cl_translate_pathname - cl_translate_logical_pathname - cl_parse_namestring - ;cl_parse_logical_namestring - cl_merge_pathnames - cl_make_pathname - cl_enough_namestring - si_pathname_translations - si_default_pathname_defaults - cl_wild_pathname_p - - ecl_make_pathname - ecl_parse_namestring - coerce_to_physical_pathname - coerce_to_file_pathname - ecl_namestring - si_coerce_to_filename - ecl_merge_pathnames - ecl_logical_hostname_p - - - ; predicate.c - - cl_identity - cl_null - cl_symbolp - cl_atom - cl_consp - cl_listp - cl_numberp - cl_integerp - cl_rationalp - cl_floatp - cl_realp - cl_complexp - cl_characterp - cl_stringp - cl_bit_vector_p - cl_vectorp - cl_simple_string_p - cl_simple_bit_vector_p - cl_simple_vector_p - cl_arrayp - cl_packagep - cl_functionp - cl_compiled_function_p - cl_eq - cl_eql - cl_equal - cl_equalp - si_fixnump - - ecl_numberp - ecl_eql - ecl_equal - ecl_equalp - ecl_stringp - - ; print.c - - cl_write_byte - cl_write_sequence - cl_write - cl_prin1 - cl_print - cl_pprint - cl_princ - cl_write_char - cl_write_string - cl_write_line - cl_terpri - cl_finish_output - cl_fresh_line - cl_force_output - cl_clear_output - si_write_object - si_write_ugly_object - - ecl_princ - ecl_prin1 - ecl_print - ecl_terpri - ecl_write_string - ecl_princ_str - ecl_princ_char - - - ; profile.c - - - ; read.c - - cl_read_sequence - cl_readtablep - si_string_to_object - si_standard_readtable - cl_read - cl_read_preserving_whitespace - cl_read_delimited_list - cl_read_line - cl_read_char - cl_unread_char - cl_peek_char - cl_listen - cl_read_char_no_hang - cl_clear_input - cl_parse_integer - cl_read_byte - cl_copy_readtable - cl_readtable_case - si_readtable_case_set - cl_set_syntax_from_char - cl_set_macro_character - cl_get_macro_character - cl_make_dispatch_macro_character - cl_set_dispatch_macro_character - cl_get_dispatch_macro_character - si_get_buffer_string - si_put_buffer_string - - ecl_read_object_non_recursive - ecl_read_object - ecl_parse_number - ecl_parse_integer - ecl_invalid_character_p - ecl_copy_readtable - ecl_current_readtable - ecl_current_read_base - ecl_current_read_default_float_format - c_string_to_object - read_VV - - - ; reference.c - - cl_fboundp - cl_symbol_function - cl_fdefinition - si_coerce_to_function - cl_symbol_value - cl_boundp - cl_special_operator_p - - ecl_fdefinition - - ; sequence.c - - cl_elt - si_elt_set - cl_copy_seq - cl_length - cl_reverse - cl_nreverse - cl_subseq - - ecl_alloc_simple_vector - ecl_elt - ecl_elt_set - ecl_length - - - ; stacks.c - - si_ihs_top - si_ihs_fun - si_ihs_env - si_ihs_next - si_ihs_prev - si_frs_top - si_frs_bds - si_frs_tag - si_frs_ihs - ;si_frs_class - si_bds_top - si_bds_var - si_bds_val - si_sch_frs_base - si_reset_stack_limits - - bds_overflow - frs_overflow - bds_unwind - ecl_unwind - frs_sch - ;frs_sch_catch - new_frame_id - _frs_push - - ; string.c - - cl_char - si_char_set - cl_string_trim - cl_string_left_trim - cl_string_right_trim - cl_string - cl_make_string - cl_stringE - cl_string_equal - cl_stringL - cl_stringG - cl_stringLE - cl_stringGE - cl_stringNE - cl_string_lessp - cl_string_greaterp - cl_string_not_greaterp - cl_string_not_lessp - cl_string_not_equal - cl_string_upcase - cl_string_downcase - cl_string_capitalize - cl_nstring_upcase - cl_nstring_downcase - cl_nstring_capitalize - si_base_string_concatenate - - cl_alloc_simple_base_string - cl_alloc_adjustable_base_string - make_simple_base_string - make_base_string_copy - ecl_cstring_to_base_string_or_nil - si_copy_to_simple_base_string - ecl_string_eq - ecl_member_char - ecl_string_push_extend - get_string_start_end - ecl_fits_in_base_string - ecl_char - ecl_char_set - - ; structure.c - - si_structure_subtype_p - cl_copy_structure - si_structure_name - si_structure_ref - si_structure_set - si_structurep - si_make_structure - - ecl_structure_ref - ecl_structure_set - - - ; symbol.c - - cl_make_symbol - cl_remprop - cl_symbol_plist - cl_get_properties - cl_symbol_name - cl_symbol_package - cl_keywordp - si_put_f - si_rem_f - si_set_symbol_plist - si_putprop - si_Xmake_special - si_Xmake_constant - cl_get - cl_getf - cl_copy_symbol - cl_gensym - cl_gentemp - si_put_properties - - ;cl_defvar - ;cl_defparameter - ecl_make_keyword - ecl_symbol_value - ecl_getf - ecl_get - ecl_keywordp - - - ; tcp.c - - si_open_client_stream - si_open_server_stream - si_open_unix_socket_stream - si_lookup_host_entry - ecl_tcp_close_all - - - - ; threads.c - - - - ; time.c - - cl_get_universal_time - cl_sleep - cl_get_internal_run_time - cl_get_internal_real_time - - ; tkMain.c - - - - ; typespec.c - - assert_type_integer - assert_type_non_negative_integer - assert_type_package - assert_type_cons - assert_type_readtable - assert_type_hash_table - assert_type_array - assert_type_vector - assert_type_list - assert_type_proper_list - cl_type_of - ecl_check_cl_type - ecl_check_type_string - - FEtype_error_character - FEtype_error_cons - FEtype_error_number - FEtype_error_real - FEtype_error_float - FEtype_error_integer - FEtype_error_list - FEtype_error_proper_list - FEtype_error_alist - FEtype_error_stream - FEcircular_list - FEtype_error_index - FEtype_error_string - FEdivision_by_zero - ecl_type_error - - ; unixfsys.c - - cl_truename - cl_rename_file - cl_delete_file - cl_probe_file - cl_file_write_date - cl_file_author - si_file_kind - si_getcwd - si_get_library_pathname - si_chdir - si_mkdir - cl_directory - cl_user_homedir_pathname - si_mkstemp - si_rmdir - - ecl_expand_pathname - ecl_cstring_to_pathname - ecl_backup_fopen - ecl_file_len - ecl_homedir_pathname - - - ; unixint.c - - si_catch_bad_signals - si_uncatch_bad_signals - si_check_pending_interrupts - si_trap_fpe - - - ; unixsys.c - - si_system - si_open_pipe - si_close_pipe - si_run_program - - ; arraylib.lsp - - cl_make_array - cl_vector - cl_array_dimensions - cl_array_in_bounds_p - cl_array_row_major_index - cl_bit - cl_sbit - cl_bit_and - cl_bit_ior - cl_bit_xor - cl_bit_eqv - cl_bit_nand - cl_bit_nor - cl_bit_andc1 - cl_bit_andc2 - cl_bit_orc1 - cl_bit_orc2 - cl_bit_not - cl_vector_push - cl_vector_push_extend - cl_vector_pop - cl_adjust_array - - ; assert.lsp - si_etypecase_error - si_ecase_error - si_ccase_error - - ; defmacro.lsp - - si_check_keyword - si_check_arg_length - si_dm_too_few_arguments - si_dm_bad_key - si_find_declarations - si_find_documentation - si_remove_documentation - - ; defstruct.lsp - - si_assert_slot_type - si_define_structure - - ; helpfile.lsp - - si_expand_set_documentation - si_get_documentation - si_set_documentation - - ; iolib.lsp - - cl_read_from_string - cl_write_to_string - cl_prin1_to_string - cl_princ_to_string - cl_y_or_n_p - cl_yes_or_no_p - - ; listlib.lsp - - cl_union - cl_nunion - cl_intersection - cl_nintersection - cl_set_difference - cl_nset_difference - cl_set_exclusive_or - cl_nset_exclusive_or - cl_subsetp - cl_rassoc_if - cl_rassoc_if_not - cl_assoc_if - cl_assoc_if_not - cl_member_if - cl_member_if_not - cl_subst_if - cl_subst_if_not - cl_nsubst_if - cl_nsubst_if_not - - ; mislib.lsp - - cl_logical_pathname_translations - cl_load_logical_pathname_translations - cl_decode_universal_time - cl_encode_universal_time - cl_get_decoded_time - cl_ensure_directories_exist - si_simple_program_error - si_signal_simple_error - - ; module.lsp - - cl_provide - cl_require - - ; numlib.lsp - - cl_isqrt - cl_abs - cl_phase - cl_signum - cl_cis - cl_asin - cl_acos - cl_asinh - cl_acosh - cl_atanh - cl_ffloor - cl_fceiling - cl_ftruncate - cl_fround - cl_logtest - cl_byte - cl_byte_size - cl_byte_position - cl_ldb - cl_ldb_test - cl_mask_field - cl_dpb - cl_deposit_field - - ; packlib.lsp - - cl_find_all_symbols - cl_apropos - cl_apropos_list - si_packages_iterator - si_find_relative_package - - ; predlib.lsp - - cl_upgraded_array_element_type - cl_upgraded_complex_part_type - cl_typep - cl_coerce - cl_subtypep - si_do_deftype - - ; seq.lsp - - cl_make_sequence - cl_concatenate - cl_map - cl_some - cl_every - cl_notany - cl_notevery - cl_map_into - si_closest_vector_type - si_make_seq_iterator - si_seq_iterator_ref - si_seq_iterator_set - si_seq_iterator_next - - ; seqlib.lsp - - cl_reduce - cl_fill - cl_replace - cl_remove - cl_remove_if - cl_remove_if_not - cl_delete - cl_delete_if - cl_delete_if_not - cl_count - cl_count_if - cl_count_if_not - cl_substitute - cl_substitute_if - cl_substitute_if_not - cl_nsubstitute - cl_nsubstitute_if - cl_nsubstitute_if_not - cl_find - cl_find_if - cl_find_if_not - cl_position - cl_position_if - cl_position_if_not - cl_remove_duplicates - cl_delete_duplicates - cl_mismatch - cl_search - cl_sort - cl_stable_sort - cl_merge - cl_constantly - - ; format.lsp - - si_format_princ - si_format_prin1 - si_format_print_named_character - si_format_print_integer - si_format_print_cardinal - si_format_print_ordinal - si_format_print_old_roman - si_format_print_roman - si_format_fixed - si_format_exponential - si_format_general - si_format_dollars - si_format_relative_tab - si_format_absolute_tab - si_format_justification - - ; pprint.lsp - - cl_pprint_newline - cl_pprint_indent - cl_pprint_tab - cl_pprint_fill - cl_pprint_linear - cl_pprint_tabular - cl_copy_pprint_dispatch - cl_pprint_dispatch - cl_set_pprint_dispatch - si_pprint_logical_block_helper - si_pprint_pop_helper - - ; clos\boot.lsp - - cl_slot_boundp - cl_slot_exists_p - cl_slot_makunbound - cl_slot_value - - ; clos\combin.lsp - ;clos_simple_code_walker - cl_method_combination_error - cl_invalid_method_error - - ; clos\defclass.lsp - - clos_ensure_class - - ; close\generic.lsp - - clos_associate_methods_to_gfun - - ; clos\kernel.lsp - - clos_class_id - clos_class_direct_superclasses - clos_class_direct_subclasses - clos_class_slots - clos_class_precedence_list - clos_class_direct_slots - clos_generic_function_method_combination - clos_generic_function_lambda_list - clos_generic_function_argument_precedence_order - clos_generic_function_method_class - clos_generic_function_methods - clos_method_generic_function - clos_method_lambda_list - clos_method_specializers - cl_method_qualifiers - clos_method_function - clos_method_plist - clos_install_method - - ; clos\standard.lsp - - clos_standard_instance_set - ; unicode diff --git a/src/CHANGELOG b/src/CHANGELOG index 4c9ce4ec1..fceba00dc 100644 --- a/src/CHANGELOG +++ b/src/CHANGELOG @@ -84,6 +84,10 @@ ECL 0.9k: - The compiler now inlines and optimizes (FUNCALL (X ..) ... ) where X is a macro that returns a lambda form. + - ECL no longer needs library definition files ecl.def and ecl-threads.def + thanks to a more clever use of declarations __declspec(dllexport) and + __declspec(dllimport). + * System design: - We introduce a new kind of lisp objects, the stack frames. These are objects diff --git a/src/c/Makefile.in b/src/c/Makefile.in index 894484b32..df851b23b 100644 --- a/src/c/Makefile.in +++ b/src/c/Makefile.in @@ -9,7 +9,7 @@ VPATH = @srcdir@ # TRUE_CC = @CC@ CC = @CC@ -CFLAGS = -c -I. -I@true_builddir@ -I$(srcdir) -I../ecl/gc @CPPFLAGS@ @CFLAGS@ @ECL_CFLAGS@ \ +CFLAGS = -c DECL_API -I. -I@true_builddir@ -I$(srcdir) -I../ecl/gc @CPPFLAGS@ @CFLAGS@ @ECL_CFLAGS@ \ # -Wall -W -Wfloat-equal -Wundef -Wendif-labels -Wpointer-arith -Wcast-align \ # -Wwrite-strings -Wconversion -Wsign-compare -Wmissing-prototypes -Wredundant-decls \ # -Wunreachable-code -Winline diff --git a/src/c/arch/ffi_x86.d b/src/c/arch/ffi_x86.d index 9fcae6d2a..717462d45 100644 --- a/src/c/arch/ffi_x86.d +++ b/src/c/arch/ffi_x86.d @@ -110,7 +110,7 @@ ecl_dynamic_callback_execute(cl_object cbk_info, char *arg_buffer) union ecl_ffi_values output; enum ecl_ffi_tag tag; - ECL_BUILD_STACK_FRAME(frame); + ECL_BUILD_STACK_FRAME(frame, aux); fun = CAR(cbk_info); rtype = CADR(cbk_info); diff --git a/src/c/arch/ffi_x86_64.d b/src/c/arch/ffi_x86_64.d index 2c1d16c3f..3b378dc96 100644 --- a/src/c/arch/ffi_x86_64.d +++ b/src/c/arch/ffi_x86_64.d @@ -165,7 +165,7 @@ ecl_dynamic_callback_execute(long i1, long i2, long i3, long i4, long i5, long i long i_reg[MAX_INT_REGISTERS]; double f_reg[MAX_FP_REGISTERS]; - ECL_BUILD_STACK_FRAME(frame); + ECL_BUILD_STACK_FRAME(frame, aux); fun = CAR(cbk_info); rtype = CADR(cbk_info); diff --git a/src/c/gfun.d b/src/c/gfun.d index 4d10d4ee2..5d5329cf8 100644 --- a/src/c/gfun.d +++ b/src/c/gfun.d @@ -366,7 +366,7 @@ _ecl_standard_dispatch(cl_object frame, cl_object gf) } } { - ECL_BUILD_STACK_FRAME(frame1); + ECL_BUILD_STACK_FRAME(frame1, aux); ecl_stack_frame_push(frame1, frame); ecl_stack_frame_push(frame1, Cnil); func = ecl_apply_from_stack_frame(frame1, func); diff --git a/src/c/mapfun.d b/src/c/mapfun.d index 781ae2bba..21fb6e2ba 100644 --- a/src/c/mapfun.d +++ b/src/c/mapfun.d @@ -36,8 +36,8 @@ prepare_map(cl_va_list lists, cl_object cdrs_frame, cl_object cars_frame) cl_object res, *val = &res; cl_index i; @ { - ECL_BUILD_STACK_FRAME(cars_frame); - ECL_BUILD_STACK_FRAME(cdrs_frame); + ECL_BUILD_STACK_FRAME(cars_frame,frame1); + ECL_BUILD_STACK_FRAME(cdrs_frame,frame2); prepare_map(lists, cdrs_frame, cars_frame); res = Cnil; while (TRUE) { @@ -60,8 +60,8 @@ prepare_map(cl_va_list lists, cl_object cdrs_frame, cl_object cars_frame) @(defun maplist (fun &rest lists) cl_object res, *val = &res; @ { - ECL_BUILD_STACK_FRAME(cars_frame); - ECL_BUILD_STACK_FRAME(cdrs_frame); + ECL_BUILD_STACK_FRAME(cars_frame,frame1); + ECL_BUILD_STACK_FRAME(cdrs_frame,frame2); prepare_map(lists, cdrs_frame, cars_frame); res = Cnil; while (TRUE) { @@ -84,8 +84,8 @@ prepare_map(cl_va_list lists, cl_object cdrs_frame, cl_object cars_frame) @(defun mapc (fun &rest lists) cl_object onelist; @ { - ECL_BUILD_STACK_FRAME(cars_frame); - ECL_BUILD_STACK_FRAME(cdrs_frame); + ECL_BUILD_STACK_FRAME(cars_frame,frame1); + ECL_BUILD_STACK_FRAME(cdrs_frame,frame2); prepare_map(lists, cdrs_frame, cars_frame); onelist = ecl_stack_frame_elt(cdrs_frame, 0); while (TRUE) { @@ -107,8 +107,8 @@ prepare_map(cl_va_list lists, cl_object cdrs_frame, cl_object cars_frame) @(defun mapl (fun &rest lists) cl_object onelist; @ { - ECL_BUILD_STACK_FRAME(cars_frame); - ECL_BUILD_STACK_FRAME(cdrs_frame); + ECL_BUILD_STACK_FRAME(cars_frame,frame1); + ECL_BUILD_STACK_FRAME(cdrs_frame,frame2); prepare_map(lists, cdrs_frame, cars_frame); onelist = ecl_stack_frame_elt(cdrs_frame, 0); while (TRUE) { @@ -130,8 +130,8 @@ prepare_map(cl_va_list lists, cl_object cdrs_frame, cl_object cars_frame) @(defun mapcan (fun &rest lists) cl_object res, *val = &res; @ { - ECL_BUILD_STACK_FRAME(cars_frame); - ECL_BUILD_STACK_FRAME(cdrs_frame); + ECL_BUILD_STACK_FRAME(cars_frame,frame1); + ECL_BUILD_STACK_FRAME(cdrs_frame,frame2); prepare_map(lists, cdrs_frame, cars_frame); res = Cnil; while (TRUE) { @@ -155,8 +155,8 @@ prepare_map(cl_va_list lists, cl_object cdrs_frame, cl_object cars_frame) @(defun mapcon (fun &rest lists) cl_object res, *val = &res; @ { - ECL_BUILD_STACK_FRAME(cars_frame); - ECL_BUILD_STACK_FRAME(cdrs_frame); + ECL_BUILD_STACK_FRAME(cars_frame,frame1); + ECL_BUILD_STACK_FRAME(cdrs_frame,frame2); prepare_map(lists, cdrs_frame, cars_frame); res = Cnil; while (TRUE) { diff --git a/src/cmp/cmptop.lsp b/src/cmp/cmptop.lsp index 72974f0bd..7cc324cf7 100644 --- a/src/cmp/cmptop.lsp +++ b/src/cmp/cmptop.lsp @@ -524,7 +524,7 @@ (wt-comment "... shares definition with " (fun-name (fun-shares-with fun))) (return-from t3local-fun)) (cond ((fun-exported fun) - (wt-nl-h #+(and msvc (not ecl-min)) "__declspec(dllexport) " "cl_object " cfun "(") + (wt-nl-h #+msvc "__declspec(dllexport) " "cl_object " cfun "(") (wt-nl1 "cl_object " cfun "(")) (t (wt-nl-h "static cl_object " cfun "(") diff --git a/src/compile.lsp.in b/src/compile.lsp.in index 5e8ebac9e..5d26ea3d8 100644 --- a/src/compile.lsp.in +++ b/src/compile.lsp.in @@ -71,7 +71,7 @@ ;;; (setq si::*keep-documentation* nil) (proclaim '(optimize (safety 2) (space 3))) -(let* ((c::*cc-flags* (concatenate 'string "-I\"@true_builddir@/c\" " c::*cc-flags*)) +(let* ((c::*cc-flags* (concatenate 'string "-DECL_API -I\"@true_builddir@/c\" " c::*cc-flags*)) (lsp-objects (compile-if-old "build:lsp;" +lisp-module-files+ :system-p t :c-file t :data-file t :h-file t ;;:shared-data-file "build:ecl.sdat" @@ -103,8 +103,8 @@ ;;; We do not need the -rpath flag for the library, nor -lecl. ;;; (let ((c::*ld-shared-flags* #-msvc "@SHARED_LDFLAGS@ @LDFLAGS@ @CORE_LIBS@ @LIBS@ @FASL_LIBS@" - #+msvc "@SHARED_LDFLAGS@ @LDFLAGS@ @STATICLIBS@ @CLIBS@ /DEF:@DEF@") - (c::*cc-flags* (concatenate 'string "-I@true_builddir@/c " c::*cc-flags*))) + #+msvc "@SHARED_LDFLAGS@ @LDFLAGS@ @STATICLIBS@ @CLIBS@") + (c::*cc-flags* (concatenate 'string "-DECL_API -I@true_builddir@/c " c::*cc-flags*))) (c::shared-cc (compile-file-pathname "ecl" :type :dll) "c/main.@OBJEXT@" "c/all_symbols2.@OBJEXT@" diff --git a/src/h/ecl.h b/src/h/ecl.h index 2a1d144de..76e1eea2f 100644 --- a/src/h/ecl.h +++ b/src/h/ecl.h @@ -57,6 +57,28 @@ typedef unsigned short uint16_t; # define end_critical_section() #endif +/* + * If ECL_API has been predefined, that means we are building the core + * library and, under windows, we must tell the compiler to export + * extern functions from the shared library. + * If ECL_API is not defined, we are simply building an application that + * uses ECL and, under windows, we must tell the compiler that certain + * will be imported from a DLL. + */ +#if defined(mingw32) || defined(_MSC_VER) || defined(cygwin) +# ifdef ECL_API +# undef ECL_API +# define ECL_API __declspec(dllexport) +# else +# define ECL_API __declspec(dllimport) +# endif +#else +# ifdef ECL_API +# undef ECL_API +# endif +# define ECL_API +#endif + #include #include #include diff --git a/src/h/external.h b/src/h/external.h index 5e66f593a..1e35bdfc3 100644 --- a/src/h/external.h +++ b/src/h/external.h @@ -127,10 +127,7 @@ extern __thread struct cl_env_struct * cl_env_p; extern struct cl_env_struct *ecl_process_env(void) __attribute__((const)); # endif #else -#if defined(mingw32) || defined(_MSC_VER) || defined(cygwin) -__declspec(dllimport) -#endif -extern struct cl_env_struct cl_env; +extern ECL_API struct cl_env_struct cl_env; #endif /* @@ -193,21 +190,18 @@ struct cl_core_struct { int path_max; }; -#if defined(mingw32) || defined(_MSC_VER) || defined(cygwin) -__declspec(dllimport) -#endif -extern struct cl_core_struct cl_core; +extern ECL_API struct cl_core_struct cl_core; /* alloc.c / alloc_2.c */ -extern cl_object cl_alloc_object(cl_type t); -extern cl_object cl_alloc_instance(cl_index slots); -extern cl_object ecl_cons(cl_object a, cl_object d); -extern void cl_dealloc(void *p, cl_index s); +extern ECL_API cl_object cl_alloc_object(cl_type t); +extern ECL_API cl_object cl_alloc_instance(cl_index slots); +extern ECL_API cl_object ecl_cons(cl_object a, cl_object d); +extern ECL_API void cl_dealloc(void *p, cl_index s); #ifdef GBC_BOEHM -extern cl_object si_gc(cl_object area); -extern cl_object si_gc_dump(void); -extern cl_object si_gc_stats(cl_object enable); +extern ECL_API cl_object si_gc(cl_object area); +extern ECL_API cl_object si_gc_dump(void); +extern ECL_API cl_object si_gc_stats(cl_object enable); #define cl_alloc GC_malloc_ignore_off_page #define cl_alloc_atomic GC_malloc_atomic_ignore_off_page #define cl_alloc_align(s,d) GC_malloc_ignore_off_page(s) @@ -215,20 +209,20 @@ extern cl_object si_gc_stats(cl_object enable); #define cl_dealloc(p,s) #define ecl_register_static_root(x) ecl_register_root(x) #else -extern cl_object si_allocate _ARGS((cl_narg narg, cl_object type, cl_object qty, ...)); -extern cl_object si_maximum_allocatable_pages _ARGS((cl_narg narg, cl_object type)); -extern cl_object si_allocated_pages _ARGS((cl_narg narg, cl_object type)); -extern cl_object si_alloc_contpage _ARGS((cl_narg narg, cl_object qty, ...)); -extern cl_object si_allocated_contiguous_pages _ARGS((cl_narg narg)); -extern cl_object si_maximum_contiguous_pages _ARGS((cl_narg narg)); -extern cl_object si_allocate_contiguous_pages _ARGS((cl_narg narg, cl_object qty, ...)); -extern cl_object si_get_hole_size _ARGS((cl_narg narg)); -extern cl_object si_set_hole_size _ARGS((cl_narg narg, cl_object size)); -extern cl_object si_ignore_maximum_pages _ARGS((cl_narg narg, ...)); -extern void *cl_alloc(cl_index n); -extern void *cl_alloc_align(cl_index size, cl_index align); -extern void *ecl_alloc_uncollectable(size_t size); -extern void ecl_free_uncollectable(void *); +extern ECL_API cl_object si_allocate _ARGS((cl_narg narg, cl_object type, cl_object qty, ...)); +extern ECL_API cl_object si_maximum_allocatable_pages _ARGS((cl_narg narg, cl_object type)); +extern ECL_API cl_object si_allocated_pages _ARGS((cl_narg narg, cl_object type)); +extern ECL_API cl_object si_alloc_contpage _ARGS((cl_narg narg, cl_object qty, ...)); +extern ECL_API cl_object si_allocated_contiguous_pages _ARGS((cl_narg narg)); +extern ECL_API cl_object si_maximum_contiguous_pages _ARGS((cl_narg narg)); +extern ECL_API cl_object si_allocate_contiguous_pages _ARGS((cl_narg narg, cl_object qty, ...)); +extern ECL_API cl_object si_get_hole_size _ARGS((cl_narg narg)); +extern ECL_API cl_object si_set_hole_size _ARGS((cl_narg narg, cl_object size)); +extern ECL_API cl_object si_ignore_maximum_pages _ARGS((cl_narg narg, ...)); +extern ECL_API void *cl_alloc(cl_index n); +extern ECL_API void *cl_alloc_align(cl_index size, cl_index align); +extern ECL_API void *ecl_alloc_uncollectable(size_t size); +extern ECL_API void ecl_free_uncollectable(void *); #define cl_alloc_atomic(x) cl_alloc(x) #define cl_alloc_atomic_align(x,s) cl_alloc_align(x,s) #define ecl_register_static_root(x) ecl_register_root(x); @@ -236,7 +230,7 @@ extern void ecl_free_uncollectable(void *); /* all_symbols */ -extern cl_object si_mangle_name _ARGS((cl_narg narg, cl_object symbol, ...)); +extern ECL_API cl_object si_mangle_name _ARGS((cl_narg narg, cl_object symbol, ...)); typedef union { struct { @@ -248,309 +242,306 @@ typedef union { } init; struct ecl_symbol data; } cl_symbol_initializer; -#if defined(mingw32) || defined(_MSC_VER) || defined(cygwin) -__declspec(dllimport) -#endif -extern cl_symbol_initializer cl_symbols[]; -extern cl_index cl_num_symbols_in_core; +extern ECL_API cl_symbol_initializer cl_symbols[]; +extern ECL_API cl_index cl_num_symbols_in_core; #define ECL_SYM(name,code) ((cl_object)(cl_symbols+(code))) /* apply.c */ -extern cl_object APPLY_fixed(cl_narg n, cl_object (*f)(), cl_object *x); -extern cl_object APPLY(cl_narg n, cl_objectfn, cl_object *x); -extern cl_object APPLY_closure(cl_narg n, cl_objectfn, cl_object cl, cl_object *x); +extern ECL_API cl_object APPLY_fixed(cl_narg n, cl_object (*f)(), cl_object *x); +extern ECL_API cl_object APPLY(cl_narg n, cl_objectfn, cl_object *x); +extern ECL_API cl_object APPLY_closure(cl_narg n, cl_objectfn, cl_object cl, cl_object *x); /* array.c */ -extern cl_object cl_row_major_aref(cl_object x, cl_object i); -extern cl_object si_row_major_aset(cl_object x, cl_object i, cl_object v); -extern cl_object si_make_vector(cl_object etype, cl_object dim, cl_object adj, cl_object fillp, cl_object displ, cl_object disploff); -extern cl_object cl_array_element_type(cl_object a); -extern cl_object cl_array_rank(cl_object a); -extern cl_object cl_array_dimension(cl_object a, cl_object index); -extern cl_object cl_array_total_size(cl_object a); -extern cl_object cl_adjustable_array_p(cl_object a); -extern cl_object cl_array_displacement(cl_object a); -extern cl_object cl_svref(cl_object x, cl_object index); -extern cl_object si_svset(cl_object x, cl_object index, cl_object v); -extern cl_object cl_array_has_fill_pointer_p(cl_object a); -extern cl_object cl_fill_pointer(cl_object a); -extern cl_object si_fill_pointer_set(cl_object a, cl_object fp); -extern cl_object si_replace_array(cl_object old_obj, cl_object new_obj); -extern cl_object cl_aref _ARGS((cl_narg narg, cl_object x, ...)); -extern cl_object si_aset _ARGS((cl_narg narg, cl_object v, cl_object x, ...)); -extern cl_object si_make_pure_array _ARGS((cl_narg narg, cl_object etype, cl_object adj, cl_object displ, cl_object disploff, ...)); +extern ECL_API cl_object cl_row_major_aref(cl_object x, cl_object i); +extern ECL_API cl_object si_row_major_aset(cl_object x, cl_object i, cl_object v); +extern ECL_API cl_object si_make_vector(cl_object etype, cl_object dim, cl_object adj, cl_object fillp, cl_object displ, cl_object disploff); +extern ECL_API cl_object cl_array_element_type(cl_object a); +extern ECL_API cl_object cl_array_rank(cl_object a); +extern ECL_API cl_object cl_array_dimension(cl_object a, cl_object index); +extern ECL_API cl_object cl_array_total_size(cl_object a); +extern ECL_API cl_object cl_adjustable_array_p(cl_object a); +extern ECL_API cl_object cl_array_displacement(cl_object a); +extern ECL_API cl_object cl_svref(cl_object x, cl_object index); +extern ECL_API cl_object si_svset(cl_object x, cl_object index, cl_object v); +extern ECL_API cl_object cl_array_has_fill_pointer_p(cl_object a); +extern ECL_API cl_object cl_fill_pointer(cl_object a); +extern ECL_API cl_object si_fill_pointer_set(cl_object a, cl_object fp); +extern ECL_API cl_object si_replace_array(cl_object old_obj, cl_object new_obj); +extern ECL_API cl_object cl_aref _ARGS((cl_narg narg, cl_object x, ...)); +extern ECL_API cl_object si_aset _ARGS((cl_narg narg, cl_object v, cl_object x, ...)); +extern ECL_API cl_object si_make_pure_array _ARGS((cl_narg narg, cl_object etype, cl_object adj, cl_object displ, cl_object disploff, ...)); -extern cl_index ecl_to_index(cl_object n); -extern cl_object ecl_aref(cl_object x, cl_index index); -extern cl_object ecl_aref1(cl_object v, cl_index index); -extern cl_object ecl_aset(cl_object x, cl_index index, cl_object value); -extern cl_object ecl_aset1(cl_object v, cl_index index, cl_object val); -extern void ecl_array_allocself(cl_object x); -extern cl_elttype ecl_array_elttype(cl_object x); -extern cl_elttype ecl_symbol_to_elttype(cl_object x); -extern cl_object ecl_elttype_to_symbol(cl_elttype aet); -extern void ecl_copy_subarray(cl_object dest, cl_index i0, cl_object orig, cl_index i1, cl_index l); -extern void ecl_reverse_subarray(cl_object dest, cl_index i0, cl_index i1); +extern ECL_API cl_index ecl_to_index(cl_object n); +extern ECL_API cl_object ecl_aref(cl_object x, cl_index index); +extern ECL_API cl_object ecl_aref1(cl_object v, cl_index index); +extern ECL_API cl_object ecl_aset(cl_object x, cl_index index, cl_object value); +extern ECL_API cl_object ecl_aset1(cl_object v, cl_index index, cl_object val); +extern ECL_API void ecl_array_allocself(cl_object x); +extern ECL_API cl_elttype ecl_array_elttype(cl_object x); +extern ECL_API cl_elttype ecl_symbol_to_elttype(cl_object x); +extern ECL_API cl_object ecl_elttype_to_symbol(cl_elttype aet); +extern ECL_API void ecl_copy_subarray(cl_object dest, cl_index i0, cl_object orig, cl_index i1, cl_index l); +extern ECL_API void ecl_reverse_subarray(cl_object dest, cl_index i0, cl_index i1); /* assignment.c */ -extern cl_object cl_set(cl_object var, cl_object val); -extern cl_object cl_makunbound(cl_object sym); -extern cl_object cl_fmakunbound(cl_object sym); -extern cl_object si_fset _ARGS((cl_narg narg, cl_object fun, cl_object def, ...)); -extern cl_object si_get_sysprop(cl_object sym, cl_object prop); -extern cl_object si_put_sysprop(cl_object sym, cl_object prop, cl_object value); -extern cl_object si_rem_sysprop(cl_object sym, cl_object prop); +extern ECL_API cl_object cl_set(cl_object var, cl_object val); +extern ECL_API cl_object cl_makunbound(cl_object sym); +extern ECL_API cl_object cl_fmakunbound(cl_object sym); +extern ECL_API cl_object si_fset _ARGS((cl_narg narg, cl_object fun, cl_object def, ...)); +extern ECL_API cl_object si_get_sysprop(cl_object sym, cl_object prop); +extern ECL_API cl_object si_put_sysprop(cl_object sym, cl_object prop, cl_object value); +extern ECL_API cl_object si_rem_sysprop(cl_object sym, cl_object prop); -extern void ecl_clear_compiler_properties(cl_object sym); +extern ECL_API void ecl_clear_compiler_properties(cl_object sym); /* big.c */ -extern cl_object big_register0_get(void); -extern cl_object big_register1_get(void); -extern cl_object big_register2_get(void); -extern cl_object big_register_copy(cl_object x); -extern cl_object big_register_normalize(cl_object x); -extern void big_register_free(cl_object x); -extern cl_object bignum1(cl_fixnum val); +extern ECL_API cl_object big_register0_get(void); +extern ECL_API cl_object big_register1_get(void); +extern ECL_API cl_object big_register2_get(void); +extern ECL_API cl_object big_register_copy(cl_object x); +extern ECL_API cl_object big_register_normalize(cl_object x); +extern ECL_API void big_register_free(cl_object x); +extern ECL_API cl_object bignum1(cl_fixnum val); #ifdef WITH_GMP -extern cl_object bignum2(mp_limb_t hi, mp_limb_t lo); +extern ECL_API cl_object bignum2(mp_limb_t hi, mp_limb_t lo); #else /* WITH_GMP */ -extern cl_object bignum2(cl_fixnum hi, cl_fixnum lo); +extern ECL_API cl_object bignum2(cl_fixnum hi, cl_fixnum lo); #endif /* WITH_GMP */ -extern cl_object big_set_fixnum(cl_object x, cl_object fix); -extern cl_object big_copy(cl_object x); -extern cl_object big_minus(cl_object x); -extern cl_object big_plus(cl_object x, cl_object y); -extern cl_object big_normalize(cl_object x); -extern double big_to_double(cl_object x); +extern ECL_API cl_object big_set_fixnum(cl_object x, cl_object fix); +extern ECL_API cl_object big_copy(cl_object x); +extern ECL_API cl_object big_minus(cl_object x); +extern ECL_API cl_object big_plus(cl_object x, cl_object y); +extern ECL_API cl_object big_normalize(cl_object x); +extern ECL_API double big_to_double(cl_object x); /* cfun.c */ -extern cl_object si_compiled_function_name(cl_object fun); -extern cl_object si_compiled_function_block(cl_object fun); -extern cl_object cl_function_lambda_expression(cl_object fun); +extern ECL_API cl_object si_compiled_function_name(cl_object fun); +extern ECL_API cl_object si_compiled_function_block(cl_object fun); +extern ECL_API cl_object cl_function_lambda_expression(cl_object fun); -extern cl_object cl_make_cfun(void *c_function, cl_object name, cl_object block, int narg); -extern cl_object cl_make_cfun_va(void *c_function, cl_object name, cl_object block); -extern cl_object cl_make_cclosure_va(void *c_function, cl_object env, cl_object block); -extern void cl_def_c_function(cl_object sym, void *c_function, int narg); -extern void cl_def_c_macro(cl_object sym, void *c_function, int narg); -extern void cl_def_c_function_va(cl_object sym, void *c_function); +extern ECL_API cl_object cl_make_cfun(void *c_function, cl_object name, cl_object block, int narg); +extern ECL_API cl_object cl_make_cfun_va(void *c_function, cl_object name, cl_object block); +extern ECL_API cl_object cl_make_cclosure_va(void *c_function, cl_object env, cl_object block); +extern ECL_API void cl_def_c_function(cl_object sym, void *c_function, int narg); +extern ECL_API void cl_def_c_macro(cl_object sym, void *c_function, int narg); +extern ECL_API void cl_def_c_function_va(cl_object sym, void *c_function); /* character.c */ -extern cl_object cl_digit_char_p _ARGS((cl_narg narg, cl_object c, ...)); -extern cl_object cl_charE _ARGS((cl_narg narg, cl_object c, ...)); -extern cl_object cl_charNE _ARGS((cl_narg narg, ...)); -extern cl_object cl_charL _ARGS((cl_narg narg, ...)); -extern cl_object cl_charG _ARGS((cl_narg narg, ...)); -extern cl_object cl_charLE _ARGS((cl_narg narg, ...)); -extern cl_object cl_charGE _ARGS((cl_narg narg, ...)); -extern cl_object cl_char_equal _ARGS((cl_narg narg, cl_object c, ...)); -extern cl_object cl_char_not_equal _ARGS((cl_narg narg, ...)); -extern cl_object cl_char_lessp _ARGS((cl_narg narg, ...)); -extern cl_object cl_char_greaterp _ARGS((cl_narg narg, ...)); -extern cl_object cl_char_not_greaterp _ARGS((cl_narg narg, ...)); -extern cl_object cl_char_not_lessp _ARGS((cl_narg narg, ...)); -extern cl_object cl_digit_char _ARGS((cl_narg narg, cl_object w, ...)); +extern ECL_API cl_object cl_digit_char_p _ARGS((cl_narg narg, cl_object c, ...)); +extern ECL_API cl_object cl_charE _ARGS((cl_narg narg, cl_object c, ...)); +extern ECL_API cl_object cl_charNE _ARGS((cl_narg narg, ...)); +extern ECL_API cl_object cl_charL _ARGS((cl_narg narg, ...)); +extern ECL_API cl_object cl_charG _ARGS((cl_narg narg, ...)); +extern ECL_API cl_object cl_charLE _ARGS((cl_narg narg, ...)); +extern ECL_API cl_object cl_charGE _ARGS((cl_narg narg, ...)); +extern ECL_API cl_object cl_char_equal _ARGS((cl_narg narg, cl_object c, ...)); +extern ECL_API cl_object cl_char_not_equal _ARGS((cl_narg narg, ...)); +extern ECL_API cl_object cl_char_lessp _ARGS((cl_narg narg, ...)); +extern ECL_API cl_object cl_char_greaterp _ARGS((cl_narg narg, ...)); +extern ECL_API cl_object cl_char_not_greaterp _ARGS((cl_narg narg, ...)); +extern ECL_API cl_object cl_char_not_lessp _ARGS((cl_narg narg, ...)); +extern ECL_API cl_object cl_digit_char _ARGS((cl_narg narg, cl_object w, ...)); -extern cl_object cl_alpha_char_p(cl_object c); -extern cl_object cl_alphanumericp(cl_object c); -extern cl_object cl_both_case_p(cl_object c); -extern cl_object cl_char_code(cl_object c); -extern cl_object cl_char_downcase(cl_object c); -extern cl_object cl_char_int(cl_object c); -extern cl_object cl_char_name(cl_object c); -extern cl_object cl_char_upcase(cl_object c); -extern cl_object cl_character(cl_object x); -extern cl_object cl_code_char(cl_object c); -extern cl_object cl_graphic_char_p(cl_object c); -extern cl_object cl_lower_case_p(cl_object c); -extern cl_object cl_name_char(cl_object s); -extern cl_object cl_standard_char_p(cl_object c); -extern cl_object cl_upper_case_p(cl_object c); +extern ECL_API cl_object cl_alpha_char_p(cl_object c); +extern ECL_API cl_object cl_alphanumericp(cl_object c); +extern ECL_API cl_object cl_both_case_p(cl_object c); +extern ECL_API cl_object cl_char_code(cl_object c); +extern ECL_API cl_object cl_char_downcase(cl_object c); +extern ECL_API cl_object cl_char_int(cl_object c); +extern ECL_API cl_object cl_char_name(cl_object c); +extern ECL_API cl_object cl_char_upcase(cl_object c); +extern ECL_API cl_object cl_character(cl_object x); +extern ECL_API cl_object cl_code_char(cl_object c); +extern ECL_API cl_object cl_graphic_char_p(cl_object c); +extern ECL_API cl_object cl_lower_case_p(cl_object c); +extern ECL_API cl_object cl_name_char(cl_object s); +extern ECL_API cl_object cl_standard_char_p(cl_object c); +extern ECL_API cl_object cl_upper_case_p(cl_object c); -extern bool ecl_alpha_char_p(cl_index c); -extern bool ecl_alphanumericp(cl_index c); -extern bool ecl_both_case_p(cl_index c); -extern cl_index ecl_char_downcase(cl_index c); -extern cl_index ecl_char_upcase(cl_index c); -extern bool ecl_graphic_char_p(cl_index c); -extern bool ecl_lower_case_p(cl_index c); -extern bool ecl_standard_char_p(cl_index c); -extern bool ecl_base_char_p(cl_index c); -extern bool ecl_upper_case_p(cl_index c); +extern ECL_API bool ecl_alpha_char_p(cl_index c); +extern ECL_API bool ecl_alphanumericp(cl_index c); +extern ECL_API bool ecl_both_case_p(cl_index c); +extern ECL_API cl_index ecl_char_downcase(cl_index c); +extern ECL_API cl_index ecl_char_upcase(cl_index c); +extern ECL_API bool ecl_graphic_char_p(cl_index c); +extern ECL_API bool ecl_lower_case_p(cl_index c); +extern ECL_API bool ecl_standard_char_p(cl_index c); +extern ECL_API bool ecl_base_char_p(cl_index c); +extern ECL_API bool ecl_upper_case_p(cl_index c); -extern int ecl_base_string_case(cl_object s); -extern cl_fixnum ecl_char_code(cl_object c); -extern int ecl_base_char_code(cl_object c); -extern int ecl_digitp(int i, int r); -extern bool ecl_char_eq(cl_object x, cl_object y); -extern int ecl_char_cmp(cl_object x, cl_object y); -extern bool ecl_char_equal(cl_object x, cl_object y); -extern int ecl_char_compare(cl_object x, cl_object y); -extern short ecl_digit_char(cl_fixnum w, cl_fixnum r); +extern ECL_API int ecl_base_string_case(cl_object s); +extern ECL_API cl_fixnum ecl_char_code(cl_object c); +extern ECL_API int ecl_base_char_code(cl_object c); +extern ECL_API int ecl_digitp(int i, int r); +extern ECL_API bool ecl_char_eq(cl_object x, cl_object y); +extern ECL_API int ecl_char_cmp(cl_object x, cl_object y); +extern ECL_API bool ecl_char_equal(cl_object x, cl_object y); +extern ECL_API int ecl_char_compare(cl_object x, cl_object y); +extern ECL_API short ecl_digit_char(cl_fixnum w, cl_fixnum r); /* clos.c */ #ifdef CLOS -extern cl_object cl_find_class _ARGS((cl_narg narg, cl_object name, ...)); -extern cl_object cl_class_of(cl_object x); +extern ECL_API cl_object cl_find_class _ARGS((cl_narg narg, cl_object name, ...)); +extern ECL_API cl_object cl_class_of(cl_object x); #endif /* cmpaux.c */ -extern cl_object si_specialp(cl_object sym); +extern ECL_API cl_object si_specialp(cl_object sym); -extern cl_fixnum ecl_ifloor(cl_fixnum x, cl_fixnum y); -extern cl_fixnum ecl_imod(cl_fixnum x, cl_fixnum y); -extern char ecl_to_char(cl_object x); -extern cl_fixnum ecl_to_fixnum(cl_object x); -extern cl_index ecl_to_unsigned_integer(cl_object x); -extern float ecl_to_float(cl_object x); -extern double ecl_to_double(cl_object x); -extern int ecl_aref_bv(cl_object x, cl_index index); -extern int ecl_aset_bv(cl_object x, cl_index index, int value); -extern void cl_throw(cl_object tag) /*__attribute__((noreturn))*/; -extern void cl_return_from(cl_object block_id, cl_object block_name) /*__attribute__((noreturn))*/; -extern void cl_go(cl_object tag_id, cl_object label) /*__attribute__((noreturn))*/; -extern void cl_parse_key(cl_va_list args, int nkey, cl_object *keys, cl_object *vars, cl_object *rest, bool allow_other_keys); -extern cl_object cl_grab_rest_args(cl_va_list args); +extern ECL_API cl_fixnum ecl_ifloor(cl_fixnum x, cl_fixnum y); +extern ECL_API cl_fixnum ecl_imod(cl_fixnum x, cl_fixnum y); +extern ECL_API char ecl_to_char(cl_object x); +extern ECL_API cl_fixnum ecl_to_fixnum(cl_object x); +extern ECL_API cl_index ecl_to_unsigned_integer(cl_object x); +extern ECL_API float ecl_to_float(cl_object x); +extern ECL_API double ecl_to_double(cl_object x); +extern ECL_API int ecl_aref_bv(cl_object x, cl_index index); +extern ECL_API int ecl_aset_bv(cl_object x, cl_index index, int value); +extern ECL_API void cl_throw(cl_object tag) /*__attribute__((noreturn))*/; +extern ECL_API void cl_return_from(cl_object block_id, cl_object block_name) /*__attribute__((noreturn))*/; +extern ECL_API void cl_go(cl_object tag_id, cl_object label) /*__attribute__((noreturn))*/; +extern ECL_API void cl_parse_key(cl_va_list args, int nkey, cl_object *keys, cl_object *vars, cl_object *rest, bool allow_other_keys); +extern ECL_API cl_object cl_grab_rest_args(cl_va_list args); /* compiler.c */ -extern cl_object si_macrolet_function(cl_object form, cl_object env); -extern cl_object si_process_lambda_list(cl_object lambda_list, cl_object context); -extern cl_object si_process_lambda(cl_object lambda); -extern cl_object si_make_lambda(cl_object name, cl_object body); -extern cl_object si_function_block_name(cl_object name); -extern cl_object si_valid_function_name_p(cl_object name); -extern cl_object si_process_declarations _ARGS((cl_narg narg, cl_object body, ...)); +extern ECL_API cl_object si_macrolet_function(cl_object form, cl_object env); +extern ECL_API cl_object si_process_lambda_list(cl_object lambda_list, cl_object context); +extern ECL_API cl_object si_process_lambda(cl_object lambda); +extern ECL_API cl_object si_make_lambda(cl_object name, cl_object body); +extern ECL_API cl_object si_function_block_name(cl_object name); +extern ECL_API cl_object si_valid_function_name_p(cl_object name); +extern ECL_API cl_object si_process_declarations _ARGS((cl_narg narg, cl_object body, ...)); -extern cl_object si_eval_with_env _ARGS((cl_narg narg, cl_object form, ...)); +extern ECL_API cl_object si_eval_with_env _ARGS((cl_narg narg, cl_object form, ...)); /* interpreter.c */ -extern cl_object si_interpreter_stack _ARGS((cl_narg narg)); -extern void ecl_stack_frame_reserve(cl_object f, cl_index size); -extern void ecl_stack_frame_push(cl_object f, cl_object o); -extern void ecl_stack_frame_push_values(cl_object f); -extern void ecl_stack_frame_push_va_list(cl_object f, cl_va_list args); -extern void ecl_stack_frame_close(cl_object f); -extern cl_object ecl_stack_frame_pop_values(cl_object f); -extern cl_object ecl_stack_frame_elt(cl_object f, cl_index n); -extern void ecl_stack_frame_elt_set(cl_object f, cl_index n, cl_object o); -extern cl_object ecl_apply_from_stack_frame(cl_object f, cl_object o); +extern ECL_API cl_object si_interpreter_stack _ARGS((cl_narg narg)); +extern ECL_API void ecl_stack_frame_reserve(cl_object f, cl_index size); +extern ECL_API void ecl_stack_frame_push(cl_object f, cl_object o); +extern ECL_API void ecl_stack_frame_push_values(cl_object f); +extern ECL_API void ecl_stack_frame_push_va_list(cl_object f, cl_va_list args); +extern ECL_API void ecl_stack_frame_close(cl_object f); +extern ECL_API cl_object ecl_stack_frame_pop_values(cl_object f); +extern ECL_API cl_object ecl_stack_frame_elt(cl_object f, cl_index n); +extern ECL_API void ecl_stack_frame_elt_set(cl_object f, cl_index n, cl_object o); +extern ECL_API cl_object ecl_apply_from_stack_frame(cl_object f, cl_object o); #define si_apply_from_stack_frame ecl_apply_from_stack_frame -extern void cl_stack_push(cl_object o); -extern cl_object cl_stack_pop(void); -extern cl_index cl_stack_index(void); -extern void cl_stack_set_size(cl_index new_size); -extern void cl_stack_set_index(cl_index sp); -extern void cl_stack_pop_n(cl_index n); -extern void cl_stack_insert(cl_index where, cl_index n); -extern cl_index cl_stack_push_list(cl_object list); -extern cl_index cl_stack_push_va_list(cl_va_list args); -extern void cl_stack_push_n(cl_index n, cl_object *args); -extern cl_index cl_stack_push_values(void); -extern void cl_stack_pop_values(cl_index n); +extern ECL_API void cl_stack_push(cl_object o); +extern ECL_API cl_object cl_stack_pop(void); +extern ECL_API cl_index cl_stack_index(void); +extern ECL_API void cl_stack_set_size(cl_index new_size); +extern ECL_API void cl_stack_set_index(cl_index sp); +extern ECL_API void cl_stack_pop_n(cl_index n); +extern ECL_API void cl_stack_insert(cl_index where, cl_index n); +extern ECL_API cl_index cl_stack_push_list(cl_object list); +extern ECL_API cl_index cl_stack_push_va_list(cl_va_list args); +extern ECL_API void cl_stack_push_n(cl_index n, cl_object *args); +extern ECL_API cl_index cl_stack_push_values(void); +extern ECL_API void cl_stack_pop_values(cl_index n); -extern cl_object ecl_apply_lambda(cl_object frame, cl_object fun); -extern void *ecl_interpret(cl_object bytecodes, void *pc); +extern ECL_API cl_object ecl_apply_lambda(cl_object frame, cl_object fun); +extern ECL_API void *ecl_interpret(cl_object bytecodes, void *pc); /* disassembler.c */ -extern cl_object si_bc_disassemble(cl_object v); -extern cl_object si_bc_split(cl_object v); +extern ECL_API cl_object si_bc_disassemble(cl_object v); +extern ECL_API cl_object si_bc_split(cl_object v); /* error.c */ -extern cl_object cl_error _ARGS((cl_narg narg, cl_object eformat, ...)) /*__attribute__((noreturn))*/; -extern cl_object cl_cerror _ARGS((cl_narg narg, cl_object cformat, cl_object eformat, ...)); +extern ECL_API cl_object cl_error _ARGS((cl_narg narg, cl_object eformat, ...)) /*__attribute__((noreturn))*/; +extern ECL_API cl_object cl_cerror _ARGS((cl_narg narg, cl_object cformat, cl_object eformat, ...)); -extern void ecl_internal_error(const char *s) /*__attribute__((noreturn))*/; -extern void ecl_cs_overflow(void) /*__attribute__((noreturn))*/; -extern void FEprogram_error(const char *s, int narg, ...) /*__attribute__((noreturn))*/; -extern void FEcontrol_error(const char *s, int narg, ...) /*__attribute__((noreturn))*/; -extern void FEreader_error(const char *s, cl_object stream, int narg, ...) /*__attribute__((noreturn))*/; +extern ECL_API void ecl_internal_error(const char *s) /*__attribute__((noreturn))*/; +extern ECL_API void ecl_cs_overflow(void) /*__attribute__((noreturn))*/; +extern ECL_API void FEprogram_error(const char *s, int narg, ...) /*__attribute__((noreturn))*/; +extern ECL_API void FEcontrol_error(const char *s, int narg, ...) /*__attribute__((noreturn))*/; +extern ECL_API void FEreader_error(const char *s, cl_object stream, int narg, ...) /*__attribute__((noreturn))*/; #define FEparse_error FEreader_error -extern void FEerror(const char *s, int narg, ...) /*__attribute__((noreturn))*/; -extern void FEcannot_open(cl_object fn) /*__attribute__((noreturn))*/; -extern void FEend_of_file(cl_object strm) /*__attribute__((noreturn))*/; -extern void FEclosed_stream(cl_object strm) /*__attribute__ ((noreturn))*/; -extern void FEwrong_type_argument(cl_object type, cl_object value) /*__attribute__((noreturn))*/; -extern void FEwrong_num_arguments(cl_object fun) /*__attribute__((noreturn))*/; -extern void FEwrong_num_arguments_anonym(void) /*__attribute__((noreturn))*/; -extern void FEunbound_variable(cl_object sym) /*__attribute__((noreturn))*/; -extern void FEinvalid_macro_call(cl_object obj) /*__attribute__((noreturn))*/; -extern void FEinvalid_variable(const char *s, cl_object obj) /*__attribute__((noreturn))*/; -extern void FEassignment_to_constant(cl_object v) /*__attribute__((noreturn))*/; -extern void FEundefined_function(cl_object fname) /*__attribute__((noreturn))*/; -extern void FEinvalid_function(cl_object obj) /*__attribute__((noreturn))*/; -extern void FEinvalid_function_name(cl_object obj) /*__attribute__((noreturn))*/; -extern cl_object CEerror(cl_object c, const char *err_str, int narg, ...); -extern void FEillegal_index(cl_object x, cl_object i); -extern void FEtype_error_symbol(cl_object obj) /*__attribute__((noreturn))*/; -extern void FElibc_error(const char *msg, int narg, ...) /*__attribute__((noreturn))*/; +extern ECL_API void FEerror(const char *s, int narg, ...) /*__attribute__((noreturn))*/; +extern ECL_API void FEcannot_open(cl_object fn) /*__attribute__((noreturn))*/; +extern ECL_API void FEend_of_file(cl_object strm) /*__attribute__((noreturn))*/; +extern ECL_API void FEclosed_stream(cl_object strm) /*__attribute__ ((noreturn))*/; +extern ECL_API void FEwrong_type_argument(cl_object type, cl_object value) /*__attribute__((noreturn))*/; +extern ECL_API void FEwrong_num_arguments(cl_object fun) /*__attribute__((noreturn))*/; +extern ECL_API void FEwrong_num_arguments_anonym(void) /*__attribute__((noreturn))*/; +extern ECL_API void FEunbound_variable(cl_object sym) /*__attribute__((noreturn))*/; +extern ECL_API void FEinvalid_macro_call(cl_object obj) /*__attribute__((noreturn))*/; +extern ECL_API void FEinvalid_variable(const char *s, cl_object obj) /*__attribute__((noreturn))*/; +extern ECL_API void FEassignment_to_constant(cl_object v) /*__attribute__((noreturn))*/; +extern ECL_API void FEundefined_function(cl_object fname) /*__attribute__((noreturn))*/; +extern ECL_API void FEinvalid_function(cl_object obj) /*__attribute__((noreturn))*/; +extern ECL_API void FEinvalid_function_name(cl_object obj) /*__attribute__((noreturn))*/; +extern ECL_API cl_object CEerror(cl_object c, const char *err_str, int narg, ...); +extern ECL_API void FEillegal_index(cl_object x, cl_object i); +extern ECL_API void FEtype_error_symbol(cl_object obj) /*__attribute__((noreturn))*/; +extern ECL_API void FElibc_error(const char *msg, int narg, ...) /*__attribute__((noreturn))*/; #if defined(mingw32) || defined(_MSC_VER) -extern void FEwin32_error(const char *msg, int narg, ...) /*__attribute__((noreturn))*/; +extern ECL_API void FEwin32_error(const char *msg, int narg, ...) /*__attribute__((noreturn))*/; #endif /* eval.c */ -extern cl_object cl_funcall _ARGS((cl_narg narg, cl_object fun, ...)); -extern cl_object cl_apply _ARGS((cl_narg narg, cl_object fun, cl_object arg, ...)); -extern cl_object si_safe_eval _ARGS((cl_narg narg, cl_object form, cl_object env, cl_object value, ...)); +extern ECL_API cl_object cl_funcall _ARGS((cl_narg narg, cl_object fun, ...)); +extern ECL_API cl_object cl_apply _ARGS((cl_narg narg, cl_object fun, cl_object arg, ...)); +extern ECL_API cl_object si_safe_eval _ARGS((cl_narg narg, cl_object form, cl_object env, cl_object value, ...)); #define cl_safe_eval(form,env,value) si_safe_eval(3,form,env,value) #define cl_va_start(a,p,n,k) (va_start(a[0].args,p),a[0].narg=n,cl__va_start(a,k)) -extern void cl__va_start(cl_va_list args, int args_before); -extern void cl_va_copy(cl_va_list dest, cl_va_list orig); +extern ECL_API void cl__va_start(cl_va_list args, int args_before); +extern ECL_API void cl_va_copy(cl_va_list dest, cl_va_list orig); #define cl_va_end(args) (va_end((args)[0].args)) -extern cl_object cl_va_arg(cl_va_list args); +extern ECL_API cl_object cl_va_arg(cl_va_list args); -extern cl_object si_unlink_symbol(cl_object s); -extern cl_object cl_eval(cl_object form); -extern cl_object cl_constantp(cl_narg narg, cl_object arg, ...); +extern ECL_API cl_object si_unlink_symbol(cl_object s); +extern ECL_API cl_object cl_eval(cl_object form); +extern ECL_API cl_object cl_constantp(cl_narg narg, cl_object arg, ...); #define funcall cl_funcall -extern cl_object cl_apply_from_stack(cl_index narg, cl_object fun); -extern cl_object _ecl_link_call(cl_object sym, cl_objectfn *pLK, cl_object cblock, int narg, cl_va_list args); +extern ECL_API cl_object cl_apply_from_stack(cl_index narg, cl_object fun); +extern ECL_API cl_object _ecl_link_call(cl_object sym, cl_objectfn *pLK, cl_object cblock, int narg, cl_va_list args); /* ffi.c */ -extern cl_object si_allocate_foreign_data(cl_object tag, cl_object size); -extern cl_object si_foreign_data_address(cl_object f); -extern cl_object si_foreign_data_pointer(cl_object f, cl_object ndx, cl_object size, cl_object tag); -extern cl_object si_foreign_data_ref(cl_object f, cl_object ndx, cl_object size, cl_object tag); -extern cl_object si_foreign_data_ref_elt(cl_object f, cl_object ndx, cl_object tag); -extern cl_object si_foreign_data_set(cl_object f, cl_object ndx, cl_object value); -extern cl_object si_foreign_data_set_elt(cl_object f, cl_object ndx, cl_object tag, cl_object value); -extern cl_object si_foreign_data_tag(cl_object x); -extern cl_object si_foreign_data_recast(cl_object f, cl_object size, cl_object tag); -extern cl_object si_free_foreign_data(cl_object x); -extern cl_object si_make_foreign_data_from_array(cl_object x); -extern cl_object si_null_pointer_p(cl_object f); -extern cl_object si_size_of_foreign_elt_type(cl_object tag); -extern cl_object si_load_foreign_module(cl_object module); -extern cl_object si_find_foreign_symbol(cl_object var, cl_object module, cl_object type, cl_object size); -extern cl_object si_call_cfun(cl_narg, cl_object fun, cl_object return_type, cl_object arg_types, cl_object args, ...); -extern cl_object si_make_dynamic_callback(cl_narg, cl_object fun, cl_object sym, cl_object return_type, cl_object arg_types, ...); +extern ECL_API cl_object si_allocate_foreign_data(cl_object tag, cl_object size); +extern ECL_API cl_object si_foreign_data_address(cl_object f); +extern ECL_API cl_object si_foreign_data_pointer(cl_object f, cl_object ndx, cl_object size, cl_object tag); +extern ECL_API cl_object si_foreign_data_ref(cl_object f, cl_object ndx, cl_object size, cl_object tag); +extern ECL_API cl_object si_foreign_data_ref_elt(cl_object f, cl_object ndx, cl_object tag); +extern ECL_API cl_object si_foreign_data_set(cl_object f, cl_object ndx, cl_object value); +extern ECL_API cl_object si_foreign_data_set_elt(cl_object f, cl_object ndx, cl_object tag, cl_object value); +extern ECL_API cl_object si_foreign_data_tag(cl_object x); +extern ECL_API cl_object si_foreign_data_recast(cl_object f, cl_object size, cl_object tag); +extern ECL_API cl_object si_free_foreign_data(cl_object x); +extern ECL_API cl_object si_make_foreign_data_from_array(cl_object x); +extern ECL_API cl_object si_null_pointer_p(cl_object f); +extern ECL_API cl_object si_size_of_foreign_elt_type(cl_object tag); +extern ECL_API cl_object si_load_foreign_module(cl_object module); +extern ECL_API cl_object si_find_foreign_symbol(cl_object var, cl_object module, cl_object type, cl_object size); +extern ECL_API cl_object si_call_cfun(cl_narg, cl_object fun, cl_object return_type, cl_object arg_types, cl_object args, ...); +extern ECL_API cl_object si_make_dynamic_callback(cl_narg, cl_object fun, cl_object sym, cl_object return_type, cl_object arg_types, ...); -extern cl_object ecl_make_foreign_data(cl_object tag, cl_index size, void *data); -extern cl_object ecl_allocate_foreign_data(cl_object tag, cl_index size); -extern void *ecl_foreign_data_pointer_safe(cl_object f); -extern char *ecl_base_string_pointer_safe(cl_object f); -extern cl_object ecl_null_terminated_base_string(cl_object s); +extern ECL_API cl_object ecl_make_foreign_data(cl_object tag, cl_index size, void *data); +extern ECL_API cl_object ecl_allocate_foreign_data(cl_object tag, cl_index size); +extern ECL_API void *ecl_foreign_data_pointer_safe(cl_object f); +extern ECL_API char *ecl_base_string_pointer_safe(cl_object f); +extern ECL_API cl_object ecl_null_terminated_base_string(cl_object s); /* file.c */ @@ -558,64 +549,64 @@ extern cl_object ecl_null_terminated_base_string(cl_object s); #define ECL_LISTEN_AVAILABLE 1 #define ECL_LISTEN_EOF -1 -extern cl_object cl_make_synonym_stream(cl_object sym); -extern cl_object cl_synonym_stream_symbol(cl_object strm); -extern cl_object cl_make_two_way_stream(cl_object strm1, cl_object strm2); -extern cl_object cl_two_way_stream_input_stream(cl_object strm); -extern cl_object cl_two_way_stream_output_stream(cl_object strm); -extern cl_object cl_make_echo_stream(cl_object strm1, cl_object strm2); -extern cl_object cl_echo_stream_input_stream(cl_object strm); -extern cl_object cl_echo_stream_output_stream(cl_object strm); -extern cl_object cl_make_string_output_stream _ARGS((cl_narg narg, ...)); -extern cl_object cl_get_output_stream_string(cl_object strm); -extern cl_object cl_streamp(cl_object strm); -extern cl_object cl_input_stream_p(cl_object strm); -extern cl_object cl_output_stream_p(cl_object strm); -extern cl_object cl_stream_element_type(cl_object strm); -extern cl_object cl_stream_external_format(cl_object strm); -extern cl_object cl_file_length(cl_object strm); -extern cl_object si_get_string_input_stream_index(cl_object strm); -extern cl_object si_make_string_output_stream_from_string(cl_object strng); -extern cl_object si_copy_stream(cl_object in, cl_object out); -extern cl_object cl_open_stream_p(cl_object strm); -extern cl_object cl_make_broadcast_stream _ARGS((cl_narg narg, ...)); -extern cl_object cl_broadcast_stream_streams(cl_object strm); -extern cl_object cl_make_concatenated_stream _ARGS((cl_narg narg, ...)); -extern cl_object cl_concatenated_stream_streams(cl_object strm); -extern cl_object cl_make_string_input_stream _ARGS((cl_narg narg, cl_object strng, ...)); -extern cl_object cl_close _ARGS((cl_narg narg, cl_object strm, ...)); -extern cl_object cl_open _ARGS((cl_narg narg, cl_object filename, ...)); -extern cl_object cl_file_position _ARGS((cl_narg narg, cl_object file_stream, ...)); -extern cl_object cl_file_string_length(cl_object stream, cl_object string); -extern cl_object si_do_write_sequence(cl_object string, cl_object stream, cl_object start, cl_object end); -extern cl_object si_do_read_sequence(cl_object string, cl_object stream, cl_object start, cl_object end); -extern cl_object si_file_column(cl_object strm); -extern cl_object cl_interactive_stream_p(cl_object strm); -extern cl_object si_set_buffering_mode(cl_object strm, cl_object mode); +extern ECL_API cl_object cl_make_synonym_stream(cl_object sym); +extern ECL_API cl_object cl_synonym_stream_symbol(cl_object strm); +extern ECL_API cl_object cl_make_two_way_stream(cl_object strm1, cl_object strm2); +extern ECL_API cl_object cl_two_way_stream_input_stream(cl_object strm); +extern ECL_API cl_object cl_two_way_stream_output_stream(cl_object strm); +extern ECL_API cl_object cl_make_echo_stream(cl_object strm1, cl_object strm2); +extern ECL_API cl_object cl_echo_stream_input_stream(cl_object strm); +extern ECL_API cl_object cl_echo_stream_output_stream(cl_object strm); +extern ECL_API cl_object cl_make_string_output_stream _ARGS((cl_narg narg, ...)); +extern ECL_API cl_object cl_get_output_stream_string(cl_object strm); +extern ECL_API cl_object cl_streamp(cl_object strm); +extern ECL_API cl_object cl_input_stream_p(cl_object strm); +extern ECL_API cl_object cl_output_stream_p(cl_object strm); +extern ECL_API cl_object cl_stream_element_type(cl_object strm); +extern ECL_API cl_object cl_stream_external_format(cl_object strm); +extern ECL_API cl_object cl_file_length(cl_object strm); +extern ECL_API cl_object si_get_string_input_stream_index(cl_object strm); +extern ECL_API cl_object si_make_string_output_stream_from_string(cl_object strng); +extern ECL_API cl_object si_copy_stream(cl_object in, cl_object out); +extern ECL_API cl_object cl_open_stream_p(cl_object strm); +extern ECL_API cl_object cl_make_broadcast_stream _ARGS((cl_narg narg, ...)); +extern ECL_API cl_object cl_broadcast_stream_streams(cl_object strm); +extern ECL_API cl_object cl_make_concatenated_stream _ARGS((cl_narg narg, ...)); +extern ECL_API cl_object cl_concatenated_stream_streams(cl_object strm); +extern ECL_API cl_object cl_make_string_input_stream _ARGS((cl_narg narg, cl_object strng, ...)); +extern ECL_API cl_object cl_close _ARGS((cl_narg narg, cl_object strm, ...)); +extern ECL_API cl_object cl_open _ARGS((cl_narg narg, cl_object filename, ...)); +extern ECL_API cl_object cl_file_position _ARGS((cl_narg narg, cl_object file_stream, ...)); +extern ECL_API cl_object cl_file_string_length(cl_object stream, cl_object string); +extern ECL_API cl_object si_do_write_sequence(cl_object string, cl_object stream, cl_object start, cl_object end); +extern ECL_API cl_object si_do_read_sequence(cl_object string, cl_object stream, cl_object start, cl_object end); +extern ECL_API cl_object si_file_column(cl_object strm); +extern ECL_API cl_object cl_interactive_stream_p(cl_object strm); +extern ECL_API cl_object si_set_buffering_mode(cl_object strm, cl_object mode); -extern bool ecl_input_stream_p(cl_object strm); -extern bool ecl_output_stream_p(cl_object strm); -extern cl_object ecl_open_stream(cl_object fn, enum ecl_smmode smm, cl_object if_exists, cl_object if_does_not_exist, cl_fixnum byte_size, bool char_stream_p, bool use_header_p); -extern cl_object ecl_make_string_input_stream(cl_object strng, cl_index istart, cl_index iend); -extern cl_object ecl_make_string_output_stream(cl_index line_length); -extern cl_object ecl_read_byte(cl_object strm); -extern void ecl_write_byte(cl_object byte, cl_object strm); -extern int ecl_read_char_noeof(cl_object strm); -extern int ecl_read_char(cl_object strm); -extern void ecl_unread_char(int c, cl_object strm); -extern int ecl_peek_char(cl_object strm); -extern int ecl_write_char(int c, cl_object strm); -extern void writestr_stream(const char *s, cl_object strm); +extern ECL_API bool ecl_input_stream_p(cl_object strm); +extern ECL_API bool ecl_output_stream_p(cl_object strm); +extern ECL_API cl_object ecl_open_stream(cl_object fn, enum ecl_smmode smm, cl_object if_exists, cl_object if_does_not_exist, cl_fixnum byte_size, bool char_stream_p, bool use_header_p); +extern ECL_API cl_object ecl_make_string_input_stream(cl_object strng, cl_index istart, cl_index iend); +extern ECL_API cl_object ecl_make_string_output_stream(cl_index line_length); +extern ECL_API cl_object ecl_read_byte(cl_object strm); +extern ECL_API void ecl_write_byte(cl_object byte, cl_object strm); +extern ECL_API int ecl_read_char_noeof(cl_object strm); +extern ECL_API int ecl_read_char(cl_object strm); +extern ECL_API void ecl_unread_char(int c, cl_object strm); +extern ECL_API int ecl_peek_char(cl_object strm); +extern ECL_API int ecl_write_char(int c, cl_object strm); +extern ECL_API void writestr_stream(const char *s, cl_object strm); #define ecl_finish_output(x) ecl_force_output(x) -extern void ecl_force_output(cl_object strm); -extern void ecl_clear_input(cl_object strm); -extern void ecl_clear_output(cl_object strm); -extern bool ecl_listen_stream(cl_object strm); -extern cl_object ecl_file_position(cl_object strm); -extern cl_object ecl_file_position_set(cl_object strm, cl_object disp); -extern int ecl_file_column(cl_object strm); -extern cl_object ecl_make_stream_from_fd(cl_object host, int fd, enum ecl_smmode smm); -extern int ecl_stream_to_handle(cl_object s, bool output); +extern ECL_API void ecl_force_output(cl_object strm); +extern ECL_API void ecl_clear_input(cl_object strm); +extern ECL_API void ecl_clear_output(cl_object strm); +extern ECL_API bool ecl_listen_stream(cl_object strm); +extern ECL_API cl_object ecl_file_position(cl_object strm); +extern ECL_API cl_object ecl_file_position_set(cl_object strm, cl_object disp); +extern ECL_API int ecl_file_column(cl_object strm); +extern ECL_API cl_object ecl_make_stream_from_fd(cl_object host, int fd, enum ecl_smmode smm); +extern ECL_API int ecl_stream_to_handle(cl_object s, bool output); /* finalize.c */ @@ -624,345 +615,345 @@ cl_object si_set_finalizer(cl_object o, cl_object finalizer); /* format.c */ -extern cl_object cl_format _ARGS((cl_narg narg, cl_object stream, cl_object string, ...)); +extern ECL_API cl_object cl_format _ARGS((cl_narg narg, cl_object stream, cl_object string, ...)); /* gbc.c */ #if !defined(GBC_BOEHM) -extern cl_object si_room_report _ARGS((cl_narg narg)); -extern cl_object si_reset_gc_count _ARGS((cl_narg narg)); -extern cl_object si_gc_time _ARGS((cl_narg narg)); -extern cl_object si_gc(cl_object area); +extern ECL_API cl_object si_room_report _ARGS((cl_narg narg)); +extern ECL_API cl_object si_reset_gc_count _ARGS((cl_narg narg)); +extern ECL_API cl_object si_gc_time _ARGS((cl_narg narg)); +extern ECL_API cl_object si_gc(cl_object area); #define GC_enabled() GC_enable #define GC_enable() GC_enable = TRUE; #define GC_disable() GC_enable = FALSE; -extern bool GC_enable; -extern cl_object (*GC_enter_hook)(void); -extern cl_object (*GC_exit_hook)(void); -extern void ecl_register_root(cl_object *p); -extern void ecl_gc(cl_type t); +extern ECL_API bool GC_enable; +extern ECL_API cl_object (*GC_enter_hook)(void); +extern ECL_API cl_object (*GC_exit_hook)(void); +extern ECL_API void ecl_register_root(cl_object *p); +extern ECL_API void ecl_gc(cl_type t); #endif #ifdef GBC_BOEHM #define GC_enabled() (!GC_dont_gc) #define GC_enable() GC_dont_gc = FALSE; #define GC_disable() GC_dont_gc = TRUE; -extern void ecl_register_root(cl_object *p); +extern ECL_API void ecl_register_root(cl_object *p); #endif /* GBC_BOEHM */ /* gfun.c */ #ifdef CLOS -extern void _ecl_set_method_hash_size(struct cl_env_struct *env, cl_index size); -extern cl_object si_clear_gfun_hash(cl_object what); -extern cl_object clos_set_funcallable_instance_function(cl_object x, cl_object function_or_t); -extern cl_object si_generic_function_p(cl_object instance); +extern ECL_API void _ecl_set_method_hash_size(struct cl_env_struct *env, cl_index size); +extern ECL_API cl_object si_clear_gfun_hash(cl_object what); +extern ECL_API cl_object clos_set_funcallable_instance_function(cl_object x, cl_object function_or_t); +extern ECL_API cl_object si_generic_function_p(cl_object instance); -extern cl_object _ecl_standard_dispatch(cl_object frame, cl_object fun); +extern ECL_API cl_object _ecl_standard_dispatch(cl_object frame, cl_object fun); #endif /* CLOS */ /* hash.c */ -extern cl_object cl__make_hash_table(cl_object test, cl_object size, cl_object rehash_size, cl_object rehash_threshold, cl_object lockable); -extern cl_object cl_hash_table_p(cl_object ht); -extern cl_object si_hash_set(cl_object key, cl_object ht, cl_object val); -extern cl_object cl_remhash(cl_object key, cl_object ht); -extern cl_object cl_clrhash(cl_object ht); -extern cl_object cl_hash_table_count(cl_object ht); -extern cl_object cl_sxhash(cl_object key); -extern cl_object cl_maphash(cl_object fun, cl_object ht); -extern cl_object cl_hash_table_rehash_size(cl_object ht); -extern cl_object cl_hash_table_rehash_threshold(cl_object ht); -extern cl_object cl_hash_table_size(cl_object ht); -extern cl_object cl_hash_table_test(cl_object ht); -extern cl_object si_hash_table_iterator(cl_object ht); -extern cl_object cl_make_hash_table _ARGS((cl_narg narg, ...)); -extern cl_object cl_gethash _ARGS((cl_narg narg, cl_object key, cl_object ht, ...)); -extern cl_object si_copy_hash_table(cl_object orig); +extern ECL_API cl_object cl__make_hash_table(cl_object test, cl_object size, cl_object rehash_size, cl_object rehash_threshold, cl_object lockable); +extern ECL_API cl_object cl_hash_table_p(cl_object ht); +extern ECL_API cl_object si_hash_set(cl_object key, cl_object ht, cl_object val); +extern ECL_API cl_object cl_remhash(cl_object key, cl_object ht); +extern ECL_API cl_object cl_clrhash(cl_object ht); +extern ECL_API cl_object cl_hash_table_count(cl_object ht); +extern ECL_API cl_object cl_sxhash(cl_object key); +extern ECL_API cl_object cl_maphash(cl_object fun, cl_object ht); +extern ECL_API cl_object cl_hash_table_rehash_size(cl_object ht); +extern ECL_API cl_object cl_hash_table_rehash_threshold(cl_object ht); +extern ECL_API cl_object cl_hash_table_size(cl_object ht); +extern ECL_API cl_object cl_hash_table_test(cl_object ht); +extern ECL_API cl_object si_hash_table_iterator(cl_object ht); +extern ECL_API cl_object cl_make_hash_table _ARGS((cl_narg narg, ...)); +extern ECL_API cl_object cl_gethash _ARGS((cl_narg narg, cl_object key, cl_object ht, ...)); +extern ECL_API cl_object si_copy_hash_table(cl_object orig); -extern void ecl_sethash(cl_object key, cl_object hashtable, cl_object value); -extern cl_object ecl_gethash(cl_object key, cl_object hash); -extern cl_object ecl_gethash_safe(cl_object key, cl_object hash, cl_object def); -extern bool ecl_remhash(cl_object key, cl_object hash); -extern struct ecl_hashtable_entry *ecl_search_hash(cl_object key, cl_object hashtable); +extern ECL_API void ecl_sethash(cl_object key, cl_object hashtable, cl_object value); +extern ECL_API cl_object ecl_gethash(cl_object key, cl_object hash); +extern ECL_API cl_object ecl_gethash_safe(cl_object key, cl_object hash, cl_object def); +extern ECL_API bool ecl_remhash(cl_object key, cl_object hash); +extern ECL_API struct ecl_hashtable_entry *ecl_search_hash(cl_object key, cl_object hashtable); /* instance.c */ #ifdef CLOS -extern cl_object si_allocate_raw_instance(cl_object orig, cl_object clas, cl_object size); -extern cl_object si_instance_class(cl_object x); -extern cl_object si_instance_class_set(cl_object x, cl_object y); -extern cl_object si_instance_ref(cl_object x, cl_object index); -extern cl_object si_instance_ref_safe(cl_object x, cl_object index); -extern cl_object si_instance_set(cl_object x, cl_object index, cl_object value); -extern cl_object si_instancep(cl_object x); -extern cl_object si_unbound(void); -extern cl_object si_sl_boundp(cl_object x); -extern cl_object si_sl_makunbound(cl_object x, cl_object index); -extern cl_object si_instance_sig(cl_object x); -extern cl_object si_instance_sig_set(cl_object x); +extern ECL_API cl_object si_allocate_raw_instance(cl_object orig, cl_object clas, cl_object size); +extern ECL_API cl_object si_instance_class(cl_object x); +extern ECL_API cl_object si_instance_class_set(cl_object x, cl_object y); +extern ECL_API cl_object si_instance_ref(cl_object x, cl_object index); +extern ECL_API cl_object si_instance_ref_safe(cl_object x, cl_object index); +extern ECL_API cl_object si_instance_set(cl_object x, cl_object index, cl_object value); +extern ECL_API cl_object si_instancep(cl_object x); +extern ECL_API cl_object si_unbound(void); +extern ECL_API cl_object si_sl_boundp(cl_object x); +extern ECL_API cl_object si_sl_makunbound(cl_object x, cl_object index); +extern ECL_API cl_object si_instance_sig(cl_object x); +extern ECL_API cl_object si_instance_sig_set(cl_object x); -extern cl_object ecl_allocate_instance(cl_object clas, cl_index size); -extern cl_object ecl_instance_ref(cl_object x, cl_fixnum i); -extern cl_object ecl_instance_set(cl_object x, cl_fixnum i, cl_object v); -extern cl_object si_copy_instance(cl_object x); +extern ECL_API cl_object ecl_allocate_instance(cl_object clas, cl_index size); +extern ECL_API cl_object ecl_instance_ref(cl_object x, cl_fixnum i); +extern ECL_API cl_object ecl_instance_set(cl_object x, cl_fixnum i, cl_object v); +extern ECL_API cl_object si_copy_instance(cl_object x); -extern cl_object ecl_slot_value(cl_object x, const char *slot); -extern cl_object ecl_slot_value_set(cl_object x, const char *slot, cl_object y); +extern ECL_API cl_object ecl_slot_value(cl_object x, const char *slot); +extern ECL_API cl_object ecl_slot_value_set(cl_object x, const char *slot, cl_object y); #endif /* CLOS */ /* list.c */ -extern cl_object cl_car(cl_object x); -extern cl_object cl_cdr(cl_object x); -extern cl_object cl_caar(cl_object x); -extern cl_object cl_cadr(cl_object x); -extern cl_object cl_cdar(cl_object x); -extern cl_object cl_cddr(cl_object x); -extern cl_object cl_caaar(cl_object x); -extern cl_object cl_caadr(cl_object x); -extern cl_object cl_cadar(cl_object x); -extern cl_object cl_caddr(cl_object x); -extern cl_object cl_cdaar(cl_object x); -extern cl_object cl_cdadr(cl_object x); -extern cl_object cl_cddar(cl_object x); -extern cl_object cl_cdddr(cl_object x); -extern cl_object cl_caaaar(cl_object x); -extern cl_object cl_caaadr(cl_object x); -extern cl_object cl_caadar(cl_object x); -extern cl_object cl_caaddr(cl_object x); -extern cl_object cl_cadaar(cl_object x); -extern cl_object cl_cadadr(cl_object x); -extern cl_object cl_caddar(cl_object x); -extern cl_object cl_cadddr(cl_object x); -extern cl_object cl_cdaaar(cl_object x); -extern cl_object cl_cdaadr(cl_object x); -extern cl_object cl_cdadar(cl_object x); -extern cl_object cl_cdaddr(cl_object x); -extern cl_object cl_cddaar(cl_object x); -extern cl_object cl_cddadr(cl_object x); -extern cl_object cl_cdddar(cl_object x); -extern cl_object cl_cddddr(cl_object x); +extern ECL_API cl_object cl_car(cl_object x); +extern ECL_API cl_object cl_cdr(cl_object x); +extern ECL_API cl_object cl_caar(cl_object x); +extern ECL_API cl_object cl_cadr(cl_object x); +extern ECL_API cl_object cl_cdar(cl_object x); +extern ECL_API cl_object cl_cddr(cl_object x); +extern ECL_API cl_object cl_caaar(cl_object x); +extern ECL_API cl_object cl_caadr(cl_object x); +extern ECL_API cl_object cl_cadar(cl_object x); +extern ECL_API cl_object cl_caddr(cl_object x); +extern ECL_API cl_object cl_cdaar(cl_object x); +extern ECL_API cl_object cl_cdadr(cl_object x); +extern ECL_API cl_object cl_cddar(cl_object x); +extern ECL_API cl_object cl_cdddr(cl_object x); +extern ECL_API cl_object cl_caaaar(cl_object x); +extern ECL_API cl_object cl_caaadr(cl_object x); +extern ECL_API cl_object cl_caadar(cl_object x); +extern ECL_API cl_object cl_caaddr(cl_object x); +extern ECL_API cl_object cl_cadaar(cl_object x); +extern ECL_API cl_object cl_cadadr(cl_object x); +extern ECL_API cl_object cl_caddar(cl_object x); +extern ECL_API cl_object cl_cadddr(cl_object x); +extern ECL_API cl_object cl_cdaaar(cl_object x); +extern ECL_API cl_object cl_cdaadr(cl_object x); +extern ECL_API cl_object cl_cdadar(cl_object x); +extern ECL_API cl_object cl_cdaddr(cl_object x); +extern ECL_API cl_object cl_cddaar(cl_object x); +extern ECL_API cl_object cl_cddadr(cl_object x); +extern ECL_API cl_object cl_cdddar(cl_object x); +extern ECL_API cl_object cl_cddddr(cl_object x); #define cl_rest cl_cdr #define cl_first cl_car #define cl_second cl_cadr #define cl_third cl_caddr #define cl_fourth cl_cadddr -extern cl_object cl_fifth(cl_object x); -extern cl_object cl_sixth(cl_object x); -extern cl_object cl_seventh(cl_object x); -extern cl_object cl_eighth(cl_object x); -extern cl_object cl_ninth(cl_object x); -extern cl_object cl_tenth(cl_object x); -extern cl_object cl_endp(cl_object x); -extern cl_object cl_list_length(cl_object x); -extern cl_object cl_nth(cl_object n, cl_object x); -extern cl_object cl_nthcdr(cl_object n, cl_object x); -extern cl_object cl_copy_list(cl_object x); -extern cl_object cl_copy_alist(cl_object x); -extern cl_object cl_copy_tree(cl_object x); -extern cl_object cl_revappend(cl_object x, cl_object y); -extern cl_object cl_ldiff(cl_object x, cl_object y); -extern cl_object cl_rplaca(cl_object x, cl_object v); -extern cl_object cl_rplacd(cl_object x, cl_object v); -extern cl_object cl_tailp(cl_object y, cl_object x); -extern cl_object si_memq(cl_object x, cl_object l); -extern cl_object cl_nreconc(cl_object x, cl_object y); -extern cl_object cl_cons(cl_object x, cl_object y); -extern cl_object cl_acons(cl_object x, cl_object y, cl_object z); -extern cl_object cl_list _ARGS((cl_narg narg, ...)); -extern cl_object cl_listX _ARGS((cl_narg narg, ...)); -extern cl_object cl_append _ARGS((cl_narg narg, ...)); -extern cl_object cl_tree_equal _ARGS((cl_narg narg, cl_object x, cl_object y, ...)); -extern cl_object cl_last _ARGS((cl_narg narg, cl_object x, ...)); -extern cl_object cl_make_list _ARGS((cl_narg narg, cl_object size, ...)); -extern cl_object cl_nconc _ARGS((cl_narg narg, ...)); -extern cl_object cl_butlast _ARGS((cl_narg narg, cl_object lis, ...)); -extern cl_object cl_nbutlast _ARGS((cl_narg narg, cl_object lis, ...)); -extern cl_object cl_subst _ARGS((cl_narg narg, cl_object new_obj, cl_object old_obj, cl_object tree, ...)); -extern cl_object cl_nsubst _ARGS((cl_narg narg, cl_object new_obj, cl_object old_obj, cl_object tree, ...)); -extern cl_object cl_sublis _ARGS((cl_narg narg, cl_object alist, cl_object tree, ...)); -extern cl_object cl_nsublis _ARGS((cl_narg narg, cl_object alist, cl_object tree, ...)); -extern cl_object cl_member _ARGS((cl_narg narg, cl_object item, cl_object list, ...)); -extern cl_object si_member1 (cl_object item, cl_object list, cl_object test, cl_object test_not, cl_object key); -extern cl_object cl_adjoin _ARGS((cl_narg narg, cl_object item, cl_object list, ...)); -extern cl_object cl_pairlis _ARGS((cl_narg narg, cl_object keys, cl_object data, ...)); -extern cl_object cl_rassoc _ARGS((cl_narg narg, cl_object item, cl_object alist, ...)); -extern cl_object cl_assoc _ARGS((cl_narg narg, cl_object item, cl_object alist, ...)); +extern ECL_API cl_object cl_fifth(cl_object x); +extern ECL_API cl_object cl_sixth(cl_object x); +extern ECL_API cl_object cl_seventh(cl_object x); +extern ECL_API cl_object cl_eighth(cl_object x); +extern ECL_API cl_object cl_ninth(cl_object x); +extern ECL_API cl_object cl_tenth(cl_object x); +extern ECL_API cl_object cl_endp(cl_object x); +extern ECL_API cl_object cl_list_length(cl_object x); +extern ECL_API cl_object cl_nth(cl_object n, cl_object x); +extern ECL_API cl_object cl_nthcdr(cl_object n, cl_object x); +extern ECL_API cl_object cl_copy_list(cl_object x); +extern ECL_API cl_object cl_copy_alist(cl_object x); +extern ECL_API cl_object cl_copy_tree(cl_object x); +extern ECL_API cl_object cl_revappend(cl_object x, cl_object y); +extern ECL_API cl_object cl_ldiff(cl_object x, cl_object y); +extern ECL_API cl_object cl_rplaca(cl_object x, cl_object v); +extern ECL_API cl_object cl_rplacd(cl_object x, cl_object v); +extern ECL_API cl_object cl_tailp(cl_object y, cl_object x); +extern ECL_API cl_object si_memq(cl_object x, cl_object l); +extern ECL_API cl_object cl_nreconc(cl_object x, cl_object y); +extern ECL_API cl_object cl_cons(cl_object x, cl_object y); +extern ECL_API cl_object cl_acons(cl_object x, cl_object y, cl_object z); +extern ECL_API cl_object cl_list _ARGS((cl_narg narg, ...)); +extern ECL_API cl_object cl_listX _ARGS((cl_narg narg, ...)); +extern ECL_API cl_object cl_append _ARGS((cl_narg narg, ...)); +extern ECL_API cl_object cl_tree_equal _ARGS((cl_narg narg, cl_object x, cl_object y, ...)); +extern ECL_API cl_object cl_last _ARGS((cl_narg narg, cl_object x, ...)); +extern ECL_API cl_object cl_make_list _ARGS((cl_narg narg, cl_object size, ...)); +extern ECL_API cl_object cl_nconc _ARGS((cl_narg narg, ...)); +extern ECL_API cl_object cl_butlast _ARGS((cl_narg narg, cl_object lis, ...)); +extern ECL_API cl_object cl_nbutlast _ARGS((cl_narg narg, cl_object lis, ...)); +extern ECL_API cl_object cl_subst _ARGS((cl_narg narg, cl_object new_obj, cl_object old_obj, cl_object tree, ...)); +extern ECL_API cl_object cl_nsubst _ARGS((cl_narg narg, cl_object new_obj, cl_object old_obj, cl_object tree, ...)); +extern ECL_API cl_object cl_sublis _ARGS((cl_narg narg, cl_object alist, cl_object tree, ...)); +extern ECL_API cl_object cl_nsublis _ARGS((cl_narg narg, cl_object alist, cl_object tree, ...)); +extern ECL_API cl_object cl_member _ARGS((cl_narg narg, cl_object item, cl_object list, ...)); +extern ECL_API cl_object si_member1 (cl_object item, cl_object list, cl_object test, cl_object test_not, cl_object key); +extern ECL_API cl_object cl_adjoin _ARGS((cl_narg narg, cl_object item, cl_object list, ...)); +extern ECL_API cl_object cl_pairlis _ARGS((cl_narg narg, cl_object keys, cl_object data, ...)); +extern ECL_API cl_object cl_rassoc _ARGS((cl_narg narg, cl_object item, cl_object alist, ...)); +extern ECL_API cl_object cl_assoc _ARGS((cl_narg narg, cl_object item, cl_object alist, ...)); -extern cl_object ecl_list_length(cl_object x); -extern cl_object ecl_append(cl_object x, cl_object y); -extern bool ecl_endp(cl_object x); -extern cl_object ecl_nth(cl_fixnum n, cl_object x); -extern cl_object ecl_nthcdr(cl_fixnum n, cl_object x); -extern cl_object ecl_nconc(cl_object x, cl_object y); -extern bool ecl_member_eq(cl_object x, cl_object l); -extern cl_object ecl_memql(cl_object x, cl_object l); -extern cl_object ecl_member(cl_object x, cl_object l); -extern cl_object ecl_assq(cl_object x, cl_object l); -extern cl_object ecl_assql(cl_object x, cl_object l); -extern cl_object ecl_assoc(cl_object x, cl_object l); -extern cl_object ecl_assqlp(cl_object x, cl_object l); -extern cl_object ecl_remove_eq(cl_object x, cl_object l); -extern void ecl_delete_eq(cl_object x, cl_object *l); +extern ECL_API cl_object ecl_list_length(cl_object x); +extern ECL_API cl_object ecl_append(cl_object x, cl_object y); +extern ECL_API bool ecl_endp(cl_object x); +extern ECL_API cl_object ecl_nth(cl_fixnum n, cl_object x); +extern ECL_API cl_object ecl_nthcdr(cl_fixnum n, cl_object x); +extern ECL_API cl_object ecl_nconc(cl_object x, cl_object y); +extern ECL_API bool ecl_member_eq(cl_object x, cl_object l); +extern ECL_API cl_object ecl_memql(cl_object x, cl_object l); +extern ECL_API cl_object ecl_member(cl_object x, cl_object l); +extern ECL_API cl_object ecl_assq(cl_object x, cl_object l); +extern ECL_API cl_object ecl_assql(cl_object x, cl_object l); +extern ECL_API cl_object ecl_assoc(cl_object x, cl_object l); +extern ECL_API cl_object ecl_assqlp(cl_object x, cl_object l); +extern ECL_API cl_object ecl_remove_eq(cl_object x, cl_object l); +extern ECL_API void ecl_delete_eq(cl_object x, cl_object *l); /* load.c */ -extern cl_object ecl_library_open(cl_object filename, bool force_reload); -extern void *ecl_library_symbol(cl_object block, const char *symbol, bool lock); -extern cl_object ecl_library_error(cl_object block); -extern void ecl_library_close(cl_object block); -extern void ecl_library_close_all(void); -extern cl_object si_load_source(cl_object file, cl_object verbose, cl_object print); -extern cl_object si_load_binary(cl_object file, cl_object verbose, cl_object print); -extern cl_object cl_load _ARGS((cl_narg narg, cl_object pathname, ...)); +extern ECL_API cl_object ecl_library_open(cl_object filename, bool force_reload); +extern ECL_API void *ecl_library_symbol(cl_object block, const char *symbol, bool lock); +extern ECL_API cl_object ecl_library_error(cl_object block); +extern ECL_API void ecl_library_close(cl_object block); +extern ECL_API void ecl_library_close_all(void); +extern ECL_API cl_object si_load_source(cl_object file, cl_object verbose, cl_object print); +extern ECL_API cl_object si_load_binary(cl_object file, cl_object verbose, cl_object print); +extern ECL_API cl_object cl_load _ARGS((cl_narg narg, cl_object pathname, ...)); /* macros.c */ -extern cl_object cl_macroexpand _ARGS((cl_narg narg, cl_object form, ...)); -extern cl_object cl_macroexpand_1 _ARGS((cl_narg narg, cl_object form, ...)); -extern cl_object cl_macro_function _ARGS((cl_narg narg, cl_object sym, ...)); +extern ECL_API cl_object cl_macroexpand _ARGS((cl_narg narg, cl_object form, ...)); +extern ECL_API cl_object cl_macroexpand_1 _ARGS((cl_narg narg, cl_object form, ...)); +extern ECL_API cl_object cl_macro_function _ARGS((cl_narg narg, cl_object sym, ...)); /* main.c */ -extern cl_object si_argc(void); -extern cl_object si_argv(cl_object index); -extern cl_object si_getenv(cl_object var); -extern cl_object si_setenv(cl_object var, cl_object value); -extern cl_object si_pointer(cl_object x); -extern cl_object si_quit _ARGS((cl_narg narg, ...)) /*__attribute__((noreturn))*/; +extern ECL_API cl_object si_argc(void); +extern ECL_API cl_object si_argv(cl_object index); +extern ECL_API cl_object si_getenv(cl_object var); +extern ECL_API cl_object si_setenv(cl_object var, cl_object value); +extern ECL_API cl_object si_pointer(cl_object x); +extern ECL_API cl_object si_quit _ARGS((cl_narg narg, ...)) /*__attribute__((noreturn))*/; -extern bool ecl_booted; -extern const char *ecl_self; -extern int cl_boot(int argc, char **argv); -extern int cl_shutdown(void); +extern ECL_API bool ecl_booted; +extern ECL_API const char *ecl_self; +extern ECL_API int cl_boot(int argc, char **argv); +extern ECL_API int cl_shutdown(void); #if defined(_MSC_VER) || defined(mingw32) -extern void ecl_get_commandline_args(int* argc, char*** argv); +extern ECL_API void ecl_get_commandline_args(int* argc, char*** argv); #endif /* mapfun.c */ -extern cl_object cl_mapcar _ARGS((cl_narg narg, cl_object fun, ...)); -extern cl_object cl_maplist _ARGS((cl_narg narg, cl_object fun, ...)); -extern cl_object cl_mapc _ARGS((cl_narg narg, cl_object fun, ...)); -extern cl_object cl_mapl _ARGS((cl_narg narg, cl_object fun, ...)); -extern cl_object cl_mapcan _ARGS((cl_narg narg, cl_object fun, ...)); -extern cl_object cl_mapcon _ARGS((cl_narg narg, cl_object fun, ...)); +extern ECL_API cl_object cl_mapcar _ARGS((cl_narg narg, cl_object fun, ...)); +extern ECL_API cl_object cl_maplist _ARGS((cl_narg narg, cl_object fun, ...)); +extern ECL_API cl_object cl_mapc _ARGS((cl_narg narg, cl_object fun, ...)); +extern ECL_API cl_object cl_mapl _ARGS((cl_narg narg, cl_object fun, ...)); +extern ECL_API cl_object cl_mapcan _ARGS((cl_narg narg, cl_object fun, ...)); +extern ECL_API cl_object cl_mapcon _ARGS((cl_narg narg, cl_object fun, ...)); /* multival.c */ -extern cl_object cl_values_list(cl_object list); -extern cl_object cl_values _ARGS((cl_narg narg, ...)); +extern ECL_API cl_object cl_values_list(cl_object list); +extern ECL_API cl_object cl_values _ARGS((cl_narg narg, ...)); /* num_arith.c */ -extern cl_object cl_conjugate(cl_object c); -extern cl_object cl_1P(cl_object x); -extern cl_object cl_1M(cl_object x); -extern cl_object cl_X _ARGS((cl_narg narg, ...)); -extern cl_object cl_P _ARGS((cl_narg narg, ...)); -extern cl_object cl_M _ARGS((cl_narg narg, cl_object num, ...)); -extern cl_object cl_N _ARGS((cl_narg narg, cl_object num, ...)); -extern cl_object cl_gcd _ARGS((cl_narg narg, ...)); -extern cl_object cl_lcm _ARGS((cl_narg narg, ...)); +extern ECL_API cl_object cl_conjugate(cl_object c); +extern ECL_API cl_object cl_1P(cl_object x); +extern ECL_API cl_object cl_1M(cl_object x); +extern ECL_API cl_object cl_X _ARGS((cl_narg narg, ...)); +extern ECL_API cl_object cl_P _ARGS((cl_narg narg, ...)); +extern ECL_API cl_object cl_M _ARGS((cl_narg narg, cl_object num, ...)); +extern ECL_API cl_object cl_N _ARGS((cl_narg narg, cl_object num, ...)); +extern ECL_API cl_object cl_gcd _ARGS((cl_narg narg, ...)); +extern ECL_API cl_object cl_lcm _ARGS((cl_narg narg, ...)); -extern cl_object fixnum_times(cl_fixnum i, cl_fixnum j); -extern cl_object ecl_times(cl_object x, cl_object y); -extern cl_object number_to_complex(cl_object x); -extern cl_object ecl_plus(cl_object x, cl_object y); -extern cl_object ecl_minus(cl_object x, cl_object y); -extern cl_object ecl_negate(cl_object x); -extern cl_object ecl_divide(cl_object x, cl_object y); -extern cl_object ecl_integer_divide(cl_object x, cl_object y); -extern cl_object ecl_gcd(cl_object x, cl_object y); -extern cl_object ecl_one_plus(cl_object x); -extern cl_object ecl_one_minus(cl_object x); +extern ECL_API cl_object fixnum_times(cl_fixnum i, cl_fixnum j); +extern ECL_API cl_object ecl_times(cl_object x, cl_object y); +extern ECL_API cl_object number_to_complex(cl_object x); +extern ECL_API cl_object ecl_plus(cl_object x, cl_object y); +extern ECL_API cl_object ecl_minus(cl_object x, cl_object y); +extern ECL_API cl_object ecl_negate(cl_object x); +extern ECL_API cl_object ecl_divide(cl_object x, cl_object y); +extern ECL_API cl_object ecl_integer_divide(cl_object x, cl_object y); +extern ECL_API cl_object ecl_gcd(cl_object x, cl_object y); +extern ECL_API cl_object ecl_one_plus(cl_object x); +extern ECL_API cl_object ecl_one_minus(cl_object x); /* number.c */ -extern cl_fixnum fixint(cl_object x); -extern cl_index fixnnint(cl_object x); -extern cl_fixnum ecl_fixnum_in_range(cl_object fun, const char *what, cl_object value, +extern ECL_API cl_fixnum fixint(cl_object x); +extern ECL_API cl_index fixnnint(cl_object x); +extern ECL_API cl_fixnum ecl_fixnum_in_range(cl_object fun, const char *what, cl_object value, cl_fixnum min, cl_fixnum max); -extern cl_object ecl_make_integer(cl_fixnum i); -extern cl_object ecl_make_unsigned_integer(cl_index i); -extern cl_object ecl_make_ratio(cl_object num, cl_object den); -extern cl_object ecl_make_singlefloat(float f); -extern cl_object ecl_make_doublefloat(double f); -extern cl_object ecl_make_complex(cl_object r, cl_object i); -extern cl_object cl_rational(cl_object x); +extern ECL_API cl_object ecl_make_integer(cl_fixnum i); +extern ECL_API cl_object ecl_make_unsigned_integer(cl_index i); +extern ECL_API cl_object ecl_make_ratio(cl_object num, cl_object den); +extern ECL_API cl_object ecl_make_singlefloat(float f); +extern ECL_API cl_object ecl_make_doublefloat(double f); +extern ECL_API cl_object ecl_make_complex(cl_object r, cl_object i); +extern ECL_API cl_object cl_rational(cl_object x); #define cl_rationalize cl_rational -extern double ecl_to_double(cl_object x); +extern ECL_API double ecl_to_double(cl_object x); #define number_to_float(x) ((float)ecl_to_double(x)) #ifdef ECL_SHORT_FLOAT -extern cl_object make_shortfloat(float f); -extern float ecl_short_float(cl_object o); +extern ECL_API cl_object make_shortfloat(float f); +extern ECL_API float ecl_short_float(cl_object o); #endif #ifdef ECL_LONG_FLOAT -extern long double ecl_to_long_double(cl_object x); -extern cl_object make_longfloat(long double f); +extern ECL_API long double ecl_to_long_double(cl_object x); +extern ECL_API cl_object make_longfloat(long double f); #endif -extern cl_object double_to_integer(double d); -extern cl_object float_to_integer(float d); +extern ECL_API cl_object double_to_integer(double d); +extern ECL_API cl_object float_to_integer(float d); #ifdef ECL_LONG_FLOAT -extern cl_object long_double_to_integer(long double d); +extern ECL_API cl_object long_double_to_integer(long double d); #endif /* num_co.c */ -extern cl_object cl_numerator(cl_object x); -extern cl_object cl_denominator(cl_object x); -extern cl_object cl_mod(cl_object x, cl_object y); -extern cl_object cl_rem(cl_object x, cl_object y); -extern cl_object cl_decode_float(cl_object x); -extern cl_object cl_scale_float(cl_object x, cl_object y); -extern cl_object cl_float_radix(cl_object x); -extern cl_object cl_float_digits(cl_object x); -extern cl_object cl_float_precision(cl_object x); -extern cl_object cl_integer_decode_float(cl_object x); -extern cl_object cl_realpart(cl_object x); -extern cl_object cl_imagpart(cl_object x); -extern cl_object cl_float _ARGS((cl_narg narg, cl_object x, ...)); -extern cl_object cl_floor _ARGS((cl_narg narg, cl_object x, ...)); -extern cl_object cl_ceiling _ARGS((cl_narg narg, cl_object x, ...)); -extern cl_object cl_truncate _ARGS((cl_narg narg, cl_object x, ...)); -extern cl_object cl_round _ARGS((cl_narg narg, cl_object x, ...)); -extern cl_object cl_float_sign _ARGS((cl_narg narg, cl_object x, ...)); -extern cl_object cl_complex _ARGS((cl_narg narg, cl_object r, ...)); +extern ECL_API cl_object cl_numerator(cl_object x); +extern ECL_API cl_object cl_denominator(cl_object x); +extern ECL_API cl_object cl_mod(cl_object x, cl_object y); +extern ECL_API cl_object cl_rem(cl_object x, cl_object y); +extern ECL_API cl_object cl_decode_float(cl_object x); +extern ECL_API cl_object cl_scale_float(cl_object x, cl_object y); +extern ECL_API cl_object cl_float_radix(cl_object x); +extern ECL_API cl_object cl_float_digits(cl_object x); +extern ECL_API cl_object cl_float_precision(cl_object x); +extern ECL_API cl_object cl_integer_decode_float(cl_object x); +extern ECL_API cl_object cl_realpart(cl_object x); +extern ECL_API cl_object cl_imagpart(cl_object x); +extern ECL_API cl_object cl_float _ARGS((cl_narg narg, cl_object x, ...)); +extern ECL_API cl_object cl_floor _ARGS((cl_narg narg, cl_object x, ...)); +extern ECL_API cl_object cl_ceiling _ARGS((cl_narg narg, cl_object x, ...)); +extern ECL_API cl_object cl_truncate _ARGS((cl_narg narg, cl_object x, ...)); +extern ECL_API cl_object cl_round _ARGS((cl_narg narg, cl_object x, ...)); +extern ECL_API cl_object cl_float_sign _ARGS((cl_narg narg, cl_object x, ...)); +extern ECL_API cl_object cl_complex _ARGS((cl_narg narg, cl_object r, ...)); -extern cl_object ecl_floor1(cl_object x); -extern cl_object ecl_ceiling1(cl_object x); -extern cl_object ecl_truncate1(cl_object x); -extern cl_object ecl_round1(cl_object x); -extern cl_object ecl_floor2(cl_object x, cl_object y); -extern cl_object ecl_ceiling2(cl_object x, cl_object y); -extern cl_object ecl_truncate2(cl_object x, cl_object y); -extern cl_object ecl_round2(cl_object x, cl_object y); +extern ECL_API cl_object ecl_floor1(cl_object x); +extern ECL_API cl_object ecl_ceiling1(cl_object x); +extern ECL_API cl_object ecl_truncate1(cl_object x); +extern ECL_API cl_object ecl_round1(cl_object x); +extern ECL_API cl_object ecl_floor2(cl_object x, cl_object y); +extern ECL_API cl_object ecl_ceiling2(cl_object x, cl_object y); +extern ECL_API cl_object ecl_truncate2(cl_object x, cl_object y); +extern ECL_API cl_object ecl_round2(cl_object x, cl_object y); /* num_comp.c */ -extern cl_object cl_E _ARGS((cl_narg narg, cl_object num, ...)); -extern cl_object cl_NE _ARGS((cl_narg narg, ...)); -extern cl_object cl_L _ARGS((cl_narg narg, ...)); -extern cl_object cl_G _ARGS((cl_narg narg, ...)); -extern cl_object cl_GE _ARGS((cl_narg narg, ...)); -extern cl_object cl_LE _ARGS((cl_narg narg, ...)); -extern cl_object cl_max _ARGS((cl_narg narg, cl_object max, ...)); -extern cl_object cl_min _ARGS((cl_narg narg, cl_object min, ...)); +extern ECL_API cl_object cl_E _ARGS((cl_narg narg, cl_object num, ...)); +extern ECL_API cl_object cl_NE _ARGS((cl_narg narg, ...)); +extern ECL_API cl_object cl_L _ARGS((cl_narg narg, ...)); +extern ECL_API cl_object cl_G _ARGS((cl_narg narg, ...)); +extern ECL_API cl_object cl_GE _ARGS((cl_narg narg, ...)); +extern ECL_API cl_object cl_LE _ARGS((cl_narg narg, ...)); +extern ECL_API cl_object cl_max _ARGS((cl_narg narg, cl_object max, ...)); +extern ECL_API cl_object cl_min _ARGS((cl_narg narg, cl_object min, ...)); -extern int ecl_number_equalp(cl_object x, cl_object y); -extern int ecl_number_compare(cl_object x, cl_object y); +extern ECL_API int ecl_number_equalp(cl_object x, cl_object y); +extern ECL_API int ecl_number_compare(cl_object x, cl_object y); /* num_log.c */ @@ -984,557 +975,561 @@ extern int ecl_number_compare(cl_object x, cl_object y); #define ECL_BOOLNAND 016 #define ECL_BOOLSET 017 -extern cl_object cl_lognand(cl_object x, cl_object y); -extern cl_object cl_lognor(cl_object x, cl_object y); -extern cl_object cl_logandc1(cl_object x, cl_object y); -extern cl_object cl_logandc2(cl_object x, cl_object y); -extern cl_object cl_logorc1(cl_object x, cl_object y); -extern cl_object cl_logorc2(cl_object x, cl_object y); -extern cl_object cl_lognot(cl_object x); -extern cl_object cl_boole(cl_object o, cl_object x, cl_object y); -extern cl_object cl_logbitp(cl_object p, cl_object x); -extern cl_object cl_ash(cl_object x, cl_object y); -extern cl_object cl_logcount(cl_object x); -extern cl_object cl_integer_length(cl_object x); -extern cl_object si_bit_array_op(cl_object o, cl_object x, cl_object y, cl_object r); -extern cl_object cl_logior _ARGS((cl_narg narg, ...)); -extern cl_object cl_logxor _ARGS((cl_narg narg, ...)); -extern cl_object cl_logand _ARGS((cl_narg narg, ...)); -extern cl_object cl_logeqv _ARGS((cl_narg narg, ...)); +extern ECL_API cl_object cl_lognand(cl_object x, cl_object y); +extern ECL_API cl_object cl_lognor(cl_object x, cl_object y); +extern ECL_API cl_object cl_logandc1(cl_object x, cl_object y); +extern ECL_API cl_object cl_logandc2(cl_object x, cl_object y); +extern ECL_API cl_object cl_logorc1(cl_object x, cl_object y); +extern ECL_API cl_object cl_logorc2(cl_object x, cl_object y); +extern ECL_API cl_object cl_lognot(cl_object x); +extern ECL_API cl_object cl_boole(cl_object o, cl_object x, cl_object y); +extern ECL_API cl_object cl_logbitp(cl_object p, cl_object x); +extern ECL_API cl_object cl_ash(cl_object x, cl_object y); +extern ECL_API cl_object cl_logcount(cl_object x); +extern ECL_API cl_object cl_integer_length(cl_object x); +extern ECL_API cl_object si_bit_array_op(cl_object o, cl_object x, cl_object y, cl_object r); +extern ECL_API cl_object cl_logior _ARGS((cl_narg narg, ...)); +extern ECL_API cl_object cl_logxor _ARGS((cl_narg narg, ...)); +extern ECL_API cl_object cl_logand _ARGS((cl_narg narg, ...)); +extern ECL_API cl_object cl_logeqv _ARGS((cl_narg narg, ...)); -extern cl_object ecl_boole(int op, cl_object x, cl_object y); -extern cl_object ecl_ash(cl_object x, cl_fixnum w); -extern int ecl_fixnum_bit_length(cl_fixnum l); +extern ECL_API cl_object ecl_boole(int op, cl_object x, cl_object y); +extern ECL_API cl_object ecl_ash(cl_object x, cl_fixnum w); +extern ECL_API int ecl_fixnum_bit_length(cl_fixnum l); /* num_pred.c */ -extern cl_object cl_zerop(cl_object x); -extern cl_object cl_plusp(cl_object x); -extern cl_object cl_minusp(cl_object x); -extern cl_object cl_oddp(cl_object x); -extern cl_object cl_evenp(cl_object x); +extern ECL_API cl_object cl_zerop(cl_object x); +extern ECL_API cl_object cl_plusp(cl_object x); +extern ECL_API cl_object cl_minusp(cl_object x); +extern ECL_API cl_object cl_oddp(cl_object x); +extern ECL_API cl_object cl_evenp(cl_object x); -extern int ecl_zerop(cl_object x); -extern int ecl_plusp(cl_object x); -extern int ecl_minusp(cl_object x); -extern int ecl_oddp(cl_object x); -extern int ecl_evenp(cl_object x); +extern ECL_API int ecl_zerop(cl_object x); +extern ECL_API int ecl_plusp(cl_object x); +extern ECL_API int ecl_minusp(cl_object x); +extern ECL_API int ecl_oddp(cl_object x); +extern ECL_API int ecl_evenp(cl_object x); /* num_rand.c */ -extern cl_object cl_random_state_p(cl_object x); -extern cl_object cl_random _ARGS((cl_narg narg, cl_object x, ...)); -extern cl_object cl_make_random_state _ARGS((cl_narg narg, ...)); -extern cl_object ecl_make_random_state(cl_object rs); +extern ECL_API cl_object cl_random_state_p(cl_object x); +extern ECL_API cl_object cl_random _ARGS((cl_narg narg, cl_object x, ...)); +extern ECL_API cl_object cl_make_random_state _ARGS((cl_narg narg, ...)); +extern ECL_API cl_object ecl_make_random_state(cl_object rs); /* num_sfun.c */ -extern cl_fixnum ecl_fixnum_expt(cl_fixnum x, cl_fixnum y); -extern cl_object cl_exp(cl_object x); -extern cl_object cl_expt(cl_object x, cl_object y); -extern cl_object cl_sqrt(cl_object x); -extern cl_object cl_sin(cl_object x); -extern cl_object cl_cos(cl_object x); -extern cl_object cl_tan(cl_object x); -extern cl_object cl_sinh(cl_object x); -extern cl_object cl_cosh(cl_object x); -extern cl_object cl_tanh(cl_object x); -extern cl_object cl_atan _ARGS((cl_narg narg, cl_object x, ...)); -extern cl_object cl_log _ARGS((cl_narg narg, cl_object x, ...)); +extern ECL_API cl_fixnum ecl_fixnum_expt(cl_fixnum x, cl_fixnum y); +extern ECL_API cl_object cl_exp(cl_object x); +extern ECL_API cl_object cl_expt(cl_object x, cl_object y); +extern ECL_API cl_object cl_sqrt(cl_object x); +extern ECL_API cl_object cl_sin(cl_object x); +extern ECL_API cl_object cl_cos(cl_object x); +extern ECL_API cl_object cl_tan(cl_object x); +extern ECL_API cl_object cl_sinh(cl_object x); +extern ECL_API cl_object cl_cosh(cl_object x); +extern ECL_API cl_object cl_tanh(cl_object x); +extern ECL_API cl_object cl_atan _ARGS((cl_narg narg, cl_object x, ...)); +extern ECL_API cl_object cl_log _ARGS((cl_narg narg, cl_object x, ...)); -extern cl_object ecl_log1(cl_object x); -extern cl_object ecl_log2(cl_object x, cl_object y); -extern cl_object ecl_atan2(cl_object y, cl_object x); -extern cl_object ecl_atan1(cl_object y); +extern ECL_API cl_object ecl_log1(cl_object x); +extern ECL_API cl_object ecl_log2(cl_object x, cl_object y); +extern ECL_API cl_object ecl_atan2(cl_object y, cl_object x); +extern ECL_API cl_object ecl_atan1(cl_object y); /* package.c */ -extern void CEpackage_error(const char *message, const char *continue_message, cl_object package, int narg, ...); -extern cl_object si_select_package(cl_object pack_name); -extern cl_object cl_find_package(cl_object p); -extern cl_object cl_package_name(cl_object p); -extern cl_object cl_package_nicknames(cl_object p); -extern cl_object cl_package_use_list(cl_object p); -extern cl_object cl_package_used_by_list(cl_object p); -extern cl_object cl_package_shadowing_symbols(cl_object p); -extern cl_object cl_list_all_packages(void); -extern cl_object si_package_hash_tables(cl_object p); -extern cl_object si_package_lock(cl_object p, cl_object t); -extern cl_object cl_delete_package(cl_object p); -extern cl_object cl_make_package _ARGS((cl_narg narg, cl_object pack_name, ...)); -extern cl_object cl_intern _ARGS((cl_narg narg, cl_object strng, ...)); -extern cl_object cl_find_symbol _ARGS((cl_narg narg, cl_object strng, ...)); -extern cl_object cl_unintern _ARGS((cl_narg narg, cl_object symbl, ...)); -extern cl_object cl_export _ARGS((cl_narg narg, cl_object symbols, ...)); -extern cl_object cl_unexport _ARGS((cl_narg narg, cl_object symbols, ...)); -extern cl_object cl_import _ARGS((cl_narg narg, cl_object symbols, ...)); -extern cl_object cl_rename_package _ARGS((cl_narg narg, cl_object pack, cl_object new_name, ...)); -extern cl_object cl_shadowing_import _ARGS((cl_narg narg, cl_object symbols, ...)); -extern cl_object cl_shadow _ARGS((cl_narg narg, cl_object symbols, ...)); -extern cl_object cl_use_package _ARGS((cl_narg narg, cl_object pack, ...)); -extern cl_object cl_unuse_package _ARGS((cl_narg narg, cl_object pack, ...)); +extern ECL_API void CEpackage_error(const char *message, const char *continue_message, cl_object package, int narg, ...); +extern ECL_API cl_object si_select_package(cl_object pack_name); +extern ECL_API cl_object cl_find_package(cl_object p); +extern ECL_API cl_object cl_package_name(cl_object p); +extern ECL_API cl_object cl_package_nicknames(cl_object p); +extern ECL_API cl_object cl_package_use_list(cl_object p); +extern ECL_API cl_object cl_package_used_by_list(cl_object p); +extern ECL_API cl_object cl_package_shadowing_symbols(cl_object p); +extern ECL_API cl_object cl_list_all_packages(void); +extern ECL_API cl_object si_package_hash_tables(cl_object p); +extern ECL_API cl_object si_package_lock(cl_object p, cl_object t); +extern ECL_API cl_object cl_delete_package(cl_object p); +extern ECL_API cl_object cl_make_package _ARGS((cl_narg narg, cl_object pack_name, ...)); +extern ECL_API cl_object cl_intern _ARGS((cl_narg narg, cl_object strng, ...)); +extern ECL_API cl_object cl_find_symbol _ARGS((cl_narg narg, cl_object strng, ...)); +extern ECL_API cl_object cl_unintern _ARGS((cl_narg narg, cl_object symbl, ...)); +extern ECL_API cl_object cl_export _ARGS((cl_narg narg, cl_object symbols, ...)); +extern ECL_API cl_object cl_unexport _ARGS((cl_narg narg, cl_object symbols, ...)); +extern ECL_API cl_object cl_import _ARGS((cl_narg narg, cl_object symbols, ...)); +extern ECL_API cl_object cl_rename_package _ARGS((cl_narg narg, cl_object pack, cl_object new_name, ...)); +extern ECL_API cl_object cl_shadowing_import _ARGS((cl_narg narg, cl_object symbols, ...)); +extern ECL_API cl_object cl_shadow _ARGS((cl_narg narg, cl_object symbols, ...)); +extern ECL_API cl_object cl_use_package _ARGS((cl_narg narg, cl_object pack, ...)); +extern ECL_API cl_object cl_unuse_package _ARGS((cl_narg narg, cl_object pack, ...)); -extern cl_object ecl_make_package(cl_object n, cl_object ns, cl_object ul); -extern cl_object ecl_rename_package(cl_object x, cl_object n, cl_object ns); -extern cl_object ecl_find_package_nolock(cl_object n); -extern cl_object si_coerce_to_package(cl_object p); -extern cl_object ecl_current_package(void); -extern cl_object ecl_find_symbol(cl_object n, cl_object p, int *intern_flag); -extern cl_object ecl_intern(cl_object name, cl_object p, int *intern_flag); -extern cl_object _ecl_intern(const char *s, cl_object p); -extern bool ecl_unintern(cl_object s, cl_object p); -extern void cl_export2(cl_object s, cl_object p); -extern void cl_unexport2(cl_object s, cl_object p); -extern void cl_import2(cl_object s, cl_object p); -extern void ecl_shadowing_import(cl_object s, cl_object p); -extern void ecl_shadow(cl_object s, cl_object p); -extern void ecl_use_package(cl_object x0, cl_object p); -extern void ecl_unuse_package(cl_object x0, cl_object p); +extern ECL_API cl_object ecl_make_package(cl_object n, cl_object ns, cl_object ul); +extern ECL_API cl_object ecl_rename_package(cl_object x, cl_object n, cl_object ns); +extern ECL_API cl_object ecl_find_package_nolock(cl_object n); +extern ECL_API cl_object si_coerce_to_package(cl_object p); +extern ECL_API cl_object ecl_current_package(void); +extern ECL_API cl_object ecl_find_symbol(cl_object n, cl_object p, int *intern_flag); +extern ECL_API cl_object ecl_intern(cl_object name, cl_object p, int *intern_flag); +extern ECL_API cl_object _ecl_intern(const char *s, cl_object p); +extern ECL_API bool ecl_unintern(cl_object s, cl_object p); +extern ECL_API void cl_export2(cl_object s, cl_object p); +extern ECL_API void cl_unexport2(cl_object s, cl_object p); +extern ECL_API void cl_import2(cl_object s, cl_object p); +extern ECL_API void ecl_shadowing_import(cl_object s, cl_object p); +extern ECL_API void ecl_shadow(cl_object s, cl_object p); +extern ECL_API void ecl_use_package(cl_object x0, cl_object p); +extern ECL_API void ecl_unuse_package(cl_object x0, cl_object p); /* pathname.c */ -extern cl_object cl_pathname(cl_object name); -extern cl_object cl_logical_pathname(cl_object pname); -extern cl_object cl_pathnamep(cl_object pname); -extern cl_object cl_pathname_host _ARGS((cl_narg narg, cl_object pname, ...)); -extern cl_object cl_pathname_device _ARGS((cl_narg narg, cl_object pname, ...)); -extern cl_object cl_pathname_directory _ARGS((cl_narg narg, cl_object pname, ...)); -extern cl_object cl_pathname_name _ARGS((cl_narg narg, cl_object pname, ...)); -extern cl_object cl_pathname_type _ARGS((cl_narg narg, cl_object pname, ...)); -extern cl_object cl_pathname_version(cl_object pname); -extern cl_object cl_namestring(cl_object pname); -extern cl_object cl_file_namestring(cl_object pname); -extern cl_object cl_directory_namestring(cl_object pname); -extern cl_object cl_host_namestring(cl_object pname); -extern cl_object si_logical_pathname_p(cl_object pname); -extern cl_object cl_pathname_match_p(cl_object path, cl_object mask); -extern cl_object cl_translate_pathname _ARGS((cl_narg narg, cl_object source, cl_object from, cl_object to, ...)); -extern cl_object cl_translate_logical_pathname _ARGS((cl_narg narg, cl_object source, ...)); -extern cl_object cl_parse_namestring _ARGS((cl_narg narg, cl_object thing, ...)); -extern cl_object cl_parse_logical_namestring _ARGS((cl_narg narg, cl_object thing, ...)); -extern cl_object cl_merge_pathnames _ARGS((cl_narg narg, cl_object path, ...)); -extern cl_object cl_make_pathname _ARGS((cl_narg narg, ...)); -extern cl_object cl_enough_namestring _ARGS((cl_narg narg, cl_object path, ...)); -extern cl_object si_pathname_translations _ARGS((cl_narg narg, cl_object host, ...)); -extern cl_object si_default_pathname_defaults(void); -extern cl_object cl_wild_pathname_p _ARGS((cl_narg narg, cl_object pathname, ...)); +extern ECL_API cl_object cl_pathname(cl_object name); +extern ECL_API cl_object cl_logical_pathname(cl_object pname); +extern ECL_API cl_object cl_pathnamep(cl_object pname); +extern ECL_API cl_object cl_pathname_host _ARGS((cl_narg narg, cl_object pname, ...)); +extern ECL_API cl_object cl_pathname_device _ARGS((cl_narg narg, cl_object pname, ...)); +extern ECL_API cl_object cl_pathname_directory _ARGS((cl_narg narg, cl_object pname, ...)); +extern ECL_API cl_object cl_pathname_name _ARGS((cl_narg narg, cl_object pname, ...)); +extern ECL_API cl_object cl_pathname_type _ARGS((cl_narg narg, cl_object pname, ...)); +extern ECL_API cl_object cl_pathname_version(cl_object pname); +extern ECL_API cl_object cl_namestring(cl_object pname); +extern ECL_API cl_object cl_file_namestring(cl_object pname); +extern ECL_API cl_object cl_directory_namestring(cl_object pname); +extern ECL_API cl_object cl_host_namestring(cl_object pname); +extern ECL_API cl_object si_logical_pathname_p(cl_object pname); +extern ECL_API cl_object cl_pathname_match_p(cl_object path, cl_object mask); +extern ECL_API cl_object cl_translate_pathname _ARGS((cl_narg narg, cl_object source, cl_object from, cl_object to, ...)); +extern ECL_API cl_object cl_translate_logical_pathname _ARGS((cl_narg narg, cl_object source, ...)); +extern ECL_API cl_object cl_parse_namestring _ARGS((cl_narg narg, cl_object thing, ...)); +extern ECL_API cl_object cl_parse_logical_namestring _ARGS((cl_narg narg, cl_object thing, ...)); +extern ECL_API cl_object cl_merge_pathnames _ARGS((cl_narg narg, cl_object path, ...)); +extern ECL_API cl_object cl_make_pathname _ARGS((cl_narg narg, ...)); +extern ECL_API cl_object cl_enough_namestring _ARGS((cl_narg narg, cl_object path, ...)); +extern ECL_API cl_object si_pathname_translations _ARGS((cl_narg narg, cl_object host, ...)); +extern ECL_API cl_object si_default_pathname_defaults(void); +extern ECL_API cl_object cl_wild_pathname_p _ARGS((cl_narg narg, cl_object pathname, ...)); -extern cl_object ecl_make_pathname(cl_object host, cl_object device, cl_object directory, cl_object name, cl_object type, cl_object version); -extern cl_object ecl_parse_namestring(cl_object s, cl_index start, cl_index end, cl_index *ep, cl_object default_host); -extern cl_object coerce_to_physical_pathname(cl_object x); -extern cl_object coerce_to_file_pathname(cl_object pathname); -extern cl_object ecl_namestring(cl_object pname, int truncate_if_impossible); -extern cl_object si_coerce_to_filename(cl_object pathname); -extern cl_object ecl_merge_pathnames(cl_object path, cl_object defaults, cl_object default_version); -extern bool ecl_logical_hostname_p(cl_object host); +extern ECL_API cl_object ecl_make_pathname(cl_object host, cl_object device, cl_object directory, cl_object name, cl_object type, cl_object version); +extern ECL_API cl_object ecl_parse_namestring(cl_object s, cl_index start, cl_index end, cl_index *ep, cl_object default_host); +extern ECL_API cl_object coerce_to_physical_pathname(cl_object x); +extern ECL_API cl_object coerce_to_file_pathname(cl_object pathname); +extern ECL_API cl_object ecl_namestring(cl_object pname, int truncate_if_impossible); +extern ECL_API cl_object si_coerce_to_filename(cl_object pathname); +extern ECL_API cl_object ecl_merge_pathnames(cl_object path, cl_object defaults, cl_object default_version); +extern ECL_API bool ecl_logical_hostname_p(cl_object host); /* predicate.c */ -extern cl_object cl_identity(cl_object x); -extern cl_object cl_null(cl_object x); +extern ECL_API cl_object cl_identity(cl_object x); +extern ECL_API cl_object cl_null(cl_object x); #define cl_not cl_null -extern cl_object cl_symbolp(cl_object x); -extern cl_object cl_atom(cl_object x); -extern cl_object cl_consp(cl_object x); -extern cl_object cl_listp(cl_object x); -extern cl_object cl_numberp(cl_object x); -extern cl_object cl_integerp(cl_object x); -extern cl_object cl_rationalp(cl_object x); -extern cl_object cl_floatp(cl_object x); -extern cl_object cl_realp(cl_object x); -extern cl_object cl_complexp(cl_object x); -extern cl_object cl_characterp(cl_object x); -extern cl_object cl_stringp(cl_object x); -extern cl_object cl_bit_vector_p(cl_object x); -extern cl_object cl_vectorp(cl_object x); -extern cl_object cl_simple_string_p(cl_object x); -extern cl_object cl_simple_bit_vector_p(cl_object x); -extern cl_object cl_simple_vector_p(cl_object x); -extern cl_object cl_arrayp(cl_object x); -extern cl_object cl_packagep(cl_object x); -extern cl_object cl_functionp(cl_object x); -extern cl_object cl_compiled_function_p(cl_object x); -extern cl_object cl_eq(cl_object x, cl_object y); -extern cl_object cl_eql(cl_object x, cl_object y); -extern cl_object cl_equal(cl_object x, cl_object y); -extern cl_object cl_equalp(cl_object x, cl_object y); -extern cl_object si_fixnump(cl_object x); +extern ECL_API cl_object cl_symbolp(cl_object x); +extern ECL_API cl_object cl_atom(cl_object x); +extern ECL_API cl_object cl_consp(cl_object x); +extern ECL_API cl_object cl_listp(cl_object x); +extern ECL_API cl_object cl_numberp(cl_object x); +extern ECL_API cl_object cl_integerp(cl_object x); +extern ECL_API cl_object cl_rationalp(cl_object x); +extern ECL_API cl_object cl_floatp(cl_object x); +extern ECL_API cl_object cl_realp(cl_object x); +extern ECL_API cl_object cl_complexp(cl_object x); +extern ECL_API cl_object cl_characterp(cl_object x); +extern ECL_API cl_object cl_stringp(cl_object x); +extern ECL_API cl_object cl_bit_vector_p(cl_object x); +extern ECL_API cl_object cl_vectorp(cl_object x); +extern ECL_API cl_object cl_simple_string_p(cl_object x); +extern ECL_API cl_object cl_simple_bit_vector_p(cl_object x); +extern ECL_API cl_object cl_simple_vector_p(cl_object x); +extern ECL_API cl_object cl_arrayp(cl_object x); +extern ECL_API cl_object cl_packagep(cl_object x); +extern ECL_API cl_object cl_functionp(cl_object x); +extern ECL_API cl_object cl_compiled_function_p(cl_object x); +extern ECL_API cl_object cl_eq(cl_object x, cl_object y); +extern ECL_API cl_object cl_eql(cl_object x, cl_object y); +extern ECL_API cl_object cl_equal(cl_object x, cl_object y); +extern ECL_API cl_object cl_equalp(cl_object x, cl_object y); +extern ECL_API cl_object si_fixnump(cl_object x); -extern bool floatp(cl_object x); -extern bool ecl_numberp(cl_object x); -extern bool ecl_eql(cl_object x, cl_object y); -extern bool ecl_equal(register cl_object x, cl_object y); -extern bool ecl_equalp(cl_object x, cl_object y); -extern bool ecl_stringp(cl_object x); +extern ECL_API bool floatp(cl_object x); +extern ECL_API bool ecl_numberp(cl_object x); +extern ECL_API bool ecl_eql(cl_object x, cl_object y); +extern ECL_API bool ecl_equal(register cl_object x, cl_object y); +extern ECL_API bool ecl_equalp(cl_object x, cl_object y); +extern ECL_API bool ecl_stringp(cl_object x); /* print.c */ -extern cl_object cl_write_byte(cl_object integer, cl_object binary_output_stream); -extern cl_object cl_write_sequence _ARGS((cl_narg narg, cl_object seq, cl_object stream, ...)); -extern cl_object cl_write _ARGS((cl_narg narg, cl_object x, ...)); -extern cl_object cl_prin1 _ARGS((cl_narg narg, cl_object obj, ...)); -extern cl_object cl_print _ARGS((cl_narg narg, cl_object obj, ...)); -extern cl_object cl_pprint _ARGS((cl_narg narg, cl_object obj, ...)); -extern cl_object cl_princ _ARGS((cl_narg narg, cl_object obj, ...)); -extern cl_object cl_write_char _ARGS((cl_narg narg, cl_object c, ...)); -extern cl_object cl_write_string _ARGS((cl_narg narg, cl_object strng, ...)); -extern cl_object cl_write_line _ARGS((cl_narg narg, cl_object strng, ...)); -extern cl_object cl_terpri _ARGS((cl_narg narg, ...)); -extern cl_object cl_finish_output _ARGS((cl_narg narg, ...)); -extern cl_object cl_fresh_line _ARGS((cl_narg narg, ...)); -extern cl_object cl_force_output _ARGS((cl_narg narg, ...)); -extern cl_object cl_clear_output _ARGS((cl_narg narg, ...)); -extern cl_object si_write_object(cl_object object, cl_object stream); -extern cl_object si_write_ugly_object(cl_object object, cl_object stream); +extern ECL_API cl_object cl_write_byte(cl_object integer, cl_object binary_output_stream); +extern ECL_API cl_object cl_write_sequence _ARGS((cl_narg narg, cl_object seq, cl_object stream, ...)); +extern ECL_API cl_object cl_write _ARGS((cl_narg narg, cl_object x, ...)); +extern ECL_API cl_object cl_prin1 _ARGS((cl_narg narg, cl_object obj, ...)); +extern ECL_API cl_object cl_print _ARGS((cl_narg narg, cl_object obj, ...)); +extern ECL_API cl_object cl_pprint _ARGS((cl_narg narg, cl_object obj, ...)); +extern ECL_API cl_object cl_princ _ARGS((cl_narg narg, cl_object obj, ...)); +extern ECL_API cl_object cl_write_char _ARGS((cl_narg narg, cl_object c, ...)); +extern ECL_API cl_object cl_write_string _ARGS((cl_narg narg, cl_object strng, ...)); +extern ECL_API cl_object cl_write_line _ARGS((cl_narg narg, cl_object strng, ...)); +extern ECL_API cl_object cl_terpri _ARGS((cl_narg narg, ...)); +extern ECL_API cl_object cl_finish_output _ARGS((cl_narg narg, ...)); +extern ECL_API cl_object cl_fresh_line _ARGS((cl_narg narg, ...)); +extern ECL_API cl_object cl_force_output _ARGS((cl_narg narg, ...)); +extern ECL_API cl_object cl_clear_output _ARGS((cl_narg narg, ...)); +extern ECL_API cl_object si_write_object(cl_object object, cl_object stream); +extern ECL_API cl_object si_write_ugly_object(cl_object object, cl_object stream); -extern cl_object ecl_princ(cl_object obj, cl_object strm); -extern cl_object ecl_prin1(cl_object obj, cl_object strm); -extern cl_object ecl_print(cl_object obj, cl_object strm); -extern cl_object ecl_terpri(cl_object strm); -extern void ecl_write_string(cl_object strng, cl_object strm); -extern void ecl_princ_str(const char *s, cl_object sym); -extern void ecl_princ_char(int c, cl_object sym); +extern ECL_API cl_object ecl_princ(cl_object obj, cl_object strm); +extern ECL_API cl_object ecl_prin1(cl_object obj, cl_object strm); +extern ECL_API cl_object ecl_print(cl_object obj, cl_object strm); +extern ECL_API cl_object ecl_terpri(cl_object strm); +extern ECL_API void ecl_write_string(cl_object strng, cl_object strm); +extern ECL_API void ecl_princ_str(const char *s, cl_object sym); +extern ECL_API void ecl_princ_char(int c, cl_object sym); /* profile.c */ #ifdef PROFILE -extern cl_object si_profile _ARGS((cl_narg narg, cl_object scale, cl_object start_address)); -extern cl_object si_clear_profile _ARGS((cl_narg narg)); -extern cl_object si_display_profile _ARGS((cl_narg narg)); -extern int total_ticks(unsigned short *aar, unsigned int dim); -extern int init_profile(void); +extern ECL_API cl_object si_profile _ARGS((cl_narg narg, cl_object scale, cl_object start_address)); +extern ECL_API cl_object si_clear_profile _ARGS((cl_narg narg)); +extern ECL_API cl_object si_display_profile _ARGS((cl_narg narg)); +extern ECL_API int total_ticks(unsigned short *aar, unsigned int dim); +extern ECL_API int init_profile(void); #endif /* read.c */ -extern cl_object si_get_buffer_string(); -extern cl_object si_put_buffer_string(cl_object string); -extern cl_object cl_read_sequence _ARGS((cl_narg narg, cl_object seq, cl_object stream, ...)); -extern cl_object cl_readtablep(cl_object readtable); -extern cl_object si_string_to_object(cl_object str); -extern cl_object si_standard_readtable(void); -extern cl_object cl_read _ARGS((cl_narg narg, ...)); -extern cl_object cl_read_preserving_whitespace _ARGS((cl_narg narg, ...)); -extern cl_object cl_read_delimited_list _ARGS((cl_narg narg, cl_object d, ...)); -extern cl_object cl_read_line _ARGS((cl_narg narg, ...)); -extern cl_object cl_read_char _ARGS((cl_narg narg, ...)); -extern cl_object cl_unread_char _ARGS((cl_narg narg, cl_object c, ...)); -extern cl_object cl_peek_char _ARGS((cl_narg narg, ...)); -extern cl_object cl_listen _ARGS((cl_narg narg, ...)); -extern cl_object cl_read_char_no_hang _ARGS((cl_narg narg, ...)); -extern cl_object cl_clear_input _ARGS((cl_narg narg, ...)); -extern cl_object cl_parse_integer _ARGS((cl_narg narg, cl_object strng, ...)); -extern cl_object cl_read_byte _ARGS((cl_narg narg, cl_object binary_input_stream, ...)); -extern cl_object cl_copy_readtable _ARGS((cl_narg narg, ...)); -extern cl_object cl_readtable_case(cl_object r); -extern cl_object si_readtable_case_set(cl_object r, cl_object mode); -extern cl_object cl_set_syntax_from_char _ARGS((cl_narg narg, cl_object tochr, cl_object fromchr, ...)); -extern cl_object cl_set_macro_character _ARGS((cl_narg narg, cl_object chr, cl_object fnc, ...)); -extern cl_object cl_get_macro_character _ARGS((cl_narg narg, cl_object chr, ...)); -extern cl_object cl_make_dispatch_macro_character _ARGS((cl_narg narg, cl_object chr, ...)); -extern cl_object cl_set_dispatch_macro_character _ARGS((cl_narg narg, cl_object dspchr, cl_object subchr, cl_object fnc, ...)); -extern cl_object cl_get_dispatch_macro_character _ARGS((cl_narg narg, cl_object dspchr, cl_object subchr, ...)); +extern ECL_API cl_object si_get_buffer_string(); +extern ECL_API cl_object si_put_buffer_string(cl_object string); +extern ECL_API cl_object cl_read_sequence _ARGS((cl_narg narg, cl_object seq, cl_object stream, ...)); +extern ECL_API cl_object cl_readtablep(cl_object readtable); +extern ECL_API cl_object si_string_to_object(cl_object str); +extern ECL_API cl_object si_standard_readtable(void); +extern ECL_API cl_object cl_read _ARGS((cl_narg narg, ...)); +extern ECL_API cl_object cl_read_preserving_whitespace _ARGS((cl_narg narg, ...)); +extern ECL_API cl_object cl_read_delimited_list _ARGS((cl_narg narg, cl_object d, ...)); +extern ECL_API cl_object cl_read_line _ARGS((cl_narg narg, ...)); +extern ECL_API cl_object cl_read_char _ARGS((cl_narg narg, ...)); +extern ECL_API cl_object cl_unread_char _ARGS((cl_narg narg, cl_object c, ...)); +extern ECL_API cl_object cl_peek_char _ARGS((cl_narg narg, ...)); +extern ECL_API cl_object cl_listen _ARGS((cl_narg narg, ...)); +extern ECL_API cl_object cl_read_char_no_hang _ARGS((cl_narg narg, ...)); +extern ECL_API cl_object cl_clear_input _ARGS((cl_narg narg, ...)); +extern ECL_API cl_object cl_parse_integer _ARGS((cl_narg narg, cl_object strng, ...)); +extern ECL_API cl_object cl_read_byte _ARGS((cl_narg narg, cl_object binary_input_stream, ...)); +extern ECL_API cl_object cl_copy_readtable _ARGS((cl_narg narg, ...)); +extern ECL_API cl_object cl_readtable_case(cl_object r); +extern ECL_API cl_object si_readtable_case_set(cl_object r, cl_object mode); +extern ECL_API cl_object cl_set_syntax_from_char _ARGS((cl_narg narg, cl_object tochr, cl_object fromchr, ...)); +extern ECL_API cl_object cl_set_macro_character _ARGS((cl_narg narg, cl_object chr, cl_object fnc, ...)); +extern ECL_API cl_object cl_get_macro_character _ARGS((cl_narg narg, cl_object chr, ...)); +extern ECL_API cl_object cl_make_dispatch_macro_character _ARGS((cl_narg narg, cl_object chr, ...)); +extern ECL_API cl_object cl_set_dispatch_macro_character _ARGS((cl_narg narg, cl_object dspchr, cl_object subchr, cl_object fnc, ...)); +extern ECL_API cl_object cl_get_dispatch_macro_character _ARGS((cl_narg narg, cl_object dspchr, cl_object subchr, ...)); -extern cl_object ecl_read_object_non_recursive(cl_object in); -extern cl_object ecl_read_object(cl_object in); -extern cl_object ecl_parse_number(cl_object s, cl_index start, cl_index end, cl_index *ep, unsigned int radix); -extern cl_object ecl_parse_integer(cl_object s, cl_index start, cl_index end, cl_index *ep, unsigned int radix); -extern bool ecl_invalid_character_p(int c); -extern cl_object ecl_copy_readtable(cl_object from, cl_object to); -extern cl_object ecl_current_readtable(void); -extern int ecl_current_read_base(void); -extern char ecl_current_read_default_float_format(void); -extern cl_object c_string_to_object(const char *s); -extern cl_object read_VV(cl_object block, void (*entry)(cl_object)); +extern ECL_API cl_object ecl_read_object_non_recursive(cl_object in); +extern ECL_API cl_object ecl_read_object(cl_object in); +extern ECL_API cl_object ecl_parse_number(cl_object s, cl_index start, cl_index end, cl_index *ep, unsigned int radix); +extern ECL_API cl_object ecl_parse_integer(cl_object s, cl_index start, cl_index end, cl_index *ep, unsigned int radix); +extern ECL_API bool ecl_invalid_character_p(int c); +extern ECL_API cl_object ecl_copy_readtable(cl_object from, cl_object to); +extern ECL_API cl_object ecl_current_readtable(void); +extern ECL_API int ecl_current_read_base(void); +extern ECL_API char ecl_current_read_default_float_format(void); +extern ECL_API cl_object c_string_to_object(const char *s); +extern ECL_API cl_object read_VV(cl_object block, void (*entry)(cl_object)); /* reference.c */ -extern cl_object cl_fboundp(cl_object sym); -extern cl_object cl_symbol_function(cl_object sym); -extern cl_object cl_fdefinition(cl_object fname); -extern cl_object si_coerce_to_function(cl_object form); -extern cl_object cl_symbol_value(cl_object sym); -extern cl_object cl_boundp(cl_object sym); -extern cl_object cl_special_operator_p(cl_object form); -extern cl_object ecl_fdefinition(cl_object fname); +extern ECL_API cl_object cl_fboundp(cl_object sym); +extern ECL_API cl_object cl_symbol_function(cl_object sym); +extern ECL_API cl_object cl_fdefinition(cl_object fname); +extern ECL_API cl_object si_coerce_to_function(cl_object form); +extern ECL_API cl_object cl_symbol_value(cl_object sym); +extern ECL_API cl_object cl_boundp(cl_object sym); +extern ECL_API cl_object cl_special_operator_p(cl_object form); +extern ECL_API cl_object ecl_fdefinition(cl_object fname); /* sequence.c */ -extern cl_object cl_elt(cl_object x, cl_object i); -extern cl_object si_elt_set(cl_object seq, cl_object index, cl_object val); -extern cl_object cl_copy_seq(cl_object x); -extern cl_object cl_length(cl_object x); -extern cl_object cl_reverse(cl_object x); -extern cl_object cl_nreverse(cl_object x); -extern cl_object cl_subseq _ARGS((cl_narg narg, cl_object sequence, cl_object start, ...)); +extern ECL_API cl_object cl_elt(cl_object x, cl_object i); +extern ECL_API cl_object si_elt_set(cl_object seq, cl_object index, cl_object val); +extern ECL_API cl_object cl_copy_seq(cl_object x); +extern ECL_API cl_object cl_length(cl_object x); +extern ECL_API cl_object cl_reverse(cl_object x); +extern ECL_API cl_object cl_nreverse(cl_object x); +extern ECL_API cl_object cl_subseq _ARGS((cl_narg narg, cl_object sequence, cl_object start, ...)); -extern cl_object ecl_alloc_simple_vector(cl_index l, cl_elttype aet); -extern cl_object ecl_elt(cl_object seq, cl_fixnum index); -extern cl_object ecl_elt_set(cl_object seq, cl_fixnum index, cl_object val); -extern cl_fixnum ecl_length(cl_object x); +extern ECL_API cl_object ecl_alloc_simple_vector(cl_index l, cl_elttype aet); +extern ECL_API cl_object ecl_elt(cl_object seq, cl_fixnum index); +extern ECL_API cl_object ecl_elt_set(cl_object seq, cl_fixnum index, cl_object val); +extern ECL_API cl_fixnum ecl_length(cl_object x); /* stacks.c */ -extern cl_object si_ihs_top(cl_object arg); -extern cl_object si_ihs_fun(cl_object arg); -extern cl_object si_ihs_env(cl_object arg); -extern cl_object si_ihs_next(cl_object arg); -extern cl_object si_ihs_prev(cl_object arg); -extern cl_object si_frs_top(void); -extern cl_object si_frs_bds(cl_object arg); -extern cl_object si_frs_tag(cl_object arg); -extern cl_object si_frs_ihs(cl_object arg); -extern cl_object si_bds_top(void); -extern cl_object si_bds_var(cl_object arg); -extern cl_object si_bds_val(cl_object arg); -extern cl_object si_sch_frs_base(cl_object fr, cl_object ihs); -extern cl_object si_reset_stack_limits(void); +extern ECL_API cl_object si_ihs_top(cl_object arg); +extern ECL_API cl_object si_ihs_fun(cl_object arg); +extern ECL_API cl_object si_ihs_env(cl_object arg); +extern ECL_API cl_object si_ihs_next(cl_object arg); +extern ECL_API cl_object si_ihs_prev(cl_object arg); +extern ECL_API cl_object si_frs_top(void); +extern ECL_API cl_object si_frs_bds(cl_object arg); +extern ECL_API cl_object si_frs_tag(cl_object arg); +extern ECL_API cl_object si_frs_ihs(cl_object arg); +extern ECL_API cl_object si_bds_top(void); +extern ECL_API cl_object si_bds_var(cl_object arg); +extern ECL_API cl_object si_bds_val(cl_object arg); +extern ECL_API cl_object si_sch_frs_base(cl_object fr, cl_object ihs); +extern ECL_API cl_object si_reset_stack_limits(void); -extern void bds_overflow(void) /*__attribute__((noreturn))*/; -extern void bds_unwind(bds_ptr new_bds_top); -extern int frs_overflow(void) /*__attribute__((noreturn))*/; -extern void ecl_unwind(ecl_frame_ptr fr) /*__attribute__((noreturn))*/; -extern ecl_frame_ptr frs_sch(cl_object frame_id); -extern ecl_frame_ptr frs_sch_catch(cl_object frame_id); -extern cl_object new_frame_id(void); +extern ECL_API void bds_overflow(void) /*__attribute__((noreturn))*/; +extern ECL_API void bds_unwind(bds_ptr new_bds_top); +extern ECL_API int frs_overflow(void) /*__attribute__((noreturn))*/; +extern ECL_API void ecl_unwind(ecl_frame_ptr fr) /*__attribute__((noreturn))*/; +extern ECL_API ecl_frame_ptr frs_sch(cl_object frame_id); +extern ECL_API ecl_frame_ptr frs_sch_catch(cl_object frame_id); +extern ECL_API cl_object new_frame_id(void); /* string.c */ -extern cl_object cl_char(cl_object s, cl_object i); +extern ECL_API cl_object cl_char(cl_object s, cl_object i); #define cl_schar(x,y) cl_char(x,y) -extern cl_object si_char_set(cl_object str, cl_object index, cl_object c); -extern cl_object cl_string_trim(cl_object char_bag, cl_object strng); -extern cl_object cl_string_left_trim(cl_object char_bag, cl_object strng); -extern cl_object cl_string_right_trim(cl_object char_bag, cl_object strng); -extern cl_object cl_string(cl_object x); -extern cl_object cl_make_string _ARGS((cl_narg narg, cl_object size, ...)); -extern cl_object cl_stringE _ARGS((cl_narg narg, cl_object string1, cl_object string2, ...)); -extern cl_object cl_string_equal _ARGS((cl_narg narg, cl_object string1, cl_object string2, ...)); -extern cl_object cl_stringL _ARGS((cl_narg narg, ...)); -extern cl_object cl_stringG _ARGS((cl_narg narg, ...)); -extern cl_object cl_stringLE _ARGS((cl_narg narg, ...)); -extern cl_object cl_stringGE _ARGS((cl_narg narg, ...)); -extern cl_object cl_stringNE _ARGS((cl_narg narg, ...)); -extern cl_object cl_string_lessp _ARGS((cl_narg narg, ...)); -extern cl_object cl_string_greaterp _ARGS((cl_narg narg, ...)); -extern cl_object cl_string_not_greaterp _ARGS((cl_narg narg, ...)); -extern cl_object cl_string_not_lessp _ARGS((cl_narg narg, ...)); -extern cl_object cl_string_not_equal _ARGS((cl_narg narg, ...)); -extern cl_object cl_string_upcase _ARGS((cl_narg narg, ...)); -extern cl_object cl_string_downcase _ARGS((cl_narg narg, ...)); -extern cl_object cl_string_capitalize _ARGS((cl_narg narg, ...)); -extern cl_object cl_nstring_upcase _ARGS((cl_narg narg, ...)); -extern cl_object cl_nstring_downcase _ARGS((cl_narg narg, ...)); -extern cl_object cl_nstring_capitalize _ARGS((cl_narg narg, ...)); -extern cl_object si_base_string_concatenate _ARGS((cl_narg narg, ...)); -extern cl_object si_copy_to_simple_base_string(cl_object s); +extern ECL_API cl_object si_char_set(cl_object str, cl_object index, cl_object c); +extern ECL_API cl_object cl_string_trim(cl_object char_bag, cl_object strng); +extern ECL_API cl_object cl_string_left_trim(cl_object char_bag, cl_object strng); +extern ECL_API cl_object cl_string_right_trim(cl_object char_bag, cl_object strng); +extern ECL_API cl_object cl_string(cl_object x); +extern ECL_API cl_object cl_make_string _ARGS((cl_narg narg, cl_object size, ...)); +extern ECL_API cl_object cl_stringE _ARGS((cl_narg narg, cl_object string1, cl_object string2, ...)); +extern ECL_API cl_object cl_string_equal _ARGS((cl_narg narg, cl_object string1, cl_object string2, ...)); +extern ECL_API cl_object cl_stringL _ARGS((cl_narg narg, ...)); +extern ECL_API cl_object cl_stringG _ARGS((cl_narg narg, ...)); +extern ECL_API cl_object cl_stringLE _ARGS((cl_narg narg, ...)); +extern ECL_API cl_object cl_stringGE _ARGS((cl_narg narg, ...)); +extern ECL_API cl_object cl_stringNE _ARGS((cl_narg narg, ...)); +extern ECL_API cl_object cl_string_lessp _ARGS((cl_narg narg, ...)); +extern ECL_API cl_object cl_string_greaterp _ARGS((cl_narg narg, ...)); +extern ECL_API cl_object cl_string_not_greaterp _ARGS((cl_narg narg, ...)); +extern ECL_API cl_object cl_string_not_lessp _ARGS((cl_narg narg, ...)); +extern ECL_API cl_object cl_string_not_equal _ARGS((cl_narg narg, ...)); +extern ECL_API cl_object cl_string_upcase _ARGS((cl_narg narg, ...)); +extern ECL_API cl_object cl_string_downcase _ARGS((cl_narg narg, ...)); +extern ECL_API cl_object cl_string_capitalize _ARGS((cl_narg narg, ...)); +extern ECL_API cl_object cl_nstring_upcase _ARGS((cl_narg narg, ...)); +extern ECL_API cl_object cl_nstring_downcase _ARGS((cl_narg narg, ...)); +extern ECL_API cl_object cl_nstring_capitalize _ARGS((cl_narg narg, ...)); +extern ECL_API cl_object si_base_string_concatenate _ARGS((cl_narg narg, ...)); +extern ECL_API cl_object si_copy_to_simple_base_string(cl_object s); -extern cl_object cl_alloc_simple_base_string(cl_index l); -extern cl_object cl_alloc_adjustable_base_string(cl_index l); -extern cl_object make_simple_base_string(char *s); +extern ECL_API cl_object cl_alloc_simple_base_string(cl_index l); +extern ECL_API cl_object cl_alloc_adjustable_base_string(cl_index l); +extern ECL_API cl_object make_simple_base_string(char *s); #define make_constant_base_string(s) (make_simple_base_string((char *)s)) -extern cl_object make_base_string_copy(const char *s); -extern cl_object ecl_cstring_to_base_string_or_nil(const char *s); -extern bool ecl_string_eq(cl_object x, cl_object y); -extern bool ecl_member_char(int c, cl_object char_bag); -extern int ecl_string_push_extend(cl_object s, int c); -extern void get_string_start_end(cl_object s, cl_object start, cl_object end, cl_index *ps, cl_index *pe); -extern bool ecl_fits_in_base_string(cl_object s); -extern cl_index ecl_char(cl_object s, cl_index i); -extern void ecl_char_set(cl_object s, cl_index i, cl_index c); +extern ECL_API cl_object make_base_string_copy(const char *s); +extern ECL_API cl_object ecl_cstring_to_base_string_or_nil(const char *s); +extern ECL_API bool ecl_string_eq(cl_object x, cl_object y); +extern ECL_API bool ecl_member_char(int c, cl_object char_bag); +extern ECL_API int ecl_string_push_extend(cl_object s, int c); +extern ECL_API void get_string_start_end(cl_object s, cl_object start, cl_object end, cl_index *ps, cl_index *pe); +extern ECL_API bool ecl_fits_in_base_string(cl_object s); +extern ECL_API cl_index ecl_char(cl_object s, cl_index i); +extern ECL_API void ecl_char_set(cl_object s, cl_index i, cl_index c); /* structure.c */ -extern cl_object si_structure_subtype_p(cl_object x, cl_object y); -extern cl_object cl_copy_structure(cl_object s); -extern cl_object si_structure_name(cl_object s); -extern cl_object si_structure_ref(cl_object x, cl_object type, cl_object index); -extern cl_object si_structure_set(cl_object x, cl_object type, cl_object index, cl_object val); -extern cl_object si_structurep(cl_object s); -extern cl_object si_make_structure _ARGS((cl_narg narg, cl_object type, ...)); +extern ECL_API cl_object si_structure_subtype_p(cl_object x, cl_object y); +extern ECL_API cl_object cl_copy_structure(cl_object s); +extern ECL_API cl_object si_structure_name(cl_object s); +extern ECL_API cl_object si_structure_ref(cl_object x, cl_object type, cl_object index); +extern ECL_API cl_object si_structure_set(cl_object x, cl_object type, cl_object index, cl_object val); +extern ECL_API cl_object si_structurep(cl_object s); +extern ECL_API cl_object si_make_structure _ARGS((cl_narg narg, cl_object type, ...)); #ifndef CLOS -extern cl_object structure_to_list(cl_object x); +extern ECL_API cl_object structure_to_list(cl_object x); #endif -extern cl_object ecl_structure_ref(cl_object x, cl_object name, int n); -extern cl_object ecl_structure_set(cl_object x, cl_object name, int n, cl_object v); +extern ECL_API cl_object ecl_structure_ref(cl_object x, cl_object name, int n); +extern ECL_API cl_object ecl_structure_set(cl_object x, cl_object name, int n, cl_object v); /* symbol.c */ -extern cl_object cl_make_symbol(cl_object str); -extern cl_object cl_remprop(cl_object sym, cl_object prop); -extern cl_object cl_symbol_plist(cl_object sym); -extern cl_object cl_get_properties(cl_object place, cl_object indicator_list); -extern cl_object cl_symbol_name(cl_object sym); -extern cl_object cl_symbol_package(cl_object sym); -extern cl_object cl_keywordp(cl_object sym); -extern cl_object si_put_f(cl_object plist, cl_object value, cl_object indicator); -extern cl_object si_rem_f(cl_object plist, cl_object indicator); -extern cl_object si_set_symbol_plist(cl_object sym, cl_object plist); -extern cl_object si_putprop(cl_object sym, cl_object value, cl_object indicator); -extern cl_object si_Xmake_special(cl_object sym); -extern cl_object si_Xmake_constant(cl_object sym, cl_object val); -extern cl_object cl_get _ARGS((cl_narg narg, cl_object sym, cl_object indicator, ...)); -extern cl_object cl_getf _ARGS((cl_narg narg, cl_object place, cl_object indicator, ...)); -extern cl_object cl_copy_symbol _ARGS((cl_narg narg, cl_object sym, ...)); -extern cl_object cl_gensym _ARGS((cl_narg narg, ...)); -extern cl_object cl_gentemp _ARGS((cl_narg narg, ...)); -extern cl_object si_put_properties _ARGS((cl_narg narg, cl_object sym, ...)); +extern ECL_API cl_object cl_make_symbol(cl_object str); +extern ECL_API cl_object cl_remprop(cl_object sym, cl_object prop); +extern ECL_API cl_object cl_symbol_plist(cl_object sym); +extern ECL_API cl_object cl_get_properties(cl_object place, cl_object indicator_list); +extern ECL_API cl_object cl_symbol_name(cl_object sym); +extern ECL_API cl_object cl_symbol_package(cl_object sym); +extern ECL_API cl_object cl_keywordp(cl_object sym); +extern ECL_API cl_object si_put_f(cl_object plist, cl_object value, cl_object indicator); +extern ECL_API cl_object si_rem_f(cl_object plist, cl_object indicator); +extern ECL_API cl_object si_set_symbol_plist(cl_object sym, cl_object plist); +extern ECL_API cl_object si_putprop(cl_object sym, cl_object value, cl_object indicator); +extern ECL_API cl_object si_Xmake_special(cl_object sym); +extern ECL_API cl_object si_Xmake_constant(cl_object sym, cl_object val); +extern ECL_API cl_object cl_get _ARGS((cl_narg narg, cl_object sym, cl_object indicator, ...)); +extern ECL_API cl_object cl_getf _ARGS((cl_narg narg, cl_object place, cl_object indicator, ...)); +extern ECL_API cl_object cl_copy_symbol _ARGS((cl_narg narg, cl_object sym, ...)); +extern ECL_API cl_object cl_gensym _ARGS((cl_narg narg, ...)); +extern ECL_API cl_object cl_gentemp _ARGS((cl_narg narg, ...)); +extern ECL_API cl_object si_put_properties _ARGS((cl_narg narg, cl_object sym, ...)); -extern void cl_defvar(cl_object s, cl_object v); -extern void cl_defparameter(cl_object s, cl_object v); -extern cl_object ecl_make_keyword(const char *s); -extern cl_object ecl_symbol_value(cl_object s); -extern cl_object ecl_getf(cl_object place, cl_object indicator, cl_object deflt); -extern cl_object ecl_get(cl_object s, cl_object p, cl_object d); -extern bool ecl_keywordp(cl_object s); +extern ECL_API void cl_defvar(cl_object s, cl_object v); +extern ECL_API void cl_defparameter(cl_object s, cl_object v); +extern ECL_API cl_object ecl_make_keyword(const char *s); +extern ECL_API cl_object ecl_symbol_value(cl_object s); +extern ECL_API cl_object ecl_getf(cl_object place, cl_object indicator, cl_object deflt); +extern ECL_API cl_object ecl_get(cl_object s, cl_object p, cl_object d); +extern ECL_API bool ecl_keywordp(cl_object s); /* tcp.c */ #ifdef TCP -extern cl_object si_open_client_stream(cl_object host, cl_object port); -extern cl_object si_open_server_stream(cl_object port); -extern cl_object si_open_unix_socket_stream(cl_object path); -extern cl_object si_lookup_host_entry(cl_object host_or_address); -extern void ecl_tcp_close_all(void); +extern ECL_API cl_object si_open_client_stream(cl_object host, cl_object port); +extern ECL_API cl_object si_open_server_stream(cl_object port); +extern ECL_API cl_object si_open_unix_socket_stream(cl_object path); +extern ECL_API cl_object si_lookup_host_entry(cl_object host_or_address); +extern ECL_API void ecl_tcp_close_all(void); #endif /* threads.c */ #ifdef ECL_THREADS -extern cl_object mp_own_process(void) __attribute__((const)); -extern cl_object mp_all_processes(void); -extern cl_object mp_exit_process(void) /*__attribute__((noreturn))*/; -extern cl_object mp_interrupt_process(cl_object process, cl_object function); -extern cl_object mp_make_process _ARGS((cl_narg narg, ...)); -extern cl_object mp_process_active_p(cl_object process); -extern cl_object mp_process_enable(cl_object process); -extern cl_object mp_process_yield(void); -extern cl_object mp_process_interrupt(cl_object process, cl_object function); -extern cl_object mp_process_kill(cl_object process); -extern cl_object mp_process_name(cl_object process); -extern cl_object mp_process_preset _ARGS((cl_narg narg, cl_object process, cl_object function, ...)); -extern cl_object mp_process_run_function _ARGS((cl_narg narg, cl_object name, cl_object function, ...)); -extern cl_object mp_process_whostate(cl_object process); -extern cl_object mp_make_lock _ARGS((cl_narg narg, ...)); -extern cl_object mp_recursive_lock_p(cl_object lock); -extern cl_object mp_lock_name(cl_object lock); -extern cl_object mp_lock_holder(cl_object lock); -extern cl_object mp_get_lock _ARGS((cl_narg narg, cl_object lock, ...)); -extern cl_object mp_giveup_lock(cl_object lock); -extern cl_object mp_make_condition_variable(void); -extern cl_object mp_condition_variable_wait(cl_object cv, cl_object lock); -extern cl_object mp_condition_variable_timedwait(cl_object cv, cl_object lock, cl_object seconds); -extern cl_object mp_condition_variable_signal(cl_object cv); -extern cl_object mp_condition_variable_broadcast(cl_object cv); +extern ECL_API cl_object mp_own_process(void) __attribute__((const)); +extern ECL_API cl_object mp_all_processes(void); +extern ECL_API cl_object mp_exit_process(void) /*__attribute__((noreturn))*/; +extern ECL_API cl_object mp_interrupt_process(cl_object process, cl_object function); +extern ECL_API cl_object mp_make_process _ARGS((cl_narg narg, ...)); +extern ECL_API cl_object mp_process_active_p(cl_object process); +extern ECL_API cl_object mp_process_enable(cl_object process); +extern ECL_API cl_object mp_process_yield(void); +extern ECL_API cl_object mp_process_interrupt(cl_object process, cl_object function); +extern ECL_API cl_object mp_process_kill(cl_object process); +extern ECL_API cl_object mp_process_name(cl_object process); +extern ECL_API cl_object mp_process_preset _ARGS((cl_narg narg, cl_object process, cl_object function, ...)); +extern ECL_API cl_object mp_process_run_function _ARGS((cl_narg narg, cl_object name, cl_object function, ...)); +extern ECL_API cl_object mp_process_whostate(cl_object process); +extern ECL_API cl_object mp_make_lock _ARGS((cl_narg narg, ...)); +extern ECL_API cl_object mp_recursive_lock_p(cl_object lock); +extern ECL_API cl_object mp_lock_name(cl_object lock); +extern ECL_API cl_object mp_lock_holder(cl_object lock); +extern ECL_API cl_object mp_get_lock _ARGS((cl_narg narg, cl_object lock, ...)); +extern ECL_API cl_object mp_giveup_lock(cl_object lock); +extern ECL_API cl_object mp_make_condition_variable(void); +extern ECL_API cl_object mp_condition_variable_wait(cl_object cv, cl_object lock); +extern ECL_API cl_object mp_condition_variable_timedwait(cl_object cv, cl_object lock, cl_object seconds); +extern ECL_API cl_object mp_condition_variable_signal(cl_object cv); +extern ECL_API cl_object mp_condition_variable_broadcast(cl_object cv); -extern void ecl_import_current_thread(cl_object process_name, cl_object process_binding); -extern void ecl_release_current_thread(void); +extern ECL_API void ecl_import_current_thread(cl_object process_name, cl_object process_binding); +extern ECL_API void ecl_release_current_thread(void); #endif /* time.c */ -extern cl_object cl_sleep(cl_object z); -extern cl_object cl_get_internal_run_time(void); -extern cl_object cl_get_internal_real_time(void); -extern cl_object cl_get_universal_time(void); +extern ECL_API cl_object cl_sleep(cl_object z); +extern ECL_API cl_object cl_get_internal_run_time(void); +extern ECL_API cl_object cl_get_internal_real_time(void); +extern ECL_API cl_object cl_get_universal_time(void); /* typespec.c */ -extern void assert_type_integer(cl_object p); -extern void assert_type_non_negative_integer(cl_object p); -extern void assert_type_package(cl_object p); -extern void assert_type_string(cl_object p); -extern void assert_type_cons(cl_object p); -extern void assert_type_readtable(cl_object p); -extern void assert_type_hash_table(cl_object p); -extern void assert_type_array(cl_object p); -extern void assert_type_vector(cl_object p); -extern void assert_type_list(cl_object p); -extern void assert_type_proper_list(cl_object p); -extern cl_object cl_type_of(cl_object x); +extern ECL_API void assert_type_integer(cl_object p); +extern ECL_API void assert_type_non_negative_integer(cl_object p); +extern ECL_API void assert_type_package(cl_object p); +extern ECL_API void assert_type_string(cl_object p); +extern ECL_API void assert_type_cons(cl_object p); +extern ECL_API void assert_type_readtable(cl_object p); +extern ECL_API void assert_type_hash_table(cl_object p); +extern ECL_API void assert_type_array(cl_object p); +extern ECL_API void assert_type_vector(cl_object p); +extern ECL_API void assert_type_list(cl_object p); +extern ECL_API void assert_type_proper_list(cl_object p); +extern ECL_API cl_object cl_type_of(cl_object x); -extern void FEtype_error_character(cl_object x) /*__attribute__((noreturn))*/; -extern void FEtype_error_cons(cl_object x) /*__attribute__((noreturn))*/; -extern void FEtype_error_number(cl_object x) /*__attribute__((noreturn))*/; -extern void FEtype_error_real(cl_object x) /*__attribute__((noreturn))*/; -extern void FEtype_error_float(cl_object x) /*__attribute__((noreturn))*/; -extern void FEtype_error_integer(cl_object x) /*__attribute__((noreturn))*/; -extern void FEtype_error_list(cl_object x) /*__attribute__((noreturn))*/; -extern void FEtype_error_proper_list(cl_object x) /*__attribute__((noreturn))*/; -extern void FEtype_error_alist(cl_object x) /*__attribute__((noreturn))*/; -extern void FEtype_error_stream(cl_object x) /*__attribute__((noreturn))*/; -extern void FEcircular_list(cl_object x) /*__attribute__((noreturn))*/; -extern void FEtype_error_index(cl_object seq, cl_object ndx) /*__attribute__((noreturn))*/; -extern void FEtype_error_string(cl_object x) /*__attribute__((noreturn))*/; -extern void FEdivision_by_zero(cl_object x, cl_object y) /*__attribute__((noreturn))*/; -extern cl_object ecl_type_error(cl_object function, const char *place, cl_object o, cl_object type); -extern cl_object ecl_check_cl_type(cl_object fun, cl_object p, cl_type t); -extern cl_object ecl_check_type_string(cl_object fun, cl_object p); +extern ECL_API void FEtype_error_character(cl_object x) /*__attribute__((noreturn))*/; +extern ECL_API void FEtype_error_cons(cl_object x) /*__attribute__((noreturn))*/; +extern ECL_API void FEtype_error_number(cl_object x) /*__attribute__((noreturn))*/; +extern ECL_API void FEtype_error_real(cl_object x) /*__attribute__((noreturn))*/; +extern ECL_API void FEtype_error_float(cl_object x) /*__attribute__((noreturn))*/; +extern ECL_API void FEtype_error_integer(cl_object x) /*__attribute__((noreturn))*/; +extern ECL_API void FEtype_error_list(cl_object x) /*__attribute__((noreturn))*/; +extern ECL_API void FEtype_error_proper_list(cl_object x) /*__attribute__((noreturn))*/; +extern ECL_API void FEtype_error_alist(cl_object x) /*__attribute__((noreturn))*/; +extern ECL_API void FEtype_error_stream(cl_object x) /*__attribute__((noreturn))*/; +extern ECL_API void FEcircular_list(cl_object x) /*__attribute__((noreturn))*/; +extern ECL_API void FEtype_error_index(cl_object seq, cl_object ndx) /*__attribute__((noreturn))*/; +extern ECL_API void FEtype_error_string(cl_object x) /*__attribute__((noreturn))*/; +extern ECL_API void FEdivision_by_zero(cl_object x, cl_object y) /*__attribute__((noreturn))*/; +extern ECL_API cl_object ecl_type_error(cl_object function, const char *place, cl_object o, cl_object type); +extern ECL_API cl_object ecl_check_cl_type(cl_object fun, cl_object p, cl_type t); +extern ECL_API cl_object ecl_check_type_string(cl_object fun, cl_object p); /* unixfsys.c */ -extern cl_object cl_truename(cl_object file); -extern cl_object cl_rename_file _ARGS((cl_narg narg, cl_object old_obj, cl_object new_obj, ...)); -extern cl_object cl_delete_file(cl_object file); -extern cl_object cl_probe_file(cl_object file); -extern cl_object cl_file_write_date(cl_object file); -extern cl_object cl_file_author(cl_object file); -extern cl_object si_file_kind(cl_object pathname, cl_object follow_links); -extern cl_object si_getcwd(void); -extern cl_object si_getpid(void); -extern cl_object si_chdir _ARGS((cl_narg narg, cl_object directory, ...)); -extern cl_object si_mkdir(cl_object directory, cl_object mode); -extern cl_object cl_directory _ARGS((cl_narg narg, cl_object directory, ...)); -extern cl_object cl_user_homedir_pathname _ARGS((cl_narg narg, ...)); -extern cl_object si_mkstemp(cl_object templ); -extern cl_object si_rmdir(cl_object directory); +extern ECL_API cl_object cl_truename(cl_object file); +extern ECL_API cl_object cl_rename_file _ARGS((cl_narg narg, cl_object old_obj, cl_object new_obj, ...)); +extern ECL_API cl_object cl_delete_file(cl_object file); +extern ECL_API cl_object cl_probe_file(cl_object file); +extern ECL_API cl_object cl_file_write_date(cl_object file); +extern ECL_API cl_object cl_file_author(cl_object file); +extern ECL_API cl_object si_file_kind(cl_object pathname, cl_object follow_links); +extern ECL_API cl_object si_getcwd(void); +extern ECL_API cl_object si_getpid(void); +extern ECL_API cl_object si_chdir _ARGS((cl_narg narg, cl_object directory, ...)); +extern ECL_API cl_object si_mkdir(cl_object directory, cl_object mode); +extern ECL_API cl_object cl_directory _ARGS((cl_narg narg, cl_object directory, ...)); +extern ECL_API cl_object cl_user_homedir_pathname _ARGS((cl_narg narg, ...)); +extern ECL_API cl_object si_mkstemp(cl_object templ); +extern ECL_API cl_object si_rmdir(cl_object directory); + +extern ECL_API const char *ecl_expand_pathname(const char *name); +extern ECL_API cl_object ecl_cstring_to_pathname(char *s); +extern ECL_API void *ecl_backup_fopen(const char *filename, const char *option); +extern ECL_API cl_object ecl_file_len(void *fp); +extern ECL_API cl_object ecl_homedir_pathname(cl_object user); +#if defined(_MSC_VER) || defined(mingw32) +extern ECL_API cl_object si_get_library_pathname(void); +#endif -extern const char *ecl_expand_pathname(const char *name); -extern cl_object ecl_cstring_to_pathname(char *s); -extern void *ecl_backup_fopen(const char *filename, const char *option); -extern cl_object ecl_file_len(void *fp); -extern cl_object ecl_homedir_pathname(cl_object user); /* unixint.c */ -extern cl_object si_catch_bad_signals(void); -extern cl_object si_uncatch_bad_signals(void); -extern cl_object si_check_pending_interrupts(void); -extern cl_object si_trap_fpe(cl_object condition, cl_object flag); +extern ECL_API cl_object si_catch_bad_signals(void); +extern ECL_API cl_object si_uncatch_bad_signals(void); +extern ECL_API cl_object si_check_pending_interrupts(void); +extern ECL_API cl_object si_trap_fpe(cl_object condition, cl_object flag); /* unixsys.c */ -extern cl_object si_system(cl_object cmd); -extern cl_object si_open_pipe(cl_object cmd); -extern cl_object si_close_pipe(cl_object stream); -extern cl_object si_run_program _ARGS((cl_narg narg, cl_object command, cl_object args, ...)); +extern ECL_API cl_object si_system(cl_object cmd); +extern ECL_API cl_object si_open_pipe(cl_object cmd); +extern ECL_API cl_object si_close_pipe(cl_object stream); +extern ECL_API cl_object si_run_program _ARGS((cl_narg narg, cl_object command, cl_object args, ...)); /* unicode -- no particular file, but we group these changes here */ #ifdef ECL_UNICODE -extern cl_object si_base_char_p(cl_object x); -extern cl_object si_base_string_p(cl_object x); -extern cl_object si_coerce_to_base_string(cl_object x); -extern cl_object si_coerce_to_extended_string(cl_object x); -extern cl_object cl_alloc_simple_extended_string(cl_index l); +extern ECL_API cl_object si_base_char_p(cl_object x); +extern ECL_API cl_object si_base_string_p(cl_object x); +extern ECL_API cl_object si_coerce_to_base_string(cl_object x); +extern ECL_API cl_object si_coerce_to_extended_string(cl_object x); +extern ECL_API cl_object cl_alloc_simple_extended_string(cl_index l); #else #define si_base_char_p cl_characterp #define si_base_string_p cl_stringp @@ -1548,210 +1543,210 @@ extern cl_object cl_alloc_simple_extended_string(cl_index l); */ /* arraylib.lsp */ -extern cl_object cl_make_array _ARGS((cl_narg narg, cl_object V1, ...)); -extern cl_object cl_vector _ARGS((cl_narg narg, ...)); -extern cl_object cl_array_dimensions _ARGS((cl_narg narg, cl_object V1, ...)); -extern cl_object cl_array_in_bounds_p _ARGS((cl_narg narg, cl_object V1, ...)); -extern cl_object cl_array_row_major_index _ARGS((cl_narg narg, cl_object V1, ...)); -extern cl_object cl_bit _ARGS((cl_narg narg, cl_object V1, ...)); -extern cl_object cl_sbit _ARGS((cl_narg narg, cl_object V1, ...)); -extern cl_object cl_bit_and _ARGS((cl_narg narg, cl_object V1, cl_object V2, ...)); -extern cl_object cl_bit_ior _ARGS((cl_narg narg, cl_object V1, cl_object V2, ...)); -extern cl_object cl_bit_xor _ARGS((cl_narg narg, cl_object V1, cl_object V2, ...)); -extern cl_object cl_bit_eqv _ARGS((cl_narg narg, cl_object V1, cl_object V2, ...)); -extern cl_object cl_bit_nand _ARGS((cl_narg narg, cl_object V1, cl_object V2, ...)); -extern cl_object cl_bit_nor _ARGS((cl_narg narg, cl_object V1, cl_object V2, ...)); -extern cl_object cl_bit_andc1 _ARGS((cl_narg narg, cl_object V1, cl_object V2, ...)); -extern cl_object cl_bit_andc2 _ARGS((cl_narg narg, cl_object V1, cl_object V2, ...)); -extern cl_object cl_bit_orc1 _ARGS((cl_narg narg, cl_object V1, cl_object V2, ...)); -extern cl_object cl_bit_orc2 _ARGS((cl_narg narg, cl_object V1, cl_object V2, ...)); -extern cl_object cl_bit_not _ARGS((cl_narg narg, cl_object V1, ...)); -extern cl_object cl_vector_push _ARGS((cl_object V1, cl_object V2)); -extern cl_object cl_vector_push_extend _ARGS((cl_narg narg, cl_object V1, cl_object V2, ...)); -extern cl_object cl_vector_pop _ARGS((cl_narg narg, cl_object V1, ...)); -extern cl_object cl_adjust_array _ARGS((cl_narg narg, cl_object V1, cl_object V2, ...)); +extern ECL_API cl_object cl_make_array _ARGS((cl_narg narg, cl_object V1, ...)); +extern ECL_API cl_object cl_vector _ARGS((cl_narg narg, ...)); +extern ECL_API cl_object cl_array_dimensions _ARGS((cl_narg narg, cl_object V1, ...)); +extern ECL_API cl_object cl_array_in_bounds_p _ARGS((cl_narg narg, cl_object V1, ...)); +extern ECL_API cl_object cl_array_row_major_index _ARGS((cl_narg narg, cl_object V1, ...)); +extern ECL_API cl_object cl_bit _ARGS((cl_narg narg, cl_object V1, ...)); +extern ECL_API cl_object cl_sbit _ARGS((cl_narg narg, cl_object V1, ...)); +extern ECL_API cl_object cl_bit_and _ARGS((cl_narg narg, cl_object V1, cl_object V2, ...)); +extern ECL_API cl_object cl_bit_ior _ARGS((cl_narg narg, cl_object V1, cl_object V2, ...)); +extern ECL_API cl_object cl_bit_xor _ARGS((cl_narg narg, cl_object V1, cl_object V2, ...)); +extern ECL_API cl_object cl_bit_eqv _ARGS((cl_narg narg, cl_object V1, cl_object V2, ...)); +extern ECL_API cl_object cl_bit_nand _ARGS((cl_narg narg, cl_object V1, cl_object V2, ...)); +extern ECL_API cl_object cl_bit_nor _ARGS((cl_narg narg, cl_object V1, cl_object V2, ...)); +extern ECL_API cl_object cl_bit_andc1 _ARGS((cl_narg narg, cl_object V1, cl_object V2, ...)); +extern ECL_API cl_object cl_bit_andc2 _ARGS((cl_narg narg, cl_object V1, cl_object V2, ...)); +extern ECL_API cl_object cl_bit_orc1 _ARGS((cl_narg narg, cl_object V1, cl_object V2, ...)); +extern ECL_API cl_object cl_bit_orc2 _ARGS((cl_narg narg, cl_object V1, cl_object V2, ...)); +extern ECL_API cl_object cl_bit_not _ARGS((cl_narg narg, cl_object V1, ...)); +extern ECL_API cl_object cl_vector_push _ARGS((cl_object V1, cl_object V2)); +extern ECL_API cl_object cl_vector_push_extend _ARGS((cl_narg narg, cl_object V1, cl_object V2, ...)); +extern ECL_API cl_object cl_vector_pop _ARGS((cl_narg narg, cl_object V1, ...)); +extern ECL_API cl_object cl_adjust_array _ARGS((cl_narg narg, cl_object V1, cl_object V2, ...)); /* iolib.lsp */ -extern cl_object cl_read_from_string _ARGS((cl_narg narg, cl_object V1, ...)); -extern cl_object cl_write_to_string _ARGS((cl_narg narg, cl_object V1, ...)); -extern cl_object cl_prin1_to_string _ARGS((cl_narg narg, cl_object V1, ...)); -extern cl_object cl_princ_to_string _ARGS((cl_narg narg, cl_object V1, ...)); -extern cl_object cl_y_or_n_p _ARGS((cl_narg narg, ...)); -extern cl_object cl_yes_or_no_p _ARGS((cl_narg narg, ...)); +extern ECL_API cl_object cl_read_from_string _ARGS((cl_narg narg, cl_object V1, ...)); +extern ECL_API cl_object cl_write_to_string _ARGS((cl_narg narg, cl_object V1, ...)); +extern ECL_API cl_object cl_prin1_to_string _ARGS((cl_narg narg, cl_object V1, ...)); +extern ECL_API cl_object cl_princ_to_string _ARGS((cl_narg narg, cl_object V1, ...)); +extern ECL_API cl_object cl_y_or_n_p _ARGS((cl_narg narg, ...)); +extern ECL_API cl_object cl_yes_or_no_p _ARGS((cl_narg narg, ...)); /* listlib.lsp */ -extern cl_object cl_union _ARGS((cl_narg narg, cl_object V1, cl_object V2, ...)); -extern cl_object cl_nunion _ARGS((cl_narg narg, cl_object V1, cl_object V2, ...)); -extern cl_object cl_intersection _ARGS((cl_narg narg, cl_object V1, cl_object V2, ...)); -extern cl_object cl_nintersection _ARGS((cl_narg narg, cl_object V1, cl_object V2, ...)); -extern cl_object cl_set_difference _ARGS((cl_narg narg, cl_object V1, cl_object V2, ...)); -extern cl_object cl_nset_difference _ARGS((cl_narg narg, cl_object V1, cl_object V2, ...)); -extern cl_object cl_set_exclusive_or _ARGS((cl_narg narg, cl_object V1, cl_object V2, ...)); -extern cl_object cl_nset_exclusive_or _ARGS((cl_narg narg, cl_object V1, cl_object V2, ...)); -extern cl_object cl_subsetp _ARGS((cl_narg narg, cl_object V1, cl_object V2, ...)); -extern cl_object cl_rassoc_if _ARGS((cl_narg narg, cl_object V1, cl_object V2, ...)); -extern cl_object cl_rassoc_if_not _ARGS((cl_narg narg, cl_object V1, cl_object V2, ...)); -extern cl_object cl_assoc_if _ARGS((cl_narg narg, cl_object V1, cl_object V2, ...)); -extern cl_object cl_assoc_if_not _ARGS((cl_narg narg, cl_object V1, cl_object V2, ...)); -extern cl_object cl_member_if _ARGS((cl_narg narg, cl_object V1, cl_object V2, ...)); -extern cl_object cl_member_if_not _ARGS((cl_narg narg, cl_object V1, cl_object V2, ...)); -extern cl_object cl_subst_if _ARGS((cl_narg narg, cl_object V1, cl_object V2, cl_object V3, ...)); -extern cl_object cl_subst_if_not _ARGS((cl_narg narg, cl_object V1, cl_object V2, cl_object V3, ...)); -extern cl_object cl_nsubst_if _ARGS((cl_narg narg, cl_object V1, cl_object V2, cl_object V3, ...)); -extern cl_object cl_nsubst_if_not _ARGS((cl_narg narg, cl_object V1, cl_object V2, cl_object V3, ...)); +extern ECL_API cl_object cl_union _ARGS((cl_narg narg, cl_object V1, cl_object V2, ...)); +extern ECL_API cl_object cl_nunion _ARGS((cl_narg narg, cl_object V1, cl_object V2, ...)); +extern ECL_API cl_object cl_intersection _ARGS((cl_narg narg, cl_object V1, cl_object V2, ...)); +extern ECL_API cl_object cl_nintersection _ARGS((cl_narg narg, cl_object V1, cl_object V2, ...)); +extern ECL_API cl_object cl_set_difference _ARGS((cl_narg narg, cl_object V1, cl_object V2, ...)); +extern ECL_API cl_object cl_nset_difference _ARGS((cl_narg narg, cl_object V1, cl_object V2, ...)); +extern ECL_API cl_object cl_set_exclusive_or _ARGS((cl_narg narg, cl_object V1, cl_object V2, ...)); +extern ECL_API cl_object cl_nset_exclusive_or _ARGS((cl_narg narg, cl_object V1, cl_object V2, ...)); +extern ECL_API cl_object cl_subsetp _ARGS((cl_narg narg, cl_object V1, cl_object V2, ...)); +extern ECL_API cl_object cl_rassoc_if _ARGS((cl_narg narg, cl_object V1, cl_object V2, ...)); +extern ECL_API cl_object cl_rassoc_if_not _ARGS((cl_narg narg, cl_object V1, cl_object V2, ...)); +extern ECL_API cl_object cl_assoc_if _ARGS((cl_narg narg, cl_object V1, cl_object V2, ...)); +extern ECL_API cl_object cl_assoc_if_not _ARGS((cl_narg narg, cl_object V1, cl_object V2, ...)); +extern ECL_API cl_object cl_member_if _ARGS((cl_narg narg, cl_object V1, cl_object V2, ...)); +extern ECL_API cl_object cl_member_if_not _ARGS((cl_narg narg, cl_object V1, cl_object V2, ...)); +extern ECL_API cl_object cl_subst_if _ARGS((cl_narg narg, cl_object V1, cl_object V2, cl_object V3, ...)); +extern ECL_API cl_object cl_subst_if_not _ARGS((cl_narg narg, cl_object V1, cl_object V2, cl_object V3, ...)); +extern ECL_API cl_object cl_nsubst_if _ARGS((cl_narg narg, cl_object V1, cl_object V2, cl_object V3, ...)); +extern ECL_API cl_object cl_nsubst_if_not _ARGS((cl_narg narg, cl_object V1, cl_object V2, cl_object V3, ...)); /* mislib.lsp */ -extern cl_object cl_logical_pathname_translations _ARGS((cl_narg narg, cl_object V1, ...)); -extern cl_object cl_load_logical_pathname_translations _ARGS((cl_narg, cl_object V1, ...)); -extern cl_object cl_decode_universal_time _ARGS((cl_narg narg, cl_object V1, ...)); -extern cl_object cl_encode_universal_time _ARGS((cl_narg narg, cl_object V1, cl_object V2, cl_object V3, cl_object V4, cl_object V5, cl_object V6, ...)); -extern cl_object cl_get_decoded_time _ARGS((cl_narg narg, ...)); -extern cl_object cl_ensure_directories_exist _ARGS((cl_narg narg, cl_object V1, ...)); -extern cl_object si_simple_program_error _ARGS((cl_narg narg, cl_object format, ...)) /*__attribute__((noreturn))*/; -extern cl_object si_signal_simple_error _ARGS((cl_narg narg, cl_object condition, cl_object continuable, cl_object format, cl_object args, ...)) /*__attribute__((noreturn))*/; +extern ECL_API cl_object cl_logical_pathname_translations _ARGS((cl_narg narg, cl_object V1, ...)); +extern ECL_API cl_object cl_load_logical_pathname_translations _ARGS((cl_narg, cl_object V1, ...)); +extern ECL_API cl_object cl_decode_universal_time _ARGS((cl_narg narg, cl_object V1, ...)); +extern ECL_API cl_object cl_encode_universal_time _ARGS((cl_narg narg, cl_object V1, cl_object V2, cl_object V3, cl_object V4, cl_object V5, cl_object V6, ...)); +extern ECL_API cl_object cl_get_decoded_time _ARGS((cl_narg narg, ...)); +extern ECL_API cl_object cl_ensure_directories_exist _ARGS((cl_narg narg, cl_object V1, ...)); +extern ECL_API cl_object si_simple_program_error _ARGS((cl_narg narg, cl_object format, ...)) /*__attribute__((noreturn))*/; +extern ECL_API cl_object si_signal_simple_error _ARGS((cl_narg narg, cl_object condition, cl_object continuable, cl_object format, cl_object args, ...)) /*__attribute__((noreturn))*/; /* module.lsp */ -extern cl_object cl_provide _ARGS((cl_narg narg, cl_object V1, ...)); -extern cl_object cl_require _ARGS((cl_narg narg, cl_object V1, ...)); +extern ECL_API cl_object cl_provide _ARGS((cl_narg narg, cl_object V1, ...)); +extern ECL_API cl_object cl_require _ARGS((cl_narg narg, cl_object V1, ...)); /* numlib.lsp */ -extern cl_object cl_isqrt _ARGS((cl_narg narg, cl_object V1, ...)); -extern cl_object cl_abs _ARGS((cl_narg narg, cl_object V1, ...)); -extern cl_object cl_phase _ARGS((cl_narg narg, cl_object V1, ...)); -extern cl_object cl_signum _ARGS((cl_narg narg, cl_object V1, ...)); -extern cl_object cl_cis _ARGS((cl_narg narg, cl_object V1, ...)); -extern cl_object cl_asin _ARGS((cl_narg narg, cl_object V1, ...)); -extern cl_object cl_acos _ARGS((cl_narg narg, cl_object V1, ...)); -extern cl_object cl_asinh _ARGS((cl_narg narg, cl_object V1, ...)); -extern cl_object cl_acosh _ARGS((cl_narg narg, cl_object V1, ...)); -extern cl_object cl_atanh _ARGS((cl_narg narg, cl_object V1, ...)); -extern cl_object cl_ffloor _ARGS((cl_narg narg, cl_object V1, ...)); -extern cl_object cl_fceiling _ARGS((cl_narg narg, cl_object V1, ...)); -extern cl_object cl_ftruncate _ARGS((cl_narg narg, cl_object V1, ...)); -extern cl_object cl_fround _ARGS((cl_narg narg, cl_object V1, ...)); -extern cl_object cl_logtest _ARGS((cl_narg narg, cl_object V1, cl_object V2, ...)); -extern cl_object cl_byte _ARGS((cl_narg narg, cl_object V1, cl_object V2, ...)); -extern cl_object cl_byte_size _ARGS((cl_narg narg, cl_object V1, ...)); -extern cl_object cl_byte_position _ARGS((cl_narg narg, cl_object V1, ...)); -extern cl_object cl_ldb _ARGS((cl_narg narg, cl_object V1, cl_object V2, ...)); -extern cl_object cl_ldb_test _ARGS((cl_narg narg, cl_object V1, cl_object V2, ...)); -extern cl_object cl_mask_field _ARGS((cl_narg narg, cl_object V1, cl_object V2, ...)); -extern cl_object cl_dpb _ARGS((cl_narg narg, cl_object V1, cl_object V2, cl_object V3, ...)); -extern cl_object cl_deposit_field _ARGS((cl_narg narg, cl_object V1, cl_object V2, cl_object V3, ...)); +extern ECL_API cl_object cl_isqrt _ARGS((cl_narg narg, cl_object V1, ...)); +extern ECL_API cl_object cl_abs _ARGS((cl_narg narg, cl_object V1, ...)); +extern ECL_API cl_object cl_phase _ARGS((cl_narg narg, cl_object V1, ...)); +extern ECL_API cl_object cl_signum _ARGS((cl_narg narg, cl_object V1, ...)); +extern ECL_API cl_object cl_cis _ARGS((cl_narg narg, cl_object V1, ...)); +extern ECL_API cl_object cl_asin _ARGS((cl_narg narg, cl_object V1, ...)); +extern ECL_API cl_object cl_acos _ARGS((cl_narg narg, cl_object V1, ...)); +extern ECL_API cl_object cl_asinh _ARGS((cl_narg narg, cl_object V1, ...)); +extern ECL_API cl_object cl_acosh _ARGS((cl_narg narg, cl_object V1, ...)); +extern ECL_API cl_object cl_atanh _ARGS((cl_narg narg, cl_object V1, ...)); +extern ECL_API cl_object cl_ffloor _ARGS((cl_narg narg, cl_object V1, ...)); +extern ECL_API cl_object cl_fceiling _ARGS((cl_narg narg, cl_object V1, ...)); +extern ECL_API cl_object cl_ftruncate _ARGS((cl_narg narg, cl_object V1, ...)); +extern ECL_API cl_object cl_fround _ARGS((cl_narg narg, cl_object V1, ...)); +extern ECL_API cl_object cl_logtest _ARGS((cl_narg narg, cl_object V1, cl_object V2, ...)); +extern ECL_API cl_object cl_byte _ARGS((cl_narg narg, cl_object V1, cl_object V2, ...)); +extern ECL_API cl_object cl_byte_size _ARGS((cl_narg narg, cl_object V1, ...)); +extern ECL_API cl_object cl_byte_position _ARGS((cl_narg narg, cl_object V1, ...)); +extern ECL_API cl_object cl_ldb _ARGS((cl_narg narg, cl_object V1, cl_object V2, ...)); +extern ECL_API cl_object cl_ldb_test _ARGS((cl_narg narg, cl_object V1, cl_object V2, ...)); +extern ECL_API cl_object cl_mask_field _ARGS((cl_narg narg, cl_object V1, cl_object V2, ...)); +extern ECL_API cl_object cl_dpb _ARGS((cl_narg narg, cl_object V1, cl_object V2, cl_object V3, ...)); +extern ECL_API cl_object cl_deposit_field _ARGS((cl_narg narg, cl_object V1, cl_object V2, cl_object V3, ...)); /* packlib.lsp */ -extern cl_object cl_find_all_symbols _ARGS((cl_narg, cl_object V1, ...)); -extern cl_object cl_apropos _ARGS((cl_narg arg, cl_object V1, ...)); -extern cl_object cl_apropos_list _ARGS((cl_narg arg, cl_object V1, ...)); -extern cl_object si_find_relative_package _ARGS((cl_narg narg, cl_object pack_name, ...)); +extern ECL_API cl_object cl_find_all_symbols _ARGS((cl_narg, cl_object V1, ...)); +extern ECL_API cl_object cl_apropos _ARGS((cl_narg arg, cl_object V1, ...)); +extern ECL_API cl_object cl_apropos_list _ARGS((cl_narg arg, cl_object V1, ...)); +extern ECL_API cl_object si_find_relative_package _ARGS((cl_narg narg, cl_object pack_name, ...)); /* predlib.lsp */ -extern cl_object si_do_deftype _ARGS((cl_narg narg, cl_object V1, cl_object V2, cl_object V3, ...)); -extern cl_object cl_upgraded_array_element_type _ARGS((cl_narg narg, cl_object V1, ...)); -extern cl_object cl_upgraded_complex_part_type _ARGS((cl_narg narg, cl_object V1, ...)); -extern cl_object cl_typep _ARGS((cl_narg narg, cl_object V1, cl_object V2, ...)); -extern cl_object cl_coerce _ARGS((cl_narg narg, cl_object V1, cl_object V2, ...)); -extern cl_object cl_subtypep _ARGS((cl_narg narg, cl_object V1, cl_object V2, ...)); +extern ECL_API cl_object si_do_deftype _ARGS((cl_narg narg, cl_object V1, cl_object V2, cl_object V3, ...)); +extern ECL_API cl_object cl_upgraded_array_element_type _ARGS((cl_narg narg, cl_object V1, ...)); +extern ECL_API cl_object cl_upgraded_complex_part_type _ARGS((cl_narg narg, cl_object V1, ...)); +extern ECL_API cl_object cl_typep _ARGS((cl_narg narg, cl_object V1, cl_object V2, ...)); +extern ECL_API cl_object cl_coerce _ARGS((cl_narg narg, cl_object V1, cl_object V2, ...)); +extern ECL_API cl_object cl_subtypep _ARGS((cl_narg narg, cl_object V1, cl_object V2, ...)); /* seq.lsp */ -extern cl_object cl_make_sequence _ARGS((cl_narg narg, cl_object V1, cl_object V2, ...)); -extern cl_object cl_concatenate _ARGS((cl_narg narg, cl_object V1, ...)); -extern cl_object cl_map _ARGS((cl_narg narg, cl_object V1, cl_object V2, cl_object V3, ...)); -extern cl_object cl_some _ARGS((cl_narg narg, cl_object V1, cl_object V2, ...)); -extern cl_object cl_every _ARGS((cl_narg narg, cl_object V1, cl_object V2, ...)); -extern cl_object cl_notany _ARGS((cl_narg narg, cl_object V1, cl_object V2, ...)); -extern cl_object cl_notevery _ARGS((cl_narg narg, cl_object V1, cl_object V2, ...)); -extern cl_object cl_map_into _ARGS((cl_narg narg, cl_object V1, cl_object V2, ...)); +extern ECL_API cl_object cl_make_sequence _ARGS((cl_narg narg, cl_object V1, cl_object V2, ...)); +extern ECL_API cl_object cl_concatenate _ARGS((cl_narg narg, cl_object V1, ...)); +extern ECL_API cl_object cl_map _ARGS((cl_narg narg, cl_object V1, cl_object V2, cl_object V3, ...)); +extern ECL_API cl_object cl_some _ARGS((cl_narg narg, cl_object V1, cl_object V2, ...)); +extern ECL_API cl_object cl_every _ARGS((cl_narg narg, cl_object V1, cl_object V2, ...)); +extern ECL_API cl_object cl_notany _ARGS((cl_narg narg, cl_object V1, cl_object V2, ...)); +extern ECL_API cl_object cl_notevery _ARGS((cl_narg narg, cl_object V1, cl_object V2, ...)); +extern ECL_API cl_object cl_map_into _ARGS((cl_narg narg, cl_object V1, cl_object V2, ...)); /* seqlib.lsp */ -extern cl_object cl_reduce _ARGS((cl_narg narg, cl_object V1, cl_object V2, ...)); -extern cl_object cl_fill _ARGS((cl_narg narg, cl_object V1, cl_object V2, ...)); -extern cl_object cl_replace _ARGS((cl_narg narg, cl_object V1, cl_object V2, ...)); -extern cl_object cl_remove _ARGS((cl_narg narg, cl_object V1, cl_object V2, ...)); -extern cl_object cl_remove_if _ARGS((cl_narg narg, cl_object V1, cl_object V2, ...)); -extern cl_object cl_remove_if_not _ARGS((cl_narg narg, cl_object V1, cl_object V2, ...)); -extern cl_object cl_delete _ARGS((cl_narg narg, cl_object V1, cl_object V2, ...)); -extern cl_object cl_delete_if _ARGS((cl_narg narg, cl_object V1, cl_object V2, ...)); -extern cl_object cl_delete_if_not _ARGS((cl_narg narg, cl_object V1, cl_object V2, ...)); -extern cl_object cl_count _ARGS((cl_narg narg, cl_object V1, cl_object V2, ...)); -extern cl_object cl_count_if _ARGS((cl_narg narg, cl_object V1, cl_object V2, ...)); -extern cl_object cl_count_if_not _ARGS((cl_narg narg, cl_object V1, cl_object V2, ...)); -extern cl_object cl_substitute _ARGS((cl_narg narg, cl_object V1, cl_object V2, cl_object V3, ...)); -extern cl_object cl_substitute_if _ARGS((cl_narg narg, cl_object V1, cl_object V2, cl_object V3, ...)); -extern cl_object cl_substitute_if_not _ARGS((cl_narg narg, cl_object V1, cl_object V2, cl_object V3, ...)); -extern cl_object cl_nsubstitute _ARGS((cl_narg narg, cl_object V1, cl_object V2, cl_object V3, ...)); -extern cl_object cl_nsubstitute_if _ARGS((cl_narg narg, cl_object V1, cl_object V2, cl_object V3, ...)); -extern cl_object cl_nsubstitute_if_not _ARGS((cl_narg narg, cl_object V1, cl_object V2, cl_object V3, ...)); -extern cl_object cl_find _ARGS((cl_narg narg, cl_object V1, cl_object V2, ...)); -extern cl_object cl_find_if _ARGS((cl_narg narg, cl_object V1, cl_object V2, ...)); -extern cl_object cl_find_if_not _ARGS((cl_narg narg, cl_object V1, cl_object V2, ...)); -extern cl_object cl_position _ARGS((cl_narg narg, cl_object V1, cl_object V2, ...)); -extern cl_object cl_position_if _ARGS((cl_narg narg, cl_object V1, cl_object V2, ...)); -extern cl_object cl_position_if_not _ARGS((cl_narg narg, cl_object V1, cl_object V2, ...)); -extern cl_object cl_remove_duplicates _ARGS((cl_narg narg, cl_object V1, ...)); -extern cl_object cl_delete_duplicates _ARGS((cl_narg narg, cl_object V1, ...)); -extern cl_object cl_mismatch _ARGS((cl_narg narg, cl_object V1, cl_object V2, ...)); -extern cl_object cl_search _ARGS((cl_narg narg, cl_object V1, cl_object V2, ...)); -extern cl_object cl_sort _ARGS((cl_narg narg, cl_object V1, cl_object V2, ...)); -extern cl_object cl_stable_sort _ARGS((cl_narg narg, cl_object V1, cl_object V2, ...)); -extern cl_object cl_merge _ARGS((cl_narg narg, cl_object V1, cl_object V2, cl_object V3, cl_object V4, ...)); -extern cl_object cl_constantly _ARGS((cl_narg narg, cl_object V1, ...)); +extern ECL_API cl_object cl_reduce _ARGS((cl_narg narg, cl_object V1, cl_object V2, ...)); +extern ECL_API cl_object cl_fill _ARGS((cl_narg narg, cl_object V1, cl_object V2, ...)); +extern ECL_API cl_object cl_replace _ARGS((cl_narg narg, cl_object V1, cl_object V2, ...)); +extern ECL_API cl_object cl_remove _ARGS((cl_narg narg, cl_object V1, cl_object V2, ...)); +extern ECL_API cl_object cl_remove_if _ARGS((cl_narg narg, cl_object V1, cl_object V2, ...)); +extern ECL_API cl_object cl_remove_if_not _ARGS((cl_narg narg, cl_object V1, cl_object V2, ...)); +extern ECL_API cl_object cl_delete _ARGS((cl_narg narg, cl_object V1, cl_object V2, ...)); +extern ECL_API cl_object cl_delete_if _ARGS((cl_narg narg, cl_object V1, cl_object V2, ...)); +extern ECL_API cl_object cl_delete_if_not _ARGS((cl_narg narg, cl_object V1, cl_object V2, ...)); +extern ECL_API cl_object cl_count _ARGS((cl_narg narg, cl_object V1, cl_object V2, ...)); +extern ECL_API cl_object cl_count_if _ARGS((cl_narg narg, cl_object V1, cl_object V2, ...)); +extern ECL_API cl_object cl_count_if_not _ARGS((cl_narg narg, cl_object V1, cl_object V2, ...)); +extern ECL_API cl_object cl_substitute _ARGS((cl_narg narg, cl_object V1, cl_object V2, cl_object V3, ...)); +extern ECL_API cl_object cl_substitute_if _ARGS((cl_narg narg, cl_object V1, cl_object V2, cl_object V3, ...)); +extern ECL_API cl_object cl_substitute_if_not _ARGS((cl_narg narg, cl_object V1, cl_object V2, cl_object V3, ...)); +extern ECL_API cl_object cl_nsubstitute _ARGS((cl_narg narg, cl_object V1, cl_object V2, cl_object V3, ...)); +extern ECL_API cl_object cl_nsubstitute_if _ARGS((cl_narg narg, cl_object V1, cl_object V2, cl_object V3, ...)); +extern ECL_API cl_object cl_nsubstitute_if_not _ARGS((cl_narg narg, cl_object V1, cl_object V2, cl_object V3, ...)); +extern ECL_API cl_object cl_find _ARGS((cl_narg narg, cl_object V1, cl_object V2, ...)); +extern ECL_API cl_object cl_find_if _ARGS((cl_narg narg, cl_object V1, cl_object V2, ...)); +extern ECL_API cl_object cl_find_if_not _ARGS((cl_narg narg, cl_object V1, cl_object V2, ...)); +extern ECL_API cl_object cl_position _ARGS((cl_narg narg, cl_object V1, cl_object V2, ...)); +extern ECL_API cl_object cl_position_if _ARGS((cl_narg narg, cl_object V1, cl_object V2, ...)); +extern ECL_API cl_object cl_position_if_not _ARGS((cl_narg narg, cl_object V1, cl_object V2, ...)); +extern ECL_API cl_object cl_remove_duplicates _ARGS((cl_narg narg, cl_object V1, ...)); +extern ECL_API cl_object cl_delete_duplicates _ARGS((cl_narg narg, cl_object V1, ...)); +extern ECL_API cl_object cl_mismatch _ARGS((cl_narg narg, cl_object V1, cl_object V2, ...)); +extern ECL_API cl_object cl_search _ARGS((cl_narg narg, cl_object V1, cl_object V2, ...)); +extern ECL_API cl_object cl_sort _ARGS((cl_narg narg, cl_object V1, cl_object V2, ...)); +extern ECL_API cl_object cl_stable_sort _ARGS((cl_narg narg, cl_object V1, cl_object V2, ...)); +extern ECL_API cl_object cl_merge _ARGS((cl_narg narg, cl_object V1, cl_object V2, cl_object V3, cl_object V4, ...)); +extern ECL_API cl_object cl_constantly _ARGS((cl_narg narg, cl_object V1, ...)); /* pprint.lsp */ -extern cl_object cl_pprint_newline _ARGS((cl_narg narg, cl_object V1, ...)); -extern cl_object cl_pprint_indent _ARGS((cl_narg narg, cl_object V1, cl_object V2, ...)); -extern cl_object cl_pprint_tab _ARGS((cl_narg narg, cl_object V1, cl_object V2, cl_object V3, ...)); -extern cl_object cl_pprint_fill _ARGS((cl_narg narg, cl_object V1, cl_object V2, ...)); -extern cl_object cl_pprint_linear _ARGS((cl_narg narg, cl_object V1, cl_object V2, ...)); -extern cl_object cl_pprint_tabular _ARGS((cl_narg narg, cl_object V1, cl_object V2, ...)); -extern cl_object cl_copy_pprint_dispatch _ARGS((cl_narg narg, ...)); -extern cl_object cl_pprint_dispatch _ARGS((cl_narg narg, cl_object V1, ...)); -extern cl_object cl_set_pprint_dispatch _ARGS((cl_narg narg, cl_object V1, cl_object V2, ...)); +extern ECL_API cl_object cl_pprint_newline _ARGS((cl_narg narg, cl_object V1, ...)); +extern ECL_API cl_object cl_pprint_indent _ARGS((cl_narg narg, cl_object V1, cl_object V2, ...)); +extern ECL_API cl_object cl_pprint_tab _ARGS((cl_narg narg, cl_object V1, cl_object V2, cl_object V3, ...)); +extern ECL_API cl_object cl_pprint_fill _ARGS((cl_narg narg, cl_object V1, cl_object V2, ...)); +extern ECL_API cl_object cl_pprint_linear _ARGS((cl_narg narg, cl_object V1, cl_object V2, ...)); +extern ECL_API cl_object cl_pprint_tabular _ARGS((cl_narg narg, cl_object V1, cl_object V2, ...)); +extern ECL_API cl_object cl_copy_pprint_dispatch _ARGS((cl_narg narg, ...)); +extern ECL_API cl_object cl_pprint_dispatch _ARGS((cl_narg narg, cl_object V1, ...)); +extern ECL_API cl_object cl_set_pprint_dispatch _ARGS((cl_narg narg, cl_object V1, cl_object V2, ...)); #ifdef CLOS /* combin.lsp */ -extern cl_object cl_method_combination_error _ARGS((cl_narg narg, cl_object format, ...)); -extern cl_object cl_invalid_method_error _ARGS((cl_narg narg, cl_object method, cl_object format, ...)); +extern ECL_API cl_object cl_method_combination_error _ARGS((cl_narg narg, cl_object format, ...)); +extern ECL_API cl_object cl_invalid_method_error _ARGS((cl_narg narg, cl_object method, cl_object format, ...)); #if 0 /* defclass.lsp */ -extern cl_object clos_ensure_class _ARGS((cl_narg narg, cl_object V1, ...)); +extern ECL_API cl_object clos_ensure_class _ARGS((cl_narg narg, cl_object V1, ...)); /* kernel.lsp */ -extern cl_object clos_class_id _ARGS((cl_narg narg, cl_object V1, ...)); -extern cl_object clos_class_direct_superclasses _ARGS((cl_narg narg, cl_object V1, ...)); -extern cl_object clos_class_direct_subclasses _ARGS((cl_narg narg, cl_object V1, ...)); -extern cl_object clos_class_slots _ARGS((cl_narg narg, cl_object V1, ...)); -extern cl_object clos_class_precedence_list _ARGS((cl_narg narg, cl_object V1, ...)); -extern cl_object clos_class_direct_slots _ARGS((cl_narg narg, cl_object V1, ...)); -extern cl_object clos_slot_index_table _ARGS((cl_narg narg, cl_object V1, ...)); -extern cl_object clos_class_shared_slots _ARGS((cl_narg narg, cl_object V1, ...)); -extern cl_object clos_generic_function_method_combination _ARGS((cl_narg narg, cl_object V1, ...)); -extern cl_object clos_generic_function_lambda_list _ARGS((cl_narg narg, cl_object V1, ...)); -extern cl_object clos_generic_function_argument_precedence_order _ARGS((cl_narg narg, cl_object V1, ...)); -extern cl_object clos_generic_function_method_class _ARGS((cl_narg narg, cl_object V1, ...)); -extern cl_object clos_generic_function_methods _ARGS((cl_narg narg, cl_object V1, ...)); -extern cl_object clos_method_generic_function _ARGS((cl_narg narg, cl_object V1, ...)); -extern cl_object clos_method_lambda_list _ARGS((cl_narg narg, cl_object V1, ...)); -extern cl_object clos_method_specializers _ARGS((cl_narg narg, cl_object V1, ...)); -extern cl_object cl_method_qualifiers _ARGS((cl_narg narg, cl_object V1, ...)); -extern cl_object clos_method_function _ARGS((cl_narg narg, cl_object V1, ...)); -extern cl_object clos_method_plist _ARGS((cl_narg narg, cl_object V1, ...)); -extern cl_object clos_install_method _ARGS((cl_narg narg, cl_object V1, cl_object V2, cl_object V3, cl_object V4, cl_object V5, cl_object V6, cl_object V7, ...)); +extern ECL_API cl_object clos_class_id _ARGS((cl_narg narg, cl_object V1, ...)); +extern ECL_API cl_object clos_class_direct_superclasses _ARGS((cl_narg narg, cl_object V1, ...)); +extern ECL_API cl_object clos_class_direct_subclasses _ARGS((cl_narg narg, cl_object V1, ...)); +extern ECL_API cl_object clos_class_slots _ARGS((cl_narg narg, cl_object V1, ...)); +extern ECL_API cl_object clos_class_precedence_list _ARGS((cl_narg narg, cl_object V1, ...)); +extern ECL_API cl_object clos_class_direct_slots _ARGS((cl_narg narg, cl_object V1, ...)); +extern ECL_API cl_object clos_slot_index_table _ARGS((cl_narg narg, cl_object V1, ...)); +extern ECL_API cl_object clos_class_shared_slots _ARGS((cl_narg narg, cl_object V1, ...)); +extern ECL_API cl_object clos_generic_function_method_combination _ARGS((cl_narg narg, cl_object V1, ...)); +extern ECL_API cl_object clos_generic_function_lambda_list _ARGS((cl_narg narg, cl_object V1, ...)); +extern ECL_API cl_object clos_generic_function_argument_precedence_order _ARGS((cl_narg narg, cl_object V1, ...)); +extern ECL_API cl_object clos_generic_function_method_class _ARGS((cl_narg narg, cl_object V1, ...)); +extern ECL_API cl_object clos_generic_function_methods _ARGS((cl_narg narg, cl_object V1, ...)); +extern ECL_API cl_object clos_method_generic_function _ARGS((cl_narg narg, cl_object V1, ...)); +extern ECL_API cl_object clos_method_lambda_list _ARGS((cl_narg narg, cl_object V1, ...)); +extern ECL_API cl_object clos_method_specializers _ARGS((cl_narg narg, cl_object V1, ...)); +extern ECL_API cl_object cl_method_qualifiers _ARGS((cl_narg narg, cl_object V1, ...)); +extern ECL_API cl_object clos_method_function _ARGS((cl_narg narg, cl_object V1, ...)); +extern ECL_API cl_object clos_method_plist _ARGS((cl_narg narg, cl_object V1, ...)); +extern ECL_API cl_object clos_install_method _ARGS((cl_narg narg, cl_object V1, cl_object V2, cl_object V3, cl_object V4, cl_object V5, cl_object V6, cl_object V7, ...)); /* standard.lsp */ -extern cl_object clos_standard_instance_set _ARGS((cl_narg narg, cl_object V1, cl_object V2, cl_object V3, ...)); +extern ECL_API cl_object clos_standard_instance_set _ARGS((cl_narg narg, cl_object V1, cl_object V2, cl_object V3, ...)); #endif #endif diff --git a/src/h/internal.h b/src/h/internal.h index a5bf30408..49c042dcc 100644 --- a/src/h/internal.h +++ b/src/h/internal.h @@ -68,9 +68,9 @@ struct cl_compiler_env { #define cl_stack_ref(n) cl_env.stack[n] #define cl_stack_index() (cl_env.stack_top-cl_env.stack) -#define ECL_BUILD_STACK_FRAME(name) \ - struct ecl_stack_frame name##_aux;\ - cl_object name=(name##_aux.t=t_frame,name##_aux.narg=name##_aux.sp=0,(cl_object)&(name##_aux)); +#define ECL_BUILD_STACK_FRAME(name,frame) \ + struct ecl_stack_frame frame;\ + cl_object name=(frame.t=t_frame,frame.narg=frame.sp=0,(cl_object)(&frame)) /* ffi.d */ @@ -128,20 +128,20 @@ struct ecl_fficall { cl_object cstring; }; -enum ecl_ffi_tag ecl_foreign_type_code(cl_object type); -enum ecl_ffi_calling_convention ecl_foreign_cc_code(cl_object cc_type); -void ecl_fficall_prepare(cl_object return_type, cl_object arg_types, cl_object cc_type); -void ecl_fficall_push_bytes(void *data, size_t bytes); -void ecl_fficall_push_int(int word); -void ecl_fficall_align(int data); -cl_object ecl_foreign_data_ref_elt(void *p, enum ecl_ffi_tag type); -void ecl_foreign_data_set_elt(void *p, enum ecl_ffi_tag type, cl_object value); +extern enum ecl_ffi_tag ecl_foreign_type_code(cl_object type); +extern enum ecl_ffi_calling_convention ecl_foreign_cc_code(cl_object cc_type); +extern void ecl_fficall_prepare(cl_object return_type, cl_object arg_types, cl_object cc_type); +extern void ecl_fficall_push_bytes(void *data, size_t bytes); +extern void ecl_fficall_push_int(int word); +extern void ecl_fficall_align(int data); +extern cl_object ecl_foreign_data_ref_elt(void *p, enum ecl_ffi_tag type); +extern void ecl_foreign_data_set_elt(void *p, enum ecl_ffi_tag type, cl_object value); -struct ecl_fficall_reg *ecl_fficall_prepare_extra(struct ecl_fficall_reg *registers); -void ecl_fficall_push_arg(union ecl_ffi_values *data, enum ecl_ffi_tag type); -void ecl_fficall_execute(void *f_ptr, struct ecl_fficall *fficall, enum ecl_ffi_tag return_type); -void ecl_dynamic_callback_call(cl_object callback_info, char* buffer); -void* ecl_dynamic_callback_make(cl_object data, enum ecl_ffi_calling_convention cc_type); +extern struct ecl_fficall_reg *ecl_fficall_prepare_extra(struct ecl_fficall_reg *registers); +extern void ecl_fficall_push_arg(union ecl_ffi_values *data, enum ecl_ffi_tag type); +extern void ecl_fficall_execute(void *f_ptr, struct ecl_fficall *fficall, enum ecl_ffi_tag return_type); +extern void ecl_dynamic_callback_call(cl_object callback_info, char* buffer); +extern void* ecl_dynamic_callback_make(cl_object data, enum ecl_ffi_calling_convention cc_type); /* file.d */ @@ -257,12 +257,6 @@ typedef int fenv_t; # define fesetenv(bits) _controlfp(*(bits), MCW_EM) #endif -/* unixfsys.d */ - -#if defined(_MSC_VER) || defined(mingw32) -extern cl_object si_get_library_pathname(void); -#endif - /* * Fake several ISO C99 mathematical functions */ diff --git a/src/h/stacks.h b/src/h/stacks.h index dc33e0ed3..e49495c09 100644 --- a/src/h/stacks.h +++ b/src/h/stacks.h @@ -32,17 +32,17 @@ typedef struct bds_bd { bds_overflow() #ifdef ECL_THREADS -extern void bds_bind(cl_object symbol, cl_object value); -extern void bds_push(cl_object symbol); -extern void bds_unwind1(); -extern void bds_unwind_n(int n); -extern cl_object *ecl_symbol_slot(cl_object s); +extern ECL_API void bds_bind(cl_object symbol, cl_object value); +extern ECL_API void bds_push(cl_object symbol); +extern ECL_API void bds_unwind1(); +extern ECL_API void bds_unwind_n(int n); +extern ECL_API cl_object *ecl_symbol_slot(cl_object s); #define SYM_VAL(s) (*ecl_symbol_slot(s)) #if 0 #define ECL_SET(s,v) ((s)->symbol.value=(v)) #define ECL_SETQ(s,v) (*ecl_symbol_slot(s)=(v)) #else -extern cl_object ecl_set_symbol(cl_object s, cl_object v); +extern ECL_API cl_object ecl_set_symbol(cl_object s, cl_object v); #define ECL_SET(s,v) (ecl_set_symbol(s,v)) #define ECL_SETQ(s,v) (ecl_set_symbol(s,v)) #endif @@ -88,7 +88,7 @@ typedef struct ihs_frame { cl_env.ihs_top = cl_env.ihs_top->next; \ } while(0) -extern cl_object ihs_top_function_name(void); +extern ECL_API cl_object ihs_top_function_name(void); /*************** * FRAME STACK @@ -122,7 +122,7 @@ typedef struct ecl_frame { cl_index frs_sp; } *ecl_frame_ptr; -extern ecl_frame_ptr _frs_push(register cl_object val); +extern ECL_API ecl_frame_ptr _frs_push(register cl_object val); #define frs_push(val) ecl_setjmp(_frs_push(val)->frs_jmpbuf) #define frs_pop() (cl_env.frs_top--) diff --git a/src/lsp/config.lsp.in b/src/lsp/config.lsp.in index 1d7b78bf4..fb0225ca1 100644 --- a/src/lsp/config.lsp.in +++ b/src/lsp/config.lsp.in @@ -24,7 +24,7 @@ Returns, as a string, the location of the machine on which ECL runs." (defun lisp-implementation-version () "Args:() Returns the version of your ECL as a string." - "@PACKAGE_VERSION@ (CVS 2008-02-16 11:33)") + "@PACKAGE_VERSION@ (CVS 2008-03-16 12:11)") (defun machine-type () "Args: () diff --git a/src/util/cut.c b/src/util/cut.c index 32861bf95..c6402b76e 100644 --- a/src/util/cut.c +++ b/src/util/cut.c @@ -51,9 +51,6 @@ main(int narg, char **argv) { if (strstr(buffer, "-CUT-")) { exit(0); } - } else if (strstr(buffer, "declspec(dllimport)")) { - /* This is used to removed the declspec(dllimport) from external.h */ - continue; } puts(buffer); }