Revert "Merge branch 'rmExtraExo'"

This reverts commit 28ffa9c56fd021cc75415aeafc13d3810d1b3132, reversing
changes made to 60b3577a09f3eb9cf3cc590241343b1f0fee8706.

Conflicts:
	preprocessor/Shocks.cc
	preprocessor/SymbolTable.cc
issue#70
Houtan Bastani 2015-06-09 16:42:51 +02:00
parent 8f121273bc
commit 4102e0cc56
21 changed files with 10 additions and 1769 deletions

File diff suppressed because it is too large Load Diff

View File

@ -97,7 +97,6 @@ public:
const OptionsList &options_list_arg);
virtual void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings);
virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
virtual Statement *cloneAndReindexSymbIds(DataTree &dynamic_datatree, SymbolTable &orig_symbol_table);
};
class ForecastStatement : public Statement
@ -109,7 +108,6 @@ public:
ForecastStatement(const SymbolList &symbol_list_arg,
const OptionsList &options_list_arg);
virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
virtual Statement *cloneAndReindexSymbIds(DataTree &dynamic_datatree, SymbolTable &orig_symbol_table);
};
class RamseyModelStatement : public Statement
@ -122,7 +120,6 @@ public:
const OptionsList &options_list_arg);
virtual void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings);
virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
virtual Statement *cloneAndReindexSymbIds(DataTree &dynamic_datatree, SymbolTable &orig_symbol_table);
};
class RamseyConstraintsStatement : public Statement
@ -153,7 +150,6 @@ public:
const OptionsList &options_list_arg);
virtual void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings);
virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
virtual Statement *cloneAndReindexSymbIds(DataTree &dynamic_datatree, SymbolTable &orig_symbol_table);
};
class DiscretionaryPolicyStatement : public Statement
@ -166,7 +162,6 @@ public:
const OptionsList &options_list_arg);
virtual void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings);
virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
virtual Statement *cloneAndReindexSymbIds(DataTree &dynamic_datatree, SymbolTable &orig_symbol_table);
};
class RplotStatement : public Statement
@ -176,7 +171,6 @@ private:
public:
RplotStatement(const SymbolList &symbol_list_arg);
virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
virtual Statement *cloneAndReindexSymbIds(DataTree &dynamic_datatree, SymbolTable &orig_symbol_table);
};
class UnitRootVarsStatement : public Statement
@ -215,7 +209,6 @@ public:
const OptionsList &options_list_arg);
virtual void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings);
virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
virtual Statement *cloneAndReindexSymbIds(DataTree &dynamic_datatree, SymbolTable &orig_symbol_table);
};
class DynareSensitivityStatement : public Statement
@ -226,7 +219,6 @@ public:
DynareSensitivityStatement(const OptionsList &options_list_arg);
virtual void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings);
virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
virtual Statement *cloneAndReindexSymbIds(DataTree &dynamic_datatree, SymbolTable &orig_symbol_table);
};
class ObservationTrendsStatement : public Statement
@ -240,7 +232,6 @@ public:
ObservationTrendsStatement(const trend_elements_t &trend_elements_arg,
const SymbolTable &symbol_table_arg);
virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
virtual Statement *cloneAndReindexSymbIds(DataTree &dynamic_datatree, SymbolTable &orig_symbol_table);
};
class OsrParamsStatement : public Statement
@ -251,7 +242,6 @@ public:
OsrParamsStatement(const SymbolList &symbol_list_arg);
virtual void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings);
virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
virtual Statement *cloneAndReindexSymbIds(DataTree &dynamic_datatree, SymbolTable &orig_symbol_table);
};
class OsrStatement : public Statement
@ -264,7 +254,6 @@ public:
const OptionsList &options_list_arg);
virtual void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings);
virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
virtual Statement *cloneAndReindexSymbIds(DataTree &dynamic_datatree, SymbolTable &orig_symbol_table);
};
class DynaTypeStatement : public Statement
@ -276,7 +265,6 @@ public:
DynaTypeStatement(const SymbolList &symbol_list_arg,
const string &filename_arg);
virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
virtual Statement *cloneAndReindexSymbIds(DataTree &dynamic_datatree, SymbolTable &orig_symbol_table);
};
class DynaSaveStatement : public Statement
@ -288,7 +276,6 @@ public:
DynaSaveStatement(const SymbolList &symbol_list_arg,
const string &filename_arg);
virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
virtual Statement *cloneAndReindexSymbIds(DataTree &dynamic_datatree, SymbolTable &orig_symbol_table);
};
class ModelComparisonStatement : public Statement
@ -341,7 +328,6 @@ public:
const SymbolTable &symbol_table_arg);
virtual void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings);
virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
virtual Statement *cloneAndReindexSymbIds(DataTree &dynamic_datatree, SymbolTable &orig_symbol_table);
};
class EstimatedParamsInitStatement : public Statement
@ -356,7 +342,6 @@ public:
const bool use_calibration_arg);
virtual void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings);
virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
virtual Statement *cloneAndReindexSymbIds(DataTree &dynamic_datatree, SymbolTable &orig_symbol_table);
};
class EstimatedParamsBoundsStatement : public Statement
@ -368,7 +353,6 @@ public:
EstimatedParamsBoundsStatement(const vector<EstimationParams> &estim_params_list_arg,
const SymbolTable &symbol_table_arg);
virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
virtual Statement *cloneAndReindexSymbIds(DataTree &dynamic_datatree, SymbolTable &orig_symbol_table);
};
class OptimWeightsStatement : public Statement
@ -386,7 +370,6 @@ public:
const SymbolTable &symbol_table_arg);
virtual void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings);
virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
virtual Statement *cloneAndReindexSymbIds(DataTree &dynamic_datatree, SymbolTable &orig_symbol_table);
};
/*! \todo Make model_tree a member instead of a pointer */
@ -408,7 +391,6 @@ public:
virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
//! Return the Planner Objective
StaticModel *getPlannerObjective() const;
virtual Statement *cloneAndReindexSymbIds(DataTree &dynamic_datatree, SymbolTable &orig_symbol_table);
};
class BVARDensityStatement : public Statement
@ -493,7 +475,6 @@ public:
const OptionsList &options_list_arg);
virtual void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings);
virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
virtual Statement *cloneAndReindexSymbIds(DataTree &dynamic_datatree, SymbolTable &orig_symbol_table);
};
class MSSBVARForecastStatement : public Statement
@ -562,7 +543,6 @@ public:
ShockDecompositionStatement(const SymbolList &symbol_list_arg,
const OptionsList &options_list_arg);
virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
virtual Statement *cloneAndReindexSymbIds(DataTree &dynamic_datatree, SymbolTable &orig_symbol_table);
};
class ConditionalForecastStatement : public Statement
@ -572,7 +552,6 @@ private:
public:
ConditionalForecastStatement(const OptionsList &options_list_arg);
virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
virtual Statement *cloneAndReindexSymbIds(DataTree &dynamic_datatree, SymbolTable &orig_symbol_table);
};
class PlotConditionalForecastStatement : public Statement
@ -584,7 +563,6 @@ private:
public:
PlotConditionalForecastStatement(int periods_arg, const SymbolList &symbol_list_arg);
virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
virtual Statement *cloneAndReindexSymbIds(DataTree &dynamic_datatree, SymbolTable &orig_symbol_table);
};
class CalibSmootherStatement : public Statement
@ -597,7 +575,6 @@ public:
const OptionsList &options_list_arg);
virtual void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings);
virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
virtual Statement *cloneAndReindexSymbIds(DataTree &dynamic_datatree, SymbolTable &orig_symbol_table);
};
class ExtendedPathStatement : public Statement
@ -775,7 +752,6 @@ public:
const OptionsList &options_list_arg);
virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
virtual void writeCOutput(ostream &output, const string &basename);
virtual Statement *cloneAndReindexSymbIds(DataTree &dynamic_datatree, SymbolTable &orig_symbol_table);
};
class StdPriorStatement : public BasicPriorStatement
@ -791,7 +767,6 @@ public:
const SymbolTable &symbol_table_arg);
virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
virtual void writeCOutput(ostream &output, const string &basename);
virtual Statement *cloneAndReindexSymbIds(DataTree &dynamic_datatree, SymbolTable &orig_symbol_table);
};
class CorrPriorStatement : public BasicPriorStatement
@ -810,7 +785,6 @@ public:
virtual void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings);
virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
virtual void writeCOutput(ostream &output, const string &basename);
virtual Statement *cloneAndReindexSymbIds(DataTree &dynamic_datatree, SymbolTable &orig_symbol_table);
};
class PriorEqualStatement : public Statement
@ -838,7 +812,6 @@ public:
void get_base_name(const SymbolType symb_type, string &lhs_field) const;
virtual void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings);
virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
virtual Statement *cloneAndReindexSymbIds(DataTree &dynamic_datatree, SymbolTable &orig_symbol_table);
};
class BasicOptionsStatement : public Statement
@ -869,7 +842,6 @@ public:
OptionsStatement(const string &name_arg, const string &subsample_name_arg, const OptionsList &options_list_arg);
virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
virtual void writeCOutput(ostream &output, const string &basename);
virtual Statement *cloneAndReindexSymbIds(DataTree &dynamic_datatree, SymbolTable &orig_symbol_table);
};
class StdOptionsStatement : public BasicOptionsStatement
@ -883,7 +855,6 @@ public:
const SymbolTable &symbol_table_arg);
virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
virtual void writeCOutput(ostream &output, const string &basename);
virtual Statement *cloneAndReindexSymbIds(DataTree &dynamic_datatree, SymbolTable &orig_symbol_table);
};
class CorrOptionsStatement : public BasicOptionsStatement
@ -899,7 +870,6 @@ public:
virtual void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings);
virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
virtual void writeCOutput(ostream &output, const string &basename);
virtual Statement *cloneAndReindexSymbIds(DataTree &dynamic_datatree, SymbolTable &orig_symbol_table);
};
class OptionsEqualStatement : public Statement
@ -927,7 +897,6 @@ public:
void get_base_name(const SymbolType symb_type, string &lhs_field) const;
virtual void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings);
virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
virtual Statement *cloneAndReindexSymbIds(DataTree &dynamic_datatree, SymbolTable &orig_symbol_table);
};
class ModelDiagnosticsStatement : public Statement
@ -944,7 +913,6 @@ private:
public:
Smoother2histvalStatement(const OptionsList &options_list_arg);
virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
virtual Statement *cloneAndReindexSymbIds(DataTree &dynamic_datatree, SymbolTable &orig_symbol_table);
};
#endif

