Next: Function Snarfing, Previous: General Libguile Concepts, Up: Programming in C
Smobs are Guile's mechanism for adding new primitive types to the system. The term “smob” was coined by Aubrey Jaffer, who says it comes from “small object”, referring to the fact that they are quite limited in size: they can hold just one pointer to a larger memory block plus 16 extra bits.
To define a new smob type, the programmer provides Guile with some
essential information about the type — how to print it, how to
garbage collect it, and so on — and Guile allocates a fresh type tag
for it. The programmer can then use scm_c_define_gsubr
to make
a set of C functions visible to Scheme code that create and operate on
these objects.
(You can find a complete version of the example code used in this
section in the Guile distribution, in doc/example-smob. That
directory includes a makefile and a suitable main
function, so
you can build a complete interactive Guile shell, extended with the
datatypes described here.)