preprocessor: reindex equations marked as [static]
parent
e045d42c12
commit
b27a60d06c
|
@ -4294,6 +4294,15 @@ DynamicModel::addStaticOnlyEquation(expr_t eq, int lineno)
|
||||||
static_only_equations_lineno.push_back(lineno);
|
static_only_equations_lineno.push_back(lineno);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
DynamicModel::reindexStaticOnlyEquations(SymbolTable &orig_symbol_table)
|
||||||
|
{
|
||||||
|
vector<BinaryOpNode *>eqbak = static_only_equations;
|
||||||
|
static_only_equations.clear();
|
||||||
|
for (size_t i = 0; i < eqbak.size(); i++)
|
||||||
|
addStaticOnlyEquation(eqbak[i]->cloneDynamic(*this), static_only_equations_lineno[i]);
|
||||||
|
}
|
||||||
|
|
||||||
size_t
|
size_t
|
||||||
DynamicModel::staticOnlyEquationsNbr() const
|
DynamicModel::staticOnlyEquationsNbr() const
|
||||||
{
|
{
|
||||||
|
|
|
@ -243,6 +243,9 @@ public:
|
||||||
//! Adds an equation marked as [static]
|
//! Adds an equation marked as [static]
|
||||||
void addStaticOnlyEquation(expr_t eq, int lineno);
|
void addStaticOnlyEquation(expr_t eq, int lineno);
|
||||||
|
|
||||||
|
//! reindex equations marked as [static]
|
||||||
|
void reindexStaticOnlyEquations(SymbolTable &orig_symbol_table);
|
||||||
|
|
||||||
//! Returns number of static only equations
|
//! Returns number of static only equations
|
||||||
size_t staticOnlyEquationsNbr() const;
|
size_t staticOnlyEquationsNbr() const;
|
||||||
|
|
||||||
|
|
|
@ -314,6 +314,7 @@ ModFile::transformPass(bool nostrict)
|
||||||
SymbolTable orig_symbol_table = symbol_table;
|
SymbolTable orig_symbol_table = symbol_table;
|
||||||
symbol_table.rmExo(unusedExo);
|
symbol_table.rmExo(unusedExo);
|
||||||
dynamic_model.reindex(orig_symbol_table);
|
dynamic_model.reindex(orig_symbol_table);
|
||||||
|
dynamic_model.reindexStaticOnlyEquations(orig_symbol_table);
|
||||||
vector<Statement *> orig_statements = statements;
|
vector<Statement *> orig_statements = statements;
|
||||||
statements.clear();
|
statements.clear();
|
||||||
for (vector<Statement *>::iterator it = orig_statements.begin(); it != orig_statements.end(); it++)
|
for (vector<Statement *>::iterator it = orig_statements.begin(); it != orig_statements.end(); it++)
|
||||||
|
|
Loading…
Reference in New Issue