#include "config.h"
#include "drul-array.hh"
+
/* Guile 1.3.4 compatibility */
#if GUILE_MINOR_VERSION < 4
#endif
-
#include "direction.hh"
#include "flower-proto.hh"
{
return scm_acons(key, val, scm_assoc_remove_x (alist, key));
}
+#ifdef PARANOID
+#define gh_pair_p ly_pair_p
+bool ly_pair_p (SCM x);
+#else
inline bool ly_pair_p (SCM x) { return SCM_NFALSEP (scm_pair_p (x)); }
+#endif
inline bool ly_symbol_p (SCM x) { return SCM_SYMBOLP (x); }
inline bool ly_number_p (SCM x) { return SCM_NUMBERP (x); }
inline bool ly_procedure_p (SCM x) { return SCM_NFALSEP (scm_procedure_p(x)); }
ADD_SCM_INIT_FUNC (TYPE ## _ ## FUNC ## _callback, TYPE ## _ ## FUNC ## _init_functions); \
+void ly_add_function_documentation (char const * fname,
+ char const * varlist,
+ char const * doc);
+
#define ADD_SCM_INIT_FUNC(name, func)\
class name ## _scm_initter { \
public:\
} _ ## name ## _scm_initter; \
/* end define */
+#define LY_DEFINE(FNAME, PRIMNAME, REQ, OPT, VAR, ARGLIST, DOCSTRING) \
+SCM FNAME ARGLIST ; \
+SCM FNAME ## _proc;\
+void \
+FNAME ## init ()\
+{\
+ FNAME ## _proc \
+ = scm_c_define_gsubr (PRIMNAME,REQ, OPT, VAR, (Scheme_function_unknown) FNAME);\
+ ly_add_function_documentation (PRIMNAME, #ARGLIST, DOCSTRING);\
+}\
+ADD_SCM_INIT_FUNC (FNAME ## init_unique_prefix, FNAME ## init);\
+SCM \
+FNAME ARGLIST\
+
+
+
#endif // LILY_GUILE_HH