Greetings! The documentation is getting better and better. Here is a patch that uses SCM_SMOB_DATA instead of SCM_CDR. Also things like SCM_SMOB_PREDICATE and SCM_NEWSMOB. -- Dale P. Smith Altus Technologies Corporation [EMAIL PROTECTED] 440-746-9000 x309
Index: guile-core/doc/data-rep.texi =================================================================== RCS file: /cvs/guile/guile-core/doc/data-rep.texi,v retrieving revision 1.13 diff -u -r1.13 data-rep.texi --- guile-core/doc/data-rep.texi 2000/07/28 13:19:01 1.13 +++ guile-core/doc/data-rep.texi 2001/01/30 14:59:40 @@ -1366,11 +1366,10 @@ int area; struct image *image; - SCM_ASSERT ((SCM_NIMP (image_smob) - && SCM_CAR (image_smob) == image_tag), + SCM_ASSERT (SCM_SMOB_PREDICATE (image_tag, image_smob), image_smob, SCM_ARG1, "clear-image"); - image = (struct image *) SCM_CDR (image_smob); + image = (struct image *) SCM_SMOB_DATA (image_smob); area = image->width * image->height; memset (image->pixels, 0, area); @@ -1449,7 +1448,7 @@ mark_image (SCM image_smob) @{ /* Mark the image's name and update function. */ - struct image *image = (struct image *) SCM_CDR (image_smob); + struct image *image = (struct image *) SCM_SMOB_DATA (image_smob); scm_gc_mark (image->name); scm_gc_mark (image->update_func); @@ -1475,7 +1474,7 @@ mark_image (SCM image_smob) @{ /* Mark the image's name and update function. */ - struct image *image = (struct image *) SCM_CDR (image_smob); + struct image *image = (struct image *) SCM_SMOB_DATA (image_smob); scm_gc_mark (image->name); return image->update_func; @@ -1502,7 +1501,7 @@ scm_sizet free_image (SCM image_smob) @{ - struct image *image = (struct image *) SCM_CDR (image_smob); + struct image *image = (struct image *) SCM_SMOB_DATA (image_smob); scm_sizet size = image->width * image->height + sizeof (*image); free (image->pixels); @@ -1695,9 +1694,7 @@ image->name = name; image->update_func = SCM_BOOL_F; - SCM_NEWCELL (image_smob); - SCM_SETCDR (image_smob, image); - SCM_SETCAR (image_smob, image_tag); + SCM_NEWSMOB (image_smob, image_tag, image); return image_smob; @} @@ -1708,11 +1705,10 @@ int area; struct image *image; - SCM_ASSERT ((SCM_NIMP (image_smob) - && SCM_CAR (image_smob) == image_tag), + SCM_ASSERT (SCM_SMOB_PREDICATE (image_tag, image_smob), image_smob, SCM_ARG1, "clear-image"); - image = (struct image *) SCM_CDR (image_smob); + image = (struct image *) SCM_SMOB_DATA (image_smob); area = image->width * image->height; memset (image->pixels, 0, area); @@ -1726,7 +1722,7 @@ static SCM mark_image (SCM image_smob) @{ - struct image *image = (struct image *) SCM_CDR (image_smob); + struct image *image = (struct image *) SCM_SMOB_DATA (image_smob); scm_gc_mark (image->name); return image->update_func; @@ -1735,7 +1731,7 @@ static scm_sizet free_image (SCM image_smob) @{ - struct image *image = (struct image *) SCM_CDR (image_smob); + struct image *image = (struct image *) SCM_SMOB_DATA (image_smob); scm_sizet size = image->width * image->height + sizeof (struct image); free (image->pixels); @@ -1747,7 +1743,7 @@ static int print_image (SCM image_smob, SCM port, scm_print_state *pstate) @{ - struct image *image = (struct image *) SCM_CDR (image_smob); + struct image *image = (struct image *) SCM_SMOB_DATA (image_smob); scm_puts ("#<image ", port); scm_display (image->name, port);