X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Finput.cc;h=09028d0858ea4a00fbaf39c24055c370c1e74dad;hb=0f491fbd52e8a7b5160e980eb700847932089778;hp=5b283837eca4ec99dc5a8dbadc5ffbb48f8030d6;hpb=57be7394ffa2e7d7ba6d60548dba563f3409d472;p=lilypond.git diff --git a/lily/input.cc b/lily/input.cc index 5b283837ec..09028d0858 100644 --- a/lily/input.cc +++ b/lily/input.cc @@ -3,15 +3,17 @@ source file of the LilyPond music typesetter - (c) 1997--2005 Han-Wen Nienhuys + (c) 1997--2007 Han-Wen Nienhuys */ #include "input.hh" #include +using namespace std; -#include "source.hh" +#include "international.hh" #include "source-file.hh" +#include "sources.hh" #include "warn.hh" Input::Input (Input const &i) @@ -65,22 +67,31 @@ Input::set_location (Input const &i_start, Input const &i_end) [file:line:column:][warning:]message */ void -Input::message (String s) const +Input::message (string s) const { if (source_file_) s = location_string () + ": " + s + "\n" - + source_file_->error_string (start_); + + source_file_->quote_input (start_) + "\n"; ::message (s); } + +void +Input::programming_error (string s) const +{ + message (_f ("programming error: %s", s.c_str ())); + message (_ ("continuing, cross fingers") + "\n"); +} + + void -Input::warning (String s) const +Input::warning (string s) const { message (_f ("warning: %s", s)); } void -Input::error (String s) const +Input::error (string s) const { message (_f ("error: %s", s)); // UGH, fix naming or usage @@ -88,12 +99,12 @@ Input::error (String s) const } void -Input::non_fatal_error (String s) const +Input::non_fatal_error (string s) const { message (_f ("error: %s", s)); } -String +string Input::location_string () const { if (source_file_) @@ -101,7 +112,7 @@ Input::location_string () const return " (" + _ ("position unknown") + ")"; } -String +string Input::line_number_string () const { if (source_file_) @@ -109,7 +120,7 @@ Input::line_number_string () const return "?"; } -String +string Input::file_string () const { if (source_file_) @@ -128,9 +139,10 @@ Input::line_number () const int Input::column_number () const { - if (source_file_) - return source_file_->get_column (start_); - return 0; + int line, chr, col = 0; + source_file_->get_counts (start_, &line, &chr, &col); + + return col; } int @@ -144,7 +156,40 @@ Input::end_line_number () const int Input::end_column_number () const { - if (source_file_) - return source_file_->get_column (end_); - 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_; }