From: Han-Wen Nienhuys Date: Sat, 8 Jan 2005 17:27:09 +0000 (+0000) Subject: *** empty log message *** X-Git-Tag: release/2.5.14~283 X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=7a26d44a642acff9cecd896d4a4b4eeb7ea2f76a;p=lilypond.git *** empty log message *** --- diff --git a/lily/book-scheme.cc b/lily/book-scheme.cc new file mode 100644 index 0000000000..ac296a6744 --- /dev/null +++ b/lily/book-scheme.cc @@ -0,0 +1,31 @@ +#include "book.hh" +#include "output-def.hh" +#include "score.hh" +#include "ly-module.hh" + +LY_DEFINE(ly_make_book, "ly:make-book", + 2, 0, 1, (SCM paper, SCM header, SCM scores), + "Make a \\book of @var{paper} and @var{header} (which may be #f as well) " + "containing @code{\\scores}.") +{ + Output_def * odef = unsmob_output_def (paper); + SCM_ASSERT_TYPE (odef, paper, + SCM_ARG1, __FUNCTION__, "Output_def"); + + Book *book = new Book; + book->paper_ = odef; + + if (ly_c_module_p (header)) + book->header_ = header; + + for (SCM s = scores; scm_is_pair (s); s = scm_cdr (s)) + { + Score *score = unsmob_score (scm_car (s)); + if (score) + book->scores_.push (score); + } + + SCM x = book->self_scm (); + scm_gc_unprotect_object (x); + return x; +}