summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndy Wingo <wingo@pobox.com>2018-06-20 09:35:58 +0200
committerAndy Wingo <wingo@pobox.com>2018-06-20 09:37:50 +0200
commitad4fbebe85601de4f06eec88899972077a8ceebf (patch)
tree9403db73586ab6e5306dd8b2516e290c4c19749f
parent1d77492e8689fea1630e41258b3a36407afe4591 (diff)
downloadguile-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.h52
-rw-r--r--libguile/snarf.h48
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. */