lilypond-1.2.15
[lilypond.git] / lib / input.cc
blobd159319a45002b98a1ef165bf577d35bc1e8625b
1 /*
2 input.cc -- implement Input
4 source file of the LilyPond music typesetter
6 (c) 1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
7 */
8 #include "proto.hh"
9 #include "input.hh"
10 #include "string.hh"
11 #include "source.hh"
12 #include "source-file.hh"
14 Input::Input (Source_file*s, char const *cl)
16 source_file_l_=s;
17 defined_ch_C_=cl;
20 Input::Input ()
22 source_file_l_ = 0;
23 defined_ch_C_ = 0;
26 Input
27 Input::spot () const
29 return *this;
32 void
33 Input::set_spot (Input const &i)
35 *this = i;
39 Produce almost GNU-compliant error message. Lily used to be rather
40 GNU-compliant in this too, but correcting mudela is such a breeze if
41 you('re edidor) know(s) the error column too (there's no GNU standard
42 on columns, is there?).
44 Format:
46 [file:line:column:][warning:]message
49 void
50 Input::message (String message_str) const
52 String str;
55 marked "Work in prgress" in GNU iostream
56 libg++ 2.7.2.8
57 libstdc++ 2.8.1
59 why not just return always -1 (unknown),
60 iso breaking the interface?
62 int col = cerr.rdbuf ()->column ();
66 // well, we don't want to loose first warning...
67 int col = 1;
68 if (col > 0)
69 str += "\n";
71 if (source_file_l_)
72 str += location_str () + String (": ");
74 str += message_str;
75 if (source_file_l_)
77 str += ":\n";
78 str += source_file_l_->error_str (defined_ch_C_);
80 cerr << str << endl;
83 void
84 Input::warning (String message_str) const
86 message (_ ("warning: ") + message_str);
88 void
89 Input::error (String s) const
91 message (_ ("error: ")+ s);
94 void
95 Input::non_fatal_error (String s) const
97 message (_ ("Non fatal error: ") + s);
99 String
100 Input::location_str () const
102 if (source_file_l_)
103 return source_file_l_->file_line_column_str (defined_ch_C_);
104 else
105 return "(" + _ ("position unknown") + ")";