summaryrefslogtreecommitdiff
path: root/libguile/random.c
diff options
context:
space:
mode:
authorMikael Djurfeldt <djurfeldt@nada.kth.se>1999-07-07 09:44:01 +0000
committerMikael Djurfeldt <djurfeldt@nada.kth.se>1999-07-07 09:44:01 +0000
commit23a621512f6a034a8624f589a3862dbddcec6b9d (patch)
treeefb8b5a0f046402b74a5851fa1a902c40bc91561 /libguile/random.c
parent8ac40ce8871ccfa5e8c0a4fe3a1d55dfb69f839c (diff)
downloadguile-23a621512f6a034a8624f589a3862dbddcec6b9d.tar.gz
Greg's smob patch
Diffstat (limited to 'libguile/random.c')
-rw-r--r--libguile/random.c22
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)