+LY_DEFINE (ly_register_translator, "ly:register-translator",
+ 2, 1, 0, (SCM creator, SCM name, SCM description),
+ "Register a translator @var{creator} (usually a descriptive"
+ " alist or a function/closure returning one when given a"
+ " context argument) with the given symbol @var{name} and"
+ " the given @var{description} alist.")
+{
+ SCM_ASSERT_TYPE (ly_is_procedure (creator) || scm_is_pair (creator),
+ creator, SCM_ARG1, __FUNCTION__, "translator creator");
+ LY_ASSERT_TYPE (ly_is_symbol, name, 2);
+ if (SCM_UNBNDP (description))
+ description = SCM_EOL;
+ else
+ LY_ASSERT_TYPE (ly_is_list, description, 3);
+ add_translator_creator (creator, name, description);
+ return SCM_UNSPECIFIED;
+}
+
+SCM
+get_translator_creator (SCM sym)