Allow for the declaration of endogenous, exogenous, parameters on-the-fly in equation tags

issue#70
Houtan Bastani 2018-07-09 14:39:13 +02:00
parent a7f8eaa336
commit 19048bdcae
1 changed files with 27 additions and 2 deletions

View File

@ -369,9 +369,34 @@ ParsingDriver::add_predetermined_variable(string *name)
void
ParsingDriver::add_equation_tags(string *key, string *value)
{
eq_tags.emplace_back(*key, *value);
bool variable_declared = false;
string key_lowercase = *key;
transform(key_lowercase.begin(), key_lowercase.end(), key_lowercase.begin(), ::tolower);
if (key_lowercase.compare("endogenous") == 0)
{
declare_or_change_type(eEndogenous, value);
variable_declared = true;
}
if (key_lowercase.compare("exogenous") == 0)
{
declare_or_change_type(eExogenous, value);
variable_declared = true;
}
if (key_lowercase.compare("parameter") == 0)
{
declare_or_change_type(eParameter, value);
variable_declared = true;
}
if (!variable_declared)
{
eq_tags.emplace_back(*key, *value);
delete value;
}
delete key;
delete value;
}
expr_t