X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Finput.cc;h=14b281fbb87baadb49e10b2b1032d1a4c776bbaa;hb=023604318fe8e1ec89eb9c9e222e0dd21f103d18;hp=a051da38c3c79ea5b09c996dde28495d1d1b9e19;hpb=bdf4ab13203502e7ec7cf9cf5896527643a07c1f;p=lilypond.git diff --git a/lily/input.cc b/lily/input.cc index a051da38c3..14b281fbb8 100644 --- a/lily/input.cc +++ b/lily/input.cc @@ -3,15 +3,18 @@ source file of the LilyPond music typesetter - (c) 1997--2005 Han-Wen Nienhuys + (c) 1997--2006 Han-Wen Nienhuys */ #include "input.hh" #include +using namespace std; -#include "source.hh" +#include "international.hh" #include "source-file.hh" +#include "source.hh" +#include "warn.hh" Input::Input (Input const &i) { @@ -64,81 +67,65 @@ Input::set_location (Input const &i_start, Input const &i_end) [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 (": "); + s = location_string () + ": " + s + "\n" + + source_file_->quote_input (start_) + "\n"; + ::message (s); +} - str += message_string; - if (source_file_) - { - str += ":\n"; - str += source_file_->error_string (start_); - } - fprintf (stderr, "%s\n", str.to_str0 ()); - fflush (stderr); + +void +Input::programming_error (string s) const +{ + message (_f ("programming error: %s", s.c_str ())); + message (_ ("continuing, cross fingers") + "\n"); } + 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 +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 +Input::non_fatal_error (string s) const { - message (_ ("non fatal error: ") + s); + message (_f ("error: %s", s)); } -String + +string Input::location_string () const { if (source_file_) return source_file_->file_line_column_string (start_); - else - return " (" + _ ("position unknown") + ")"; + return " (" + _ ("position unknown") + ")"; } -String +string Input::line_number_string () const { if (source_file_) return to_string (source_file_->get_line (start_)); - else - return "?"; + return "?"; } -String +string Input::file_string () const { if (source_file_) return source_file_->name_string (); - else - return ""; + return ""; } int @@ -146,17 +133,16 @@ Input::line_number () const { if (source_file_) return source_file_->get_line (start_); - else - return 0; + return 0; } int Input::column_number () const { - if (source_file_) - return source_file_->get_column (start_); - else - return 0; + int line, chr, col = 0; + source_file_->get_counts (start_, &line, &chr, &col); + + return col; } int @@ -164,15 +150,46 @@ Input::end_line_number () const { if (source_file_) return source_file_->get_line (end_); - else - return 0; + return 0; } int Input::end_column_number () const { - if (source_file_) - return source_file_->get_column (end_); - else - return 0; + int line, chr, col = 0; + source_file_->get_counts (end_, &line, &chr, &col); + + return col; +} + +void +Input::get_counts (int *line, int *chr, int *col) const +{ + source_file_->get_counts (start_, line, chr, col); +} + +void +Input::set (Source_file *sf, char const *start, char const *end) +{ + source_file_ = sf; + start_ = start; + end_ = end; +} + +Source_file * +Input::get_source_file () const +{ + return source_file_; +} + +char const * +Input::start () const +{ + return start_; +} + +char const * +Input::end () const +{ + return end_; }