}
-string const LyXLex::Pimpl::GetString() const
+string LyXLex::Pimpl::GetString() const
{
return string(buff);
}
bool LyXLex::Pimpl::setFile(string const & filename)
{
- if (fb__.is_open())
- lyxerr << "Error in LyXLex::setFile: "
- "file or stream already set." << endl;
+ //if (fb__.is_open())
+ // lyxerr << "Error in LyXLex::setFile: "
+ // "file or stream already set." << endl;
fb__.open(filename.c_str(), ios::in);
- is.rdbuf(&fb__);
+ //is.rdbuf(&fb__);
name = filename;
lineno = 0;
return fb__.is_open() && is.good();
}
-bool LyXLex::Pimpl::next(bool esc = false)
+bool LyXLex::Pimpl::next(bool esc /* = false */)
{
+ if (!pushTok.empty()) {
+ pushTok.copy(buff, string::npos);
+ buff[pushTok.length()] = '\0';
+ pushTok.erase();
+ return true;
+ }
if (!esc) {
unsigned char c = 0; // getc() returns an int
char cc = 0;
bool LyXLex::Pimpl::nextToken()
{
+ if (!pushTok.empty()) {
+ pushTok.copy(buff, string::npos);
+ buff[pushTok.length()] = '\0';
+ pushTok.erase();
+ return true;
+ }
+
status = 0;
while (is && !status) {
unsigned char c = 0;
buff[0] = '\0';
return false;
}
+
+
+void LyXLex::Pimpl::pushToken(string const & pt)
+{
+ pushTok = pt;
+}