]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/output-def-scheme.cc
* lily/output-def-scheme.cc (LY_DEFINE): take default argument.
[lilypond.git] / lily / output-def-scheme.cc
index 9e56fb79bb29c29bea919d89b143c153e1882b59..f71e15926fb4ddde2fa6b97a376e23ef2dbaaa1a 100644 (file)
 #include "context-def.hh"
 
 LY_DEFINE (ly_layout_lookup, "ly:output-def-lookup",
-          2, 0, 0, (SCM pap, SCM sym),
+          2, 1, 0, (SCM pap, SCM sym, SCM def),
           "Lookup @var{sym} in @var{pap}. "
-          "Return the value or @code{'()} if undefined.")
+          "Return the value or @var{def} (which defaults to  @code{'()}) if undefined.")
 {
   Output_def *op = unsmob_output_def (pap);
   SCM_ASSERT_TYPE (op, pap, SCM_ARG1, __FUNCTION__, "Output_def");
   SCM_ASSERT_TYPE (scm_is_symbol (sym), sym, SCM_ARG2, __FUNCTION__, "symbol");
+  
+  SCM answer = op->lookup_variable (sym);
+  if (answer == SCM_UNDEFINED)
+    {
+      if (def == SCM_UNDEFINED)
+       def = SCM_EOL;
+
+      answer = def;
+    }
 
-  return op->lookup_variable (sym);
+  return answer;
 }
 
 LY_DEFINE (ly_output_def_scope, "ly:output-def-scope",