#include "support/lyxalgo.h"
#include "support/types.h"
-#include <boost/noncopyable.hpp>
-
#include <functional>
#include <istream>
#include <stack>
-#include <sstream>
#include <vector>
using namespace std;
///
-class Lexer::Pimpl : boost::noncopyable {
+class Lexer::Pimpl {
public:
///
Pimpl(keyword_item * tab, int num);
///
char commentChar;
private:
+ /// non-copyable
+ Pimpl(Pimpl const &);
+ void operator=(Pimpl const &);
+
///
void verifyTable();
///
// explicit tokens (JMarc)
string const Lexer::getLongString(string const & endtoken)
{
- string str, prefix;
+ string str;
+ string prefix;
bool firstline = true;
while (pimpl_->is) { //< eatLine only reads from is, not from pushTok
string tmpstr = getString();
if (firstline) {
- string::size_type i(tmpstr.find_first_not_of(' '));
+ size_t i = tmpstr.find_first_not_of(' ');
if (i != string::npos)
prefix = tmpstr.substr(0, i);
firstline = false;
// further lines in long strings may have the same
// whitespace prefix as the first line. Remove it.
- if (prefix.length() && prefixIs(tmpstr, prefix)) {
+ if (prefix.length() && prefixIs(tmpstr, prefix))
tmpstr.erase(0, prefix.length() - 1);
- }
str += ltrim(tmpstr, "\t") + '\n';
}
- if (!pimpl_->is) {
+ if (!pimpl_->is)
printError("Long string not ended by `" + endtoken + '\'');
- }
return str;
}
}
-/// quotes a string, e.g. for use in preferences files or as an argument of the "log" dialog
+// 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)
{
- ostringstream os;
- os << '"' << subst(subst(arg, "\\", "\\\\"), "\"", "\\\"") << '"';
- return os.str();
+ string res;
+ res += '"';
+ res += subst(subst(arg, "\\", "\\\\"), "\"", "\\\"");
+ res += '"';
+ return res;
}