+
+void
+Paper_book::classic_output (String outname)
+{
+ Paper_outputter *out = papers_.top ()->get_paper_outputter (outname);
+ int count = scores_.size ();
+
+ out->output_metadata (get_scopes (count - 1), papers_.top ());
+ out->output_header (papers_.top ());
+
+ int line_count = SCM_VECTOR_LENGTH ((SCM) scores_.top ());
+ for (int i = 0; i < line_count; i++)
+ out->output_line (scm_vector_ref ((SCM) scores_.top (), scm_int2num (i)),
+ 0, i == line_count - 1);
+
+ out->output_scheme (scm_list_1 (ly_symbol2scm ("end-output")));
+ progress_indication ("\n");
+}
+
+
+#include "ly-smobs.icc"
+
+IMPLEMENT_DEFAULT_EQUAL_P (Paper_book);
+IMPLEMENT_SMOBS (Paper_book)
+IMPLEMENT_TYPE_P (Paper_book, "ly:paper-book?")
+
+SCM
+Paper_book::mark_smob (SCM smob)
+{
+ Paper_book *pb = (Paper_book*) SCM_CELL_WORD_1 (smob);
+ for (int i = 0; i < pb->headers_.size (); i++)
+ scm_gc_mark (pb->headers_[i]);
+ for (int i = 0; i < pb->global_headers_.size (); i++)
+ scm_gc_mark (pb->global_headers_[i]);
+ for (int i = 0; i < pb->papers_.size (); i++)
+ scm_gc_mark (pb->papers_[i]->self_scm ());
+ for (int i = 0; i < pb->scores_.size (); i++)
+ scm_gc_mark (pb->scores_[i]);
+ return SCM_EOL;
+}
+
+int
+Paper_book::print_smob (SCM smob, SCM port, scm_print_state*)
+{
+ Paper_book *b = (Paper_book*) ly_cdr (smob);
+
+ scm_puts ("#<", port);
+ scm_puts (classname (b), port);
+ scm_puts (" ", port);
+ //scm_puts (b->, port);
+ scm_puts (">", port);
+ return 1;
+}
+