+
+LY_DEFINE (ly_paper_lookup, "ly:paper-lookup",
+ 2, 0,0, (SCM pap, SCM sym),
+ "Lookup @var{sym} in @var{pap}. "
+ "Return the value or ' () if undefined.")
+{
+ Music_output_def *op = unsmob_music_output_def (pap);
+ SCM_ASSERT_TYPE (op, pap, SCM_ARG1, __FUNCTION__, "Paper");
+ SCM_ASSERT_TYPE (gh_symbol_p (sym), sym, SCM_ARG2, __FUNCTION__, "symbol");
+
+ SCM var = ly_module_lookup (op->scope_, sym);
+ if (SCM_VARIABLEP (var))
+ return SCM_VARIABLE_REF (var);
+ else
+ return SCM_EOL;
+}
+
+LY_DEFINE (ly_output_def_scope, "ly:output-def-scope",
+ 1, 0,0, (SCM def),
+ "Get the scope inside @var{def}.")
+{
+ Music_output_def *op = unsmob_music_output_def (def);
+ SCM_ASSERT_TYPE (op, def, SCM_ARG1, __FUNCTION__, "Output definition");
+ return op->scope_;
+}
+
+LY_DEFINE (ly_output_def_clone, "ly:output-def-clone",
+ 1, 0, 0, (SCM def),
+ "Clone @var{def}.")
+{
+ Music_output_def *op = unsmob_music_output_def (def);
+ SCM_ASSERT_TYPE (op, def, SCM_ARG1, __FUNCTION__, "Output definition");
+ SCM s = op->clone ()->self_scm ();
+ scm_gc_unprotect_object (s);
+ return s;
+}
+