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 scm_sizet scm_smob_free (SCM obj);
|
||||||
extern int scm_smob_print (SCM exp, SCM port, scm_print_state *pstate);
|
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 following set of functions is the standard way to create new
|
||||||
the special smob functions-- use NULL for when the default function
|
* SMOB types.
|
||||||
is fine
|
*
|
||||||
*/
|
* 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 (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_mark (long tc, SCM (*mark) (SCM));
|
||||||
extern void scm_set_smob_free (long tc, scm_sizet (*free) (SCM));
|
extern void scm_set_smob_free (long tc, scm_sizet (*free) (SCM));
|
||||||
extern void scm_set_smob_print (long tc, int (*print) (SCM,
|
extern void scm_set_smob_print (long tc, int (*print) (SCM,
|
||||||
SCM,
|
SCM,
|
||||||
scm_print_state*));
|
scm_print_state*));
|
||||||
extern void scm_set_smob_equalp (long tc, SCM (*equalp) (SCM, SCM));
|
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,
|
extern void scm_set_smob_mfpe (long tc,
|
||||||
SCM (*mark) (SCM),
|
SCM (*mark) (SCM),
|
||||||
scm_sizet (*free) (SCM),
|
scm_sizet (*free) (SCM),
|
||||||
int (*print) (SCM, SCM, scm_print_state*),
|
int (*print) (SCM, SCM, scm_print_state*),
|
||||||
SCM (*equalp) (SCM, SCM));
|
SCM (*equalp) (SCM, SCM));
|
||||||
|
|
||||||
|
/* Function for creating smobs */
|
||||||
|
|
||||||
extern SCM scm_make_smob (long tc);
|
extern SCM scm_make_smob (long tc);
|
||||||
extern void scm_smob_prehistory (void);
|
extern void scm_smob_prehistory (void);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue