diff options
author | Andy Wingo <wingo@pobox.com> | 2018-06-20 09:35:58 +0200 |
---|---|---|
committer | Andy Wingo <wingo@pobox.com> | 2018-06-20 09:37:50 +0200 |
commit | ad4fbebe85601de4f06eec88899972077a8ceebf (patch) | |
tree | 9403db73586ab6e5306dd8b2516e290c4c19749f | |
parent | 1d77492e8689fea1630e41258b3a36407afe4591 (diff) | |
download | guile-ad4fbebe85601de4f06eec88899972077a8ceebf.tar.gz |
Devolve smob snarfers
* libguile/snarf.h:
* libguile/smob.h (SCM_SMOB, SCM_GLOBAL_SMOB)
(SCM_SMOB_MARK, SCM_GLOBAL_SMOB_MARK)
(SCM_SMOB_FREE, SCM_GLOBAL_SMOB_FREE)
(SCM_SMOB_PRINT, SCM_GLOBAL_SMOB_PRINT)
(SCM_SMOB_EQUALP, SCM_GLOBAL_SMOB_EQUALP)
(SCM_SMOB_APPLY, SCM_GLOBAL_SMOB_APPLY): Move these definitions here.
-rw-r--r-- | libguile/smob.h | 52 | ||||
-rw-r--r-- | libguile/snarf.h | 48 |
2 files changed, 52 insertions, 48 deletions
diff --git a/libguile/smob.h b/libguile/smob.h index 5cbc6002f..410abcba5 100644 --- a/libguile/smob.h +++ b/libguile/smob.h @@ -28,6 +28,7 @@ #include <libguile/error.h> #include <libguile/gc.h> #include "libguile/print.h" +#include <libguile/snarf.h> @@ -71,6 +72,57 @@ SCM_API scm_smob_descriptor scm_smobs[]; +#define SCM_SMOB(tag, scheme_name, size) \ +SCM_SNARF_HERE(static scm_t_bits tag) \ +SCM_SNARF_INIT((tag)=scm_make_smob_type((scheme_name), (size));) + +#define SCM_GLOBAL_SMOB(tag, scheme_name, size) \ +SCM_SNARF_HERE(scm_t_bits tag) \ +SCM_SNARF_INIT((tag)=scm_make_smob_type((scheme_name), (size));) + +#define SCM_SMOB_MARK(tag, c_name, arg) \ +SCM_SNARF_HERE(static SCM c_name(SCM arg)) \ +SCM_SNARF_INIT(scm_set_smob_mark((tag), (c_name));) + +#define SCM_GLOBAL_SMOB_MARK(tag, c_name, arg) \ +SCM_SNARF_HERE(SCM c_name(SCM arg)) \ +SCM_SNARF_INIT(scm_set_smob_mark((tag), (c_name));) + +#define SCM_SMOB_FREE(tag, c_name, arg) \ +SCM_SNARF_HERE(static size_t c_name(SCM arg)) \ +SCM_SNARF_INIT(scm_set_smob_free((tag), (c_name));) + +#define SCM_GLOBAL_SMOB_FREE(tag, c_name, arg) \ +SCM_SNARF_HERE(size_t c_name(SCM arg)) \ +SCM_SNARF_INIT(scm_set_smob_free((tag), (c_name));) + +#define SCM_SMOB_PRINT(tag, c_name, obj, port, pstate) \ +SCM_SNARF_HERE(static int c_name(SCM obj, SCM port, scm_print_state* pstate)) \ +SCM_SNARF_INIT(scm_set_smob_print((tag), (c_name));) + +#define SCM_GLOBAL_SMOB_PRINT(tag, c_name, obj, port, pstate) \ +SCM_SNARF_HERE(int c_name(SCM obj, SCM port, scm_print_state* pstate)) \ +SCM_SNARF_INIT(scm_set_smob_print((tag), (c_name));) + +#define SCM_SMOB_EQUALP(tag, c_name, obj1, obj2) \ +SCM_SNARF_HERE(static SCM c_name(SCM obj1, SCM obj2)) \ +SCM_SNARF_INIT(scm_set_smob_equalp((tag), (c_name));) + +#define SCM_GLOBAL_SMOB_EQUALP(tag, c_name, obj1, obj2) \ +SCM_SNARF_HERE(SCM c_name(SCM obj1, SCM obj2)) \ +SCM_SNARF_INIT(scm_set_smob_equalp((tag), (c_name));) + +#define SCM_SMOB_APPLY(tag, c_name, req, opt, rest, arglist) \ +SCM_SNARF_HERE(static SCM c_name arglist) \ +SCM_SNARF_INIT(scm_set_smob_apply((tag), (c_name), (req), (opt), (rest));) + +#define SCM_GLOBAL_SMOB_APPLY(tag, c_name, req, opt, rest, arglist) \ +SCM_SNARF_HERE(SCM c_name arglist) \ +SCM_SNARF_INIT(scm_set_smob_apply((tag), (c_name), (req), (opt), (rest));) + + + + SCM_API SCM scm_i_new_smob (scm_t_bits tc, scm_t_bits); SCM_API SCM scm_i_new_double_smob (scm_t_bits tc, scm_t_bits, scm_t_bits, scm_t_bits); diff --git a/libguile/snarf.h b/libguile/snarf.h index 5aa4f1dfa..309014835 100644 --- a/libguile/snarf.h +++ b/libguile/snarf.h @@ -85,54 +85,6 @@ DOCSTRING ^^ } # endif #endif -#define SCM_SMOB(tag, scheme_name, size) \ -SCM_SNARF_HERE(static scm_t_bits tag) \ -SCM_SNARF_INIT((tag)=scm_make_smob_type((scheme_name), (size));) - -#define SCM_GLOBAL_SMOB(tag, scheme_name, size) \ -SCM_SNARF_HERE(scm_t_bits tag) \ -SCM_SNARF_INIT((tag)=scm_make_smob_type((scheme_name), (size));) - -#define SCM_SMOB_MARK(tag, c_name, arg) \ -SCM_SNARF_HERE(static SCM c_name(SCM arg)) \ -SCM_SNARF_INIT(scm_set_smob_mark((tag), (c_name));) - -#define SCM_GLOBAL_SMOB_MARK(tag, c_name, arg) \ -SCM_SNARF_HERE(SCM c_name(SCM arg)) \ -SCM_SNARF_INIT(scm_set_smob_mark((tag), (c_name));) - -#define SCM_SMOB_FREE(tag, c_name, arg) \ -SCM_SNARF_HERE(static size_t c_name(SCM arg)) \ -SCM_SNARF_INIT(scm_set_smob_free((tag), (c_name));) - -#define SCM_GLOBAL_SMOB_FREE(tag, c_name, arg) \ -SCM_SNARF_HERE(size_t c_name(SCM arg)) \ -SCM_SNARF_INIT(scm_set_smob_free((tag), (c_name));) - -#define SCM_SMOB_PRINT(tag, c_name, obj, port, pstate) \ -SCM_SNARF_HERE(static int c_name(SCM obj, SCM port, scm_print_state* pstate)) \ -SCM_SNARF_INIT(scm_set_smob_print((tag), (c_name));) - -#define SCM_GLOBAL_SMOB_PRINT(tag, c_name, obj, port, pstate) \ -SCM_SNARF_HERE(int c_name(SCM obj, SCM port, scm_print_state* pstate)) \ -SCM_SNARF_INIT(scm_set_smob_print((tag), (c_name));) - -#define SCM_SMOB_EQUALP(tag, c_name, obj1, obj2) \ -SCM_SNARF_HERE(static SCM c_name(SCM obj1, SCM obj2)) \ -SCM_SNARF_INIT(scm_set_smob_equalp((tag), (c_name));) - -#define SCM_GLOBAL_SMOB_EQUALP(tag, c_name, obj1, obj2) \ -SCM_SNARF_HERE(SCM c_name(SCM obj1, SCM obj2)) \ -SCM_SNARF_INIT(scm_set_smob_equalp((tag), (c_name));) - -#define SCM_SMOB_APPLY(tag, c_name, req, opt, rest, arglist) \ -SCM_SNARF_HERE(static SCM c_name arglist) \ -SCM_SNARF_INIT(scm_set_smob_apply((tag), (c_name), (req), (opt), (rest));) - -#define SCM_GLOBAL_SMOB_APPLY(tag, c_name, req, opt, rest, arglist) \ -SCM_SNARF_HERE(SCM c_name arglist) \ -SCM_SNARF_INIT(scm_set_smob_apply((tag), (c_name), (req), (opt), (rest));) - /* Low-level snarfing for static memory allocation. */ |