From b3ec807b902526ca41db5ebfaefac91b6c559841 Mon Sep 17 00:00:00 2001 From: Houtan Bastani Date: Mon, 19 Aug 2019 18:28:57 +0200 Subject: [PATCH] macro processor: move changes from `cd99bb3af9c8ef6fd881fa0457121894f8edd14e` to the header file --- src/macro/Directives.cc | 16 ++-------------- src/macro/Directives.hh | 20 ++++++++++++++++---- 2 files changed, 18 insertions(+), 18 deletions(-) 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; };