View File

@ -1,5 +1,5 @@
/*
* Copyright (C) 2003-2015 Dynare Team
* Copyright (C) 2003-2014 Dynare Team
*
* This file is part of Dynare.
*
@ -50,31 +50,6 @@ DataTree::~DataTree()
delete *it;
}
void
DataTree::reindex(SymbolTable &orig_symbol_table)
{
variable_node_map.clear();
unary_op_node_map.clear();
binary_op_node_map.clear();
trinary_op_node_map.clear();
external_function_node_map.clear();
first_deriv_external_function_node_map.clear();
second_deriv_external_function_node_map.clear();
reindexLocalVars(orig_symbol_table);
}
void
DataTree::reindexLocalVars(SymbolTable &orig_symbol_table)
{
map<int, expr_t> orig_local_variables_table = local_variables_table;
local_variables_table.clear();
for (map<int, expr_t>::const_iterator it = orig_local_variables_table.begin();
it != orig_local_variables_table.end(); it++)
AddLocalVariable(symbol_table.getID(orig_symbol_table.getName(it->first)),
it->second->cloneDynamicReindex(*this, orig_symbol_table));
}
expr_t
DataTree::AddNonNegativeConstant(const string &value)
{

View File

@ -1,5 +1,5 @@
/*
* Copyright (C) 2003-2015 Dynare Team
* Copyright (C) 2003-2014 Dynare Team
*
* This file is part of Dynare.
*
@ -233,13 +233,10 @@ public:
//! Returns the minimum lag (as a negative number) of the given symbol in the whole data tree (and not only in the equations !!)
/*! Returns 0 if the symbol is not used */
int minLagForSymbol(int symb_id) const;
inline SymbolTable *getSymbolTable() const { return &symbol_table; };
//! Write the Header for getPowerDeriv when use_dll is used
void writePowerDerivCHeader(ostream &output) const;
//! Write getPowerDeriv
void writePowerDeriv(ostream &output, bool use_dll) const;
void reindex(SymbolTable &orig_symbol_table);
void reindexLocalVars(SymbolTable &orig_symbol_table);
//! Thrown when trying to access an unknown variable by deriv_id
class UnknownDerivIDException
{

View File

@ -4202,23 +4202,6 @@ DynamicModel::addStaticOnlyEquation(expr_t eq, int lineno)
static_only_equations_lineno.push_back(lineno);
}
void
DynamicModel::reindex(SymbolTable &orig_symbol_table)
{
ModelTree::reindex(orig_symbol_table);
reindexStaticOnlyEquations(orig_symbol_table);
}
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]->cloneDynamicReindex(*this, orig_symbol_table),
static_only_equations_lineno[i]);
}
size_t
DynamicModel::staticOnlyEquationsNbr() const
{

View File

@ -244,15 +244,9 @@ public:
//! Adds an equation marked as [static]
void addStaticOnlyEquation(expr_t eq, int lineno);
//! reindex Dynamic Model after removal of extra exogenous
void reindex(SymbolTable &orig_symbol_table);
//! reindex equations marked as [static]
void reindexStaticOnlyEquations(SymbolTable &orig_symbol_table);
//! Returns number of static only equations
size_t staticOnlyEquationsNbr() const;
//! Returns number of dynamic only equations
size_t dynamicOnlyEquationsNbr() const;

View File

@ -360,12 +360,6 @@ NumConstNode::cloneDynamic(DataTree &dynamic_datatree) const
return dynamic_datatree.AddNonNegativeConstant(datatree.num_constants.get(id));
}
expr_t
NumConstNode::cloneDynamicReindex(DataTree &dynamic_datatree, SymbolTable &orig_symbol_table) const
{
return dynamic_datatree.AddNonNegativeConstant(datatree.num_constants.get(id));
}
int
NumConstNode::maxEndoLead() const
{
@ -1006,12 +1000,6 @@ VariableNode::cloneDynamic(DataTree &dynamic_datatree) const
return dynamic_datatree.AddVariable(symb_id, lag);
}
expr_t
VariableNode::cloneDynamicReindex(DataTree &dynamic_datatree, SymbolTable &orig_symbol_table) const
{
return dynamic_datatree.AddVariable(dynamic_datatree.symbol_table.getID(orig_symbol_table.getName(symb_id)), lag);
}
int
VariableNode::maxEndoLead() const
{
@ -2264,13 +2252,6 @@ UnaryOpNode::cloneDynamic(DataTree &dynamic_datatree) const
return buildSimilarUnaryOpNode(substarg, dynamic_datatree);
}
expr_t
UnaryOpNode::cloneDynamicReindex(DataTree &dynamic_datatree, SymbolTable &orig_symbol_table) const
{
expr_t substarg = arg->cloneDynamicReindex(dynamic_datatree, orig_symbol_table);
return buildSimilarUnaryOpNode(substarg, dynamic_datatree);
}
int
UnaryOpNode::maxEndoLead() const
{
@ -3496,14 +3477,6 @@ BinaryOpNode::cloneDynamic(DataTree &dynamic_datatree) const
return buildSimilarBinaryOpNode(substarg1, substarg2, dynamic_datatree);
}
expr_t
BinaryOpNode::cloneDynamicReindex(DataTree &dynamic_datatree, SymbolTable &orig_symbol_table) const
{
expr_t substarg1 = arg1->cloneDynamicReindex(dynamic_datatree, orig_symbol_table);
expr_t substarg2 = arg2->cloneDynamicReindex(dynamic_datatree, orig_symbol_table);
return buildSimilarBinaryOpNode(substarg1, substarg2, dynamic_datatree);
}
int
BinaryOpNode::maxEndoLead() const
{
@ -4180,15 +4153,6 @@ TrinaryOpNode::cloneDynamic(DataTree &dynamic_datatree) const
return buildSimilarTrinaryOpNode(substarg1, substarg2, substarg3, dynamic_datatree);
}
expr_t
TrinaryOpNode::cloneDynamicReindex(DataTree &dynamic_datatree, SymbolTable &orig_symbol_table) const
{
expr_t substarg1 = arg1->cloneDynamicReindex(dynamic_datatree, orig_symbol_table);
expr_t substarg2 = arg2->cloneDynamicReindex(dynamic_datatree, orig_symbol_table);
expr_t substarg3 = arg3->cloneDynamicReindex(dynamic_datatree, orig_symbol_table);
return buildSimilarTrinaryOpNode(substarg1, substarg2, substarg3, dynamic_datatree);
}
int
TrinaryOpNode::maxEndoLead() const
{
@ -4961,17 +4925,6 @@ ExternalFunctionNode::cloneDynamic(DataTree &dynamic_datatree) const
return dynamic_datatree.AddExternalFunction(symb_id, dynamic_arguments);
}
expr_t
ExternalFunctionNode::cloneDynamicReindex(DataTree &dynamic_datatree, SymbolTable &orig_symbol_table) const
{
vector<expr_t> dynamic_arguments;
for (vector<expr_t>::const_iterator it = arguments.begin();
it != arguments.end(); it++)
dynamic_arguments.push_back((*it)->cloneDynamicReindex(dynamic_datatree, orig_symbol_table));
return dynamic_datatree.AddExternalFunction(dynamic_datatree.symbol_table.getID(orig_symbol_table.getName(symb_id)),
dynamic_arguments);
}
expr_t
ExternalFunctionNode::buildSimilarExternalFunctionNode(vector<expr_t> &alt_args, DataTree &alt_datatree) const
{
@ -5267,18 +5220,6 @@ FirstDerivExternalFunctionNode::cloneDynamic(DataTree &dynamic_datatree) const
inputIndex);
}
expr_t
FirstDerivExternalFunctionNode::cloneDynamicReindex(DataTree &dynamic_datatree, SymbolTable &orig_symbol_table) const
{
vector<expr_t> dynamic_arguments;
for (vector<expr_t>::const_iterator it = arguments.begin();
it != arguments.end(); it++)
dynamic_arguments.push_back((*it)->cloneDynamicReindex(dynamic_datatree, orig_symbol_table));
return dynamic_datatree.AddFirstDerivExternalFunction(dynamic_datatree.symbol_table.getID(orig_symbol_table.getName(symb_id)),
dynamic_arguments,
inputIndex);
}
expr_t
FirstDerivExternalFunctionNode::buildSimilarExternalFunctionNode(vector<expr_t> &alt_args, DataTree &alt_datatree) const
{
@ -5514,18 +5455,6 @@ SecondDerivExternalFunctionNode::cloneDynamic(DataTree &dynamic_datatree) const
inputIndex1, inputIndex2);
}
expr_t
SecondDerivExternalFunctionNode::cloneDynamicReindex(DataTree &dynamic_datatree, SymbolTable &orig_symbol_table) const
{
vector<expr_t> dynamic_arguments;
for (vector<expr_t>::const_iterator it = arguments.begin();
it != arguments.end(); it++)
dynamic_arguments.push_back((*it)->cloneDynamicReindex(dynamic_datatree, orig_symbol_table));
return dynamic_datatree.AddSecondDerivExternalFunction(dynamic_datatree.symbol_table.getID(orig_symbol_table.getName(symb_id)),
dynamic_arguments,
inputIndex1, inputIndex2);
}
expr_t
SecondDerivExternalFunctionNode::buildSimilarExternalFunctionNode(vector<expr_t> &alt_args, DataTree &alt_datatree) const
{

View File

@ -410,9 +410,6 @@ public:
//! Add ExprNodes to the provided datatree
virtual expr_t cloneDynamic(DataTree &dynamic_datatree) const = 0;
//! Add ExprNodes to the provided datatree, changing the symbol id from those provided in orig_symbol_table
virtual expr_t cloneDynamicReindex(DataTree &dynamic_datatree, SymbolTable &orig_symbol_table) const = 0;
//! Move a trend variable with lag/lead to time t by dividing/multiplying by its growth factor
virtual expr_t removeTrendLeadLag(map<int, expr_t> trend_symbols_map) const = 0;
@ -474,7 +471,6 @@ public:
virtual expr_t replaceTrendVar() const;
virtual expr_t detrend(int symb_id, bool log_trend, expr_t trend) const;
virtual expr_t cloneDynamic(DataTree &dynamic_datatree) const;
virtual expr_t cloneDynamicReindex(DataTree &dynamic_datatree, SymbolTable &orig_symbol_table) const;
virtual expr_t removeTrendLeadLag(map<int, expr_t> trend_symbols_map) const;
virtual bool isInStaticForm() const;
};
@ -538,7 +534,6 @@ public:
virtual expr_t replaceTrendVar() const;
virtual expr_t detrend(int symb_id, bool log_trend, expr_t trend) const;
virtual expr_t cloneDynamic(DataTree &dynamic_datatree) const;
virtual expr_t cloneDynamicReindex(DataTree &dynamic_datatree, SymbolTable &orig_symbol_table) const;
virtual expr_t removeTrendLeadLag(map<int, expr_t> trend_symbols_map) const;
virtual bool isInStaticForm() const;
};
@ -617,7 +612,6 @@ public:
virtual expr_t replaceTrendVar() const;
virtual expr_t detrend(int symb_id, bool log_trend, expr_t trend) const;
virtual expr_t cloneDynamic(DataTree &dynamic_datatree) const;
virtual expr_t cloneDynamicReindex(DataTree &dynamic_datatree, SymbolTable &orig_symbol_table) const;
virtual expr_t removeTrendLeadLag(map<int, expr_t> trend_symbols_map) const;
virtual bool isInStaticForm() const;
};
@ -709,7 +703,6 @@ public:
virtual expr_t replaceTrendVar() const;
virtual expr_t detrend(int symb_id, bool log_trend, expr_t trend) const;
virtual expr_t cloneDynamic(DataTree &dynamic_datatree) const;
virtual expr_t cloneDynamicReindex(DataTree &dynamic_datatree, SymbolTable &orig_symbol_table) const;
virtual expr_t removeTrendLeadLag(map<int, expr_t> trend_symbols_map) const;
//! Function to write out the oPowerNode in expr_t terms as opposed to writing out the function itself
expr_t unpackPowerDeriv() const;
@ -781,7 +774,6 @@ public:
virtual expr_t replaceTrendVar() const;
virtual expr_t detrend(int symb_id, bool log_trend, expr_t trend) const;
virtual expr_t cloneDynamic(DataTree &dynamic_datatree) const;
virtual expr_t cloneDynamicReindex(DataTree &dynamic_datatree, SymbolTable &orig_symbol_table) const;
virtual expr_t removeTrendLeadLag(map<int, expr_t> trend_symbols_map) const;
virtual bool isInStaticForm() const;
};
@ -858,7 +850,6 @@ public:
virtual expr_t replaceTrendVar() const;
virtual expr_t detrend(int symb_id, bool log_trend, expr_t trend) const;
virtual expr_t cloneDynamic(DataTree &dynamic_datatree) const = 0;
virtual expr_t cloneDynamicReindex(DataTree &dynamic_datatree, SymbolTable &orig_symbol_table) const = 0;
virtual expr_t removeTrendLeadLag(map<int, expr_t> trend_symbols_map) const;
virtual bool isInStaticForm() const;
};
@ -889,7 +880,6 @@ public:
virtual expr_t toStatic(DataTree &static_datatree) const;
virtual expr_t buildSimilarExternalFunctionNode(vector<expr_t> &alt_args, DataTree &alt_datatree) const;
virtual expr_t cloneDynamic(DataTree &dynamic_datatree) const;
virtual expr_t cloneDynamicReindex(DataTree &dynamic_datatree, SymbolTable &orig_symbol_table) const;
};
class FirstDerivExternalFunctionNode : public AbstractExternalFunctionNode
@ -924,7 +914,6 @@ public:
virtual expr_t toStatic(DataTree &static_datatree) const;
virtual expr_t buildSimilarExternalFunctionNode(vector<expr_t> &alt_args, DataTree &alt_datatree) const;
virtual expr_t cloneDynamic(DataTree &dynamic_datatree) const;
virtual expr_t cloneDynamicReindex(DataTree &dynamic_datatree, SymbolTable &orig_symbol_table) const;
};
class SecondDerivExternalFunctionNode : public AbstractExternalFunctionNode
@ -961,7 +950,6 @@ public:
virtual expr_t toStatic(DataTree &static_datatree) const;
virtual expr_t buildSimilarExternalFunctionNode(vector<expr_t> &alt_args, DataTree &alt_datatree) const;
virtual expr_t cloneDynamic(DataTree &dynamic_datatree) const;
virtual expr_t cloneDynamicReindex(DataTree &dynamic_datatree, SymbolTable &orig_symbol_table) const;
};
#endif

