diff options
author | Mikael Djurfeldt <djurfeldt@nada.kth.se> | 1999-07-07 09:44:01 +0000 |
---|---|---|
committer | Mikael Djurfeldt <djurfeldt@nada.kth.se> | 1999-07-07 09:44:01 +0000 |
commit | 23a621512f6a034a8624f589a3862dbddcec6b9d (patch) | |
tree | efb8b5a0f046402b74a5851fa1a902c40bc91561 /libguile/random.c | |
parent | 8ac40ce8871ccfa5e8c0a4fe3a1d55dfb69f839c (diff) | |
download | guile-23a621512f6a034a8624f589a3862dbddcec6b9d.tar.gz |
Greg's smob patch
Diffstat (limited to 'libguile/random.c')
-rw-r--r-- | libguile/random.c | 22 |
1 files changed, 3 insertions, 19 deletions
diff --git a/libguile/random.c b/libguile/random.c index 75fe6ab3d..6dd82294a 100644 --- a/libguile/random.c +++ b/libguile/random.c @@ -320,22 +320,7 @@ long scm_tc16_rstate; static SCM make_rstate (scm_rstate *state) { - SCM cell; - SCM_NEWCELL (cell); - SCM_ENTER_A_SECTION; - SCM_SETCDR (cell, state); - SCM_SETCAR (cell, scm_tc16_rstate); - SCM_EXIT_A_SECTION; - return cell; -} - -static int -print_rstate (SCM rstate, SCM port, scm_print_state *pstate) -{ - scm_puts ("#<random-state ", port); - scm_intprint ((long) SCM_RSTATE (rstate), 16, port); - scm_putc ('>', port); - return 1; + SCM_RETURN_NEWSMOB (scm_tc16_rstate, state); } static scm_sizet @@ -345,8 +330,6 @@ free_rstate (SCM rstate) return scm_the_rng.rstate_size; } -static scm_smobfuns rstate_smob = { 0, free_rstate, print_rstate, 0}; - /* * Scheme level interface. */ @@ -564,7 +547,8 @@ scm_init_random () }; scm_the_rng = rng; - scm_tc16_rstate = scm_newsmob (&rstate_smob); + scm_tc16_rstate = scm_make_smob_type_mfpe ("random-state", 0, + NULL, free_rstate, NULL, NULL); for (m = 1; m <= 0x100; m <<= 1) for (i = m >> 1; i < m; ++i) |