diff --git a/src/mmoc/util/symbol_table.cpp b/src/mmoc/util/symbol_table.cpp index 3e0b2f3c..775e727d 100644 --- a/src/mmoc/util/symbol_table.cpp +++ b/src/mmoc/util/symbol_table.cpp @@ -19,15 +19,15 @@ #include "symbol_table.h" -#include #include +#include -#include "../ast/ast_builder.h" -#include "../ast/expression.h" -#include "../ir/equation.h" -#include "../ir/expression.h" -#include "../ir/helpers.h" -#include "util.h" +#include +#include +#include +#include +#include +#include namespace MicroModelica { using namespace IR; @@ -122,7 +122,6 @@ Variable &Variable::operator=(const Variable &other) _hasOffset = other._hasOffset; _offset = other._offset; _realType = other._realType; - return *this; } @@ -175,6 +174,8 @@ void Variable::processModification() } } +void Variable::setName(string name) { _name = name; } + unsigned int Variable::size() { vector::const_iterator it; @@ -217,9 +218,9 @@ string Variable::declaration(string prefix) { stringstream buffer; if (type()->print() == "Integer") { - buffer << "int "; + buffer << "int "; } else { - buffer << "double "; + buffer << "double "; } buffer << prefix << name(); if (isArray()) { @@ -271,6 +272,10 @@ void VarSymbolTable::initialize(TypeSymbolTable ty) reinit.setBuiltIn(); reinit.setName("reinit"); insert("reinit", reinit); + Variable terminate(ty["Real"].get(), 0, nullptr, nullptr, vector(1, 0), false); + terminate.setBuiltIn(); + terminate.setName("terminate"); + insert("terminate", terminate); Variable chain_rule(ty["Real"].get(), TP_LOCAL, nullptr, nullptr, vector(1, 0), false); chain_rule.setBuiltIn(); chain_rule.setName("aux"); diff --git a/src/mmoc/util/symbol_table.h b/src/mmoc/util/symbol_table.h index 04328f40..2181d945 100644 --- a/src/mmoc/util/symbol_table.h +++ b/src/mmoc/util/symbol_table.h @@ -96,7 +96,7 @@ class Variable { inline bool hasEachModifier() { return _hasEach; }; inline void setEachModifier(bool each) { _hasEach = each; }; inline string name() const { return _name; }; - inline void setName(string n) { _name = n; }; + void setName(string name); inline AST_Expression exp() { return _exp; }; inline bool isArray() const { return _isArray; }; inline bool isScalar() { return !isArray(); }; diff --git a/src/mmoc/util/util.cpp b/src/mmoc/util/util.cpp index 8fe0bcc3..82d0163e 100644 --- a/src/mmoc/util/util.cpp +++ b/src/mmoc/util/util.cpp @@ -142,7 +142,7 @@ Option Utils::readPackage(string file_name, bool full_path, str { fstream package; string name; - string compiled_package_name = file_name; + string compiled_package_name = file_name; if (full_path) { name = file_name; assert(!compiled_package_name.empty()); @@ -359,7 +359,7 @@ Variable Utils::variable(AST_Expression exp) } Option var = ModelConfig::instance().lookup(var_name); if (!var) { - Error::instance().add(exp->lineNum(), EM_IR | EM_VARIABLE_NOT_FOUND, ER_Error, "utils.cpp:342 %s", var_name.c_str()); + Error::instance().add(exp->lineNum(), EM_IR | EM_VARIABLE_NOT_FOUND, ER_Fatal, "utils.cpp:342 %s", var_name.c_str()); } return var.get(); }