View File

@ -1,5 +1,5 @@
/*
* Copyright (C) 2010-2015 Dynare Team
* Copyright (C) 2010-2011 Dynare Team
*
* This file is part of Dynare.
*
@ -24,6 +24,7 @@
#include <iostream>
#include "ExternalFunctionsTable.hh"
#include "SymbolTable.hh"
ExternalFunctionsTable::ExternalFunctionsTable()
{
@ -114,44 +115,3 @@ ExternalFunctionsTable::addExternalFunction(int symb_id, const external_function
externalFunctionTable[symb_id] = external_function_options_chng;
}
void
ExternalFunctionsTable::reindex(SymbolTable &new_symbol_table, SymbolTable &orig_symbol_table)
{
external_function_table_type orig_externalFunctionTable = externalFunctionTable;
externalFunctionTable.clear();
for (external_function_table_type::const_iterator it = orig_externalFunctionTable.begin();
it != orig_externalFunctionTable.end(); it++)
try
{
external_function_options new_external_function_options;
if (it->second.firstDerivSymbID == eExtFunNotSet ||
it->second.firstDerivSymbID == eExtFunSetButNoNameProvided)
new_external_function_options.firstDerivSymbID = it->second.firstDerivSymbID;
else
new_external_function_options.firstDerivSymbID =
new_symbol_table.getID(orig_symbol_table.getName(it->second.firstDerivSymbID));
if (it->second.secondDerivSymbID == eExtFunNotSet ||
it->second.secondDerivSymbID == eExtFunSetButNoNameProvided)
new_external_function_options.secondDerivSymbID = it->second.secondDerivSymbID;
else
new_external_function_options.secondDerivSymbID =
new_symbol_table.getID(orig_symbol_table.getName(it->second.secondDerivSymbID));
new_external_function_options.nargs = it->second.nargs;
bool new_track_nargs = true;
if (it->second.nargs == eExtFunNotSet)
{
new_track_nargs = false;
new_external_function_options.nargs = eExtFunSetDefaultNargs;
}
addExternalFunction(new_symbol_table.getID(orig_symbol_table.getName(it->first)),
new_external_function_options,
new_track_nargs);
}
catch (...)
{
cerr << "Error: problem encountered when reindexing external functions table." << endl;
exit(EXIT_FAILURE);
}
}

View File

@ -1,5 +1,5 @@
/*
* Copyright (C) 2010-2015 Dynare Team
* Copyright (C) 2010-2011 Dynare Team
*
* This file is part of Dynare.
*
@ -27,8 +27,6 @@ using namespace std;
#include <vector>
#include <map>
#include "SymbolTable.hh"
enum ExternalFunctionSetOrNot
{
eExtFunSetButNoNameProvided = -2, //! Signifies that the derivative is obtained from the top-level function
@ -78,8 +76,6 @@ public:
inline int getSecondDerivSymbID(int symb_id) const throw (UnknownExternalFunctionSymbolIDException);
//! Returns the total number of unique external functions declared or used in the .mod file
inline int get_total_number_of_unique_model_block_external_functions() const;
//! Reindex external function table (after removal of extra exo)
void reindex(SymbolTable &new_symbol_table, SymbolTable &orig_symbol_table);
};
inline bool

View File

@ -300,28 +300,13 @@ ModFile::checkPass()
if (++it != unusedExo.end())
warnings << ", ";
}
warnings << ") are declared but not used in the model. We have removed them and will attempt to continue..." << endl;
warnings << ") are declared but not used in the model. This may lead to crashes or unexpected behaviour." << endl;
}
}
void
ModFile::transformPass(bool nostrict)
{
// Remove unused exogenous from symbol table and update dynamic_model
set<int> unusedExo = dynamic_model.findUnusedExogenous();
if (unusedExo.size() > 0)
{
SymbolTable orig_symbol_table = symbol_table;
symbol_table.rmExo(unusedExo);
dynamic_model.reindex(orig_symbol_table);
external_functions_table.reindex(symbol_table, orig_symbol_table);
vector<Statement *> orig_statements = statements;
statements.clear();
for (vector<Statement *>::iterator it = orig_statements.begin(); it != orig_statements.end(); it++)
addStatement((*it)->cloneAndReindexSymbIds(dynamic_model, orig_symbol_table));
}
// Save the original model (must be done before any model transformations by preprocessor)
dynamic_model.cloneDynamic(original_model);

View File

@ -1413,64 +1413,6 @@ ModelTree::addAuxEquation(expr_t eq)
aux_equations.push_back(beq);
}
void
ModelTree::reindex(SymbolTable &orig_symbol_table)
{
DataTree::reindex(orig_symbol_table);
reindexEquations(orig_symbol_table);
reindexTrendSymbolsMap(orig_symbol_table);
reindexNonstationarySymbolsMap(orig_symbol_table);
}
void
ModelTree::reindexEquations(SymbolTable &orig_symbol_table)
{
vector<BinaryOpNode *>eqbak = equations;
equations.clear();
for (size_t i = 0; i < eqbak.size(); i++)
addEquation(eqbak[i]->cloneDynamicReindex(*this, orig_symbol_table), equations_lineno[i]);
}
void
ModelTree::reindexTrendSymbolsMap(SymbolTable &orig_symbol_table)
{
map<int, expr_t> orig_trend_symbols_map = trend_symbols_map;
trend_symbols_map.clear();
for (map<int, expr_t>::const_iterator it = orig_trend_symbols_map.begin();
it != orig_trend_symbols_map.end(); it++)
try
{
vector<int> symb_id (1, symbol_table.getID(orig_symbol_table.getName(it->first)));
addTrendVariables(symb_id, it->second->cloneDynamicReindex(*this, orig_symbol_table));
}
catch(...)
{
cerr << "Error: unused exo in trend symbols." << endl;
exit(EXIT_FAILURE);
}
}
void
ModelTree::reindexNonstationarySymbolsMap(SymbolTable &orig_symbol_table)
{
nonstationary_symbols_map_t orig_nonstationary_symbols_map = nonstationary_symbols_map;
nonstationary_symbols_map.clear();
for (nonstationary_symbols_map_t::const_iterator it = orig_nonstationary_symbols_map.begin();
it != orig_nonstationary_symbols_map.end(); it++)
try
{
vector<int> symb_id (1, symbol_table.getID(orig_symbol_table.getName(it->first)));
addNonstationaryVariables(symb_id,
it->second.first,
it->second.second->cloneDynamicReindex(*this, orig_symbol_table));
}
catch(...)
{
cerr << "Error: unused exo in nonstationary symbols." << endl;
exit(EXIT_FAILURE);
}
}
void
ModelTree::addTrendVariables(vector<int> trend_vars, expr_t growth_factor) throw (TrendException)
{

View File

@ -1,5 +1,5 @@
/*
* Copyright (C) 2003-2015 Dynare Team
* Copyright (C) 2003-2014 Dynare Team
*
* This file is part of Dynare.
*
@ -303,13 +303,6 @@ public:
void addEquation(expr_t eq, int lineno, vector<pair<string, string> > &eq_tags);
//! Declare a node as an auxiliary equation of the model, adding it at the end of the list of auxiliary equations
void addAuxEquation(expr_t eq);
void reindex(SymbolTable &orig_symbol_table);
//! reindex equations after change in symbol_table
void reindexEquations(SymbolTable &orig_symbol_table);
//! reindex trend_symbol_map after change in symbol_table
void reindexTrendSymbolsMap(SymbolTable &orig_symbol_table);
//! reindex nonstationary_symbol_map after change in symbol_table
void reindexNonstationarySymbolsMap(SymbolTable &orig_symbol_table);
//! Returns the number of equations in the model
int equation_number() const;
//! Adds a trend variable with its growth factor

View File

@ -74,32 +74,6 @@ InitParamStatement::fillEvalContext(eval_context_t &eval_context) const
}
}
Statement *
InitParamStatement::cloneAndReindexSymbIds(DataTree &dynamic_datatree, SymbolTable &orig_symbol_table)
{
string error;
try
{
return new InitParamStatement(symbol_table.getID(orig_symbol_table.getName(symb_id)),
param_value->cloneDynamicReindex(dynamic_datatree, orig_symbol_table),
symbol_table);
}
catch (SymbolTable::UnknownSymbolIDException &e)
{
error = orig_symbol_table.getName(e.id);
}
catch (SymbolTable::UnknownSymbolNameException &e)
{
error = e.name;
}
cerr << endl
<< "ERROR: The following vars were used in the init param statement(s) but were not declared." << endl
<< " This likely means that you declared them as varexo and that they're not in the model" << endl
<< error << endl;
exit(EXIT_FAILURE);
}
InitOrEndValStatement::InitOrEndValStatement(const init_values_t &init_values_arg,
const SymbolTable &symbol_table_arg,
const bool &all_values_required_arg) :
@ -235,35 +209,6 @@ InitValStatement::writeOutputPostInit(ostream &output) const
<<"end;" << endl;
}
Statement *
InitValStatement::cloneAndReindexSymbIds(DataTree &dynamic_datatree, SymbolTable &orig_symbol_table)
{
vector<string> errors;
init_values_t new_init_values;
for (init_values_t::const_iterator it=init_values.begin();
it != init_values.end(); it++)
try
{
new_init_values.push_back(make_pair(symbol_table.getID(orig_symbol_table.getName(it->first)),
it->second->cloneDynamicReindex(dynamic_datatree, orig_symbol_table)));
}
catch (SymbolTable::UnknownSymbolNameException &e)
{
errors.push_back(e.name);
}
if (!errors.empty())
{
cerr << endl
<< "ERROR: The following vars were used in the initval statement(s) but were not declared." << endl
<< " This likely means that you declared them as varexo and that they're not in the model" << endl;
for (vector<string>::const_iterator it = errors.begin(); it != errors.end(); it++)
cerr << *it << endl;
exit(EXIT_FAILURE);
}
return new InitValStatement(new_init_values, symbol_table, all_values_required);
}
EndValStatement::EndValStatement(const init_values_t &init_values_arg,
const SymbolTable &symbol_table_arg,
const bool &all_values_required_arg) :
@ -310,36 +255,6 @@ EndValStatement::writeOutput(ostream &output, const string &basename, bool minim
writeInitValues(output);
}
Statement *
EndValStatement::cloneAndReindexSymbIds(DataTree &dynamic_datatree, SymbolTable &orig_symbol_table)
{
vector<string> errors;
init_values_t new_init_values;
for (init_values_t::const_iterator it=init_values.begin();
it != init_values.end(); it++)
try
{
new_init_values.push_back(make_pair(symbol_table.getID(orig_symbol_table.getName(it->first)),
it->second->cloneDynamicReindex(dynamic_datatree, orig_symbol_table)));
}
catch (SymbolTable::UnknownSymbolNameException &e)
{
errors.push_back(e.name);
}
if (!errors.empty())
{
cerr << endl
<< "ERROR: The following vars were used in the endval statement(s) but were not declared." << endl
<< " This likely means that you declared them as varexo and that they're not in the model" << endl;
for (vector<string>::const_iterator it = errors.begin(); it != errors.end(); it++)
cerr << *it << endl;
exit(EXIT_FAILURE);
}
return new EndValStatement(new_init_values, symbol_table, all_values_required);
}
HistValStatement::HistValStatement(const hist_values_t &hist_values_arg,
const SymbolTable &symbol_table_arg) :
hist_values(hist_values_arg),
@ -406,36 +321,6 @@ HistValStatement::writeOutput(ostream &output, const string &basename, bool mini
}
}
Statement *
HistValStatement::cloneAndReindexSymbIds(DataTree &dynamic_datatree, SymbolTable &orig_symbol_table)
{
vector<string> errors;
hist_values_t new_hist_values;
for (hist_values_t::const_iterator it=hist_values.begin();
it != hist_values.end(); it++)
try
{
new_hist_values[make_pair(symbol_table.getID(orig_symbol_table.getName(it->first.first)),
it->first.second)] =
it->second->cloneDynamicReindex(dynamic_datatree, orig_symbol_table);
}
catch (SymbolTable::UnknownSymbolNameException &e)
{
errors.push_back(e.name);
}
if (!errors.empty())
{
cerr << endl
<< "ERROR: The following vars were used in the histval statement(s) but were not declared." << endl
<< " This likely means that you declared them as varexo and that they're not in the model" << endl;
for (vector<string>::const_iterator it = errors.begin(); it != errors.end(); it++)
cerr << *it << endl;
exit(EXIT_FAILURE);
}
return new HistValStatement(new_hist_values, symbol_table);
}
InitvalFileStatement::InitvalFileStatement(const string &filename_arg) :
filename(filename_arg)
{
@ -509,10 +394,9 @@ SaveParamsAndSteadyStateStatement::writeOutput(ostream &output, const string &ba
output << "save_params_and_steady_state('" << filename << "');" << endl;
}
LoadParamsAndSteadyStateStatement::LoadParamsAndSteadyStateStatement(const string &filename_arg,
LoadParamsAndSteadyStateStatement::LoadParamsAndSteadyStateStatement(const string &filename,
const SymbolTable &symbol_table_arg,
WarningConsolidation &warnings) :
filename(filename_arg),
symbol_table(symbol_table_arg)
{
cout << "Reading " << filename << "." << endl;

View File

@ -44,7 +44,6 @@ public:
virtual void writeCOutput(ostream &output, const string &basename);
//! Fill eval context with parameter value
void fillEvalContext(eval_context_t &eval_context) const;
virtual Statement *cloneAndReindexSymbIds(DataTree &dynamic_datatree, SymbolTable &orig_symbol_table);
};
class InitOrEndValStatement : public Statement
@ -81,7 +80,6 @@ public:
virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
//! Writes initializations for oo_.exo_simul and oo_.exo_det_simul
void writeOutputPostInit(ostream &output) const;
virtual Statement *cloneAndReindexSymbIds(DataTree &dynamic_datatree, SymbolTable &orig_symbol_table);
};
class EndValStatement : public InitOrEndValStatement
@ -93,7 +91,6 @@ public:
//! Workaround for trac ticket #35
virtual void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings);
virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
virtual Statement *cloneAndReindexSymbIds(DataTree &dynamic_datatree, SymbolTable &orig_symbol_table);
};
class HistValStatement : public Statement
@ -114,7 +111,6 @@ public:
//! Workaround for trac ticket #157
virtual void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings);
virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
virtual Statement *cloneAndReindexSymbIds(DataTree &dynamic_datatree, SymbolTable &orig_symbol_table);
};
class InitvalFileStatement : public Statement
@ -162,7 +158,6 @@ public:
class LoadParamsAndSteadyStateStatement : public Statement
{
private:
const string filename;
const SymbolTable &symbol_table;
//! Content of the file
/*! Maps symbol ID to numeric value (stored as string) */

