diff --git a/ParsingDriver.cc b/ParsingDriver.cc index 37029fdc..38bf5a78 100644 --- a/ParsingDriver.cc +++ b/ParsingDriver.cc @@ -2449,8 +2449,7 @@ ParsingDriver::add_model_var_or_external_function(string *function_name, bool in void ParsingDriver::add_native(const string &s) { - string ss = string(s); - mod_file->addStatement(new NativeStatement(ss)); + mod_file->addStatement(new NativeStatement(s)); } void diff --git a/Statement.cc b/Statement.cc index 38da6e36..59021287 100644 --- a/Statement.cc +++ b/Statement.cc @@ -18,7 +18,6 @@ */ #include "Statement.hh" -#include ModFileStructure::ModFileStructure() : check_present(false), @@ -66,76 +65,11 @@ Statement::computingPass() { } -NativeStatement::NativeStatement(string &native_statement_arg) : +NativeStatement::NativeStatement(const string &native_statement_arg) : native_statement(native_statement_arg) { } -void -NativeStatement::computingPass() -{ - using namespace boost::xpressive; - // Return if this is a comment - sregex comment_expr = sregex::compile( "\\s*\%.*" ); - match_results results; - if (regex_match(native_statement, results, comment_expr)) - return; - - // Otherwise, look at the line and consider substituting date - size_t idx = -1; - vector apostrophes; - while((idx = native_statement.find("'", idx + 1)) != string::npos) - if (apostrophes.size() < 2) - apostrophes.push_back(idx); - else - if (idx == apostrophes.back() + 1) - apostrophes.pop_back(); - else - apostrophes.push_back(idx); - - bool skip = false; - string newstr = ""; - sregex date_expr = sregex::compile( "-?[0-9]+[Mm](1[0-2]|[1-9])|-?[0-9]+[Qq][1-4]|-?[0-9]+[Ww]([1-4][0-9]|5[0-2]|[1-9])" ); - string format( "dynDate('$&')" ); - size_t lastidx = 0; - for (size_t i = 0; i < apostrophes.size(); i++) - if (apostrophes[i] == 0) - skip = true; - else - if (skip) - { - newstr.append(native_statement.substr(lastidx, apostrophes[i] - lastidx)); - lastidx = apostrophes[i]; - skip = false; - } - else - { - newstr.append(regex_replace(native_statement.substr(lastidx, apostrophes[i] - lastidx), - date_expr, format)); - lastidx = apostrophes[i]; - skip = true; - } - size_t length = native_statement.length() - lastidx; - size_t commentidx = native_statement.substr(lastidx, length).find("%", 0); - if (commentidx != string::npos) - length = commentidx; - - newstr.append(regex_replace(native_statement.substr(lastidx, length), date_expr, format)); - - if (commentidx != string::npos) - { - lastidx += commentidx; - newstr.append(native_statement.substr(lastidx, native_statement.length() - lastidx)); - } - - native_statement = newstr; -} - -void -regexReplace() -{ -} - void NativeStatement::writeOutput(ostream &output, const string &basename) const { diff --git a/Statement.hh b/Statement.hh index 82f64fa7..cd3fd5cf 100644 --- a/Statement.hh +++ b/Statement.hh @@ -121,12 +121,10 @@ public: class NativeStatement : public Statement { private: - string native_statement; + const string native_statement; public: - NativeStatement(string &native_statement_arg); - virtual void computingPass(); + NativeStatement(const string &native_statement_arg); virtual void writeOutput(ostream &output, const string &basename) const; - void regexReplace(); }; class OptionsList