X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Finclude%2Finput.hh;h=b77db2d66f547051ca07fd51cdb615dfbc34126d;hb=512fc5ece5ff691520bf93badaa0a77a46370839;hp=af9dcff3e6b56280ba1c300a4dc80914c4ceb8c1;hpb=4bb29573149a0ffa1f881c5e38a0fe68e9e76b67;p=lilypond.git diff --git a/lily/include/input.hh b/lily/include/input.hh index af9dcff3e6..b77db2d66f 100644 --- a/lily/include/input.hh +++ b/lily/include/input.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2011 Han-Wen Nienhuys + Copyright (C) 1997--2015 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -21,26 +21,32 @@ #define INPUT_HH #include "lily-proto.hh" +#include "smobs.hh" /** Base class for anything that records its poisition in the parse file. */ -class Input +class Input : public Simple_smob { char const *start_; char const *end_; Source_file *source_file_; public: + static const char type_p_name_[]; + int print_smob (SCM, scm_print_state *) const; + static SCM equal_p (SCM, SCM); + SCM mark_smob () const; Source_file *get_source_file () const; char const *start () const; char const *end () const; void set (Source_file *, char const *, char const *); - void warning (string) const; - void programming_error (string) const; - void non_fatal_error (string) const; - void error (string) const; - void message (string) const; + void error (const string&) const; + void programming_error (const string&) const; + void non_fatal_error (const string&) const; + void warning (const string&) const; + void message (const string&) const; + void debug_output (const string&) const; void set_spot (Input const &); void step_forward (); void set_location (Input const &, Input const &); @@ -60,13 +66,19 @@ public: Input (Input const &i); Input (); +protected: + string message_location () const; + string message_string (const string &msg) const; }; -#include "smobs.hh" - -SCM make_input (Input spot); -Input *unsmob_input (SCM); - extern Input dummy_input_global; +// The parser calls syntax functions with a lot of arguments +SCM with_location (SCM loc, SCM proc); +SCM with_location (SCM loc, SCM proc, SCM); +SCM with_location (SCM loc, SCM proc, SCM, SCM); +SCM with_location (SCM loc, SCM proc, SCM, SCM, SCM); +SCM with_location (SCM loc, SCM proc, SCM, SCM, SCM, SCM); +SCM with_location (SCM loc, SCM proc, SCM, SCM, SCM, SCM, SCM); + #endif // INPUT_HH