#include "support/filetools.h"
#include "support/lyxalgo.h"
#include "support/lstrings.h"
+#include "support/types.h"
+#include "support/unicode.h"
+
+#include <functional>
using lyx::support::compare_ascii_no_case;
using lyx::support::getFormatFromContents;
-using lyx::support::MakeDisplayPath;
+using lyx::support::makeDisplayPath;
using lyx::support::split;
using lyx::support::subst;
namespace {
-struct compare_tags
+class compare_tags
: public std::binary_function<keyword_item, keyword_item, bool> {
+public:
// used by lower_bound, sort and sorted
bool operator()(keyword_item const & a, keyword_item const & b) const
{
}
+lyx::docstring const LyXLex::Pimpl::getDocString() const
+{
+ std::vector<lyx::char_type> res = utf8_to_ucs4(buff);
+ lyx::docstring dstr(res.begin(), res.end());
+ return dstr;
+}
+
+
void LyXLex::Pimpl::printError(string const & message) const
{
string const tmpmsg = subst(message, "$$Token", getString());
lyxerr << "LyX: " << tmpmsg << " [around line " << lineno
- << " of file " << MakeDisplayPath(name) << ']' << endl;
+ << " of file " << lyx::to_utf8(makeDisplayPath(name)) << ']' << endl;
}
// The check only outputs a debug message, because it triggers
// a bug in compaq cxx 6.2, where is_open() returns 'true' for
// a fresh new filebuf. (JMarc)
- if (gz_.is_open() || istream::off_type(is.tellg()) > -1)
+ if (!gz_.empty() || istream::off_type(is.tellg()) > -1)
lyxerr[Debug::LYXLEX] << "Error in LyXLex::setFile: "
"file or stream already set." << endl;
- gz_.open(filename.c_str(), ios::in);
+ gz_.push(io::gzip_decompressor());
+ gz_.push(io::file_source(filename));
is.rdbuf(&gz_);
name = filename;
lineno = 0;
- return gz_.is_open() && is.good();
+ return gz_.component<io::file_source>(1)->is_open() && is.good();
} else {
lyxerr[Debug::LYXLEX] << "lyxlex: UNcompressed" << endl;