View File

@ -67,31 +67,6 @@ AbstractShocksStatement::writeDetShocks(ostream &output) const
output << "M_.exo_det_length = " << exo_det_length << ";\n";
}
AbstractShocksStatement::det_shocks_t
AbstractShocksStatement::reindexDetShocksSymbIds(DataTree &dynamic_datatree, SymbolTable &orig_symbol_table)
{
det_shocks_t new_det_shocks;
SymbolTable *new_symbol_table = dynamic_datatree.getSymbolTable();
for (det_shocks_t::const_iterator it=det_shocks.begin(); it!=det_shocks.end(); it++)
try
{
vector<DetShockElement> det_shock_vec;
for (size_t i = 0; i < it->second.size(); i++)
{
DetShockElement dse;
dse.period1 = it->second[i].period1;
dse.period2 = it->second[i].period2;
dse.value = it->second[i].value->cloneDynamicReindex(dynamic_datatree, orig_symbol_table);
det_shock_vec.push_back(dse);
}
new_det_shocks[new_symbol_table->getID(orig_symbol_table.getName(it->first))] = det_shock_vec;
}
catch (...)
{
}
return new_det_shocks;
}
ShocksStatement::ShocksStatement(bool overwrite_arg,
const det_shocks_t &det_shocks_arg,
const var_and_std_shocks_t &var_shocks_arg,
@ -357,69 +332,6 @@ ShocksStatement::has_calibrated_measurement_errors() const
return false;
}
Statement *
ShocksStatement::cloneAndReindexSymbIds(DataTree &dynamic_datatree, SymbolTable &orig_symbol_table)
{
var_and_std_shocks_t new_var_shocks, new_std_shocks;
covar_and_corr_shocks_t new_covar_shocks, new_corr_shocks;
SymbolTable *new_symbol_table = dynamic_datatree.getSymbolTable();
for (var_and_std_shocks_t::const_iterator it = var_shocks.begin();
it != var_shocks.end(); it++)
try
{
new_var_shocks[new_symbol_table->getID(orig_symbol_table.getName(it->first))] =
it->second->cloneDynamicReindex(dynamic_datatree, orig_symbol_table);
}
catch (...)
{
}
for (var_and_std_shocks_t::const_iterator it = std_shocks.begin();
it != std_shocks.end(); it++)
try
{
new_std_shocks[new_symbol_table->getID(orig_symbol_table.getName(it->first))] =
it->second->cloneDynamicReindex(dynamic_datatree, orig_symbol_table);
}
catch (...)
{
}
for (covar_and_corr_shocks_t::const_iterator it = covar_shocks.begin();
it != covar_shocks.end(); it++)
try
{
new_covar_shocks[make_pair(new_symbol_table->getID(orig_symbol_table.getName(it->first.first)),
new_symbol_table->getID(orig_symbol_table.getName(it->first.second)))] =
it->second->cloneDynamicReindex(dynamic_datatree, orig_symbol_table);
}
catch (...)
{
}
for (covar_and_corr_shocks_t::const_iterator it = corr_shocks.begin();
it != corr_shocks.end(); it++)
try
{
new_corr_shocks[make_pair(new_symbol_table->getID(orig_symbol_table.getName(it->first.first)),
new_symbol_table->getID(orig_symbol_table.getName(it->first.second)))] =
it->second->cloneDynamicReindex(dynamic_datatree, orig_symbol_table);
}
catch (...)
{
}
return new ShocksStatement(overwrite,
reindexDetShocksSymbIds(dynamic_datatree, orig_symbol_table),
new_var_shocks,
new_std_shocks,
new_covar_shocks,
new_corr_shocks,
*(dynamic_datatree.getSymbolTable()));
}
MShocksStatement::MShocksStatement(bool overwrite_arg,
const det_shocks_t &det_shocks_arg,
const SymbolTable &symbol_table_arg) :
@ -440,14 +352,6 @@ MShocksStatement::writeOutput(ostream &output, const string &basename, bool mini
writeDetShocks(output);
}
Statement *
MShocksStatement::cloneAndReindexSymbIds(DataTree &dynamic_datatree, SymbolTable &orig_symbol_table)
{
return new MShocksStatement(overwrite,
reindexDetShocksSymbIds(dynamic_datatree, orig_symbol_table),
*(dynamic_datatree.getSymbolTable()));
}
ConditionalForecastPathsStatement::ConditionalForecastPathsStatement(const AbstractShocksStatement::det_shocks_t &paths_arg) :
paths(paths_arg),
path_length(-1)

