mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-06-09 21:40:33 +02:00
* smob.h: Changed comments for scm_make_smob_type and
scm_make_smob_type_mfpe, warning that the latter might be deprecated in a future release.
This commit is contained in:
parent
33d0abd7e1
commit
c72baaaa75
1 changed files with 22 additions and 16 deletions
|
@ -124,38 +124,44 @@ extern scm_sizet scm_free0 (SCM ptr);
|
|||
extern scm_sizet scm_smob_free (SCM obj);
|
||||
extern int scm_smob_print (SCM exp, SCM port, scm_print_state *pstate);
|
||||
|
||||
/* These next two functions are the supported way to create new SMOB types.
|
||||
|
||||
scm_make_smob_type is useful if there are no special smob functions
|
||||
and the defaults work for mark,free,print,equal_p, or you want to use
|
||||
scm_set_smob_{mark,free,print,equalp}, below.
|
||||
|
||||
scm_make_smob_type_mfpe is ideal if you need to set one or more of
|
||||
the special smob functions-- use NULL for when the default function
|
||||
is fine
|
||||
*/
|
||||
/* The following set of functions is the standard way to create new
|
||||
* SMOB types.
|
||||
*
|
||||
* Create a type tag using `scm_make_smob_type', accept default values
|
||||
* for mark, free, print and/or equalp functions, or set your own
|
||||
* values using `scm_set_smob_xxx'.
|
||||
*/
|
||||
|
||||
extern long scm_make_smob_type (char *name, scm_sizet size);
|
||||
|
||||
extern long scm_make_smob_type_mfpe (char *name, scm_sizet size,
|
||||
SCM (*mark) (SCM),
|
||||
scm_sizet (*free) (SCM),
|
||||
int (*print) (SCM, SCM, scm_print_state*),
|
||||
SCM (*equalp) (SCM, SCM));
|
||||
|
||||
extern void scm_set_smob_mark (long tc, SCM (*mark) (SCM));
|
||||
extern void scm_set_smob_free (long tc, scm_sizet (*free) (SCM));
|
||||
extern void scm_set_smob_print (long tc, int (*print) (SCM,
|
||||
SCM,
|
||||
scm_print_state*));
|
||||
extern void scm_set_smob_equalp (long tc, SCM (*equalp) (SCM, SCM));
|
||||
/* convenience function for registering multiple handler fns */
|
||||
|
||||
|
||||
/* Functions for registering multiple handler functions simultaneously.
|
||||
*
|
||||
* (There is a discussion among the developers whether or not these
|
||||
* should be deprecated in the future.)
|
||||
*/
|
||||
|
||||
extern long scm_make_smob_type_mfpe (char *name, scm_sizet size,
|
||||
SCM (*mark) (SCM),
|
||||
scm_sizet (*free) (SCM),
|
||||
int (*print) (SCM, SCM, scm_print_state*),
|
||||
SCM (*equalp) (SCM, SCM));
|
||||
|
||||
extern void scm_set_smob_mfpe (long tc,
|
||||
SCM (*mark) (SCM),
|
||||
scm_sizet (*free) (SCM),
|
||||
int (*print) (SCM, SCM, scm_print_state*),
|
||||
SCM (*equalp) (SCM, SCM));
|
||||
|
||||
/* Function for creating smobs */
|
||||
|
||||
extern SCM scm_make_smob (long tc);
|
||||
extern void scm_smob_prehistory (void);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue