--- /dev/null
+\version "2.13.42"
+
+\header {
+ texidoc = "A @code{\\book} or @code{\\bookpart} identifier can contain
+top-level markup and page-markers."
+}
+
+mypart = \bookpart {
+ \relative c' { c1 }
+ \label #'marker
+ \markup { Page \page-ref #'marker "8" "?" }
+}
+
+\bookpart { \mypart }
header_ = ly_make_module (false);
if (ly_is_module (s.header_))
ly_module_copy (header_, s.header_);
-
SCM *t = &scores_;
for (SCM p = s.scores_; scm_is_pair (p); p = scm_cdr (p))
{
- Score *newscore = unsmob_score (scm_car (p))->clone ();
+ SCM entry = scm_car (p);
- *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);
+ }
t = SCM_CDRLOC (*t);
- newscore->unprotect ();
}
t = &bookparts_;
#define PAGE_MARKER_HH
#include "smobs.hh"
+#include "virtual-methods.hh"
class Page_marker
{
public:
Page_marker ();
-
+ Page_marker (Page_marker const &);
+ VIRTUAL_COPY_CONSTRUCTOR (Page_marker, Page_marker);
+
void set_permission (SCM symbol, SCM permission);
void set_label (SCM label);
smobify_self ();
}
+Page_marker::Page_marker (Page_marker const &src)
+{
+ symbol_ = src.symbol_;
+ permission_ = src.permission_;
+ label_ = src.label_;
+ smobify_self ();
+}
+
Page_marker::~Page_marker ()
{
}
}
int
-Page_marker::print_smob (SCM smob, SCM port, scm_print_state*)
+Page_marker::print_smob (SCM smob, SCM port, scm_print_state *)
{
Page_marker *pm = (Page_marker *) SCM_CELL_WORD_1 (smob);
- (void)pm;
+ (void) pm;
scm_puts ("#<Page_marker>", port);
return 1;
}
{
label_ = label;
}
-
-