/*
- book.hh -- declare Book
+ This file is part of LilyPond, the GNU music typesetter.
- source file of the GNU LilyPond music typesetter
+ Copyright (C) 1997--2011 Han-Wen Nienhuys <hanwen@xs4all.nl>
- (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+ LilyPond is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ LilyPond is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with LilyPond. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef BOOK_HH
#define BOOK_HH
-#include "input.hh"
#include "lily-proto.hh"
-
-#include "parray.hh"
+#include "std-vector.hh"
+#include "std-string.hh"
+#include "virtual-methods.hh"
#include "smobs.hh"
-class Book : public Input
+class Book
{
- DECLARE_SMOBS (Book, foo);
+ DECLARE_SMOBS (Book);
public:
SCM header_;
- Link_array<Score> scores_;
-
+ Output_def *paper_;
+ SCM scores_;
+ SCM bookparts_;
+ SCM input_location_;
+
+ Book (Book const &);
+ Input *origin () const;
+ VIRTUAL_COPY_CONSTRUCTOR (Book, Book);
Book ();
- Book (Book const&);
- void process (String outname, Music_output_def*, SCM header);
- SCM to_stencil (Music_output_def*, SCM header);
+ void add_score (SCM);
+ void add_bookpart (SCM);
+ Paper_book *process (Output_def *def_paper,
+ Output_def *def_layout);
+ Paper_book *process (Output_def *default_paper,
+ Output_def *default_layout,
+ Paper_book *parent_part);
+ void set_keys ();
+
+protected:
+ void set_parent (Book *parent);
+ void add_scores_to_bookpart ();
+ bool error_found ();
+ void process_score (SCM score,
+ Paper_book *output_paper_book,
+ Output_def *layout);
+ void process_bookparts (Paper_book *output_paper_book,
+ Output_def *paper,
+ Output_def *layout);
};
-DECLARE_UNSMOB (Book,book);
+
+DECLARE_UNSMOB (Book, book);
#endif /* BOOK_HH */