View File

@ -50,7 +50,7 @@ protected:
const det_shocks_t det_shocks;
const SymbolTable &symbol_table;
void writeDetShocks(ostream &output) const;
det_shocks_t reindexDetShocksSymbIds(DataTree &dynamic_datatree, SymbolTable &orig_symbol_table);
AbstractShocksStatement(bool mshocks_arg, bool overwrite_arg,
const det_shocks_t &det_shocks_arg,
const SymbolTable &symbol_table_arg);
@ -79,7 +79,6 @@ public:
const SymbolTable &symbol_table_arg);
virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
virtual void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings);
virtual Statement *cloneAndReindexSymbIds(DataTree &dynamic_datatree, SymbolTable &orig_symbol_table);
};
class MShocksStatement : public AbstractShocksStatement
@ -89,7 +88,6 @@ public:
const det_shocks_t &det_shocks_arg,
const SymbolTable &symbol_table_arg);
virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
virtual Statement *cloneAndReindexSymbIds(DataTree &dynamic_datatree, SymbolTable &orig_symbol_table);
};
class ConditionalForecastPathsStatement : public Statement

View File

@ -74,12 +74,6 @@ Statement::computingPass()
{
}
Statement *
Statement::cloneAndReindexSymbIds(DataTree &dynamic_datatree, SymbolTable &orig_symbol_table)
{
return this;
}
NativeStatement::NativeStatement(const string &native_statement_arg) :
native_statement(native_statement_arg)
{

View File

@ -27,8 +27,6 @@
#include "SymbolList.hh"
#include "WarningConsolidation.hh"
#include "SymbolTable.hh"
#include "DataTree.hh"
class ModFileStructure
{
@ -140,11 +138,6 @@ public:
*/
virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const = 0;
virtual void writeCOutput(ostream &output, const string &basename);
//! clone a statement while updating all symbol ids that are contained within it.
/* Symbol id's are updated from the symbol table contained in dynamic_datatree
The original symbol table is contained in orig_symbol_table
*/
virtual Statement *cloneAndReindexSymbIds(DataTree &dynamic_datatree, SymbolTable &orig_symbol_table);
};
class NativeStatement : public Statement

View File

@ -21,7 +21,6 @@
#include <sstream>
#include <iostream>
#include <cassert>
#include <list>
#include "SymbolTable.hh"
@ -483,52 +482,6 @@ SymbolTable::addLeadAuxiliaryVarInternal(bool endo, int index) throw (FrozenExce
return symb_id;
}
void
SymbolTable::rmExo(set<int> &unused) throw (FrozenException)
{
if (frozen)
throw FrozenException();
list<int> idxs;
for (set<int>::const_iterator it = unused.begin(); it != unused.end(); it++)
idxs.push_back(getID(getName(*it)));
idxs.sort();
idxs.reverse();
vector<string> orig_name_table = name_table;
for (list<int>::const_iterator it = idxs.begin(); it != idxs.end(); it++)
{
type_table.erase(type_table.begin() + *it);
name_table.erase(name_table.begin() + *it);
tex_name_table.erase(tex_name_table.begin() + *it);
long_name_table.erase(long_name_table.begin() + *it);
}
symbol_table.clear();
size = 0;
for (vector<string>::const_iterator it=name_table.begin();
it != name_table.end(); it++)
symbol_table[*it] = size++;
assert((size_t)size == symbol_table.size());
set<int> orig_predetermined_variables = predetermined_variables;
predetermined_variables.clear();
for (set<int>::const_iterator it=orig_predetermined_variables.begin();
it != orig_predetermined_variables.end(); it++)
if (orig_name_table[*it] != getName(*it))
markPredetermined(getID(orig_name_table[*it]));
else
markPredetermined(*it);
vector<int> orig_varobs = varobs;
varobs.clear();
for (vector<int>::const_iterator it=orig_varobs.begin(); it != orig_varobs.end(); it++)
if (orig_name_table[*it] != getName(*it))
addObservedVariable(getID(orig_name_table[*it]));
else
addObservedVariable(*it);
}
int
SymbolTable::addLagAuxiliaryVarInternal(bool endo, int orig_symb_id, int orig_lead_lag) throw (FrozenException)
{

View File

@ -310,8 +310,6 @@ public:
bool isAuxiliaryVariable(int symb_id) const;
//! Get list of endogenous variables without aux vars
set <int> getOrigEndogenous() const;
//! Remove exogenous variables contained in the set
void rmExo(set<int> &unused) throw (FrozenException);
};
inline bool