X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Finclude%2Finput.hh;h=aab0d117a66a561b7f6a0cea4c727a97b64d3e24;hb=c88c04b95d775c57044f5fbf442bc69be549d19e;hp=9c255b70f0cc5ce83e09c7338c8652fc850e3d86;hpb=b37e3f652677ae0298423db9fa0e552e5fce0c92;p=lilypond.git diff --git a/lily/include/input.hh b/lily/include/input.hh index 9c255b70f0..aab0d117a6 100644 --- a/lily/include/input.hh +++ b/lily/include/input.hh @@ -1,53 +1,84 @@ /* - input.hh -- declare Input + This file is part of LilyPond, the GNU music typesetter. - source file of the LilyPond music typesetter + Copyright (C) 1997--2015 Han-Wen Nienhuys - (c) 1997--2006 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 + 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 . */ #ifndef INPUT_HH #define INPUT_HH -#include "flower-proto.hh" -#include "std-string.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 * const 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 (std::string) const; // should use member func? - void non_fatal_error (std::string) const; - void error (std::string) const; - void message (std::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 &); + Input spot () const; - std::string location_string () const; - std::string line_number_string () const; - std::string file_string ()const; + + string location_string () const; + string line_number_string () const; + string file_string ()const; int line_number ()const; int column_number ()const; int end_line_number ()const; int end_column_number ()const; - void get_counts (int *line, int *char_count, int *col) const; + void get_counts (int *, int *, int *, int *) const; Input (Input const &i); Input (); +protected: + string message_location () const; + string message_string (const string &msg) const; }; +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