X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Finput.cc;h=0ada41847db6529d82527ea7f264781749f5b7c0;hb=b7a0cffbf9d1069860368f289a5b50e9d1d90ba8;hp=ef78037fad33bbd9eb8baac75f37774bc9583f9e;hpb=b37e3f652677ae0298423db9fa0e552e5fce0c92;p=lilypond.git diff --git a/lily/input.cc b/lily/input.cc index ef78037fad..0ada41847d 100644 --- a/lily/input.cc +++ b/lily/input.cc @@ -1,9 +1,20 @@ /* - input.cc -- implement Input + This file is part of LilyPond, the GNU music typesetter. - source file of the LilyPond music typesetter + Copyright (C) 1997--2009 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 . */ #include "input.hh" @@ -12,8 +23,9 @@ using namespace std; #include "international.hh" +#include "program-option.hh" #include "source-file.hh" -#include "source.hh" +#include "sources.hh" #include "warn.hh" Input::Input (Input const &i) @@ -67,22 +79,38 @@ Input::set_location (Input const &i_start, Input const &i_end) [file:line:column:][warning:]message */ void -Input::message (std::string s) const +Input::message (string s) const { if (source_file_) s = location_string () + ": " + s + "\n" - + source_file_->quote_input (start_); + + source_file_->quote_input (start_) + "\n"; ::message (s); } + +void +Input::programming_error (string s) const +{ + if (get_program_option ("warning-as-error")) + ::error (s); + else { + message (_f ("programming error: %s", s.c_str ())); + message (_ ("continuing, cross fingers") + "\n"); + } +} + + void -Input::warning (std::string s) const +Input::warning (string s) const { - message (_f ("warning: %s", s)); + if (get_program_option ("warning-as-error")) + ::error (s); + else + message (_f ("warning: %s", s)); } void -Input::error (std::string s) const +Input::error (string s) const { message (_f ("error: %s", s)); // UGH, fix naming or usage @@ -90,12 +118,12 @@ Input::error (std::string s) const } void -Input::non_fatal_error (std::string s) const +Input::non_fatal_error (string s) const { message (_f ("error: %s", s)); } -std::string +string Input::location_string () const { if (source_file_) @@ -103,7 +131,7 @@ Input::location_string () const return " (" + _ ("position unknown") + ")"; } -std::string +string Input::line_number_string () const { if (source_file_) @@ -111,7 +139,7 @@ Input::line_number_string () const return "?"; } -std::string +string Input::file_string () const { if (source_file_) @@ -130,8 +158,8 @@ Input::line_number () const int Input::column_number () const { - int line, chr, col = 0; - source_file_->get_counts (start_, &line, &chr, &col); + int line, chr, col, offset = 0; + source_file_->get_counts (start_, &line, &chr, &col, &offset); return col; } @@ -147,16 +175,16 @@ Input::end_line_number () const int Input::end_column_number () const { - int line, chr, col = 0; - source_file_->get_counts (end_, &line, &chr, &col); + int line, chr, col, offset = 0; + source_file_->get_counts (end_, &line, &chr, &col, &offset); return col; } void -Input::get_counts (int *line, int *chr, int *col) const +Input::get_counts (int *line, int *chr, int *col, int *offset) const { - source_file_->get_counts (start_, line, chr, col); + source_file_->get_counts (start_, line, chr, col, offset); } void