1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-06-17 09:10:22 +02:00

This set of patches introduces a new tc7 code scm_tc7_number for

numbers.  Bignums, reals and complex numbers are turned from smobs
	into subtypes of scm_tc7_number.

	* tags.h (scm_tc7_number): New.

	* eq.c (scm_equal_p), eval.c (SCM_CEVAL), evalext.c
	(scm_self_evaluating_p), gc-card.c (scm_i_sweep_card), gc-mark.c
	(scm_gc_mark_dependencies), goops.c (create_smob_classes), hash.c
	(scm_hasher), numbers.c, numbers.h (SCM_NUMP), objects.c
	(scm_class_of), print.c (scm_iprin1), smob.c
	(scm_smob_prehistory): Don't handle bignums, reals and complex
	numbers as subtypes of scm_tc7_smob any more.

	* numbers.h, tags.h (scm_tc16_big, scm_tc16_real,
	scm_tc16_complex): Moved definitions from tags.h to numbers.h.
This commit is contained in:
Dirk Herrmann 2003-09-18 20:55:40 +00:00
parent 29c4382afd
commit 534c55a97d
14 changed files with 98 additions and 51 deletions

View file

@ -448,7 +448,7 @@ scm_make_smob (scm_t_bits tc)
}
/* {Initialization for i/o types, float, bignum, the type of free cells}
/* {Initialization for the type of free cells}
*/
static int
@ -491,21 +491,9 @@ scm_smob_prehistory ()
scm_smobs[i].gsubr_type = 0;
}
/* WARNING: These scm_make_smob_type calls must be done in this order */
/* WARNING: This scm_make_smob_type call must be done first. */
tc = scm_make_smob_type ("free", 0);
scm_set_smob_print (tc, free_print);
tc = scm_make_smob_type ("big", 0); /* freed in gc */
scm_set_smob_print (tc, scm_bigprint);
scm_set_smob_equalp (tc, scm_bigequal);
tc = scm_make_smob_type ("real", 0); /* freed in gc */
scm_set_smob_print (tc, scm_print_real);
scm_set_smob_equalp (tc, scm_real_equalp);
tc = scm_make_smob_type ("complex", 0); /* freed in gc */
scm_set_smob_print (tc, scm_print_complex);
scm_set_smob_equalp (tc, scm_complex_equalp);
}
/*