LilyPond is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
LilyPond is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
if (ly_is_module (s.header_))
ly_module_copy (header_, s.header_);
if (ly_is_module (s.header_))
ly_module_copy (header_, s.header_);
- *t = scm_cons (newscore->self_scm (), SCM_EOL);
+ if (Score *newscore = unsmob_score (entry))
+ * t = scm_cons (newscore->clone ()->unprotect (), SCM_EOL);
+ else if (Page_marker *marker = unsmob_page_marker (entry))
+ * t = scm_cons (marker->clone ()->unprotect (), SCM_EOL);
+ else
+ {
+ /* This entry is a markup list */
+ *t = scm_cons (entry, SCM_EOL);
+ }
scm_gc_mark (book->scores_);
scm_gc_mark (book->bookparts_);
scm_gc_mark (book->input_location_);
scm_gc_mark (book->scores_);
scm_gc_mark (book->bookparts_);
scm_gc_mark (book->input_location_);
ly_module_copy (tmp_header, parent->header_);
if (ly_is_module (header_))
ly_module_copy (tmp_header, header_);
ly_module_copy (tmp_header, parent->header_);
if (ly_is_module (header_))
ly_module_copy (tmp_header, header_);
for (SCM s = scores_; scm_is_pair (s); s = scm_cdr (s))
if (Score *score = unsmob_score (scm_car (s)))
if (score->error_found_)
for (SCM s = scores_; scm_is_pair (s); s = scm_cdr (s))
if (Score *score = unsmob_score (scm_car (s)))
if (score->error_found_)
for (SCM part = bookparts_; scm_is_pair (part); part = scm_cdr (part))
if (Book *bookpart = unsmob_book (scm_car (part)))
if (bookpart->error_found ())
for (SCM part = bookparts_; scm_is_pair (part); part = scm_cdr (part))
if (Book *bookpart = unsmob_book (scm_car (part)))
if (bookpart->error_found ())
- {
- Music_output *output = unsmob_music_output (scm_car (outputs));
-
- if (Performance *perf = dynamic_cast<Performance *> (output))
- output_paper_book->add_performance (perf->self_scm ());
- else if (Paper_score *pscore = dynamic_cast<Paper_score *> (output))
- {
- if (ly_is_module (score->get_header ()))
- output_paper_book->add_score (score->get_header ());
- output_paper_book->add_score (pscore->self_scm ());
- }
-
- outputs = scm_cdr (outputs);
- }
+ {
+ Music_output *output = unsmob_music_output (scm_car (outputs));
+
+ if (Performance *perf = dynamic_cast<Performance *> (output))
+ output_paper_book->add_performance (perf->self_scm ());
+ else if (Paper_score *pscore = dynamic_cast<Paper_score *> (output))
+ {
+ if (ly_is_module (score->get_header ()))
+ output_paper_book->add_score (score->get_header ());
+ output_paper_book->add_score (pscore->self_scm ());
+ }
+
+ outputs = scm_cdr (outputs);
+ }
}
/* Concatenate all score or book part outputs into a Paper_book
*/
Paper_book *
Book::process (Output_def *default_paper,
}
/* Concatenate all score or book part outputs into a Paper_book
*/
Paper_book *
Book::process (Output_def *default_paper,
- Output_def *default_layout,
- Paper_book *parent_part)
+ Output_def *default_layout,
+ Paper_book *parent_part)
for (SCM s = scm_reverse (scores_); scm_is_pair (s); s = scm_cdr (s))
{
process_score (s, paper_book, default_layout);
for (SCM s = scm_reverse (scores_); scm_is_pair (s); s = scm_cdr (s))
{
process_score (s, paper_book, default_layout);