X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Finput.cc;h=5b283837eca4ec99dc5a8dbadc5ffbb48f8030d6;hb=951e47c99cccf317207848412262b9c6c37e01aa;hp=77c5c14b2c06fb8f42510fbbc65a52b829fc2396;hpb=7e72a1e50e94a7f9738d62599de79fe7745f600c;p=lilypond.git diff --git a/lily/input.cc b/lily/input.cc index 77c5c14b2c..5b283837ec 100644 --- a/lily/input.cc +++ b/lily/input.cc @@ -1,29 +1,31 @@ /* - input.cc -- implement Input + input.cc -- implement Input - source file of the LilyPond music typesetter + source file of the LilyPond music typesetter - (c) 1997--2004 Han-Wen Nienhuys + (c) 1997--2005 Han-Wen Nienhuys */ -#include - -#include "flower-proto.hh" #include "input.hh" -#include "string.hh" + +#include + #include "source.hh" #include "source-file.hh" +#include "warn.hh" -Input::Input (Source_file*s, char const *cl) +Input::Input (Input const &i) { - source_file_=s; - defined_str0_=cl; + source_file_ = i.source_file_; + start_ = i.start_; + end_ = i.end_; } Input::Input () { source_file_ = 0; - defined_str0_ = 0; + start_ = 0; + end_ = 0; } Input @@ -38,82 +40,73 @@ Input::set_spot (Input const &i) *this = i; } +void +Input::step_forward () +{ + if (end_ == start_) + end_++; + start_++; +} + +void +Input::set_location (Input const &i_start, Input const &i_end) +{ + source_file_ = i_start.source_file_; + start_ = i_start.start_; + end_ = i_end.end_; +} + /* Produce GNU-compliant error message. Correcting lilypond source is such a breeze if you ('re edidor) know (s) the error column too - - Format: - [file:line:column:][warning:]message + Format: - */ + [file:line:column:][warning:]message +*/ void -Input::message (String message_string) const +Input::message (String s) const { - String str; - - /* - marked "Work in prgress" in GNU iostream - libg++ 2.7.2.8 - libstdc++ 2.8.1 - - why not just return always -1 (unknown), - iso breaking the interface? - - int col = cerr.rdbuf ()->column (); - - */ - - // well, we don't want to loose first warning... - int col = 1; - if (col > 0) - str += "\n"; - - if (source_file_) - str += location_string () + String (": "); - - str += message_string; if (source_file_) - { - str += ":\n"; - str += source_file_->error_string (defined_str0_); - } - fprintf (stderr, "%s\n", str.to_str0 ()); - fflush (stderr); + s = location_string () + ": " + s + "\n" + + source_file_->error_string (start_); + ::message (s); } void -Input::warning (String message_string) const +Input::warning (String s) const { - message (_ ("warning: ") + message_string); + message (_f ("warning: %s", s)); } + void Input::error (String s) const { - message (_ ("error: ")+ s); + message (_f ("error: %s", s)); + // UGH, fix naming or usage + // exit (1); } void Input::non_fatal_error (String s) const { - message (_ ("non fatal error: ") + s); + message (_f ("error: %s", s)); } + String Input::location_string () const { if (source_file_) - return source_file_->file_line_column_string (defined_str0_); - else - return " (" + _ ("position unknown") + ")"; + return source_file_->file_line_column_string (start_); + return " (" + _ ("position unknown") + ")"; } String Input::line_number_string () const { if (source_file_) - return to_string (source_file_->get_line (defined_str0_)); - else - return "?"; + return to_string (source_file_->get_line (start_)); + return "?"; } String @@ -121,27 +114,37 @@ Input::file_string () const { if (source_file_) return source_file_->name_string (); - else - return ""; + return ""; } - int Input::line_number () const { if (source_file_) - return source_file_->get_line (defined_str0_); - else - return 0; - + return source_file_->get_line (start_); + return 0; } int Input::column_number () const { if (source_file_) - return source_file_->get_column (defined_str0_); - else - return 0; + return source_file_->get_column (start_); + return 0; +} + +int +Input::end_line_number () const +{ + if (source_file_) + return source_file_->get_line (end_); + return 0; +} +int +Input::end_column_number () const +{ + if (source_file_) + return source_file_->get_column (end_); + return 0; }