diff options
Diffstat (limited to 'scm.h')
-rwxr-xr-x[-rw-r--r--] | scm.h | 115 |
1 files changed, 60 insertions, 55 deletions
@@ -100,8 +100,6 @@ typedef struct { int (*print)P((SCM exp, SCM port, int writing)); SCM (*equalp)P((SCM, SCM)); int (*fputc)P((int c, FILE *p)); -/* int (*fputs)P((char *s, FILE *p)); */ -/* sizet (*fwrite)P((char *s, sizet siz, sizet num, FILE *p)); */ int (*fputs)P((const char *s, FILE *p)); sizet (*fwrite)P((const void *s, sizet siz, sizet num, FILE *p)); int (*fflush)P((FILE *stream)); @@ -339,14 +337,14 @@ SCM_EXPORT long tc16_env, tc16_ident; /* markers for various static environment frame types */ /* FIXME these need to be exported somehow to Scheme */ #ifdef CAUTIOUS -# define SCM_ENV_FILENAME MAKINUM(1) -# define SCM_ENV_PROCNAME MAKINUM(2) +# define SCM_ENV_FILENAME MAKINUM(1L) +# define SCM_ENV_PROCNAME MAKINUM(2L) #endif -#define SCM_ENV_DOC MAKINUM(3) -#define SCM_ENV_ANNOTATION MAKINUM(4) -#define SCM_ENV_CONSTANT MAKINUM(5) -#define SCM_ENV_SYNTAX MAKINUM(6) -#define SCM_ENV_END MAKINUM(7) +#define SCM_ENV_DOC MAKINUM(3L) +#define SCM_ENV_ANNOTATION MAKINUM(4L) +#define SCM_ENV_CONSTANT MAKINUM(5L) +#define SCM_ENV_SYNTAX MAKINUM(6L) +#define SCM_ENV_END MAKINUM(7L) #define PORTP(x) (TYP7(x)==tc7_port) #define OPPORTP(x) (((0x7f | OPN) & CAR(x))==(tc7_port | OPN)) @@ -497,9 +495,11 @@ SCM_EXPORT long tc16_array; case tc7_subr_2o:case tc7_lsubr_2:case tc7_lsubr #define tcs_symbols tc7_ssymbol:case tc7_msymbol #define tcs_bignums tc16_bigpos:case tc16_bigneg -#define tcs_uves tc7_string:case tc7_Vbool:case tc7_VfixN8:case tc7_VfixZ8:\ - case tc7_VfixN16:case tc7_VfixZ16:case tc7_VfixN32:case tc7_VfixZ32:\ - case tc7_VfloR32:case tc7_VfloC32:case tc7_VfloR64:case tc7_VfloC64 +#define tcs_uves tc7_string:\ + case tc7_VfixN8:case tc7_VfixZ8:case tc7_VfixN16:case tc7_VfixZ16:\ + case tc7_VfixN32:case tc7_VfixZ32:case tc7_VfixN64:case tc7_VfixZ64:\ + case tc7_VfloR32:case tc7_VfloC32:case tc7_VfloR64:case tc7_VfloC64:\ + case tc7_Vbool #define tc3_cons_nimcar 0 #define tc3_cons_imcar 2:case 4:case 6 @@ -511,23 +511,20 @@ SCM_EXPORT long tc16_array; #define tc7_msymbol 7 #define tc7_string 13 #define tc7_vector 15 -#define tc7_Vbool 21 - -/* 23 */ - -#define tc7_VfixN8 29 -#define tc7_VfixZ8 31 -#define tc7_VfixN16 37 -#define tc7_VfixZ16 39 -#define tc7_VfixN32 45 -#define tc7_VfixZ32 47 +#define tc7_VfixN8 21 +#define tc7_VfixZ8 23 +#define tc7_VfixN16 29 +#define tc7_VfixZ16 31 +#define tc7_VfixN32 37 +#define tc7_VfixZ32 39 +#define tc7_VfixN64 45 +#define tc7_VfixZ64 47 #define tc7_VfloR32 53 #define tc7_VfloC32 55 #define tc7_VfloR64 61 #define tc7_VfloC64 63 - -/* 69 */ +#define tc7_Vbool 69 #define tc7_port 71 #define tc7_contin 77 @@ -625,7 +622,8 @@ SCM_EXPORT SCM sys_protects[]; #define flo0 sys_protects[20] #define scm_uprotects sys_protects[21] #define scm_narn sys_protects[22] -#define NUM_PROTECTS 23 +#define pows5 sys_protects[23] +#define NUM_PROTECTS 24 /* now for connects between source files */ @@ -639,6 +637,7 @@ SCM_EXPORT scm_gra finals_gra; SCM_EXPORT unsigned char upcase[], downcase[]; SCM_EXPORT SCM symhash; SCM_EXPORT int symhash_dim; +SCM_EXPORT int no_symhash_gc; /* Set when linking code produced by Hobbit compiler. */ SCM_EXPORT long heap_cells; SCM_EXPORT CELLPTR heap_org; SCM_EXPORT VOLATILE SCM freelist; @@ -844,6 +843,7 @@ 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 eqv 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)); @@ -853,12 +853,13 @@ 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 scm_max P((SCM x, SCM y)); +SCM_EXPORT SCM scm_min 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 scm_round_quotient P((SCM x, SCM y)); SCM_EXPORT SCM lquotient P((SCM x, SCM y)); SCM_EXPORT SCM scm_iabs P((SCM x)); SCM_EXPORT SCM scm_abs P((SCM x)); @@ -871,13 +872,15 @@ 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 void bigrecy P((SCM bgnm)); 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 sizet ilong2str P((long num, int rad, char *p)); +SCM_EXPORT sizet iulong2str P((unsigned 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)); @@ -893,7 +896,7 @@ 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 istr2int P((char *str, long len, int radix)); SCM_EXPORT SCM istr2bve P((char *str, long len)); SCM_EXPORT void scm_ipruk P((char *hdr, SCM ptr, SCM port)); SCM_EXPORT SCM charp P((SCM x)); @@ -973,7 +976,7 @@ 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((const char *what, SCM file, SCM linum, SCM port)); -SCM_EXPORT SCM lgetenv P((SCM nam)); +SCM_EXPORT SCM scm_getenv P((SCM nam)); SCM_EXPORT SCM prog_args P((void)); SCM_EXPORT SCM makacro P((SCM code)); SCM_EXPORT SCM makmacro P((SCM code)); @@ -1010,6 +1013,8 @@ 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_intlog P((SCM base, SCM k)); +SCM_EXPORT SCM scm_cintlog P((SCM base, SCM k)); 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)); @@ -1037,14 +1042,14 @@ 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, const char *name)); -SCM_EXPORT unsigned long scm_base_addr P((SCM v, const char *name)); +SCM_EXPORT void* scm_addr P((SCM args, const char *name)); +SCM_EXPORT void* scm_base_addr P((SCM v, const char *name)); SCM_EXPORT int scm_cell_p P((SCM x)); #ifdef FLOATS 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 int2dbl P((SCM b)); SCM_EXPORT double scm_truncate P((double x)); SCM_EXPORT double scm_round P((double x)); SCM_EXPORT double floident P((double x)); @@ -1057,10 +1062,10 @@ 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 UBIGLONG 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)); + int mode)); SCM_EXPORT long pseudolong P((long x)); #endif SCM_EXPORT int bigcomp P((SCM x, SCM y)); @@ -1107,27 +1112,27 @@ SCM_EXPORT SCM scm_trace, scm_trace_env; # define ASRTGO(_cond, _label) if (SCM_EXPECT_FALSE(!(_cond))) goto _label; #endif -#define ARGn 1 -#define ARG1 2 -#define ARG2 3 -#define ARG3 4 -#define ARG4 5 -#define ARG5 6 +#define ARGn 1L +#define ARG1 2L +#define ARG2 3L +#define ARG3 4L +#define ARG4 5L +#define ARG5 6L /* following must match entry indexes in errmsgs[] */ -#define WNA 7 -#define OVFLOW 8 -#define OUTOFRANGE 9 -#define NALLOC 10 -#define THRASH 11 -#define EXIT 12 -#define HUP_SIGNAL 13 -#define INT_SIGNAL 14 -#define FPE_SIGNAL 15 -#define BUS_SIGNAL 16 -#define SEGV_SIGNAL 17 -#define ALRM_SIGNAL 18 -#define VTALRM_SIGNAL 19 -#define PROF_SIGNAL 20 +#define WNA 7L +#define OVFLOW 8L +#define OUTOFRANGE 9L +#define NALLOC 10L +#define THRASH 11L +#define EXIT 12L +#define HUP_SIGNAL 13L +#define INT_SIGNAL 14L +#define FPE_SIGNAL 15L +#define BUS_SIGNAL 16L +#define SEGV_SIGNAL 17L +#define ALRM_SIGNAL 18L +#define VTALRM_SIGNAL 19L +#define PROF_SIGNAL 20L #define EVAL(x, env, venv) (IMP(x)?(x):ceval((x), (SCM)(env), (SCM)(venv))) #define SIDEVAL(x, env, venv) if (NIMP(x)) ceval((x), (SCM)(env), (SCM)(venv)) |