diff --git a/src/macro/Directives.cc b/src/macro/Directives.cc index 6b44c088..5e784e83 100644 --- a/src/macro/Directives.cc +++ b/src/macro/Directives.cc @@ -39,14 +39,8 @@ Eval::interpret(ostream &output, bool no_line_macro) } } -void -Include::interpret(ostream &output, bool no_line_macro) -{ - error(StackTrace("@#include", "should never be interpreted", location)); -} - string -Include::interpretAndGetName() +Include::interpretAndGetName() const { try { @@ -67,14 +61,8 @@ Include::interpretAndGetName() return ""; } -void -IncludePath::interpret(ostream &output, bool no_line_macro) -{ -error(StackTrace("@#includepath", "should never be interpreted", location)); -} - string -IncludePath::interpretAndGetPath() +IncludePath::interpretAndGetPath() const { try { diff --git a/src/macro/Directives.hh b/src/macro/Directives.hh index 4b0d530a..57981aa9 100644 --- a/src/macro/Directives.hh +++ b/src/macro/Directives.hh @@ -69,8 +69,14 @@ namespace macro public: Include(ExpressionPtr expr_arg, Environment &env_arg, Tokenizer::location location_arg) : Directive(env_arg, move(location_arg)), expr{move(expr_arg)} { } - void interpret(ostream &output, bool no_line_macro) override; - string interpretAndGetName(); + // Not interpretable because we want the class to be immutable (for use with shared_ptr) + // If it were interpretable, the name would need to be stored in a non-const variable + // rendering the class mutable + inline void interpret(ostream &output, bool no_line_macro) override + { + error(StackTrace("@#include", "should never be interpreted", location)); + } + string interpretAndGetName() const; }; @@ -81,8 +87,14 @@ namespace macro public: IncludePath(ExpressionPtr expr_arg, Environment &env_arg, Tokenizer::location location_arg) : Directive(env_arg, move(location_arg)), expr{move(expr_arg)} { } - void interpret(ostream &output, bool no_line_macro) override; - string interpretAndGetPath(); + // Not interpretable because we want the class to be immutable (for use with shared_ptr) + // If it were interpretable, the name would need to be stored in a non-const variable + // rendering the class mutable + inline void interpret(ostream &output, bool no_line_macro) override + { + error(StackTrace("@#includepath", "should never be interpreted", location)); + } + string interpretAndGetPath() const; };