diff --git a/src/macro/MacroBison.yy b/src/macro/MacroBison.yy index aa07d750..c650b947 100644 --- a/src/macro/MacroBison.yy +++ b/src/macro/MacroBison.yy @@ -50,7 +50,7 @@ class MacroDriver; string *string_val; int int_val; const MacroValue *mv; - vector *vector_string_p_val; + vector *vector_string_val; }; %code { @@ -90,7 +90,7 @@ class MacroDriver; %left UMINUS UPLUS EXCLAMATION %left LBRACKET -%type func_args +%type func_args %type expr array_expr %% @@ -136,9 +136,9 @@ statement : expr ; func_args : NAME - { $$ = new vector(); $$->push_back($1); } + { $$ = new vector(); $$->push_back(*$1); delete $1; } | func_args COMMA NAME - { $$->push_back($3); } + { $$->push_back(*$3); delete $3; } ; expr : INTEGER diff --git a/src/macro/MacroDriver.cc b/src/macro/MacroDriver.cc index ed70e556..9efff6fd 100644 --- a/src/macro/MacroDriver.cc +++ b/src/macro/MacroDriver.cc @@ -141,13 +141,13 @@ MacroDriver::replace_vars_in_str(const string &s) const } void -MacroDriver::set_string_function(const string &name, vector &args, const MacroValue *value) +MacroDriver::set_string_function(const string &name, vector &args, const MacroValue *value) { auto *smv = dynamic_cast(value); if (!smv) throw MacroValue::TypeError("The definition of a macro function must evaluate to a string"); - env[name] = new FuncMV(*this, args, *(const_cast(smv))); + env[name] = new FuncMV(*this, args, *(const_cast(smv))); } const StringMV * @@ -161,7 +161,7 @@ MacroDriver::eval_string_function(const string &name, const MacroValue *args) if (!fmv) throw MacroValue::TypeError("You are using " + name + " as if it were a macro function"); - vector func_args = fmv->get_args(); + vector func_args = fmv->get_args(); if (func_args.size() != (size_t)dynamic_cast(args->length())->get_int_value()) { cerr << "Macroprocessor: The evaluation of: " << name << " could not be completed" << endl @@ -173,7 +173,7 @@ MacroDriver::eval_string_function(const string &name, const MacroValue *args) int i = 0; env_t func_env_map; for (const auto it : func_args) - func_env_map[*it] = args->at(i++); + func_env_map[it] = args->at(i++); func_env.push_back(func_env_map); StringMV *smv = new StringMV(*this, replace_vars_in_str(fmv->toString())); @@ -182,11 +182,11 @@ MacroDriver::eval_string_function(const string &name, const MacroValue *args) } void -MacroDriver::push_args_into_func_env(const vector &args) +MacroDriver::push_args_into_func_env(const vector &args) { env_t func_env_map; for (const auto it : args) - func_env_map[*it] = NULL; + func_env_map[it] = NULL; func_env.push_back(func_env_map); } diff --git a/src/macro/MacroDriver.hh b/src/macro/MacroDriver.hh index 43f468fd..8c659fd1 100644 --- a/src/macro/MacroDriver.hh +++ b/src/macro/MacroDriver.hh @@ -221,10 +221,10 @@ public: string replace_vars_in_str(const string &s) const; //! Set a function with arguments - void set_string_function(const string &name, vector &args, const MacroValue *value); + void set_string_function(const string &name, vector &args, const MacroValue *value); //! Push function arguments onto func_env stack setting equal to NULL - void push_args_into_func_env(const vector &args); + void push_args_into_func_env(const vector &args); //! Remove last entry in func_env vector void pop_func_env(); diff --git a/src/macro/MacroValue.cc b/src/macro/MacroValue.cc index 7817d07e..aee8f55e 100644 --- a/src/macro/MacroValue.cc +++ b/src/macro/MacroValue.cc @@ -490,7 +490,7 @@ ArrayMV::print() const return ss.str(); } -FuncMV::FuncMV(MacroDriver &driver, vector &args_arg, StringMV &value_arg) : +FuncMV::FuncMV(MacroDriver &driver, vector &args_arg, StringMV &value_arg) : MacroValue(driver), args(args_arg), value(value_arg) { } @@ -553,7 +553,7 @@ FuncMV::print() const { if (comma_flag) retval += ", "; - retval += *it; + retval += it; comma_flag = true; } retval += ")"; @@ -563,7 +563,6 @@ FuncMV::print() const const MacroValue * FuncMV::toArray() const { - // COMEBACK vector v; v.push_back(value.toString()); return new ArrayMV(driver, v); diff --git a/src/macro/MacroValue.hh b/src/macro/MacroValue.hh index 79e93250..176d801f 100644 --- a/src/macro/MacroValue.hh +++ b/src/macro/MacroValue.hh @@ -209,10 +209,10 @@ class FuncMV : public MacroValue friend class MacroDriver; private: //! Function args & body - const vector args; + const vector args; const StringMV &value; public: - FuncMV(MacroDriver &driver, vector &args, StringMV &value_arg); + FuncMV(MacroDriver &driver, vector &args, StringMV &value_arg); ~FuncMV() override; @@ -223,7 +223,7 @@ public: string toString() const override; string print() const override; const MacroValue *toArray() const override; - inline const vector & + inline const vector & get_args() const { return args;