]> git.lyx.org Git - lyx.git/blobdiff - src/Lexer.cpp
Embedding: saving inzip name to .lyx file so that embedded files can always be found...
[lyx.git] / src / Lexer.cpp
index ce8de705470bde04ad3f5d76e8710ea8dac34b10..3ad6c8f27bff4d076a9d8f924c57345ba167f931 100644 (file)
 
 #include "Lexer.h"
 
-#include "debug.h"
+#include "support/debug.h"
 
 #include "support/convert.h"
+#include "support/FileName.h"
 #include "support/filetools.h"
 #include "support/gzstream.h"
 #include "support/lstrings.h"
 #include <sstream>
 #include <vector>
 
+using namespace std;
+using namespace lyx::support;
 
 namespace lyx {
 
-using support::compare_ascii_no_case;
-using support::FileName;
-using support::getFormatFromContents;
-using support::isStrDbl;
-using support::isStrInt;
-using support::ltrim;
-using support::makeDisplayPath;
-using support::prefixIs;
-using support::split;
-using support::subst;
-using support::trim;
-
-using std::endl;
-using std::getline;
-using std::lower_bound;
-using std::sort;
-using std::string;
-using std::ios;
-using std::istream;
-using std::ostream;
-
-
 //////////////////////////////////////////////////////////////////////
 //
 // Lexer::Pimpl
@@ -71,21 +52,21 @@ public:
        ///
        Pimpl(keyword_item * tab, int num);
        ///
-       std::string const getString() const;
+       string const getString() const;
        ///
        docstring const getDocString() const;
        ///
-       void printError(std::string const & message) const;
+       void printError(string const & message) const;
        ///
-       void printTable(std::ostream & os);
+       void printTable(ostream & os);
        ///
        void pushTable(keyword_item * tab, int num);
        ///
        void popTable();
        ///
-       bool setFile(support::FileName const & filename);
+       bool setFile(FileName const & filename);
        ///
-       void setStream(std::istream & i);
+       void setStream(istream & i);
        ///
        void setCommentChar(char c);
        ///
@@ -101,29 +82,29 @@ public:
        /// test if there is a pushed token or the stream is ok
        bool inputAvailable();
        ///
-       void pushToken(std::string const &);
+       void pushToken(string const &);
        /// fb_ is only used to open files, the stream is accessed through is.
-       std::filebuf fb_;
+       filebuf fb_;
 
        /// gz_ is only used to open files, the stream is accessed through is.
        gz::gzstreambuf gz_;
 
        /// the stream that we use.
-       std::istream is;
+       istream is;
        ///
-       std::string name;
+       string name;
        ///
        keyword_item * table;
        ///
        int no_items;
        ///
-       std::string buff;
+       string buff;
        ///
        int status;
        ///
        int lineno;
        ///
-       std::string pushTok;
+       string pushTok;
        ///
        char commentChar;
 private:
@@ -144,7 +125,7 @@ private:
                int table_siz;
        };
        ///
-       std::stack<pushed_table> pushed;
+       stack<pushed_table> pushed;
 };
 
 
