2 grob-callback.cc -- implement Callback smob.
4 source file of the GNU LilyPond music typesetter
6 (c) 2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
10 #include "cxx-function-smob.hh"
11 #include "ly-smobs.icc"
13 static long callback_tag
;
22 print_smob (SCM
, SCM port
, scm_print_state
*)
24 scm_puts ("#<encapsulated C++ function>", port
);
29 scm_sizet
free_smob (SCM
)
36 cxx_function_type_p (SCM x
)
38 return (SCM_CELL_TYPE(x
) == callback_tag
) ? SCM_BOOL_T
: SCM_BOOL_F
;
41 void init_cxx_function_smobs()
43 callback_tag
= scm_make_smob_type_mfpe ("callback", 0,
47 scm_make_gsubr ("c++-function?", 1, 0, 0, (Scheme_function_unknown
) cxx_function_type_p
);
51 smobify_cxx_function (Cxx_function cb
)
56 SCM_SETCDR (z
, (SCM
)cb
);
57 SCM_SETCAR (z
, (SCM
)callback_tag
);
64 unsmob_cxx_function (SCM x
)
67 if (SCM_NIMP (x
) && SCM_CELL_TYPE(x
) == callback_tag
)
68 return (Cxx_function
) SCM_CELL_WORD_1(x
);