From c7d035ae1a729232579a0fe41ed5affa131d3623 Mon Sep 17 00:00:00 2001 From: Bryan Newbold Date: Mon, 20 Feb 2017 00:05:27 -0800 Subject: Import Upstream version 5d9 --- scm.h | 925 ++++++++++++++++++++++++++++++++++-------------------------------- 1 file changed, 475 insertions(+), 450 deletions(-) (limited to 'scm.h') diff --git a/scm.h b/scm.h index 81b6232..504f849 100644 --- a/scm.h +++ b/scm.h @@ -45,6 +45,14 @@ extern "C" { #endif +#ifdef _WIN32 +# include +#endif + +#ifdef _WIN32_WCE +# include +#endif + #ifdef hpux # ifndef __GNUC__ # define const /**/ @@ -71,6 +79,27 @@ typedef struct {const char *name;} subr_info; #include #include "scmfig.h" +#ifdef _WIN32 +# ifdef DLLSCM +# define SCM_DLL_EXPORT __declspec(dllexport) +# define SCM_DLL_IMPORT __declspec(dllimport) +# ifdef SCM_DLL +# define SCM_EXPORT SCM_DLL_EXPORT +# else +# define SCM_EXPORT SCM_DLL_IMPORT +# endif +# else +# define SCM_DLL_EXPORT /**/ +# define SCM_DLL_IMPORT extern +# define SCM_EXPORT extern +# endif +#else +# define SCM_DLL_EXPORT /**/ +# define SCM_DLL_IMPORT extern +# define SCM_EXPORT extern +#endif + + typedef struct { sizet eltsize; sizet len; @@ -178,7 +207,7 @@ typedef struct {SCM type;double *real;} dbl; as in backtraces, make a little more sense. */ #define MAKSPCSYM2(work, look) ((127L & (work)) | ((127L<<9) & (look))) -extern char *isymnames[]; +SCM_EXPORT char *isymnames[]; #define NUM_ISPCSYM 14 #define IM_AND MAKSPCSYM(0) #define IM_BEGIN MAKSPCSYM(1) @@ -213,7 +242,7 @@ extern char *isymnames[]; #define s_quasiquote (ISYMCHARS(IM_QUASIQUOTE)+2) #define s_let_syntax (ISYMCHARS(IM_LET_SYNTAX)+2) -extern SCM i_dot, i_quote, i_quasiquote, i_unquote, i_uq_splicing; +SCM_EXPORT SCM i_dot, i_quote, i_quasiquote, i_unquote, i_uq_splicing; #define s_apply (ISYMCHARS(IM_APPLY)+2) /* each symbol defined here must have a unique number which @@ -301,8 +330,14 @@ extern SCM i_dot, i_quote, i_quasiquote, i_unquote, i_uq_splicing; #define GCCDR(x) (~1L & CDR(x)) #define SETCDR(x, v) CDR(x) = (SCM)(v) +#ifdef _M_ARM +/* MS CLARM compiler bug workaround. */ +volatile SCM MS_CLARM_dumy; +# define CODE(x) (MS_CLARM_dumy = (CAR(x)-tc3_closure)) +#else +# define CODE(x) (CAR(x)-tc3_closure) +#endif #define CLOSUREP(x) (TYP3(x)==tc3_closure) -#define CODE(x) (CAR(x)-tc3_closure) #define SETCODE(x, e) CAR(x) = (e)+tc3_closure #define ENV(x) ((~7L & CDR(x)) ? (~7L & CDR(x)) : EOL) #define GCENV ENV @@ -316,7 +351,7 @@ extern SCM i_dot, i_quote, i_quasiquote, i_unquote, i_uq_splicing; #define SCM_ESTK_PARENT(v) (VELTS(v)[0]) #define SCM_ESTK_PARENT_WRITABLEP(v) (VELTS(v)[1]) #define SCM_ESTK_PARENT_INDEX(v) (VELTS(v)[2]) -extern long tc16_env, tc16_ident; +SCM_EXPORT long tc16_env, tc16_ident; #define ENVP(x) (tc16_env==TYP16(x)) #define SCM_ENV_FORMALS CAR #ifdef MACRO @@ -360,8 +395,6 @@ extern long tc16_env, tc16_ident; #define SETSTREAM SETCDR #define CRDYP(port) ((CAR(port) & CRDY) && (EOF != CGETUN(port))) #define CLRDY(port) (CAR(port) &= (SCM_PORTFLAGS(port) | (~0xf0000))) - /* #define CRDYP(port) (CAR(port) & CRDY) - #define CLRDY(port) (CAR(port) &= (~CRDY)) */ #define CGETUN(port) (scm_port_table[SCM_PORTNUM(port)].unread) #define tc_socket (tc7_port | OPN) @@ -427,7 +460,7 @@ extern long tc16_env, tc16_ident; #define SETCHARS SETCDR #define SETVELTS SETCDR -extern long tc16_array; +SCM_EXPORT long tc16_array; #define ARRAYP(a) (tc16_array==TYP16(a)) #define ARRAY_V(a) (((array *)CDR(a))->v) /*#define ARRAY_NDIM(x) NUMDIGS(x)*/ @@ -567,28 +600,28 @@ extern long tc16_array; #define EXCLUSIVE (128L<<16) /* LSB is used for gc mark */ -extern scm_gra subrs_gra; +SCM_EXPORT scm_gra subrs_gra; #define subrs ((subr_info *)(subrs_gra.elts)) -/* extern sizet numsmob, numptob; - extern smobfuns *smobs; - extern ptobfuns *ptobs; - extern ptobfuns pipob; */ -extern scm_gra smobs_gra; +/* SCM_EXPORT sizet numsmob, numptob; + SCM_EXPORT smobfuns *smobs; + SCM_EXPORT ptobfuns *ptobs; + SCM_EXPORT ptobfuns pipob; */ +SCM_EXPORT scm_gra smobs_gra; #define numsmob (smobs_gra.len) #define smobs ((smobfuns *)(smobs_gra.elts)) -extern scm_gra ptobs_gra; +SCM_EXPORT scm_gra ptobs_gra; #define numptob (ptobs_gra.len) #define ptobs ((ptobfuns *)(ptobs_gra.elts)) -extern port_info *scm_port_table; +SCM_EXPORT port_info *scm_port_table; #define tc16_fport (tc7_port + 0*256L) #define tc16_pipe (tc7_port + 1*256L) #define tc16_strport (tc7_port + 2*256L) #define tc16_sfport (tc7_port + 3*256L) -extern long tc16_dir; -extern long tc16_clport; +SCM_EXPORT long tc16_dir; +SCM_EXPORT long tc16_clport; -extern SCM sys_protects[]; +SCM_EXPORT SCM sys_protects[]; #define cur_inp sys_protects[0] #define cur_outp sys_protects[1] #define cur_errp sys_protects[2] @@ -615,484 +648,476 @@ extern SCM sys_protects[]; /* now for connects between source files */ -/* extern sizet num_finals; - extern void (**finals)P((void)); - extern sizet num_finals; */ -extern scm_gra finals_gra; +/* SCM_EXPORT sizet num_finals; + SCM_EXPORT void (**finals)P((void)); + SCM_EXPORT sizet num_finals; */ +SCM_EXPORT scm_gra finals_gra; #define num_finals (finals_gra.len) #define finals ((void (**)())(finals_gra.elts)) -extern unsigned char upcase[], downcase[]; -extern SCM symhash; -extern int symhash_dim; -extern long heap_cells; -extern CELLPTR heap_org; -extern VOLATILE SCM freelist; -extern long gc_cells_collected, gc_malloc_collected, gc_ports_collected; -extern long gc_syms_collected; -extern long cells_allocated, lcells_allocated, mallocated, lmallocated; -extern long mtrigger; -extern SCM *loc_loadpath; -extern SCM *loc_errobj; -extern SCM loadport; -extern char *errjmp_bad; -extern int ints_disabled, output_deferred, gc_hook_pending, gc_hook_active; -extern unsigned long SIG_deferred; -extern SCM exitval; -extern int cursinit; -extern unsigned int poll_count, tick_count; -extern int dumped; -extern char *execpath; -extern char s_no_execpath[]; -extern int scm_verbose; +SCM_EXPORT unsigned char upcase[], downcase[]; +SCM_EXPORT SCM symhash; +SCM_EXPORT int symhash_dim; +SCM_EXPORT long heap_cells; +SCM_EXPORT CELLPTR heap_org; +SCM_EXPORT VOLATILE SCM freelist; +SCM_EXPORT long gc_cells_collected, gc_malloc_collected, gc_ports_collected; +SCM_EXPORT long gc_syms_collected; +SCM_EXPORT long cells_allocated, lcells_allocated, mallocated, lmallocated; +SCM_EXPORT long mtrigger; +SCM_EXPORT SCM *loc_loadpath; +SCM_EXPORT SCM *loc_errobj; +SCM_EXPORT SCM loadport; +SCM_EXPORT char *errjmp_bad; +SCM_EXPORT int ints_disabled, output_deferred, gc_hook_pending, gc_hook_active; +SCM_EXPORT unsigned long SIG_deferred; +SCM_EXPORT SCM exitval; +SCM_EXPORT int cursinit; +SCM_EXPORT unsigned int poll_count, tick_count; +SCM_EXPORT int dumped; +SCM_EXPORT char *execpath; +SCM_EXPORT char s_no_execpath[]; +SCM_EXPORT int scm_verbose; #define verbose (scm_verbose+0) -extern const char dirsep[]; +SCM_EXPORT const char dirsep[]; /* strings used in several source files */ -extern char s_read[], s_write[], s_newline[], s_system[]; -extern char s_make_string[], s_make_vector[], s_list[], s_op_pipe[]; +SCM_EXPORT char s_read[], s_write[], s_newline[], s_system[]; +SCM_EXPORT char s_make_string[], s_make_vector[], s_list[], s_op_pipe[]; #define s_string (s_make_string+5) #define s_vector (s_make_vector+5) #define s_pipe (s_op_pipe+5) -extern char s_make_sh_array[]; +SCM_EXPORT char s_make_sh_array[]; +SCM_EXPORT char s_array_fill[]; #define s_array (s_make_sh_array+12) -extern char s_ccl[]; +SCM_EXPORT char s_ccl[]; #define s_limit (s_ccl+10) -extern char s_close_port[]; +SCM_EXPORT char s_close_port[]; #define s_port_type (s_close_port+6) -extern char s_call_cc[]; +SCM_EXPORT char s_call_cc[]; #define s_cont (s_call_cc+18) -extern char s_try_create_file[]; -extern char s_badenv[]; +SCM_EXPORT char s_try_create_file[]; +SCM_EXPORT char s_badenv[]; + +SCM_EXPORT void (*init_user_scm) P((void)); /* function prototypes */ -extern void (* deferred_proc) P((void)); -void process_signals P((void)); -int handle_it P((int i)); -SCM must_malloc_cell P((long len, SCM c, char *what)); -void must_realloc_cell P((SCM z, long olen, long len, char *what)); -char *must_malloc P((long len, char *what)); -char *must_realloc P((char *where, long olen, long len, char *what)); -void must_free P((char *obj, sizet len)); -void scm_protect_temp P((SCM *ptr)); -long ilength P((SCM sx)); -SCM hash P((SCM obj, SCM n)); -SCM hashv P((SCM obj, SCM n)); -SCM hashq P((SCM obj, SCM n)); -SCM obhash P((SCM obj)); -SCM obunhash P((SCM obj)); -unsigned long strhash P((unsigned char *str, sizet len, unsigned long n)); -unsigned long hasher P((SCM obj, unsigned long n, sizet d)); -SCM lroom P((SCM args)); -SCM lflush P((SCM port)); -void scm_init_gra P((scm_gra *gra, sizet eltsize, sizet len, +SCM_EXPORT void (* deferred_proc) P((void)); +SCM_EXPORT void process_signals P((void)); +SCM_EXPORT int handle_it P((int i)); +SCM_EXPORT SCM must_malloc_cell P((long len, SCM c, char *what)); +SCM_EXPORT void must_realloc_cell P((SCM z, long olen, long len, char *what)); +SCM_EXPORT char *must_malloc P((long len, char *what)); +SCM_EXPORT char *must_realloc P((char *where, long olen, long len, char *what)); +SCM_EXPORT void must_free P((char *obj, sizet len)); +SCM_EXPORT void scm_protect_temp P((SCM *ptr)); +SCM_EXPORT long ilength P((SCM sx)); +SCM_EXPORT SCM hash P((SCM obj, SCM n)); +SCM_EXPORT SCM hashv P((SCM obj, SCM n)); +SCM_EXPORT SCM hashq P((SCM obj, SCM n)); +SCM_EXPORT SCM obhash P((SCM obj)); +SCM_EXPORT SCM obunhash P((SCM obj)); +SCM_EXPORT unsigned long strhash P((unsigned char *str, sizet len, unsigned long n)); +SCM_EXPORT unsigned long hasher P((SCM obj, unsigned long n, sizet d)); +SCM_EXPORT SCM lroom P((SCM args)); +SCM_EXPORT SCM lflush P((SCM port)); +SCM_EXPORT void scm_init_gra P((scm_gra *gra, sizet eltsize, sizet len, sizet maxlen, char *what)); -int scm_grow_gra P((scm_gra *gra, char *elt)); -void scm_trim_gra P((scm_gra *gra)); -void scm_free_gra P((scm_gra *gra)); -long newsmob P((smobfuns *smob)); -long newptob P((ptobfuns *ptob)); -SCM scm_port_entry P((FILE *stream, long ptype, long flags)); -SCM scm_open_ports P((void)); -void prinport P((SCM exp, SCM port, char *type)); -SCM repl P((void)); -void repl_report P((void)); -void growth_mon P((char *obj, long size, char *units, int grewp)); -void gc_start P((char *what)); -void gc_end P((void)); -void gc_mark P((SCM p)); -void scm_gc_hook P((void)); -SCM scm_gc_protect P((SCM obj)); -SCM scm_add_finalizer P((SCM value, SCM finalizer)); -void scm_run_finalizers P((int exiting)); -void scm_egc_start P((void)); -void scm_egc_end P((void)); -void heap_report P((void)); -void gra_report P((void)); -void exit_report P((void)); -void stack_report P((void)); -SCM scm_stack_trace P((SCM contin)); -SCM scm_scope_trace P((SCM env)); -SCM scm_frame_trace P((SCM contin, SCM nf)); -SCM scm_frame2env P((SCM contin, SCM nf)); -SCM scm_frame_eval P((SCM contin, SCM nf, SCM expr)); -void iprin1 P((SCM exp, SCM port, int writing)); -void intprint P((long n, int radix, SCM port)); -void iprlist P((char *hdr, SCM exp, int tlr, SCM port, int writing)); -SCM scm_env_lookup P((SCM var, SCM stenv)); -SCM scm_env_rlookup P((SCM addr, SCM stenv, char *what)); -SCM scm_env_getprop P((SCM prop, SCM env)); -SCM scm_env_addprop P((SCM prop, SCM val, SCM env)); -long num_frames P((SCM estk, int i)); -SCM *estk_frame P((SCM estk, int i, int nf)); -SCM *cont_frame P((SCM contin, int nf)); -SCM stacktrace1 P((SCM estk, int i)); -void scm_princode P((SCM code, SCM env, SCM port, int writing)); -void scm_princlosure P((SCM proc, SCM port, int writing)); -void lputc P((int c, SCM port)); -void lputs P((char *s, SCM port)); -sizet lfwrite P((char *ptr, sizet size, sizet nitems, SCM port)); -int lgetc P((SCM port)); -void lungetc P((int c, SCM port)); -char *grow_tok_buf P((SCM tok_buf)); -long mode_bits P((char *modes, char *cmodes)); -long time_in_msec P((long x)); -SCM my_time P((void)); -SCM your_time P((void)); -void init_iprocs P((iproc *subra, int type)); - -void final_scm P((int)); -void init_sbrk P((void)); -int init_buf0 P((FILE *inport)); -void scm_init_from_argv P((int argc, char **argv, char *script_arg, +SCM_EXPORT int scm_grow_gra P((scm_gra *gra, char *elt)); +SCM_EXPORT void scm_trim_gra P((scm_gra *gra)); +SCM_EXPORT void scm_free_gra P((scm_gra *gra)); +SCM_EXPORT long newsmob P((smobfuns *smob)); +SCM_EXPORT long newptob P((ptobfuns *ptob)); +SCM_EXPORT SCM scm_port_entry P((FILE *stream, long ptype, long flags)); +SCM_EXPORT SCM scm_open_ports P((void)); +SCM_EXPORT void prinport P((SCM exp, SCM port, char *type)); +SCM_EXPORT SCM repl P((void)); +SCM_EXPORT void repl_report P((void)); +SCM_EXPORT void growth_mon P((char *obj, long size, char *units, int grewp)); +SCM_EXPORT void gc_start P((char *what)); +SCM_EXPORT void gc_end P((void)); +SCM_EXPORT void gc_mark P((SCM p)); +SCM_EXPORT void scm_gc_hook P((void)); +SCM_EXPORT SCM scm_gc_protect P((SCM obj)); +SCM_EXPORT SCM scm_add_finalizer P((SCM value, SCM finalizer)); +SCM_EXPORT void scm_run_finalizers P((int exiting)); +SCM_EXPORT void scm_egc_start P((void)); +SCM_EXPORT void scm_egc_end P((void)); +SCM_EXPORT void heap_report P((void)); +SCM_EXPORT void gra_report P((void)); +SCM_EXPORT void exit_report P((void)); +SCM_EXPORT void stack_report P((void)); +SCM_EXPORT SCM scm_stack_trace P((SCM contin)); +SCM_EXPORT SCM scm_scope_trace P((SCM env)); +SCM_EXPORT SCM scm_frame_trace P((SCM contin, SCM nf)); +SCM_EXPORT SCM scm_frame2env P((SCM contin, SCM nf)); +SCM_EXPORT SCM scm_frame_eval P((SCM contin, SCM nf, SCM expr)); +SCM_EXPORT void iprin1 P((SCM exp, SCM port, int writing)); +SCM_EXPORT void intprint P((long n, int radix, SCM port)); +SCM_EXPORT void iprlist P((char *hdr, SCM exp, int tlr, SCM port, int writing)); +SCM_EXPORT SCM scm_env_lookup P((SCM var, SCM stenv)); +SCM_EXPORT SCM scm_env_rlookup P((SCM addr, SCM stenv, char *what)); +SCM_EXPORT SCM scm_env_getprop P((SCM prop, SCM env)); +SCM_EXPORT SCM scm_env_addprop P((SCM prop, SCM val, SCM env)); +SCM_EXPORT long num_frames P((SCM estk, int i)); +SCM_EXPORT SCM *estk_frame P((SCM estk, int i, int nf)); +SCM_EXPORT SCM *cont_frame P((SCM contin, int nf)); +SCM_EXPORT SCM stacktrace1 P((SCM estk, int i)); +SCM_EXPORT void scm_princode P((SCM code, SCM env, SCM port, int writing)); +SCM_EXPORT void scm_princlosure P((SCM proc, SCM port, int writing)); +SCM_EXPORT void lputc P((int c, SCM port)); +SCM_EXPORT void lputs P((char *s, SCM port)); +SCM_EXPORT sizet lfwrite P((char *ptr, sizet size, sizet nitems, SCM port)); +SCM_EXPORT int lgetc P((SCM port)); +SCM_EXPORT void lungetc P((int c, SCM port)); +SCM_EXPORT char *grow_tok_buf P((SCM tok_buf)); +SCM_EXPORT long mode_bits P((char *modes, char *cmodes)); +SCM_EXPORT long time_in_msec P((long x)); +SCM_EXPORT SCM my_time P((void)); +SCM_EXPORT SCM your_time P((void)); +SCM_EXPORT void init_iprocs P((iproc *subra, int type)); + +SCM_EXPORT void final_scm P((int)); +SCM_EXPORT void init_sbrk P((void)); +SCM_EXPORT int init_buf0 P((FILE *inport)); +SCM_EXPORT void scm_init_from_argv P((int argc, char **argv, char *script_arg, int iverbose, int buf0stdin)); -void init_signals P((void)); -SCM scm_top_level P((char *initpath, SCM (*toplvl_fun)())); -void restore_signals P((void)); -void free_storage P((void)); -char *dld_find_executable P((const char* command)); -char *scm_find_execpath P((int argc, char **argv, char *script_arg)); -void init_scm P((int iverbose, int buf0stdin, long init_heap_size)); -void scm_init_INITS P((void)); -SCM scm_init_extensions P((void)); -void init_user_scm P((void)); -void ignore_signals P((void)); -void unignore_signals P((void)); - -void add_feature P((char *str)); -int raprin1 P((SCM exp, SCM port, int writing)); -SCM markcdr P((SCM ptr)); +SCM_EXPORT void init_signals P((void)); +SCM_EXPORT SCM scm_top_level P((char *initpath, SCM (*toplvl_fun)())); +SCM_EXPORT void restore_signals P((void)); +SCM_EXPORT void free_storage P((void)); +SCM_EXPORT char *dld_find_executable P((const char* command)); +SCM_EXPORT char *scm_find_execpath P((int argc, char **argv, char *script_arg)); +SCM_EXPORT void init_scm P((int iverbose, int buf0stdin, long init_heap_size)); +SCM_EXPORT void scm_init_INITS P((void)); +SCM_EXPORT SCM scm_init_extensions P((void)); +SCM_EXPORT void ignore_signals P((void)); +SCM_EXPORT void unignore_signals P((void)); + +SCM_EXPORT void add_feature P((char *str)); +SCM_EXPORT int raprin1 P((SCM exp, SCM port, int writing)); +SCM_EXPORT SCM markcdr P((SCM ptr)); #define mark0 (0) /*SCM mark0 P((SCM ptr)); */ -SCM equal0 P((SCM ptr1, SCM ptr2)); -sizet free0 P((CELLPTR ptr)); -void scm_warn P((char *str1, char *str2, SCM obj)); -void everr P((SCM exp, SCM env, SCM arg, char *pos, char *s_subr, int codep)); -void wta P((SCM arg, char *pos, char *s_subr)); -void scm_experr P((SCM arg, char *pos, char *s_subr)); -SCM intern P((char *name, sizet len)); -SCM sysintern P((const char *name, SCM val)); -SCM sym2vcell P((SCM sym)); -SCM makstr P((long len)); -SCM scm_maksubr P((const char *name, int type, SCM (*fcn)())); -SCM make_subr P((const char *name, int type, SCM (*fcn)())); -SCM make_synt P((const char *name, long flags, SCM (*fcn)())); -SCM make_gsubr P((const char *name, int req, int opt, int rst, +SCM_EXPORT SCM equal0 P((SCM ptr1, SCM ptr2)); +SCM_EXPORT sizet free0 P((CELLPTR ptr)); +SCM_EXPORT void scm_warn P((char *str1, char *str2, SCM obj)); +SCM_EXPORT void everr P((SCM exp, SCM env, SCM arg, char *pos, char *s_subr, int codep)); +SCM_EXPORT void wta P((SCM arg, char *pos, char *s_subr)); +SCM_EXPORT void scm_experr P((SCM arg, char *pos, char *s_subr)); +SCM_EXPORT SCM intern P((char *name, sizet len)); +SCM_EXPORT SCM sysintern P((const char *name, SCM val)); +SCM_EXPORT SCM sym2vcell P((SCM sym)); +SCM_EXPORT SCM makstr P((long len)); +SCM_EXPORT SCM scm_maksubr P((const char *name, int type, SCM (*fcn)())); +SCM_EXPORT SCM make_subr P((const char *name, int type, SCM (*fcn)())); +SCM_EXPORT SCM make_synt P((const char *name, long flags, SCM (*fcn)())); +SCM_EXPORT SCM make_gsubr P((const char *name, int req, int opt, int rst, SCM (*fcn)())); -SCM closure P((SCM code, int nargs)); -SCM makprom P((SCM code)); -SCM force P((SCM x)); -SCM makarb P((SCM name)); -SCM tryarb P((SCM arb)); -SCM relarb P((SCM arb)); -SCM ceval P((SCM x, SCM static_env, SCM env)); -SCM scm_wrapcode P((SCM code, SCM env)); -SCM scm_current_env P((void)); -SCM prolixity P((SCM arg)); -SCM gc_for_newcell P((void)); -void gc_for_open_files P((void)); -SCM gc P((SCM arg)); -SCM tryload P((SCM filename, SCM reader)); -SCM acons P((SCM w, SCM x, SCM y)); -SCM cons2 P((SCM w, SCM x, SCM y)); -SCM resizuve P((SCM vect, SCM len)); -SCM lnot P((SCM x)); -SCM booleanp P((SCM obj)); -SCM eq P((SCM x, SCM y)); -SCM equal P((SCM x, SCM y)); -SCM consp P((SCM x)); -SCM cons P((SCM x, SCM y)); -SCM nullp P((SCM x)); -SCM setcar P((SCM pair, SCM value)); -SCM setcdr P((SCM pair, SCM value)); -SCM listp P((SCM x)); -SCM list P((SCM objs)); -SCM length P((SCM x)); -SCM append P((SCM args)); -SCM reverse P((SCM lst)); -SCM list_ref P((SCM lst, SCM k)); -SCM memq P((SCM x, SCM lst)); -SCM member P((SCM x, SCM lst)); -SCM memv P((SCM x, SCM lst)); -SCM assq P((SCM x, SCM alist)); -SCM assoc P((SCM x, SCM alist)); -SCM symbolp P((SCM x)); -SCM symbol2string P((SCM s)); -SCM string2symbol P((SCM s)); -SCM numberp P((SCM x)); -SCM exactp P((SCM x)); -SCM inexactp P((SCM x)); -SCM eqp P((SCM x, SCM y)); -SCM lessp P((SCM x, SCM y)); -SCM greaterp P((SCM x, SCM y)); -SCM leqp P((SCM x, SCM y)); -SCM greqp P((SCM x, SCM y)); -SCM zerop P((SCM z)); -SCM positivep P((SCM x)); -SCM negativep P((SCM x)); -SCM oddp P((SCM n)); -SCM evenp P((SCM n)); -SCM lmax P((SCM x, SCM y)); -SCM lmin P((SCM x, SCM y)); -SCM sum P((SCM x, SCM y)); -SCM difference P((SCM x, SCM y)); -SCM product P((SCM x, SCM y)); -SCM divide P((SCM x, SCM y)); -SCM lquotient P((SCM x, SCM y)); -SCM absval P((SCM x)); -SCM lremainder P((SCM x, SCM y)); -SCM modulo P((SCM x, SCM y)); -SCM lgcd P((SCM x, SCM y)); -SCM llcm P((SCM n1, SCM n2)); -SCM number2string P((SCM x, SCM radix)); -SCM istring2number P((char *str, long len, long radix)); -SCM string2number P((SCM str, SCM radix)); -SCM istr2flo P((char *str, long len, long radix)); -SCM mkbig P((sizet nlen, int sign)); -SCM mkstrport P((SCM pos, SCM str, long modes, char *caller)); -SCM mksafeport P((int maxlen, SCM port)); -int reset_safeport P((SCM sfp, int maxlen, SCM port)); -SCM long2big P((long n)); -SCM ulong2big P((unsigned long n)); -SCM big2inum P((SCM b, sizet l)); -sizet iint2str P((long num, int rad, char *p)); -SCM floequal P((SCM x, SCM y)); -SCM uve_equal P((SCM u, SCM v)); -SCM raequal P((SCM ra0, SCM ra1)); -SCM array_equal P((SCM u, SCM v)); -SCM array_rank P((SCM ra)); -int rafill P((SCM ra, SCM fill, SCM ignore)); -SCM uve_fill P((SCM uve, SCM fill)); -SCM array_fill P((SCM ra, SCM fill)); -SCM array_prot P((SCM ra)); -SCM array_rank P((SCM ra)); -int bigprint P((SCM exp, SCM port, int writing)); -int floprint P((SCM sexp, SCM port, int writing)); -SCM istr2int P((char *str, long len, long radix)); -SCM istr2bve P((char *str, long len)); -void ipruk P((char *hdr, SCM ptr, SCM port)); -SCM charp P((SCM x)); -SCM char_lessp P((SCM x, SCM y)); -SCM chci_eq P((SCM x, SCM y)); -SCM chci_lessp P((SCM x, SCM y)); -SCM char_alphap P((SCM chr)); -SCM char_nump P((SCM chr)); -SCM char_whitep P((SCM chr)); -SCM char_upperp P((SCM chr)); -SCM char_lowerp P((SCM chr)); -SCM char2int P((SCM chr)); -SCM int2char P((SCM n)); -SCM char_upcase P((SCM chr)); -SCM char_downcase P((SCM chr)); -SCM stringp P((SCM x)); -SCM string P((SCM chrs)); -SCM make_string P((SCM k, SCM chr)); -SCM string2list P((SCM str)); -SCM st_length P((SCM str)); -SCM st_ref P((SCM str, SCM k)); -SCM st_set P((SCM str, SCM k, SCM chr)); -SCM st_equal P((SCM s1, SCM s2)); -SCM stci_equal P((SCM s1, SCM s2)); -SCM st_lessp P((SCM s1, SCM s2)); -SCM stci_lessp P((SCM s1, SCM s2)); -SCM substring P((SCM str, SCM start, SCM end)); -SCM st_append P((SCM args)); -SCM vectorp P((SCM x)); -SCM vector_length P((SCM v)); -SCM vector P((SCM l)); -SCM vector_ref P((SCM v, SCM k)); -SCM vector_set P((SCM v, SCM k, SCM obj)); -SCM make_vector P((SCM k, SCM fill)); -SCM vector2list P((SCM v)); -SCM for_each P((SCM proc, SCM arg1, SCM args)); -SCM procedurep P((SCM obj)); -SCM apply P((SCM proc, SCM arg1, SCM args)); -SCM scm_cvapply P((SCM proc, long n, SCM *argv)); -int scm_arity_check P((SCM proc, long argc, char *what)); -SCM map P((SCM proc, SCM arg1, SCM args)); -SCM scm_make_cont P((void)); -SCM copytree P((SCM obj)); -SCM eval P((SCM obj)); -SCM scm_values P((SCM arg1, SCM arg2, SCM rest, char *what)); -SCM scm_eval_values P((SCM x, SCM static_env, SCM env)); -SCM identp P((SCM obj)); -SCM ident2sym P((SCM id)); -SCM ident_eqp P((SCM id1, SCM id2, SCM env)); -int scm_nullenv_p P((SCM env)); -SCM env2tree P((SCM env)); -SCM renamed_ident P((SCM id, SCM env)); -SCM scm_check_linum P((SCM x, SCM *linum)); -SCM scm_add_linum P((SCM linum, SCM x)); -SCM input_portp P((SCM x)); -SCM output_portp P((SCM x)); -SCM cur_input_port P((void)); -SCM cur_output_port P((void)); -SCM i_setbuf0 P((SCM port)); -SCM try_open_file P((SCM filename, SCM modes)); -SCM open_file P((SCM filename, SCM modes)); -SCM open_pipe P((SCM pipestr, SCM modes)); -SCM close_port P((SCM port)); -SCM lread P((SCM port)); -SCM scm_read_char P((SCM port)); -SCM peek_char P((SCM port)); -SCM eof_objectp P((SCM x)); -int scm_io_error P((SCM port, char *what)); -SCM lwrite P((SCM obj, SCM port)); -SCM display P((SCM obj, SCM port)); -SCM newline P((SCM port)); -SCM write_char P((SCM chr, SCM port)); -SCM file_position P((SCM port)); -SCM file_set_position P((SCM port, SCM pos)); -SCM scm_port_line P((SCM port)); -SCM scm_port_col P((SCM port)); -void scm_line_msg P((SCM file, SCM linum, SCM port)); -void scm_err_line P((char *what, SCM file, SCM linum, SCM port)); -SCM lgetenv P((SCM nam)); -SCM prog_args P((void)); -SCM makacro P((SCM code)); -SCM makmacro P((SCM code)); -SCM makmmacro P((SCM code)); -SCM makidmacro P((SCM code)); -void poll_routine P((void)); -void tick_signal P((void)); -void stack_check P((void)); -SCM list2ura P((SCM ndim, SCM prot, SCM lst)); -SCM make_ra P((int ndim)); -SCM makflo P((float x)); -SCM arrayp P((SCM v, SCM prot)); -SCM array_contents P((SCM ra, SCM strict)); -SCM uve_read P((SCM v, SCM port)); -SCM uve_write P((SCM v, SCM port)); -SCM ura_read P((SCM v, SCM port)); -SCM ura_write P((SCM v, SCM port)); -SCM aset P((SCM v, SCM obj, SCM args)); -SCM aref P((SCM v, SCM args)); -SCM scm_array_ref P((SCM args)); -SCM cvref P((SCM v, sizet pos, SCM last)); -SCM quit P((SCM n)); +SCM_EXPORT SCM closure P((SCM code, int nargs)); +SCM_EXPORT SCM makprom P((SCM code)); +SCM_EXPORT SCM force P((SCM x)); +SCM_EXPORT SCM makarb P((SCM name)); +SCM_EXPORT SCM tryarb P((SCM arb)); +SCM_EXPORT SCM relarb P((SCM arb)); +SCM_EXPORT SCM ceval P((SCM x, SCM static_env, SCM env)); +SCM_EXPORT SCM scm_wrapcode P((SCM code, SCM env)); +SCM_EXPORT SCM scm_current_env P((void)); +SCM_EXPORT SCM prolixity P((SCM arg)); +SCM_EXPORT SCM gc_for_newcell P((void)); +SCM_EXPORT void gc_for_open_files P((void)); +SCM_EXPORT SCM gc P((SCM arg)); +SCM_EXPORT SCM tryload P((SCM filename, SCM reader)); +SCM_EXPORT SCM acons P((SCM w, SCM x, SCM y)); +SCM_EXPORT SCM cons2 P((SCM w, SCM x, SCM y)); +SCM_EXPORT SCM resizuve P((SCM vect, SCM len)); +SCM_EXPORT SCM lnot P((SCM x)); +SCM_EXPORT SCM booleanp P((SCM obj)); +SCM_EXPORT SCM eq P((SCM x, SCM y)); +SCM_EXPORT SCM equal P((SCM x, SCM y)); +SCM_EXPORT SCM consp P((SCM x)); +SCM_EXPORT SCM cons P((SCM x, SCM y)); +SCM_EXPORT SCM nullp P((SCM x)); +SCM_EXPORT SCM setcar P((SCM pair, SCM value)); +SCM_EXPORT SCM setcdr P((SCM pair, SCM value)); +SCM_EXPORT SCM listp P((SCM x)); +SCM_EXPORT SCM list P((SCM objs)); +SCM_EXPORT SCM length P((SCM x)); +SCM_EXPORT SCM append P((SCM args)); +SCM_EXPORT SCM reverse P((SCM lst)); +SCM_EXPORT SCM list_ref P((SCM lst, SCM k)); +SCM_EXPORT SCM memq P((SCM x, SCM lst)); +SCM_EXPORT SCM member P((SCM x, SCM lst)); +SCM_EXPORT SCM memv P((SCM x, SCM lst)); +SCM_EXPORT SCM assq P((SCM x, SCM alist)); +SCM_EXPORT SCM assoc P((SCM x, SCM alist)); +SCM_EXPORT SCM symbolp P((SCM x)); +SCM_EXPORT SCM symbol2string P((SCM s)); +SCM_EXPORT SCM string2symbol P((SCM s)); +SCM_EXPORT SCM numberp P((SCM x)); +SCM_EXPORT SCM exactp P((SCM x)); +SCM_EXPORT SCM inexactp P((SCM x)); +SCM_EXPORT SCM eqp P((SCM x, SCM y)); +SCM_EXPORT SCM lessp P((SCM x, SCM y)); +SCM_EXPORT SCM greaterp P((SCM x, SCM y)); +SCM_EXPORT SCM leqp P((SCM x, SCM y)); +SCM_EXPORT SCM greqp P((SCM x, SCM y)); +SCM_EXPORT SCM zerop P((SCM z)); +SCM_EXPORT SCM positivep P((SCM x)); +SCM_EXPORT SCM negativep P((SCM x)); +SCM_EXPORT SCM oddp P((SCM n)); +SCM_EXPORT SCM evenp P((SCM n)); +SCM_EXPORT SCM lmax P((SCM x, SCM y)); +SCM_EXPORT SCM lmin P((SCM x, SCM y)); +SCM_EXPORT SCM sum P((SCM x, SCM y)); +SCM_EXPORT SCM difference P((SCM x, SCM y)); +SCM_EXPORT SCM product P((SCM x, SCM y)); +SCM_EXPORT SCM divide P((SCM x, SCM y)); +SCM_EXPORT SCM lquotient P((SCM x, SCM y)); +SCM_EXPORT SCM absval P((SCM x)); +SCM_EXPORT SCM lremainder P((SCM x, SCM y)); +SCM_EXPORT SCM modulo P((SCM x, SCM y)); +SCM_EXPORT SCM lgcd P((SCM x, SCM y)); +SCM_EXPORT SCM llcm P((SCM n1, SCM n2)); +SCM_EXPORT SCM number2string P((SCM x, SCM radix)); +SCM_EXPORT SCM istring2number P((char *str, long len, long radix)); +SCM_EXPORT SCM string2number P((SCM str, SCM radix)); +SCM_EXPORT SCM istr2flo P((char *str, long len, long radix)); +SCM_EXPORT SCM mkbig P((sizet nlen, int sign)); +SCM_EXPORT SCM mkstrport P((SCM pos, SCM str, long modes, char *caller)); +SCM_EXPORT SCM mksafeport P((int maxlen, SCM port)); +SCM_EXPORT int reset_safeport P((SCM sfp, int maxlen, SCM port)); +SCM_EXPORT SCM long2big P((long n)); +SCM_EXPORT SCM ulong2big P((unsigned long n)); +SCM_EXPORT SCM big2inum P((SCM b, sizet l)); +SCM_EXPORT sizet iint2str P((long num, int rad, char *p)); +SCM_EXPORT SCM floequal P((SCM x, SCM y)); +SCM_EXPORT SCM uve_equal P((SCM u, SCM v)); +SCM_EXPORT SCM uve_read P((SCM v, SCM port)); +SCM_EXPORT SCM uve_write P((SCM v, SCM port)); +SCM_EXPORT SCM raequal P((SCM ra0, SCM ra1)); +SCM_EXPORT SCM array_equal P((SCM u, SCM v)); +SCM_EXPORT SCM array_rank P((SCM ra)); +SCM_EXPORT int rafill P((SCM ra, SCM fill, SCM ignore)); +SCM_EXPORT SCM uve_fill P((SCM uve, SCM fill)); +SCM_EXPORT SCM array_fill P((SCM ra, SCM fill)); +SCM_EXPORT SCM array_prot P((SCM ra)); +SCM_EXPORT SCM array_rank P((SCM ra)); +SCM_EXPORT SCM array_contents P((SCM ra, SCM strict)); +SCM_EXPORT int bigprint P((SCM exp, SCM port, int writing)); +SCM_EXPORT int floprint P((SCM sexp, SCM port, int writing)); +SCM_EXPORT SCM istr2int P((char *str, long len, long radix)); +SCM_EXPORT SCM istr2bve P((char *str, long len)); +SCM_EXPORT void ipruk P((char *hdr, SCM ptr, SCM port)); +SCM_EXPORT SCM charp P((SCM x)); +SCM_EXPORT SCM char_lessp P((SCM x, SCM y)); +SCM_EXPORT SCM chci_eq P((SCM x, SCM y)); +SCM_EXPORT SCM chci_lessp P((SCM x, SCM y)); +SCM_EXPORT SCM char_alphap P((SCM chr)); +SCM_EXPORT SCM char_nump P((SCM chr)); +SCM_EXPORT SCM char_whitep P((SCM chr)); +SCM_EXPORT SCM char_upperp P((SCM chr)); +SCM_EXPORT SCM char_lowerp P((SCM chr)); +SCM_EXPORT SCM char2int P((SCM chr)); +SCM_EXPORT SCM int2char P((SCM n)); +SCM_EXPORT SCM char_upcase P((SCM chr)); +SCM_EXPORT SCM char_downcase P((SCM chr)); +SCM_EXPORT SCM stringp P((SCM x)); +SCM_EXPORT SCM string P((SCM chrs)); +SCM_EXPORT SCM make_string P((SCM k, SCM chr)); +SCM_EXPORT SCM string2list P((SCM str)); +SCM_EXPORT SCM st_length P((SCM str)); +SCM_EXPORT SCM st_ref P((SCM str, SCM k)); +SCM_EXPORT SCM st_set P((SCM str, SCM k, SCM chr)); +SCM_EXPORT SCM st_equal P((SCM s1, SCM s2)); +SCM_EXPORT SCM stci_equal P((SCM s1, SCM s2)); +SCM_EXPORT SCM st_lessp P((SCM s1, SCM s2)); +SCM_EXPORT SCM stci_lessp P((SCM s1, SCM s2)); +SCM_EXPORT SCM substring P((SCM str, SCM start, SCM end)); +SCM_EXPORT SCM st_append P((SCM args)); +SCM_EXPORT SCM vectorp P((SCM x)); +SCM_EXPORT SCM vector_length P((SCM v)); +SCM_EXPORT SCM vector P((SCM l)); +SCM_EXPORT SCM vector_ref P((SCM v, SCM k)); +SCM_EXPORT SCM vector_set P((SCM v, SCM k, SCM obj)); +SCM_EXPORT SCM make_vector P((SCM k, SCM fill)); +SCM_EXPORT SCM vector2list P((SCM v)); +SCM_EXPORT SCM for_each P((SCM proc, SCM arg1, SCM args)); +SCM_EXPORT SCM procedurep P((SCM obj)); +SCM_EXPORT SCM apply P((SCM proc, SCM arg1, SCM args)); +SCM_EXPORT SCM scm_cvapply P((SCM proc, long n, SCM *argv)); +SCM_EXPORT int scm_arity_check P((SCM proc, long argc, char *what)); +SCM_EXPORT SCM map P((SCM proc, SCM arg1, SCM args)); +SCM_EXPORT SCM scm_make_cont P((void)); +SCM_EXPORT SCM copytree P((SCM obj)); +SCM_EXPORT SCM eval P((SCM obj)); +SCM_EXPORT SCM scm_values P((SCM arg1, SCM arg2, SCM rest, char *what)); +SCM_EXPORT SCM scm_eval_values P((SCM x, SCM static_env, SCM env)); +SCM_EXPORT SCM identp P((SCM obj)); +SCM_EXPORT SCM ident2sym P((SCM id)); +SCM_EXPORT SCM ident_eqp P((SCM id1, SCM id2, SCM env)); +SCM_EXPORT int scm_nullenv_p P((SCM env)); +SCM_EXPORT SCM env2tree P((SCM env)); +SCM_EXPORT SCM renamed_ident P((SCM id, SCM env)); +SCM_EXPORT SCM scm_check_linum P((SCM x, SCM *linum)); +SCM_EXPORT SCM scm_add_linum P((SCM linum, SCM x)); +SCM_EXPORT SCM input_portp P((SCM x)); +SCM_EXPORT SCM output_portp P((SCM x)); +SCM_EXPORT SCM cur_input_port P((void)); +SCM_EXPORT SCM cur_output_port P((void)); +SCM_EXPORT SCM i_setbuf0 P((SCM port)); +SCM_EXPORT SCM try_open_file P((SCM filename, SCM modes)); +SCM_EXPORT SCM open_file P((SCM filename, SCM modes)); +SCM_EXPORT SCM open_pipe P((SCM pipestr, SCM modes)); +SCM_EXPORT SCM close_port P((SCM port)); +SCM_EXPORT SCM scm_read P((SCM port)); +SCM_EXPORT SCM scm_read_char P((SCM port)); +SCM_EXPORT SCM peek_char P((SCM port)); +SCM_EXPORT SCM eof_objectp P((SCM x)); +SCM_EXPORT int scm_io_error P((SCM port, char *what)); +SCM_EXPORT SCM lwrite P((SCM obj, SCM port)); +SCM_EXPORT SCM display P((SCM obj, SCM port)); +SCM_EXPORT SCM newline P((SCM port)); +SCM_EXPORT SCM write_char P((SCM chr, SCM port)); +SCM_EXPORT SCM scm_port_line P((SCM port)); +SCM_EXPORT SCM scm_port_col P((SCM port)); +SCM_EXPORT void scm_line_msg P((SCM file, SCM linum, SCM port)); +SCM_EXPORT void scm_err_line P((char *what, SCM file, SCM linum, SCM port)); +SCM_EXPORT SCM lgetenv P((SCM nam)); +SCM_EXPORT SCM prog_args P((void)); +SCM_EXPORT SCM makacro P((SCM code)); +SCM_EXPORT SCM makmacro P((SCM code)); +SCM_EXPORT SCM makmmacro P((SCM code)); +SCM_EXPORT SCM makidmacro P((SCM code)); +SCM_EXPORT void poll_routine P((void)); +SCM_EXPORT void tick_signal P((void)); +SCM_EXPORT void stack_check P((void)); +SCM_EXPORT SCM list2ura P((SCM ndim, SCM prot, SCM lst)); +SCM_EXPORT SCM make_ra P((int ndim)); +SCM_EXPORT SCM makflo P((float x)); +SCM_EXPORT SCM arrayp P((SCM v, SCM prot)); +SCM_EXPORT SCM aset P((SCM v, SCM obj, SCM args)); +SCM_EXPORT SCM aref P((SCM v, SCM args)); +SCM_EXPORT SCM scm_array_ref P((SCM args)); +SCM_EXPORT SCM cvref P((SCM v, sizet pos, SCM last)); +SCM_EXPORT SCM quit P((SCM n)); #ifdef CAREFUL_INTS -void ints_viol P((ints_infot *info, int sense)); -void ints_warn P((char *s1, char* s2, char *fname, int linum)); +SCM_EXPORT void ints_viol P((ints_infot *info, int sense)); +SCM_EXPORT void ints_warn P((char *s1, char* s2, char *fname, int linum)); #endif -void add_final P((void (*final)(void))); -SCM makcclo P((SCM proc, long len)); -SCM make_uve P((long k, SCM prot)); -long scm_prot2type P((SCM prot)); -SCM ra2contig P((SCM ra, int copy)); -SCM sc2array P((SCM s, SCM ra, SCM prot)); -SCM array_copy P((SCM src, SCM dst)); -long aind P((SCM ra, SCM args, char *what)); -SCM scm_eval_string P((SCM str)); -SCM scm_load_string P((SCM str)); -void scm_print_stack P((SCM stk)); -SCM scm_unexec P((const SCM pathname)); -SCM scm_log_aref P((SCM args)); -SCM scm_log_aset P((SCM ra, SCM obj, SCM args)); -SCM scm_logbitp P((SCM index, SCM j1)); -SCM scm_logtest P((SCM x, SCM y)); -SCM scm_logxor P((SCM x, SCM y)); -SCM scm_logand P((SCM x, SCM y)); -SCM scm_logior P((SCM x, SCM y)); -SCM scm_lognot P((SCM n)); -SCM scm_intexpt P((SCM z1, SCM z2)); -SCM scm_ash P((SCM n, SCM cnt)); -SCM scm_bitfield P((SCM n, SCM start, SCM end)); -SCM scm_logcount P((SCM n)); -SCM scm_intlength P((SCM n)); -SCM scm_copybit P((SCM index, SCM j1, SCM bit)); -SCM scm_bitif P((SCM mask, SCM n0, SCM n1)); -SCM scm_copybitfield P((SCM to, SCM start, SCM rest)); +SCM_EXPORT void add_final P((void (*final)(void))); +SCM_EXPORT SCM makcclo P((SCM proc, long len)); +SCM_EXPORT SCM make_uve P((long k, SCM prot)); +SCM_EXPORT long scm_prot2type P((SCM prot)); +SCM_EXPORT long aind P((SCM ra, SCM args, char *what)); +SCM_EXPORT SCM scm_eval_string P((SCM str)); +SCM_EXPORT SCM scm_load_string P((SCM str)); +SCM_EXPORT SCM scm_unexec P((const SCM pathname)); +SCM_EXPORT SCM scm_logbitp P((SCM index, SCM j1)); +SCM_EXPORT SCM scm_logtest P((SCM x, SCM y)); +SCM_EXPORT SCM scm_logxor P((SCM x, SCM y)); +SCM_EXPORT SCM scm_logand P((SCM x, SCM y)); +SCM_EXPORT SCM scm_logior P((SCM x, SCM y)); +SCM_EXPORT SCM scm_lognot P((SCM n)); +SCM_EXPORT SCM scm_intexpt P((SCM z1, SCM z2)); +SCM_EXPORT SCM scm_ash P((SCM n, SCM cnt)); +SCM_EXPORT SCM scm_bitfield P((SCM n, SCM start, SCM end)); +SCM_EXPORT SCM scm_logcount P((SCM n)); +SCM_EXPORT SCM scm_intlength P((SCM n)); +SCM_EXPORT SCM scm_copybit P((SCM index, SCM j1, SCM bit)); +SCM_EXPORT SCM scm_bitif P((SCM mask, SCM n0, SCM n1)); +SCM_EXPORT SCM scm_copybitfield P((SCM to, SCM start, SCM rest)); /* Defined in "rope.c" */ -SCM long2num P((long n)); -SCM ulong2num P((unsigned long n)); -unsigned char num2uchar P((SCM num, char *pos, char *s_caller)); -unsigned short num2ushort P((SCM num, char *pos, char *s_caller)); -unsigned long num2ulong P((SCM num, char *pos, char *s_caller)); - long num2long P((SCM num, char *pos, char *s_caller)); - short num2short P((SCM num, char *pos, char *s_caller)); - double num2dbl P((SCM num, char *pos, char *s_caller)); -SCM makfromstr P((char *src, sizet len)); -SCM makfromstrs P((int argc, char **argv)); -SCM makfrom0str P((char *scr)); -char **makargvfrmstrs P((SCM args, char *s_v)); -void must_free_argv P((char **argv)); -SCM scm_evstr P((char *str)); -void scm_ldstr P((char *str)); -int scm_ldfile P((char *path)); -int scm_ldprog P((char *path)); -unsigned long scm_addr P((SCM args, char *name)); -unsigned long scm_base_addr P((SCM v, char *name)); -int scm_cell_p P((SCM x)); +SCM_EXPORT SCM long2num P((long n)); +SCM_EXPORT SCM ulong2num P((unsigned long n)); +SCM_EXPORT unsigned char num2uchar P((SCM num, char *pos, char *s_caller)); +SCM_EXPORT unsigned short num2ushort P((SCM num, char *pos, char *s_caller)); +SCM_EXPORT unsigned long num2ulong P((SCM num, char *pos, char *s_caller)); +SCM_EXPORT long num2long P((SCM num, char *pos, char *s_caller)); +SCM_EXPORT short num2short P((SCM num, char *pos, char *s_caller)); +SCM_EXPORT double num2dbl P((SCM num, char *pos, char *s_caller)); +SCM_EXPORT SCM makfromstr P((char *src, sizet len)); +SCM_EXPORT SCM makfromstrs P((int argc, char **argv)); +SCM_EXPORT SCM makfrom0str P((char *scr)); +SCM_EXPORT char **makargvfrmstrs P((SCM args, char *s_v)); +SCM_EXPORT void must_free_argv P((char **argv)); +SCM_EXPORT SCM scm_evstr P((char *str)); +SCM_EXPORT void scm_ldstr P((char *str)); +SCM_EXPORT int scm_ldfile P((char *path)); +SCM_EXPORT int scm_ldprog P((char *path)); +SCM_EXPORT unsigned long scm_addr P((SCM args, char *name)); +SCM_EXPORT unsigned long scm_base_addr P((SCM v, char *name)); +SCM_EXPORT int scm_cell_p P((SCM x)); #ifdef FLOATS -SCM makdbl P((double x, double y)); -SCM dbl2big P((double d)); -double big2dbl P((SCM b)); -double lasinh P((double x)); -double lacosh P((double x)); -double latanh P((double x)); -double ltrunc P((double x)); -double scm_round P((double x)); -double floident P((double x)); +SCM_EXPORT SCM makdbl P((double x, double y)); +SCM_EXPORT SCM dbl2big P((double d)); +SCM_EXPORT double big2dbl P((SCM b)); +SCM_EXPORT double lasinh P((double x)); +SCM_EXPORT double lacosh P((double x)); +SCM_EXPORT double latanh P((double x)); +SCM_EXPORT double ltrunc P((double x)); +SCM_EXPORT double scm_round P((double x)); +SCM_EXPORT double floident P((double x)); #endif #ifdef BIGDIG -void longdigs P((long x, BIGDIG digs[DIGSPERLONG])); -SCM adjbig P((SCM b, sizet nlen)); -SCM normbig P((SCM b)); -SCM copybig P((SCM b, int sign)); -SCM addbig P((BIGDIG *x, sizet nx, int xsgn, SCM bigy, int sgny)); -SCM mulbig P((BIGDIG *x, sizet nx, BIGDIG *y, sizet ny, int sgn)); -unsigned int divbigdig P((BIGDIG *ds, sizet h, BIGDIG div)); -SCM divbigint P((SCM x, long z, int sgn, int mode)); -SCM divbigbig P((BIGDIG *x, sizet nx, BIGDIG *y, sizet ny, int sgn, +SCM_EXPORT void longdigs P((long x, BIGDIG digs[DIGSPERLONG])); +SCM_EXPORT SCM adjbig P((SCM b, sizet nlen)); +SCM_EXPORT SCM normbig P((SCM b)); +SCM_EXPORT SCM copybig P((SCM b, int sign)); +SCM_EXPORT SCM addbig P((BIGDIG *x, sizet nx, int xsgn, SCM bigy, int sgny)); +SCM_EXPORT SCM mulbig P((BIGDIG *x, sizet nx, BIGDIG *y, sizet ny, int sgn)); +SCM_EXPORT unsigned int divbigdig P((BIGDIG *ds, sizet h, BIGDIG div)); +SCM_EXPORT SCM divbigint P((SCM x, long z, int sgn, int mode)); +SCM_EXPORT SCM divbigbig P((BIGDIG *x, sizet nx, BIGDIG *y, sizet ny, int sgn, int modes)); -long pseudolong P((long x)); +SCM_EXPORT long pseudolong P((long x)); #endif -int bigcomp P((SCM x, SCM y)); -SCM bigequal P((SCM x, SCM y)); -int scm_bigdblcomp P((SCM b, double d)); +SCM_EXPORT int bigcomp P((SCM x, SCM y)); +SCM_EXPORT SCM bigequal P((SCM x, SCM y)); +SCM_EXPORT int scm_bigdblcomp P((SCM b, double d)); /* "script.c" functions */ -char * scm_cat_path P((char *str1, const char *str2, long n)); -char * scm_try_path P((char *path)); -char * script_find_executable P((const char *command)); -char ** script_process_argv P((int argc, char **argv)); -int script_count_argv P((char **argv)); -char * find_impl_file P((char *exec_path, const char *generic_name, +SCM_EXPORT char * scm_cat_path P((char *str1, const char *str2, long n)); +SCM_EXPORT char * scm_try_path P((char *path)); +SCM_EXPORT char * script_find_executable P((const char *command)); +SCM_EXPORT char ** script_process_argv P((int argc, char **argv)); +SCM_EXPORT int script_count_argv P((char **argv)); +SCM_EXPORT char * find_impl_file P((char *exec_path, const char *generic_name, const char *initname, const char *sep)); /* environment cache functions */ -void scm_ecache_report P((void)); -void scm_estk_reset P((sizet size)); -void scm_env_cons P((SCM x, SCM y)); -void scm_env_cons2 P((SCM w, SCM x, SCM y)); -void scm_env_cons3 P((SCM v, SCM w, SCM x, SCM y)); -void scm_env_v2lst P((long argc, SCM *argv)); -void scm_extend_env P((void)); -void scm_egc P((void)); +SCM_EXPORT void scm_ecache_report P((void)); +SCM_EXPORT void scm_estk_reset P((sizet size)); +SCM_EXPORT void scm_env_cons P((SCM x, SCM y)); +SCM_EXPORT void scm_env_cons2 P((SCM w, SCM x, SCM y)); +SCM_EXPORT void scm_env_cons3 P((SCM v, SCM w, SCM x, SCM y)); +SCM_EXPORT void scm_env_v2lst P((long argc, SCM *argv)); +SCM_EXPORT void scm_extend_env P((void)); +SCM_EXPORT void scm_egc P((void)); /* Global state for environment cache */ -extern CELLPTR scm_ecache; -extern VOLATILE long scm_ecache_index, scm_ecache_len; -extern SCM scm_env, scm_env_tmp; -extern SCM scm_egc_roots[]; -extern VOLATILE long scm_egc_root_index; -extern SCM scm_estk; -extern SCM *scm_estk_v, *scm_estk_ptr; -extern long scm_estk_size; +SCM_EXPORT CELLPTR scm_ecache; +SCM_EXPORT VOLATILE long scm_ecache_index, scm_ecache_len; +SCM_EXPORT SCM scm_env, scm_env_tmp; +SCM_EXPORT SCM scm_egc_roots[]; +SCM_EXPORT VOLATILE long scm_egc_root_index; +SCM_EXPORT SCM scm_estk; +SCM_EXPORT SCM *scm_estk_v, *scm_estk_ptr; +SCM_EXPORT long scm_estk_size; #ifndef RECKLESS -extern SCM scm_trace, scm_trace_env; +SCM_EXPORT SCM scm_trace, scm_trace_env; #endif #ifdef RECKLESS -# define ASSERT(_cond, _arg, _pos, _subr) ; +# define ASRTER(_cond, _arg, _pos, _subr) ; # define ASRTGO(_cond, _label) ; #else -# define ASSERT(_cond, _arg, _pos, _subr) if(!(_cond))wta(_arg, (char *)(_pos), _subr); +# define ASRTER(_cond, _arg, _pos, _subr) if(!(_cond))wta(_arg, (char *)(_pos), _subr); # define ASRTGO(_cond, _label) if(!(_cond)) goto _label; #endif -- cgit v1.2.3