@@ -152,7 +133,7 @@ private:
 namespace {
 
 class compare_tags
-       : public std::binary_function<keyword_item, keyword_item, bool> {
+       : public 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
@@ -253,30 +234,30 @@ void Lexer::Pimpl::popTable()
 bool Lexer::Pimpl::setFile(FileName const & filename)
 {
        // Check the format of the file.
-       string const format = getFormatFromContents(filename);
+       string const format = filename.guessFormatFromContents();
 
        if (format == "gzip" || format == "zip" || format == "compress") {
-               LYXERR(Debug::LYXLEX) << "lyxlex: compressed" << endl;
+               LYXERR(Debug::LYXLEX, "lyxlex: compressed");
                // 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)
-                       lyxerr[Debug::LYXLEX] << "Error in LyXLex::setFile: "
-                               "file or stream already set." << endl;
+                       LYXERR(Debug::LYXLEX, "Error in LyXLex::setFile: "
+                               "file or stream already set.");
                gz_.open(filename.toFilesystemEncoding().c_str(), ios::in);
                is.rdbuf(&gz_);
                name = filename.absFilename();
                lineno = 0;
                return gz_.is_open() && is.good();
        } else {
-               LYXERR(Debug::LYXLEX) << "lyxlex: UNcompressed" << endl;
+               LYXERR(Debug::LYXLEX, "lyxlex: UNcompressed");
 
                // 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 (fb_.is_open() || istream::off_type(is.tellg()) > 0) {
-                       LYXERR(Debug::LYXLEX) << "Error in Lexer::setFile: "
-                               "file or stream already set." << endl;
+                       LYXERR(Debug::LYXLEX, "Error in Lexer::setFile: "
+                               "file or stream already set.");
                }
                fb_.open(filename.toFilesystemEncoding().c_str(), ios::in);
                is.rdbuf(&fb_);
@@ -290,8 +271,8 @@ bool Lexer::Pimpl::setFile(FileName const & filename)
 void Lexer::Pimpl::setStream(istream & i)
 {
        if (fb_.is_open() || istream::off_type(is.tellg()) > 0) {
-               LYXERR(Debug::LYXLEX)  << "Error in Lexer::setStream: "
-                       "file or stream already set." << endl;
+               LYXERR(Debug::LYXLEX, "Error in Lexer::setStream: "
+                       "file or stream already set.");
        }
        is.rdbuf(i.rdbuf());
        lineno = 0;
@@ -334,8 +315,7 @@ bool Lexer::Pimpl::next(bool esc /* = false */)
                                string dummy;
                                getline(is, dummy);
 
-                               LYXERR(Debug::LYXLEX) << "Comment read: `" << c
-                                                     << dummy << '\'' << endl;
+                               LYXERR(Debug::LYXLEX, "Comment read: `" << c << dummy << '\'');
 #else
                                // unfortunately ignore is buggy (Lgb)
                                is.ignore(100, '\n');
@@ -423,8 +403,7 @@ bool Lexer::Pimpl::next(bool esc /* = false */)
                                string dummy;
                                getline(is, dummy);
 
-                               LYXERR(Debug::LYXLEX) << "Comment read: `" << c
-                                                     << dummy << '\'' << endl;
+                               LYXERR(Debug::LYXLEX, "Comment read: `" << c << dummy << '\'');
 #else
                                // but ignore is also still buggy (Lgb)
                                // This is fast (Lgb)
@@ -536,8 +515,7 @@ bool Lexer::Pimpl::eatLine()
        while (is && c != '\n') {
                is.get(cc);
                c = cc;
-               //LYXERR(Debug::LYXLEX) << "Lexer::EatLine read char: `"
-               //                    << c << '\'' << endl;
+               //LYXERR(Debug::LYXLEX, "Lexer::EatLine read char: `" << c << '\'');
                if (c != '\r')
                        buff.push_back(c);
        }
@@ -692,7 +670,7 @@ void Lexer::printError(string const & message) const
 }
 
 
-bool Lexer::setFile(support::FileName const & filename)
+bool Lexer::setFile(FileName const & filename)
 {
        return pimpl_->setFile(filename);
 }
@@ -790,8 +768,7 @@ string const Lexer::getLongString(string const & endtoken)
 
                string const token = trim(getString(), " \t");
 
-               LYXERR(Debug::PARSER) << "LongString: `"
-                                     << getString() << '\'' << endl;
+               LYXERR(Debug::PARSER, "LongString: `" << getString() << '\'');
 
                // We do a case independent comparison, like search_kw does.
                if (compare_ascii_no_case(token, endtoken) == 0)
@@ -803,8 +780,7 @@ string const Lexer::getLongString(string const & endtoken)
                        if (i != string::npos)
                                prefix = tmpstr.substr(0, i);
                        firstline = false;
-                       LYXERR(Debug::PARSER)
-                               << "Prefix = `" << prefix << "\'" << endl;
+                       LYXERR(Debug::PARSER, "Prefix = `" << prefix << "\'");
                }
 
                // further lines in long strings may have the same
@@ -865,7 +841,7 @@ void Lexer::pushToken(string const & pt)
 
 Lexer::operator void const *() const
 {
-       // This behaviour is NOT the same as the std::streams which would
+       // This behaviour is NOT the same as the streams which would
        // use fail() here. However, our implementation of getString() et al.
        // can cause the eof() and fail() bits to be set, even though we
        // haven't tried to read 'em.
@@ -879,7 +855,7 @@ bool Lexer::operator!() const
 }
 
 
-Lexer & Lexer::operator>>(std::string & s)
+Lexer & Lexer::operator>>(string & s)
 {
        if (isOK()) {
                next();
@@ -954,7 +930,7 @@ Lexer & Lexer::operator>>(bool & s)
 /// quotes a string, e.g. for use in preferences files or as an argument of the "log" dialog
 string const Lexer::quoteString(string const & arg)
 {
-       std::ostringstream os;
+       ostringstream os;
        os << '"' << subst(subst(arg, "\\", "\\\\"), "\"", "\\\"") << '"';
        return os.str();
 }