X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Fsource-file.cc;h=902baa0e47b4a50dec5a7a6f19062791daef3b0c;hb=585959e4a373db9658d84ace8f3d4f4f6af7b190;hp=d4a3681da26a71dce624865e1da2658c17d594b0;hpb=64313890b232c731d432e5b096f30bffc3f3756d;p=lilypond.git diff --git a/lily/source-file.cc b/lily/source-file.cc index d4a3681da2..902baa0e47 100644 --- a/lily/source-file.cc +++ b/lily/source-file.cc @@ -35,24 +35,18 @@ void Source_file::load_stdin () { length_ = 0; - + chs_.clear (); int c; -#if STD_VECTOR - std::vector &chs = *new std::vector; // ugh. ugh. -#else - std::vector chs; // ugh. -#endif - while ((c = fgetc (stdin)) != EOF) - chs.push_back (c); + chs_.push_back (c); - chs.push_back (0); - length_ = chs.size (); - contents_str0_ = chs.remove_array (); + chs_.push_back (0); + length_ = chs_.size (); + contents_str0_ = &chs_[0]; } char * -gulp_file (std::string filename, int *filesize) +gulp_file (string filename, int *filesize) { /* "b" must ensure to open literally, avoiding text (CR/LF) conversions. */ @@ -84,7 +78,7 @@ gulp_file (std::string filename, int *filesize) return str; } -Source_file::Source_file (std::string filename, std::string data) +Source_file::Source_file (string filename, string data) { name_ = filename; istream_ = 0; @@ -98,7 +92,7 @@ Source_file::Source_file (std::string filename, std::string data) newline_locations_.push_back (contents_str0_ + i); } -Source_file::Source_file (std::string filename_string) +Source_file::Source_file (string filename_string) { name_ = filename_string; istream_ = 0; @@ -152,7 +146,7 @@ Source_file::get_istream () return istream_; } -std::string +string Source_file::file_line_column_string (char const *context_str0) const { if (!c_str ()) @@ -167,7 +161,7 @@ Source_file::file_line_column_string (char const *context_str0) const } } -std::string +string Source_file::quote_input (char const *pos_str0) const { if (!contains (pos_str0)) @@ -175,15 +169,15 @@ Source_file::quote_input (char const *pos_str0) const int l, ch, col; get_counts (pos_str0, &l, &ch, &col); - std::string line = line_string (pos_str0); - std::string context = line.substr (0, ch) + string line = line_string (pos_str0); + string context = line.substr (0, ch) + to_string ('\n') + to_string (' ', col) + line.substr (ch, line.length()-ch); return context; } -std::string +string Source_file::name_string () const { return map_file_name (name_); @@ -226,7 +220,7 @@ Source_file::line_slice (char const *pos_str0) const return Slice (begin_str0 - data_str0, end_str0 - data_str0); } -std::string +string Source_file::line_string (char const *pos_str0) const { if (!contains (pos_str0)) @@ -234,7 +228,7 @@ Source_file::line_string (char const *pos_str0) const Slice line = line_slice (pos_str0); char const *data_str0 = c_str (); - return std::string (data_str0 + line[LEFT], line.length ()); + return string (data_str0 + line[LEFT], line.length ()); } void @@ -257,7 +251,7 @@ Source_file::get_counts (char const *pos_str0, char const *line_start = (char const *)data + line[LEFT]; ssize left = (char const *) pos_str0 - line_start; - std::string line_begin (line_start, left); + string line_begin (line_start, left); char const *line_chars = line_begin.c_str (); *column = 0; @@ -319,8 +313,8 @@ Source_file::get_line (char const *pos_str0) const if (!newline_locations_.size ()) return 1; - int lo = 0; - int hi = newline_locations_.size (); + vsize lo = 0; + vsize hi = newline_locations_.size (); if (newline_locations_[lo] > pos_str0) return 1; @@ -329,8 +323,8 @@ Source_file::get_line (char const *pos_str0) const return hi; binary_search_bounds (newline_locations_, - pos_str0, - Link_array::default_compare, + (char const*&)pos_str0, + default_compare, &lo, &hi); if (*pos_str0 == '\n') @@ -386,10 +380,10 @@ Source_file::forward_str0 (int n) return old_pos; } -std::string +string Source_file::get_string (int n) { - std::string str = std::string ((char const *)forward_str0 (n), n); + string str = string ((char const *)forward_str0 (n), n); return str; }