[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
SCM_DEFINE_SMOB_*
From: |
Keisuke Nishida |
Subject: |
SCM_DEFINE_SMOB_* |
Date: |
Mon, 22 Jan 2001 14:12:56 -0500 |
User-agent: |
Wanderlust/2.4.0 (Rio) SEMI/1.13.7 (Awazu) FLIM/1.13.2 (Kasanui) Emacs/21.0.95 (i686-pc-linux-gnu) MULE/5.0 (SAKAKI) |
Is it a good idea to add the following snarf macros for smob definitions?
#define SCM_DEFINE_SMOB_TYPE(TAG, NAME, SIZE) \
SCM_SNARF_HERE(scm_bits_t TAG) \
SCM_SNARF_INIT(TAG = scm_make_smob_type (NAME, SIZE))
#define SCM_DEFINE_SMOB_MARK(TAG, ARGS) \
SCM_SNARF_HERE(static SCM TAG ## _mark ARGS) \
SCM_SNARF_INIT(scm_set_smob_mark (TAG, TAG ## _mark);)
#define SCM_DEFINE_SMOB_FREE(TAG, ARGS) \
SCM_SNARF_HERE(static scm_sizet TAG ## _free ARGS) \
SCM_SNARF_INIT(scm_set_smob_free (TAG, TAG ## _free);)
#define SCM_DEFINE_SMOB_PRINT(TAG, ARGS) \
SCM_SNARF_HERE(static int TAG ## _print ARGS) \
SCM_SNARF_INIT(scm_set_smob_print (TAG, TAG ## _print);)
#define SCM_DEFINE_SMOB_EQUALP(TAG, ARGS) \
SCM_SNARF_HERE(static SCM TAG ## _equalp ARGS) \
SCM_SNARF_INIT(scm_set_smob_equalp (TAG, TAG ## _equalp);)
#define SCM_DEFINE_SMOB_APPLY(TAG, NREQS, NOPTS, RESTP, ARGS) \
SCM_SNARF_HERE(static SCM TAG ## _apply ARGS) \
SCM_SNARF_INIT(scm_set_smob_apply (TAG, TAG ## _apply, NREQS, NOPTS, RESTP);)
New code will look like this:
SCM_DEFINE_SMOB_TYPE (scm_tc16_foo, "foo", 0);
SCM_DEFINE_SMOB_MARK (scm_tc16_foo,
(SCM obj))
{
...
}
SCM_DEFINE_SMOB_PRINT (scm_tc16_foo,
(SCM obj, SCM port, scm_print_state *pstate))
{
...
}
SCM_DEFINE_SMOB_APPLY (scm_tc16_foo, 0, 0, 1,
(SCM foo, SCM args))
{
...
}
- SCM_DEFINE_SMOB_*,
Keisuke Nishida <=