/* define if you have pango FT2 binding */
#define HAVE_PANGO_FT2 0
+
+/* define if Guile has types scm_t_hash_fold_fn and scm_t_hash_handle_fn */
+#define HAVE_GUILE_HASH_FUNC 0
STEPMAKE_TEXMF_DIRS
STEPMAKE_GUILE_DEVEL(REQUIRED, 1.8.2)
+# check for 2 typedefs added in Guile 1.9
+save_CFLAGS="$CFLAGS"
+CFLAGS="$GUILE_CFLAGS $CFLAGS"
+AC_CHECK_TYPES([scm_t_hash_fold_fn, scm_t_hash_handle_fn],
+ [AC_DEFINE(HAVE_GUILE_HASH_FUNC)], [],
+ [#include <libguile.h>])
+CFLAGS="$save_CFLAGS"
## check rational bugfix.
save_CPPFLAGS="$CPPFLAGS"
1,0,0, (SCM tab),
"Return a list of keys in @var{tab}.")
{
- return scm_internal_hash_fold ((Hash_closure_function) & accumulate_symbol,
+ return scm_internal_hash_fold ((scm_t_hash_fold_fn) &accumulate_symbol,
NULL, SCM_EOL, tab);
}
#ifndef LY_MODULE_HH
#define LY_MODULE_HH
+#include "config.hh"
#include "lily-guile.hh"
SCM ly_make_anonymous_module (bool safe);
void clear_anonymous_modules ();
SCM ly_use_module (SCM mod, SCM used);
-/* Ugh signature of scm_internal_hash_fold () is inaccurate. */
-typedef SCM (*Hash_closure_function) (GUILE_ELLIPSIS);
+/* For backward compatability with Guile 1.8 */
+#if !HAVE_GUILE_HASH_FUNC
+typedef SCM (*scm_t_hash_fold_fn) (GUILE_ELLIPSIS);
+typedef SCM (*scm_t_hash_handle_fn) (GUILE_ELLIPSIS);
+#endif
#define MODULE_GC_KLUDGE
SCM_VALIDATE_MODULE (1, mod);
SCM obarr = SCM_MODULE_OBARRAY (mod);
- return scm_internal_hash_fold ((Hash_closure_function) & entry_to_alist, NULL, SCM_EOL, obarr);
+ return scm_internal_hash_fold ((scm_t_hash_fold_fn) &entry_to_alist,
+ NULL, SCM_EOL, obarr);
}
void
SCM old_tab = scm_stand_in_procs;
SCM new_tab = scm_make_weak_key_hash_table (scm_from_int (257));
- new_tab = scm_internal_hash_fold ((Hash_closure_function) & redefine_keyval,
- NULL,
- new_tab,
- old_tab);
+ new_tab = scm_internal_hash_fold ((scm_t_hash_fold_fn) &redefine_keyval,
+ NULL, new_tab, old_tab);
scm_stand_in_procs = new_tab;
}
{
#define FUNC_NAME __FUNCTION__
SCM_VALIDATE_MODULE (1, src);
- scm_internal_hash_fold ((Hash_closure_function) & module_define_closure_func,
+ scm_internal_hash_fold ((scm_t_hash_fold_fn) &module_define_closure_func,
(void *) dest,
SCM_EOL, SCM_MODULE_OBARRAY (src));
return SCM_UNSPECIFIED;
static void
copy_scm_hashes (SCM dest, SCM src)
{
- scm_internal_hash_for_each_handle ( (SCM (*)(GUILE_ELLIPSIS)) ©_handle, dest, src);
+ scm_internal_hash_for_each_handle ((scm_t_hash_handle_fn) ©_handle,
+ dest, src);
}
Scheme_hash_table::Scheme_hash_table ()
SCM
Scheme_hash_table::to_alist () const
{
- return scm_internal_hash_fold ((SCM (*)(GUILE_ELLIPSIS)) &collect_handles, NULL, SCM_EOL, hash_tab_);
+ return scm_internal_hash_fold ((scm_t_hash_fold_fn) &collect_handles,
+ NULL, SCM_EOL, hash_tab_);
}
IMPLEMENT_SMOBS (Scheme_hash_table);