diff --git a/src/ComputingTasks.hh b/src/ComputingTasks.hh index ee866c45..6baee0d1 100644 --- a/src/ComputingTasks.hh +++ b/src/ComputingTasks.hh @@ -35,9 +35,9 @@ private: const OptionsList options_list; public: SteadyStatement(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 void writeJsonOutput(ostream &output) const; + void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings) override; + void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const override; + void writeJsonOutput(ostream &output) const override; }; class CheckStatement : public Statement @@ -46,9 +46,9 @@ private: const OptionsList options_list; public: CheckStatement(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 void writeJsonOutput(ostream &output) const; + void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings) override; + void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const override; + void writeJsonOutput(ostream &output) const override; }; class SimulStatement : public Statement @@ -57,9 +57,9 @@ private: const OptionsList options_list; public: SimulStatement(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 void writeJsonOutput(ostream &output) const; + void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings) override; + void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const override; + void writeJsonOutput(ostream &output) const override; }; class PerfectForesightSetupStatement : public Statement @@ -68,8 +68,8 @@ private: const OptionsList options_list; public: PerfectForesightSetupStatement(OptionsList options_list_arg); - virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const; - virtual void writeJsonOutput(ostream &output) const; + void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const override; + void writeJsonOutput(ostream &output) const override; }; class PerfectForesightSolverStatement : public Statement @@ -78,9 +78,9 @@ private: const OptionsList options_list; public: PerfectForesightSolverStatement(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 void writeJsonOutput(ostream &output) const; + void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings) override; + void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const override; + void writeJsonOutput(ostream &output) const override; }; class PriorPosteriorFunctionStatement : public Statement @@ -90,9 +90,9 @@ private: const OptionsList options_list; public: PriorPosteriorFunctionStatement(const bool prior_func_arg, 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 void writeJsonOutput(ostream &output) const; + void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings) override; + void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const override; + void writeJsonOutput(ostream &output) const override; }; class ModelInfoStatement : public Statement @@ -101,9 +101,9 @@ private: const OptionsList options_list; public: ModelInfoStatement(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 void writeJsonOutput(ostream &output) const; + void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings) override; + void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const override; + void writeJsonOutput(ostream &output) const override; }; class StochSimulStatement : public Statement @@ -114,9 +114,9 @@ private: public: StochSimulStatement(SymbolList symbol_list_arg, 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 void writeJsonOutput(ostream &output) const; + void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings) override; + void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const override; + void writeJsonOutput(ostream &output) const override; }; class PacModelStatement : public Statement @@ -136,9 +136,9 @@ public: const string &growth_arg, map undiff_arg, 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 void writeJsonOutput(ostream &output) const; + void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings) override; + void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const override; + void writeJsonOutput(ostream &output) const override; void fillUndiffedLHS(vector &lhs); void getPacModelInfoForPacExpectation(pair > > > > &pac_model_info) const; }; @@ -167,8 +167,8 @@ public: vector &nonstationary_arg, vector &diff_arg, vector &orig_diff_var_arg, int max_lag_arg); - virtual void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings); - virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const; + void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings) override; + void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const override; void createVarModelMFunction(ostream &output, const map > &var_expectation_functions_to_write) const; }; @@ -196,7 +196,7 @@ public: map, double> covariance_number_restriction_arg, map, pair > covariance_pair_restriction_arg, const SymbolTable &symbol_table_arg); - virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const; + void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const override; }; class VarEstimationStatement : public Statement @@ -205,8 +205,8 @@ private: const OptionsList options_list; public: VarEstimationStatement(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; + void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings) override; + void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const override; }; class ForecastStatement : public Statement @@ -217,8 +217,8 @@ private: public: ForecastStatement(SymbolList symbol_list_arg, OptionsList options_list_arg); - virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const; - virtual void writeJsonOutput(ostream &output) const; + void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const override; + void writeJsonOutput(ostream &output) const override; }; class RamseyModelStatement : public Statement @@ -227,9 +227,9 @@ private: const OptionsList options_list; public: RamseyModelStatement(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 void writeJsonOutput(ostream &output) const; + void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings) override; + void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const override; + void writeJsonOutput(ostream &output) const override; }; class RamseyConstraintsStatement : public Statement @@ -247,9 +247,9 @@ private: const constraints_t constraints; public: RamseyConstraintsStatement(const SymbolTable &symbol_table_arg, constraints_t constraints_arg); - virtual void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings); - virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const; - virtual void writeJsonOutput(ostream &output) const; + void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings) override; + void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const override; + void writeJsonOutput(ostream &output) const override; }; class RamseyPolicyStatement : public Statement @@ -262,10 +262,10 @@ public: RamseyPolicyStatement(const SymbolTable &symbol_table_arg, vector ramsey_policy_list_arg, OptionsList options_list_arg); - virtual void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings); + void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings) override; void checkRamseyPolicyList(); - virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const; - virtual void writeJsonOutput(ostream &output) const; + void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const override; + void writeJsonOutput(ostream &output) const override; }; class DiscretionaryPolicyStatement : public Statement @@ -276,9 +276,9 @@ private: public: DiscretionaryPolicyStatement(SymbolList symbol_list_arg, 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 void writeJsonOutput(ostream &output) const; + void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings) override; + void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const override; + void writeJsonOutput(ostream &output) const override; }; class RplotStatement : public Statement @@ -287,16 +287,16 @@ private: const SymbolList symbol_list; public: RplotStatement(SymbolList symbol_list_arg); - virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const; - virtual void writeJsonOutput(ostream &output) const; + void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const override; + void writeJsonOutput(ostream &output) const override; }; class UnitRootVarsStatement : public Statement { public: UnitRootVarsStatement(); - virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const; - virtual void writeJsonOutput(ostream &output) const; + void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const override; + void writeJsonOutput(ostream &output) const override; }; class PeriodsStatement : public Statement @@ -305,8 +305,8 @@ private: const int periods; public: PeriodsStatement(int periods_arg); - virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const; - virtual void writeJsonOutput(ostream &output) const; + void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const override; + void writeJsonOutput(ostream &output) const override; }; class DsampleStatement : public Statement @@ -316,8 +316,8 @@ private: public: DsampleStatement(int val1_arg); DsampleStatement(int val1_arg, int val2_arg); - virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const; - virtual void writeJsonOutput(ostream &output) const; + void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const override; + void writeJsonOutput(ostream &output) const override; }; class EstimationStatement : public Statement @@ -328,9 +328,9 @@ private: public: EstimationStatement(SymbolList symbol_list_arg, 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 void writeJsonOutput(ostream &output) const; + void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings) override; + void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const override; + void writeJsonOutput(ostream &output) const override; }; class DynareSensitivityStatement : public Statement @@ -339,9 +339,9 @@ private: const OptionsList options_list; public: DynareSensitivityStatement(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 void writeJsonOutput(ostream &output) const; + void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings) override; + void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const override; + void writeJsonOutput(ostream &output) const override; }; class ObservationTrendsStatement : public Statement @@ -354,8 +354,8 @@ private: public: ObservationTrendsStatement(trend_elements_t trend_elements_arg, const SymbolTable &symbol_table_arg); - virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const; - virtual void writeJsonOutput(ostream &output) const; + void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const override; + void writeJsonOutput(ostream &output) const override; }; class OsrParamsStatement : public Statement @@ -365,9 +365,9 @@ private: const SymbolTable &symbol_table; public: OsrParamsStatement(SymbolList symbol_list_arg, 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 void writeJsonOutput(ostream &output) const; + void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings) override; + void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const override; + void writeJsonOutput(ostream &output) const override; }; class OsrStatement : public Statement @@ -378,9 +378,9 @@ private: public: OsrStatement(SymbolList symbol_list_arg, 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 void writeJsonOutput(ostream &output) const; + void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings) override; + void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const override; + void writeJsonOutput(ostream &output) const override; }; //! Temporary structure used when parsing estimation_params* statements @@ -405,9 +405,9 @@ private: const vector osr_params_list; public: OsrParamsBoundsStatement(vector osr_params_list_arg); - virtual void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings); - virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const; - virtual void writeJsonOutput(ostream &output) const; + void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings) override; + void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const override; + void writeJsonOutput(ostream &output) const override; }; class DynaTypeStatement : public Statement @@ -418,8 +418,8 @@ private: public: DynaTypeStatement(SymbolList symbol_list_arg, string filename_arg); - virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const; - virtual void writeJsonOutput(ostream &output) const; + void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const override; + void writeJsonOutput(ostream &output) const override; }; class DynaSaveStatement : public Statement @@ -430,8 +430,8 @@ private: public: DynaSaveStatement(SymbolList symbol_list_arg, string filename_arg); - virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const; - virtual void writeJsonOutput(ostream &output) const; + void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const override; + void writeJsonOutput(ostream &output) const override; }; class ModelComparisonStatement : public Statement @@ -444,8 +444,8 @@ private: public: ModelComparisonStatement(filename_list_t filename_list_arg, OptionsList options_list_arg); - virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const; - virtual void writeJsonOutput(ostream &output) const; + void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const override; + void writeJsonOutput(ostream &output) const override; }; //! Temporary structure used when parsing estimation_params* statements @@ -483,9 +483,9 @@ private: public: EstimatedParamsStatement(vector estim_params_list_arg, 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 void writeJsonOutput(ostream &output) const; + void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings) override; + void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const override; + void writeJsonOutput(ostream &output) const override; }; class EstimatedParamsInitStatement : public Statement @@ -498,9 +498,9 @@ public: EstimatedParamsInitStatement(vector estim_params_list_arg, const SymbolTable &symbol_table_arg, 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 void writeJsonOutput(ostream &output) const; + void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings) override; + void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const override; + void writeJsonOutput(ostream &output) const override; }; class EstimatedParamsBoundsStatement : public Statement @@ -511,8 +511,8 @@ private: public: EstimatedParamsBoundsStatement(vector estim_params_list_arg, const SymbolTable &symbol_table_arg); - virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const; - virtual void writeJsonOutput(ostream &output) const; + void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const override; + void writeJsonOutput(ostream &output) const override; }; class OptimWeightsStatement : public Statement @@ -528,9 +528,9 @@ public: OptimWeightsStatement(var_weights_t var_weights_arg, covar_weights_t covar_weights_arg, 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 void writeJsonOutput(ostream &output) const; + void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings) override; + void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const override; + void writeJsonOutput(ostream &output) const override; }; /*! \todo Make model_tree a member instead of a pointer */ @@ -544,15 +544,15 @@ public: /*! \param model_tree_arg the model tree used to store the objective function. It is owned by the PlannerObjectiveStatement, and will be deleted by its destructor */ PlannerObjectiveStatement(StaticModel *model_tree_arg); - virtual - ~PlannerObjectiveStatement(); + + ~PlannerObjectiveStatement() override; /*! \todo check there are only endogenous variables at the current period in the objective (no exogenous, no lead/lag) */ - virtual void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings); + void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings) override; /*! \todo allow for the possibility of disabling temporary terms */ - virtual void computingPass(); - virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const; - virtual void writeJsonOutput(ostream &output) const; + void computingPass() override; + void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const override; + void writeJsonOutput(ostream &output) const override; //! Return the Planner Objective StaticModel *getPlannerObjective() const; }; @@ -564,9 +564,9 @@ private: const OptionsList options_list; public: BVARDensityStatement(int maxnlags_arg, 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 void writeJsonOutput(ostream &output) const; + void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings) override; + void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const override; + void writeJsonOutput(ostream &output) const override; }; class BVARForecastStatement : public Statement @@ -576,9 +576,9 @@ private: const OptionsList options_list; public: BVARForecastStatement(int nlags_arg, 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 void writeJsonOutput(ostream &output) const; + void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings) override; + void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const override; + void writeJsonOutput(ostream &output) const override; }; class SBVARStatement : public Statement @@ -587,9 +587,9 @@ private: const OptionsList options_list; public: SBVARStatement(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 void writeJsonOutput(ostream &output) const; + void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings) override; + void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const override; + void writeJsonOutput(ostream &output) const override; }; class MSSBVAREstimationStatement : public Statement @@ -598,9 +598,9 @@ private: const OptionsList options_list; public: MSSBVAREstimationStatement(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 void writeJsonOutput(ostream &output) const; + void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings) override; + void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const override; + void writeJsonOutput(ostream &output) const override; }; class MSSBVARSimulationStatement : public Statement @@ -609,9 +609,9 @@ private: const OptionsList options_list; public: MSSBVARSimulationStatement(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 void writeJsonOutput(ostream &output) const; + void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings) override; + void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const override; + void writeJsonOutput(ostream &output) const override; }; class MSSBVARComputeMDDStatement : public Statement @@ -620,9 +620,9 @@ private: const OptionsList options_list; public: MSSBVARComputeMDDStatement(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 void writeJsonOutput(ostream &output) const; + void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings) override; + void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const override; + void writeJsonOutput(ostream &output) const override; }; class MSSBVARComputeProbabilitiesStatement : public Statement @@ -631,9 +631,9 @@ private: const OptionsList options_list; public: MSSBVARComputeProbabilitiesStatement(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 void writeJsonOutput(ostream &output) const; + void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings) override; + void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const override; + void writeJsonOutput(ostream &output) const override; }; class MSSBVARIrfStatement : public Statement @@ -644,9 +644,9 @@ private: public: MSSBVARIrfStatement(SymbolList symbol_list_arg, 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 void writeJsonOutput(ostream &output) const; + void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings) override; + void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const override; + void writeJsonOutput(ostream &output) const override; }; class MSSBVARForecastStatement : public Statement @@ -655,9 +655,9 @@ private: const OptionsList options_list; public: MSSBVARForecastStatement(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 void writeJsonOutput(ostream &output) const; + void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings) override; + void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const override; + void writeJsonOutput(ostream &output) const override; }; class MSSBVARVarianceDecompositionStatement : public Statement @@ -666,9 +666,9 @@ private: const OptionsList options_list; public: MSSBVARVarianceDecompositionStatement(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 void writeJsonOutput(ostream &output) const; + void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings) override; + void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const override; + void writeJsonOutput(ostream &output) const override; }; class IdentificationStatement : public Statement @@ -677,9 +677,9 @@ private: OptionsList options_list; public: IdentificationStatement(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 void writeJsonOutput(ostream &output) const; + void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings) override; + void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const override; + void writeJsonOutput(ostream &output) const override; }; class WriteLatexDynamicModelStatement : public Statement @@ -689,8 +689,8 @@ private: const bool write_equation_tags; public: WriteLatexDynamicModelStatement(const DynamicModel &dynamic_model_arg, bool write_equation_tags_arg); - virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const; - virtual void writeJsonOutput(ostream &output) const; + void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const override; + void writeJsonOutput(ostream &output) const override; }; class WriteLatexStaticModelStatement : public Statement @@ -700,8 +700,8 @@ private: const bool write_equation_tags; public: WriteLatexStaticModelStatement(const StaticModel &static_model_arg, bool write_equation_tags_arg); - virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const; - virtual void writeJsonOutput(ostream &output) const; + void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const override; + void writeJsonOutput(ostream &output) const override; }; class WriteLatexOriginalModelStatement : public Statement @@ -711,8 +711,8 @@ private: const bool write_equation_tags; public: WriteLatexOriginalModelStatement(const DynamicModel &original_model_arg, bool write_equation_tags_arg); - virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const; - virtual void writeJsonOutput(ostream &output) const; + void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const override; + void writeJsonOutput(ostream &output) const override; }; class WriteLatexSteadyStateModelStatement : public Statement @@ -721,9 +721,9 @@ private: const SteadyStateModel &steady_state_model; public: WriteLatexSteadyStateModelStatement(const SteadyStateModel &steady_state_model_arg); - virtual void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings); - virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const; - virtual void writeJsonOutput(ostream &output) const; + void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings) override; + void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const override; + void writeJsonOutput(ostream &output) const override; }; class ShockDecompositionStatement : public Statement @@ -734,8 +734,8 @@ private: public: ShockDecompositionStatement(SymbolList symbol_list_arg, OptionsList options_list_arg); - virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const; - virtual void writeJsonOutput(ostream &output) const; + void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const override; + void writeJsonOutput(ostream &output) const override; }; class RealtimeShockDecompositionStatement : public Statement @@ -746,7 +746,7 @@ private: public: RealtimeShockDecompositionStatement(SymbolList symbol_list_arg, OptionsList options_list_arg); - virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const; + void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const override; }; class PlotShockDecompositionStatement : public Statement @@ -757,7 +757,7 @@ private: public: PlotShockDecompositionStatement(SymbolList symbol_list_arg, OptionsList options_list_arg); - virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const; + void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const override; }; class InitialConditionDecompositionStatement : public Statement @@ -768,7 +768,7 @@ private: public: InitialConditionDecompositionStatement(SymbolList symbol_list_arg, OptionsList options_list_arg); - virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const; + void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const override; }; class ConditionalForecastStatement : public Statement @@ -777,8 +777,8 @@ private: const OptionsList options_list; public: ConditionalForecastStatement(OptionsList options_list_arg); - virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const; - virtual void writeJsonOutput(ostream &output) const; + void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const override; + void writeJsonOutput(ostream &output) const override; }; class PlotConditionalForecastStatement : public Statement @@ -789,8 +789,8 @@ private: const SymbolList symbol_list; public: PlotConditionalForecastStatement(int periods_arg, SymbolList symbol_list_arg); - virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const; - virtual void writeJsonOutput(ostream &output) const; + void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const override; + void writeJsonOutput(ostream &output) const override; }; class CalibSmootherStatement : public Statement @@ -801,9 +801,9 @@ private: public: CalibSmootherStatement(SymbolList symbol_list_arg, 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 void writeJsonOutput(ostream &output) const; + void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings) override; + void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const override; + void writeJsonOutput(ostream &output) const override; }; class ExtendedPathStatement : public Statement @@ -812,9 +812,9 @@ private: const OptionsList options_list; public: ExtendedPathStatement(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 void writeJsonOutput(ostream &output) const; + void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings) override; + void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const override; + void writeJsonOutput(ostream &output) const override; }; class SvarIdentificationStatement : public Statement @@ -844,9 +844,9 @@ public: const bool &lower_cholesky_present_arg, const bool &constants_exclusion_present_arg, 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 void writeJsonOutput(ostream &output) const; + void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings) override; + void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const override; + void writeJsonOutput(ostream &output) const override; }; class MarkovSwitchingStatement : public Statement @@ -856,10 +856,10 @@ private: map , double > restriction_map; public: MarkovSwitchingStatement(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 void writeCOutput(ostream &output, const string &basename); - virtual void writeJsonOutput(ostream &output) const; + void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings) override; + void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const override; + void writeCOutput(ostream &output, const string &basename) override; + void writeJsonOutput(ostream &output) const override; }; class SvarStatement : public Statement @@ -868,17 +868,17 @@ private: const OptionsList options_list; public: SvarStatement(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 void writeJsonOutput(ostream &output) const; + void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings) override; + void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const override; + void writeJsonOutput(ostream &output) const override; }; class SvarGlobalIdentificationCheckStatement : public Statement { public: SvarGlobalIdentificationCheckStatement(); - virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const; - virtual void writeJsonOutput(ostream &output) const; + void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const override; + void writeJsonOutput(ostream &output) const override; }; class SetTimeStatement : public Statement @@ -887,8 +887,8 @@ private: const OptionsList options_list; public: SetTimeStatement(OptionsList options_list_arg); - virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const; - virtual void writeJsonOutput(ostream &output) const; + void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const override; + void writeJsonOutput(ostream &output) const override; }; class EstimationDataStatement : public Statement @@ -897,9 +897,9 @@ private: const OptionsList options_list; public: EstimationDataStatement(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 void writeJsonOutput(ostream &output) const; + void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings) override; + void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const override; + void writeJsonOutput(ostream &output) const override; }; class SubsamplesStatement : public Statement @@ -917,9 +917,9 @@ public: string name2_arg, const subsample_declaration_map_t subsample_declaration_map_arg, 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 void writeJsonOutput(ostream &output) const; + void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings) override; + void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const override; + void writeJsonOutput(ostream &output) const override; }; class SubsamplesEqualStatement : public Statement @@ -936,8 +936,8 @@ public: string from_name1_arg, string from_name2_arg, SymbolTable symbol_table_arg); - virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const; - virtual void writeJsonOutput(ostream &output) const; + void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const override; + void writeJsonOutput(ostream &output) const override; }; class JointPriorStatement : public Statement @@ -950,17 +950,17 @@ public: JointPriorStatement(const vector joint_parameters_arg, const PriorDistributions &prior_shape_arg, 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; + void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings) override; + void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const override; void writeOutputHelper(ostream &output, const string &field, const string &lhs_field) const; - virtual void writeJsonOutput(ostream &output) const; + void writeJsonOutput(ostream &output) const override; }; class BasicPriorStatement : public Statement { public: - virtual - ~BasicPriorStatement(); + + ~BasicPriorStatement() override; protected: const string name; const string subsample_name; @@ -972,7 +972,7 @@ protected: const PriorDistributions &prior_shape_arg, const expr_t &variance_arg, OptionsList options_list_arg); - virtual void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings); + void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings) override; void get_base_name(const SymbolType symb_type, string &lhs_field) const; void writeCommonOutput(ostream &output, const string &lhs_field) const; void writeCommonOutputHelper(ostream &output, const string &field, const string &lhs_field) const; @@ -998,9 +998,9 @@ public: const PriorDistributions &prior_shape_arg, const expr_t &variance_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 void writeJsonOutput(ostream &output) const; + void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const override; + void writeCOutput(ostream &output, const string &basename) override; + void writeJsonOutput(ostream &output) const override; }; class StdPriorStatement : public BasicPriorStatement @@ -1014,9 +1014,9 @@ public: const expr_t &variance_arg, const OptionsList &options_list_arg, 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 void writeJsonOutput(ostream &output) const; + void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const override; + void writeCOutput(ostream &output, const string &basename) override; + void writeJsonOutput(ostream &output) const override; }; class CorrPriorStatement : public BasicPriorStatement @@ -1032,10 +1032,10 @@ public: const expr_t &variance_arg, const OptionsList &options_list_arg, 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 void writeCOutput(ostream &output, const string &basename); - virtual void writeJsonOutput(ostream &output) const; + void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings) override; + void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const override; + void writeCOutput(ostream &output, const string &basename) override; + void writeJsonOutput(ostream &output) const override; }; class PriorEqualStatement : public Statement @@ -1061,16 +1061,16 @@ public: string from_subsample_name_arg, SymbolTable symbol_table_arg); 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 void writeJsonOutput(ostream &output) const; + void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings) override; + void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const override; + void writeJsonOutput(ostream &output) const override; }; class BasicOptionsStatement : public Statement { public: - virtual - ~BasicOptionsStatement(); + + ~BasicOptionsStatement() override; protected: const string name; const string subsample_name; @@ -1079,7 +1079,7 @@ protected: string subsample_name_arg, OptionsList options_list_arg); void get_base_name(const SymbolType symb_type, string &lhs_field) const; - virtual void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings); + void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings) override; void writeOptionsOutput(ostream &output, string &lhs_field, const string &name2) const; void writeCommonOutput(ostream &output, const string &lhs_field) const; void writeCommonOutputHelper(ostream &output, const string &field, const string &lhs_field) const; @@ -1094,9 +1094,9 @@ class OptionsStatement : public BasicOptionsStatement { 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 void writeJsonOutput(ostream &output) const; + void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const override; + void writeCOutput(ostream &output, const string &basename) override; + void writeJsonOutput(ostream &output) const override; }; class StdOptionsStatement : public BasicOptionsStatement @@ -1108,9 +1108,9 @@ public: const string &subsample_name_arg, const OptionsList &options_list_arg, 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 void writeJsonOutput(ostream &output) const; + void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const override; + void writeCOutput(ostream &output, const string &basename) override; + void writeJsonOutput(ostream &output) const override; }; class CorrOptionsStatement : public BasicOptionsStatement @@ -1123,10 +1123,10 @@ public: const string &subsample_name_arg, const OptionsList &options_list_arg, 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 void writeCOutput(ostream &output, const string &basename); - virtual void writeJsonOutput(ostream &output) const; + void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings) override; + void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const override; + void writeCOutput(ostream &output, const string &basename) override; + void writeJsonOutput(ostream &output) const override; }; class OptionsEqualStatement : public Statement @@ -1152,17 +1152,17 @@ public: string from_subsample_name_arg, SymbolTable symbol_table_arg); 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 void writeJsonOutput(ostream &output) const; + void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings) override; + void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const override; + void writeJsonOutput(ostream &output) const override; }; class ModelDiagnosticsStatement : public Statement { public: ModelDiagnosticsStatement(); - virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const; - virtual void writeJsonOutput(ostream &output) const; + void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const override; + void writeJsonOutput(ostream &output) const override; }; class Smoother2histvalStatement : public Statement @@ -1171,8 +1171,8 @@ private: const OptionsList options_list; public: Smoother2histvalStatement(OptionsList options_list_arg); - virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const; - virtual void writeJsonOutput(ostream &output) const; + void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const override; + void writeJsonOutput(ostream &output) const override; }; class GMMEstimationStatement : public Statement @@ -1182,8 +1182,8 @@ private: const OptionsList options_list; public: GMMEstimationStatement(SymbolList symbol_list_arg, OptionsList options_list_arg); - virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const; - virtual void writeJsonOutput(ostream &output) const; + void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const override; + void writeJsonOutput(ostream &output) const override; }; class SMMEstimationStatement : public Statement @@ -1193,8 +1193,8 @@ private: const OptionsList options_list; public: SMMEstimationStatement(SymbolList symbol_list_arg, OptionsList options_list_arg); - virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const; - virtual void writeJsonOutput(ostream &output) const; + void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const override; + void writeJsonOutput(ostream &output) const override; }; class GenerateIRFsStatement : public Statement @@ -1208,8 +1208,8 @@ public: GenerateIRFsStatement(OptionsList options_list_arg, vector generate_irf_names_arg, vector > generate_irf_elements_arg); - virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const; - virtual void writeJsonOutput(ostream &output) const; + void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const override; + void writeJsonOutput(ostream &output) const override; }; #endif diff --git a/src/DynamicModel.hh b/src/DynamicModel.hh index 3719cb98..12e7df74 100644 --- a/src/DynamicModel.hh +++ b/src/DynamicModel.hh @@ -147,11 +147,11 @@ private: void compileChainRuleDerivative(ofstream &code_file, unsigned int &instruction_number, int eq, int var, int lag, const map_idx_t &map_idx) const; //! Get the type corresponding to a derivation ID - virtual SymbolType getTypeByDerivID(int deriv_id) const noexcept(false); + SymbolType getTypeByDerivID(int deriv_id) const noexcept(false) override; //! Get the lag corresponding to a derivation ID - virtual int getLagByDerivID(int deriv_id) const noexcept(false); + int getLagByDerivID(int deriv_id) const noexcept(false) override; //! Get the symbol ID corresponding to a derivation ID - virtual int getSymbIDByDerivID(int deriv_id) const noexcept(false); + int getSymbIDByDerivID(int deriv_id) const noexcept(false) override; //! Compute the column indices of the dynamic Jacobian void computeDynJacobianCols(bool jacobianExo); //! Computes derivatives of the Jacobian w.r. to trend vars and tests that they are equal to zero @@ -249,7 +249,7 @@ public: DynamicModel(SymbolTable &symbol_table_arg, NumericalConstants &num_constants_arg, ExternalFunctionsTable &external_functions_table_argx); //! Adds a variable node /*! This implementation allows for non-zero lag */ - virtual VariableNode *AddVariable(int symb_id, int lag = 0); + VariableNode *AddVariable(int symb_id, int lag = 0) override; //! Compute cross references void computeXrefs(); @@ -379,13 +379,13 @@ public: //! Writes LaTeX file with the equations of the dynamic model (for the original model) void writeLatexOriginalFile(const string &basename, const bool write_equation_tags) const; - virtual int getDerivID(int symb_id, int lag) const noexcept(false); - virtual int getDynJacobianCol(int deriv_id) const noexcept(false); - virtual void addAllParamDerivId(set &deriv_id_set); + int getDerivID(int symb_id, int lag) const noexcept(false) override; + int getDynJacobianCol(int deriv_id) const noexcept(false) override; + void addAllParamDerivId(set &deriv_id_set) override; //! Returns true indicating that this is a dynamic model - virtual bool - isDynamic() const + bool + isDynamic() const override { return true; }; @@ -450,111 +450,111 @@ public: void fillEvalContext(eval_context_t &eval_context) const; //! Return the number of blocks - virtual unsigned int - getNbBlocks() const + unsigned int + getNbBlocks() const override { return (block_type_firstequation_size_mfs.size()); }; //! Determine the simulation type of each block - virtual BlockSimulationType - getBlockSimulationType(int block_number) const + BlockSimulationType + getBlockSimulationType(int block_number) const override { return (block_type_firstequation_size_mfs[block_number].first.first); }; //! Return the first equation number of a block - virtual unsigned int - getBlockFirstEquation(int block_number) const + unsigned int + getBlockFirstEquation(int block_number) const override { return (block_type_firstequation_size_mfs[block_number].first.second); }; //! Return the size of the block block_number - virtual unsigned int - getBlockSize(int block_number) const + unsigned int + getBlockSize(int block_number) const override { return (block_type_firstequation_size_mfs[block_number].second.first); }; //! Return the number of exogenous variable in the block block_number - virtual unsigned int - getBlockExoSize(int block_number) const + unsigned int + getBlockExoSize(int block_number) const override { return (block_var_exo[block_number].first.size()); }; //! Return the number of colums in the jacobian matrix for exogenous variable in the block block_number - virtual unsigned int - getBlockExoColSize(int block_number) const + unsigned int + getBlockExoColSize(int block_number) const override { return (block_var_exo[block_number].second); }; //! Return the number of feedback variable of the block block_number - virtual unsigned int - getBlockMfs(int block_number) const + unsigned int + getBlockMfs(int block_number) const override { return (block_type_firstequation_size_mfs[block_number].second.second); }; //! Return the maximum lag in a block - virtual unsigned int - getBlockMaxLag(int block_number) const + unsigned int + getBlockMaxLag(int block_number) const override { return (block_lag_lead[block_number].first); }; //! Return the maximum lead in a block - virtual unsigned int - getBlockMaxLead(int block_number) const + unsigned int + getBlockMaxLead(int block_number) const override { return (block_lag_lead[block_number].second); }; //! Return the type of equation (equation_number) belonging to the block block_number - virtual EquationType - getBlockEquationType(int block_number, int equation_number) const + EquationType + getBlockEquationType(int block_number, int equation_number) const override { return (equation_type_and_normalized_equation[equation_reordered[block_type_firstequation_size_mfs[block_number].first.second+equation_number]].first); }; //! Return true if the equation has been normalized - virtual bool - isBlockEquationRenormalized(int block_number, int equation_number) const + bool + isBlockEquationRenormalized(int block_number, int equation_number) const override { return (equation_type_and_normalized_equation[equation_reordered[block_type_firstequation_size_mfs[block_number].first.second+equation_number]].first == E_EVALUATE_S); }; //! Return the expr_t of the equation equation_number belonging to the block block_number - virtual expr_t - getBlockEquationExpr(int block_number, int equation_number) const + expr_t + getBlockEquationExpr(int block_number, int equation_number) const override { return (equations[equation_reordered[block_type_firstequation_size_mfs[block_number].first.second+equation_number]]); }; //! Return the expr_t of the renormalized equation equation_number belonging to the block block_number - virtual expr_t - getBlockEquationRenormalizedExpr(int block_number, int equation_number) const + expr_t + getBlockEquationRenormalizedExpr(int block_number, int equation_number) const override { return (equation_type_and_normalized_equation[equation_reordered[block_type_firstequation_size_mfs[block_number].first.second+equation_number]].second); }; //! Return the original number of equation equation_number belonging to the block block_number - virtual int - getBlockEquationID(int block_number, int equation_number) const + int + getBlockEquationID(int block_number, int equation_number) const override { return (equation_reordered[block_type_firstequation_size_mfs[block_number].first.second+equation_number]); }; //! Return the original number of variable variable_number belonging to the block block_number - virtual int - getBlockVariableID(int block_number, int variable_number) const + int + getBlockVariableID(int block_number, int variable_number) const override { return (variable_reordered[block_type_firstequation_size_mfs[block_number].first.second+variable_number]); }; //! Return the original number of the exogenous variable varexo_number belonging to the block block_number - virtual int - getBlockVariableExoID(int block_number, int variable_number) const + int + getBlockVariableExoID(int block_number, int variable_number) const override { auto it = exo_block[block_number].find(variable_number); return (it->first); }; //! Return the position of equation_number in the block number belonging to the block block_number - virtual int - getBlockInitialEquationID(int block_number, int equation_number) const + int + getBlockInitialEquationID(int block_number, int equation_number) const override { return ((int) inv_equation_reordered[equation_number] - (int) block_type_firstequation_size_mfs[block_number].first.second); }; //! Return the position of variable_number in the block number belonging to the block block_number - virtual int - getBlockInitialVariableID(int block_number, int variable_number) const + int + getBlockInitialVariableID(int block_number, int variable_number) const override { return ((int) inv_variable_reordered[variable_number] - (int) block_type_firstequation_size_mfs[block_number].first.second); }; @@ -565,8 +565,8 @@ public: return (variable_block_lead_lag[variable_number].first); }; //! Return the position of the exogenous variable_number in the block number belonging to the block block_number - virtual int - getBlockInitialExogenousID(int block_number, int variable_number) const + int + getBlockInitialExogenousID(int block_number, int variable_number) const override { auto it = block_exo_index.find(block_number); if (it != block_exo_index.end()) @@ -581,8 +581,8 @@ public: return (-1); }; //! Return the position of the deterministic exogenous variable_number in the block number belonging to the block block_number - virtual int - getBlockInitialDetExogenousID(int block_number, int variable_number) const + int + getBlockInitialDetExogenousID(int block_number, int variable_number) const override { auto it = block_det_exo_index.find(block_number); if (it != block_det_exo_index.end()) @@ -597,8 +597,8 @@ public: return (-1); }; //! Return the position of the other endogenous variable_number in the block number belonging to the block block_number - virtual int - getBlockInitialOtherEndogenousID(int block_number, int variable_number) const + int + getBlockInitialOtherEndogenousID(int block_number, int variable_number) const override { auto it = block_other_endo_index.find(block_number); if (it != block_other_endo_index.end()) diff --git a/src/ExprNode.hh b/src/ExprNode.hh index 716e2213..7e50d3cd 100644 --- a/src/ExprNode.hh +++ b/src/ExprNode.hh @@ -564,7 +564,7 @@ class NumConstNode : public ExprNode private: //! Id from numerical constants table const int id; - virtual expr_t computeDerivative(int deriv_id); + expr_t computeDerivative(int deriv_id) override; public: NumConstNode(DataTree &datatree_arg, int id_arg); int @@ -572,60 +572,60 @@ public: { return id; }; - virtual void prepareForDerivation(); - virtual void writeOutput(ostream &output, ExprNodeOutputType output_type, const temporary_terms_t &temporary_terms, const temporary_terms_idxs_t &temporary_terms_idxs, const deriv_node_temp_terms_t &tef_terms) const; - virtual void writeJsonOutput(ostream &output, const temporary_terms_t &temporary_terms, const deriv_node_temp_terms_t &tef_terms, const bool isdynamic) const; - virtual bool containsExternalFunction() const; - virtual void collectVARLHSVariable(set &result) const; - virtual void collectDynamicVariables(SymbolType type_arg, set > &result) const; - virtual void collectTemporary_terms(const temporary_terms_t &temporary_terms, temporary_terms_inuse_t &temporary_terms_inuse, int Curr_Block) const; - virtual double eval(const eval_context_t &eval_context) const noexcept(false); - virtual void compile(ostream &CompileCode, unsigned int &instruction_number, bool lhs_rhs, const temporary_terms_t &temporary_terms, const map_idx_t &map_idx, bool dynamic, bool steady_dynamic, const deriv_node_temp_terms_t &tef_terms) const; - virtual expr_t toStatic(DataTree &static_datatree) const; - virtual void computeXrefs(EquationInfo &ei) const; - virtual pair normalizeEquation(int symb_id_endo, vector > > &List_of_Op_RHS) const; - virtual expr_t getChainRuleDerivative(int deriv_id, const map &recursive_variables); - virtual int maxEndoLead() const; - virtual int maxExoLead() const; - virtual int maxEndoLag() const; - virtual int maxExoLag() const; - virtual int maxLead() const; - virtual int maxLag() const; - virtual int VarMinLag() const; - virtual void VarMaxLag(DataTree &static_datatree, set &static_lhs, int &max_lag) const; - virtual int PacMaxLag(vector &lhs) const; - virtual expr_t undiff() const; - virtual expr_t decreaseLeadsLags(int n) const; - virtual expr_t substituteEndoLeadGreaterThanTwo(subst_table_t &subst_table, vector &neweqs, bool deterministic_model) const; - virtual expr_t substituteEndoLagGreaterThanTwo(subst_table_t &subst_table, vector &neweqs) const; - virtual expr_t substituteExoLead(subst_table_t &subst_table, vector &neweqs, bool deterministic_model) const; - virtual expr_t substituteExoLag(subst_table_t &subst_table, vector &neweqs) const; - virtual expr_t substituteExpectation(subst_table_t &subst_table, vector &neweqs, bool partial_information_model) const; - virtual expr_t substituteAdl() const; - virtual void findDiffNodes(DataTree &static_datatree, diff_table_t &diff_table) const; - virtual void findUnaryOpNodesForAuxVarCreation(DataTree &static_datatree, diff_table_t &nodes) const; - virtual expr_t substituteDiff(DataTree &static_datatree, diff_table_t &diff_table, subst_table_t &subst_table, vector &neweqs) const; - virtual expr_t substituteUnaryOpNodes(DataTree &static_datatree, diff_table_t &nodes, subst_table_t &subst_table, vector &neweqs) const; - virtual expr_t substitutePacExpectation(map &subst_table); - virtual expr_t decreaseLeadsLagsPredeterminedVariables() const; - virtual expr_t differentiateForwardVars(const vector &subset, subst_table_t &subst_table, vector &neweqs) const; - virtual bool isNumConstNodeEqualTo(double value) const; - virtual bool containsEndogenous() const; - virtual bool containsExogenous() const; - virtual int countDiffs() const; - virtual bool isVariableNodeEqualTo(SymbolType type_arg, int variable_id, int lag_arg) const; - 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 removeTrendLeadLag(map trend_symbols_map) const; - virtual bool isInStaticForm() const; - virtual void setVarExpectationIndex(map > &var_model_info); - virtual void walkPacParameters(bool &pac_encountered, pair &lhs, set > > &ec_params_and_vars, set > > ¶ms_and_vars) const; - virtual void addParamInfoToPac(pair &lhs_arg, set > > &ec_params_and_vars_arg, set > > ¶ms_and_vars_arg); - virtual void fillPacExpectationVarInfo(string &model_name_arg, vector &lhs_arg, int max_lag_arg, vector &nonstationary_arg, int growth_symb_id_arg, int equation_number_arg); - virtual bool isVarModelReferenced(const string &model_info_name) const; - virtual void getEndosAndMaxLags(map &model_endos_and_lags) const; - virtual expr_t substituteStaticAuxiliaryVariable() const; + void prepareForDerivation() override; + void writeOutput(ostream &output, ExprNodeOutputType output_type, const temporary_terms_t &temporary_terms, const temporary_terms_idxs_t &temporary_terms_idxs, const deriv_node_temp_terms_t &tef_terms) const override; + void writeJsonOutput(ostream &output, const temporary_terms_t &temporary_terms, const deriv_node_temp_terms_t &tef_terms, const bool isdynamic) const override; + bool containsExternalFunction() const override; + void collectVARLHSVariable(set &result) const override; + void collectDynamicVariables(SymbolType type_arg, set > &result) const override; + void collectTemporary_terms(const temporary_terms_t &temporary_terms, temporary_terms_inuse_t &temporary_terms_inuse, int Curr_Block) const override; + double eval(const eval_context_t &eval_context) const noexcept(false) override; + void compile(ostream &CompileCode, unsigned int &instruction_number, bool lhs_rhs, const temporary_terms_t &temporary_terms, const map_idx_t &map_idx, bool dynamic, bool steady_dynamic, const deriv_node_temp_terms_t &tef_terms) const override; + expr_t toStatic(DataTree &static_datatree) const override; + void computeXrefs(EquationInfo &ei) const override; + pair normalizeEquation(int symb_id_endo, vector > > &List_of_Op_RHS) const override; + expr_t getChainRuleDerivative(int deriv_id, const map &recursive_variables) override; + int maxEndoLead() const override; + int maxExoLead() const override; + int maxEndoLag() const override; + int maxExoLag() const override; + int maxLead() const override; + int maxLag() const override; + int VarMinLag() const override; + void VarMaxLag(DataTree &static_datatree, set &static_lhs, int &max_lag) const override; + int PacMaxLag(vector &lhs) const override; + expr_t undiff() const override; + expr_t decreaseLeadsLags(int n) const override; + expr_t substituteEndoLeadGreaterThanTwo(subst_table_t &subst_table, vector &neweqs, bool deterministic_model) const override; + expr_t substituteEndoLagGreaterThanTwo(subst_table_t &subst_table, vector &neweqs) const override; + expr_t substituteExoLead(subst_table_t &subst_table, vector &neweqs, bool deterministic_model) const override; + expr_t substituteExoLag(subst_table_t &subst_table, vector &neweqs) const override; + expr_t substituteExpectation(subst_table_t &subst_table, vector &neweqs, bool partial_information_model) const override; + expr_t substituteAdl() const override; + void findDiffNodes(DataTree &static_datatree, diff_table_t &diff_table) const override; + void findUnaryOpNodesForAuxVarCreation(DataTree &static_datatree, diff_table_t &nodes) const override; + expr_t substituteDiff(DataTree &static_datatree, diff_table_t &diff_table, subst_table_t &subst_table, vector &neweqs) const override; + expr_t substituteUnaryOpNodes(DataTree &static_datatree, diff_table_t &nodes, subst_table_t &subst_table, vector &neweqs) const override; + expr_t substitutePacExpectation(map &subst_table) override; + expr_t decreaseLeadsLagsPredeterminedVariables() const override; + expr_t differentiateForwardVars(const vector &subset, subst_table_t &subst_table, vector &neweqs) const override; + bool isNumConstNodeEqualTo(double value) const override; + bool containsEndogenous() const override; + bool containsExogenous() const override; + int countDiffs() const override; + bool isVariableNodeEqualTo(SymbolType type_arg, int variable_id, int lag_arg) const override; + expr_t replaceTrendVar() const override; + expr_t detrend(int symb_id, bool log_trend, expr_t trend) const override; + expr_t cloneDynamic(DataTree &dynamic_datatree) const override; + expr_t removeTrendLeadLag(map trend_symbols_map) const override; + bool isInStaticForm() const override; + void setVarExpectationIndex(map > &var_model_info) override; + void walkPacParameters(bool &pac_encountered, pair &lhs, set > > &ec_params_and_vars, set > > ¶ms_and_vars) const override; + void addParamInfoToPac(pair &lhs_arg, set > > &ec_params_and_vars_arg, set > > ¶ms_and_vars_arg) override; + void fillPacExpectationVarInfo(string &model_name_arg, vector &lhs_arg, int max_lag_arg, vector &nonstationary_arg, int growth_symb_id_arg, int equation_number_arg) override; + bool isVarModelReferenced(const string &model_info_name) const override; + void getEndosAndMaxLags(map &model_endos_and_lags) const override; + expr_t substituteStaticAuxiliaryVariable() const override; }; //! Symbol or variable node @@ -638,26 +638,26 @@ private: const SymbolType type; //! A positive value is a lead, a negative is a lag const int lag; - virtual expr_t computeDerivative(int deriv_id); + expr_t computeDerivative(int deriv_id) override; public: VariableNode(DataTree &datatree_arg, int symb_id_arg, int lag_arg); - virtual void prepareForDerivation(); - virtual void writeOutput(ostream &output, ExprNodeOutputType output_type, const temporary_terms_t &temporary_terms, const temporary_terms_idxs_t &temporary_terms_idxs, const deriv_node_temp_terms_t &tef_terms) const; - virtual void writeJsonOutput(ostream &output, const temporary_terms_t &temporary_terms, const deriv_node_temp_terms_t &tef_terms, const bool isdynamic) const; - virtual bool containsExternalFunction() const; - virtual void collectVARLHSVariable(set &result) const; - virtual void collectDynamicVariables(SymbolType type_arg, set > &result) const; - virtual void computeTemporaryTerms(map &reference_count, + void prepareForDerivation() override; + void writeOutput(ostream &output, ExprNodeOutputType output_type, const temporary_terms_t &temporary_terms, const temporary_terms_idxs_t &temporary_terms_idxs, const deriv_node_temp_terms_t &tef_terms) const override; + void writeJsonOutput(ostream &output, const temporary_terms_t &temporary_terms, const deriv_node_temp_terms_t &tef_terms, const bool isdynamic) const override; + bool containsExternalFunction() const override; + void collectVARLHSVariable(set &result) const override; + void collectDynamicVariables(SymbolType type_arg, set > &result) const override; + void computeTemporaryTerms(map &reference_count, temporary_terms_t &temporary_terms, map > &first_occurence, int Curr_block, vector< vector > &v_temporary_terms, - int equation) const; - virtual void collectTemporary_terms(const temporary_terms_t &temporary_terms, temporary_terms_inuse_t &temporary_terms_inuse, int Curr_Block) const; - virtual double eval(const eval_context_t &eval_context) const noexcept(false); - virtual void compile(ostream &CompileCode, unsigned int &instruction_number, bool lhs_rhs, const temporary_terms_t &temporary_terms, const map_idx_t &map_idx, bool dynamic, bool steady_dynamic, const deriv_node_temp_terms_t &tef_terms) const; - virtual expr_t toStatic(DataTree &static_datatree) const; - virtual void computeXrefs(EquationInfo &ei) const; + int equation) const override; + void collectTemporary_terms(const temporary_terms_t &temporary_terms, temporary_terms_inuse_t &temporary_terms_inuse, int Curr_Block) const override; + double eval(const eval_context_t &eval_context) const noexcept(false) override; + void compile(ostream &CompileCode, unsigned int &instruction_number, bool lhs_rhs, const temporary_terms_t &temporary_terms, const map_idx_t &map_idx, bool dynamic, bool steady_dynamic, const deriv_node_temp_terms_t &tef_terms) const override; + expr_t toStatic(DataTree &static_datatree) const override; + void computeXrefs(EquationInfo &ei) const override; SymbolType get_type() const { @@ -673,50 +673,50 @@ public: { return lag; }; - virtual pair normalizeEquation(int symb_id_endo, vector > > &List_of_Op_RHS) const; - virtual expr_t getChainRuleDerivative(int deriv_id, const map &recursive_variables); - virtual int maxEndoLead() const; - virtual int maxExoLead() const; - virtual int maxEndoLag() const; - virtual int maxExoLag() const; - virtual int maxLead() const; - virtual int maxLag() const; - virtual int VarMinLag() const; - virtual void VarMaxLag(DataTree &static_datatree, set &static_lhs, int &max_lag) const; - virtual int PacMaxLag(vector &lhs) const; - virtual expr_t undiff() const; - virtual expr_t decreaseLeadsLags(int n) const; - virtual expr_t substituteEndoLeadGreaterThanTwo(subst_table_t &subst_table, vector &neweqs, bool deterministic_model) const; - virtual expr_t substituteEndoLagGreaterThanTwo(subst_table_t &subst_table, vector &neweqs) const; - virtual expr_t substituteExoLead(subst_table_t &subst_table, vector &neweqs, bool deterministic_model) const; - virtual expr_t substituteExoLag(subst_table_t &subst_table, vector &neweqs) const; - virtual expr_t substituteExpectation(subst_table_t &subst_table, vector &neweqs, bool partial_information_model) const; - virtual expr_t substituteAdl() const; - virtual void findDiffNodes(DataTree &static_datatree, diff_table_t &diff_table) const; - virtual void findUnaryOpNodesForAuxVarCreation(DataTree &static_datatree, diff_table_t &nodes) const; - virtual expr_t substituteDiff(DataTree &static_datatree, diff_table_t &diff_table, subst_table_t &subst_table, vector &neweqs) const; - virtual expr_t substituteUnaryOpNodes(DataTree &static_datatree, diff_table_t &nodes, subst_table_t &subst_table, vector &neweqs) const; - virtual expr_t substitutePacExpectation(map &subst_table); - virtual expr_t decreaseLeadsLagsPredeterminedVariables() const; - virtual expr_t differentiateForwardVars(const vector &subset, subst_table_t &subst_table, vector &neweqs) const; - virtual bool isNumConstNodeEqualTo(double value) const; - virtual bool containsEndogenous() const; - virtual bool containsExogenous() const; - virtual int countDiffs() const; - virtual bool isVariableNodeEqualTo(SymbolType type_arg, int variable_id, int lag_arg) const; - 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 removeTrendLeadLag(map trend_symbols_map) const; - virtual bool isInStaticForm() const; - virtual void setVarExpectationIndex(map > &var_model_info); - virtual void walkPacParameters(bool &pac_encountered, pair &lhs, set > > &ec_params_and_vars, set > > ¶ms_and_vars) const; - virtual void addParamInfoToPac(pair &lhs_arg, set > > &ec_params_and_vars_arg, set > > ¶ms_and_vars_arg); - virtual void fillPacExpectationVarInfo(string &model_name_arg, vector &lhs_arg, int max_lag_arg, vector &nonstationary_arg, int growth_symb_id_arg, int equation_number_arg); - virtual bool isVarModelReferenced(const string &model_info_name) const; - virtual void getEndosAndMaxLags(map &model_endos_and_lags) const; + pair normalizeEquation(int symb_id_endo, vector > > &List_of_Op_RHS) const override; + expr_t getChainRuleDerivative(int deriv_id, const map &recursive_variables) override; + int maxEndoLead() const override; + int maxExoLead() const override; + int maxEndoLag() const override; + int maxExoLag() const override; + int maxLead() const override; + int maxLag() const override; + int VarMinLag() const override; + void VarMaxLag(DataTree &static_datatree, set &static_lhs, int &max_lag) const override; + int PacMaxLag(vector &lhs) const override; + expr_t undiff() const override; + expr_t decreaseLeadsLags(int n) const override; + expr_t substituteEndoLeadGreaterThanTwo(subst_table_t &subst_table, vector &neweqs, bool deterministic_model) const override; + expr_t substituteEndoLagGreaterThanTwo(subst_table_t &subst_table, vector &neweqs) const override; + expr_t substituteExoLead(subst_table_t &subst_table, vector &neweqs, bool deterministic_model) const override; + expr_t substituteExoLag(subst_table_t &subst_table, vector &neweqs) const override; + expr_t substituteExpectation(subst_table_t &subst_table, vector &neweqs, bool partial_information_model) const override; + expr_t substituteAdl() const override; + void findDiffNodes(DataTree &static_datatree, diff_table_t &diff_table) const override; + void findUnaryOpNodesForAuxVarCreation(DataTree &static_datatree, diff_table_t &nodes) const override; + expr_t substituteDiff(DataTree &static_datatree, diff_table_t &diff_table, subst_table_t &subst_table, vector &neweqs) const override; + expr_t substituteUnaryOpNodes(DataTree &static_datatree, diff_table_t &nodes, subst_table_t &subst_table, vector &neweqs) const override; + expr_t substitutePacExpectation(map &subst_table) override; + expr_t decreaseLeadsLagsPredeterminedVariables() const override; + expr_t differentiateForwardVars(const vector &subset, subst_table_t &subst_table, vector &neweqs) const override; + bool isNumConstNodeEqualTo(double value) const override; + bool containsEndogenous() const override; + bool containsExogenous() const override; + int countDiffs() const override; + bool isVariableNodeEqualTo(SymbolType type_arg, int variable_id, int lag_arg) const override; + expr_t replaceTrendVar() const override; + expr_t detrend(int symb_id, bool log_trend, expr_t trend) const override; + expr_t cloneDynamic(DataTree &dynamic_datatree) const override; + expr_t removeTrendLeadLag(map trend_symbols_map) const override; + bool isInStaticForm() const override; + void setVarExpectationIndex(map > &var_model_info) override; + void walkPacParameters(bool &pac_encountered, pair &lhs, set > > &ec_params_and_vars, set > > ¶ms_and_vars) const override; + void addParamInfoToPac(pair &lhs_arg, set > > &ec_params_and_vars_arg, set > > ¶ms_and_vars_arg) override; + void fillPacExpectationVarInfo(string &model_name_arg, vector &lhs_arg, int max_lag_arg, vector &nonstationary_arg, int growth_symb_id_arg, int equation_number_arg) override; + bool isVarModelReferenced(const string &model_info_name) const override; + void getEndosAndMaxLags(map &model_endos_and_lags) const override; //! Substitute auxiliary variables by their expression in static model - virtual expr_t substituteStaticAuxiliaryVariable() const; + expr_t substituteStaticAuxiliaryVariable() const override; }; //! Unary operator node @@ -731,45 +731,45 @@ private: const UnaryOpcode op_code; const string adl_param_name; const vector adl_lags; - virtual expr_t computeDerivative(int deriv_id); - virtual int cost(int cost, bool is_matlab) const; - virtual int cost(const temporary_terms_t &temporary_terms, bool is_matlab) const; - virtual int cost(const map &temp_terms_map, bool is_matlab) const; + expr_t computeDerivative(int deriv_id) override; + int cost(int cost, bool is_matlab) const override; + int cost(const temporary_terms_t &temporary_terms, bool is_matlab) const override; + int cost(const map &temp_terms_map, bool is_matlab) const override; //! Returns the derivative of this node if darg is the derivative of the argument expr_t composeDerivatives(expr_t darg, int deriv_id); public: UnaryOpNode(DataTree &datatree_arg, UnaryOpcode op_code_arg, const expr_t arg_arg, int expectation_information_set_arg, int param1_symb_id_arg, int param2_symb_id_arg, string adl_param_name_arg, vector adl_lags_arg); - virtual void prepareForDerivation(); - virtual void computeTemporaryTerms(map > &reference_count, + void prepareForDerivation() override; + void computeTemporaryTerms(map > &reference_count, map &temp_terms_map, - bool is_matlab, NodeTreeReference tr) const; - virtual void writeOutput(ostream &output, ExprNodeOutputType output_type, const temporary_terms_t &temporary_terms, const temporary_terms_idxs_t &temporary_terms_idxs, const deriv_node_temp_terms_t &tef_terms) const; - virtual void writeJsonOutput(ostream &output, const temporary_terms_t &temporary_terms, const deriv_node_temp_terms_t &tef_terms, const bool isdynamic) const; - virtual bool containsExternalFunction() const; - virtual void writeExternalFunctionOutput(ostream &output, ExprNodeOutputType output_type, + bool is_matlab, NodeTreeReference tr) const override; + void writeOutput(ostream &output, ExprNodeOutputType output_type, const temporary_terms_t &temporary_terms, const temporary_terms_idxs_t &temporary_terms_idxs, const deriv_node_temp_terms_t &tef_terms) const override; + void writeJsonOutput(ostream &output, const temporary_terms_t &temporary_terms, const deriv_node_temp_terms_t &tef_terms, const bool isdynamic) const override; + bool containsExternalFunction() const override; + void writeExternalFunctionOutput(ostream &output, ExprNodeOutputType output_type, const temporary_terms_t &temporary_terms, const temporary_terms_idxs_t &temporary_terms_idxs, - deriv_node_temp_terms_t &tef_terms) const; - virtual void writeJsonExternalFunctionOutput(vector &efout, + deriv_node_temp_terms_t &tef_terms) const override; + void writeJsonExternalFunctionOutput(vector &efout, const temporary_terms_t &temporary_terms, deriv_node_temp_terms_t &tef_terms, - const bool isdynamic) const; - virtual void compileExternalFunctionOutput(ostream &CompileCode, unsigned int &instruction_number, + const bool isdynamic) const override; + void compileExternalFunctionOutput(ostream &CompileCode, unsigned int &instruction_number, bool lhs_rhs, const temporary_terms_t &temporary_terms, const map_idx_t &map_idx, bool dynamic, bool steady_dynamic, - deriv_node_temp_terms_t &tef_terms) const; - virtual void computeTemporaryTerms(map &reference_count, + deriv_node_temp_terms_t &tef_terms) const override; + void computeTemporaryTerms(map &reference_count, temporary_terms_t &temporary_terms, map > &first_occurence, int Curr_block, vector< vector > &v_temporary_terms, - int equation) const; - virtual void collectVARLHSVariable(set &result) const; - virtual void collectDynamicVariables(SymbolType type_arg, set > &result) const; - virtual void collectTemporary_terms(const temporary_terms_t &temporary_terms, temporary_terms_inuse_t &temporary_terms_inuse, int Curr_Block) const; + int equation) const override; + void collectVARLHSVariable(set &result) const override; + void collectDynamicVariables(SymbolType type_arg, set > &result) const override; + void collectTemporary_terms(const temporary_terms_t &temporary_terms, temporary_terms_inuse_t &temporary_terms_inuse, int Curr_Block) const override; static double eval_opcode(UnaryOpcode op_code, double v) noexcept(false); - virtual double eval(const eval_context_t &eval_context) const noexcept(false); - virtual void compile(ostream &CompileCode, unsigned int &instruction_number, bool lhs_rhs, const temporary_terms_t &temporary_terms, const map_idx_t &map_idx, bool dynamic, bool steady_dynamic, const deriv_node_temp_terms_t &tef_terms) const; + double eval(const eval_context_t &eval_context) const noexcept(false) override; + void compile(ostream &CompileCode, unsigned int &instruction_number, bool lhs_rhs, const temporary_terms_t &temporary_terms, const map_idx_t &map_idx, bool dynamic, bool steady_dynamic, const deriv_node_temp_terms_t &tef_terms) const override; //! Returns operand expr_t get_arg() const @@ -782,55 +782,55 @@ public: { return (op_code); }; - virtual expr_t toStatic(DataTree &static_datatree) const; - virtual void computeXrefs(EquationInfo &ei) const; - virtual pair normalizeEquation(int symb_id_endo, vector > > &List_of_Op_RHS) const; - virtual expr_t getChainRuleDerivative(int deriv_id, const map &recursive_variables); - virtual int maxEndoLead() const; - virtual int maxExoLead() const; - virtual int maxEndoLag() const; - virtual int maxExoLag() const; - virtual int maxLead() const; - virtual int maxLag() const; - virtual int VarMinLag() const; - virtual void VarMaxLag(DataTree &static_datatree, set &static_lhs, int &max_lag) const; - virtual int PacMaxLag(vector &lhs) const; - virtual expr_t undiff() const; - virtual expr_t decreaseLeadsLags(int n) const; - virtual expr_t substituteEndoLeadGreaterThanTwo(subst_table_t &subst_table, vector &neweqs, bool deterministic_model) const; + expr_t toStatic(DataTree &static_datatree) const override; + void computeXrefs(EquationInfo &ei) const override; + pair normalizeEquation(int symb_id_endo, vector > > &List_of_Op_RHS) const override; + expr_t getChainRuleDerivative(int deriv_id, const map &recursive_variables) override; + int maxEndoLead() const override; + int maxExoLead() const override; + int maxEndoLag() const override; + int maxExoLag() const override; + int maxLead() const override; + int maxLag() const override; + int VarMinLag() const override; + void VarMaxLag(DataTree &static_datatree, set &static_lhs, int &max_lag) const override; + int PacMaxLag(vector &lhs) const override; + expr_t undiff() const override; + expr_t decreaseLeadsLags(int n) const override; + expr_t substituteEndoLeadGreaterThanTwo(subst_table_t &subst_table, vector &neweqs, bool deterministic_model) const override; //! Creates another UnaryOpNode with the same opcode, but with a possibly different datatree and argument expr_t buildSimilarUnaryOpNode(expr_t alt_arg, DataTree &alt_datatree) const; - virtual expr_t substituteEndoLagGreaterThanTwo(subst_table_t &subst_table, vector &neweqs) const; - virtual expr_t substituteExoLead(subst_table_t &subst_table, vector &neweqs, bool deterministic_model) const; - virtual expr_t substituteExoLag(subst_table_t &subst_table, vector &neweqs) const; - virtual expr_t substituteExpectation(subst_table_t &subst_table, vector &neweqs, bool partial_information_model) const; - virtual expr_t substituteAdl() const; - virtual void findDiffNodes(DataTree &static_datatree, diff_table_t &diff_table) const; + expr_t substituteEndoLagGreaterThanTwo(subst_table_t &subst_table, vector &neweqs) const override; + expr_t substituteExoLead(subst_table_t &subst_table, vector &neweqs, bool deterministic_model) const override; + expr_t substituteExoLag(subst_table_t &subst_table, vector &neweqs) const override; + expr_t substituteExpectation(subst_table_t &subst_table, vector &neweqs, bool partial_information_model) const override; + expr_t substituteAdl() const override; + void findDiffNodes(DataTree &static_datatree, diff_table_t &diff_table) const override; bool createAuxVarForUnaryOpNodeInDiffOp() const; - virtual void findUnaryOpNodesForAuxVarCreation(DataTree &static_datatree, diff_table_t &nodes) const; - virtual expr_t substituteDiff(DataTree &static_datatree, diff_table_t &diff_table, subst_table_t &subst_table, vector &neweqs) const; - virtual expr_t substituteUnaryOpNodes(DataTree &static_datatree, diff_table_t &nodes, subst_table_t &subst_table, vector &neweqs) const; - virtual expr_t substitutePacExpectation(map &subst_table); - virtual expr_t decreaseLeadsLagsPredeterminedVariables() const; - virtual expr_t differentiateForwardVars(const vector &subset, subst_table_t &subst_table, vector &neweqs) const; - virtual bool isNumConstNodeEqualTo(double value) const; - virtual bool containsEndogenous() const; - virtual bool containsExogenous() const; - virtual int countDiffs() const; - virtual bool isVariableNodeEqualTo(SymbolType type_arg, int variable_id, int lag_arg) const; - 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 removeTrendLeadLag(map trend_symbols_map) const; - virtual bool isInStaticForm() const; - virtual void setVarExpectationIndex(map > &var_model_info); - virtual void walkPacParameters(bool &pac_encountered, pair &lhs, set > > &ec_params_and_vars, set > > ¶ms_and_vars) const; - virtual void addParamInfoToPac(pair &lhs_arg, set > > &ec_params_and_vars_arg, set > > ¶ms_and_vars_arg); - virtual void fillPacExpectationVarInfo(string &model_name_arg, vector &lhs_arg, int max_lag_arg, vector &nonstationary_arg, int growth_symb_id_arg, int equation_number_arg); - virtual bool isVarModelReferenced(const string &model_info_name) const; - virtual void getEndosAndMaxLags(map &model_endos_and_lags) const; + void findUnaryOpNodesForAuxVarCreation(DataTree &static_datatree, diff_table_t &nodes) const override; + expr_t substituteDiff(DataTree &static_datatree, diff_table_t &diff_table, subst_table_t &subst_table, vector &neweqs) const override; + expr_t substituteUnaryOpNodes(DataTree &static_datatree, diff_table_t &nodes, subst_table_t &subst_table, vector &neweqs) const override; + expr_t substitutePacExpectation(map &subst_table) override; + expr_t decreaseLeadsLagsPredeterminedVariables() const override; + expr_t differentiateForwardVars(const vector &subset, subst_table_t &subst_table, vector &neweqs) const override; + bool isNumConstNodeEqualTo(double value) const override; + bool containsEndogenous() const override; + bool containsExogenous() const override; + int countDiffs() const override; + bool isVariableNodeEqualTo(SymbolType type_arg, int variable_id, int lag_arg) const override; + expr_t replaceTrendVar() const override; + expr_t detrend(int symb_id, bool log_trend, expr_t trend) const override; + expr_t cloneDynamic(DataTree &dynamic_datatree) const override; + expr_t removeTrendLeadLag(map trend_symbols_map) const override; + bool isInStaticForm() const override; + void setVarExpectationIndex(map > &var_model_info) override; + void walkPacParameters(bool &pac_encountered, pair &lhs, set > > &ec_params_and_vars, set > > ¶ms_and_vars) const override; + void addParamInfoToPac(pair &lhs_arg, set > > &ec_params_and_vars_arg, set > > ¶ms_and_vars_arg) override; + void fillPacExpectationVarInfo(string &model_name_arg, vector &lhs_arg, int max_lag_arg, vector &nonstationary_arg, int growth_symb_id_arg, int equation_number_arg) override; + bool isVarModelReferenced(const string &model_info_name) const override; + void getEndosAndMaxLags(map &model_endos_and_lags) const override; //! Substitute auxiliary variables by their expression in static model - virtual expr_t substituteStaticAuxiliaryVariable() const; + expr_t substituteStaticAuxiliaryVariable() const override; }; //! Binary operator node @@ -839,10 +839,10 @@ class BinaryOpNode : public ExprNode private: const expr_t arg1, arg2; const BinaryOpcode op_code; - virtual expr_t computeDerivative(int deriv_id); - virtual int cost(int cost, bool is_matlab) const; - virtual int cost(const temporary_terms_t &temporary_terms, bool is_matlab) const; - virtual int cost(const map &temp_terms_map, bool is_matlab) const; + expr_t computeDerivative(int deriv_id) override; + int cost(int cost, bool is_matlab) const override; + int cost(const temporary_terms_t &temporary_terms, bool is_matlab) const override; + int cost(const map &temp_terms_map, bool is_matlab) const override; //! Returns the derivative of this node if darg1 and darg2 are the derivatives of the arguments expr_t composeDerivatives(expr_t darg1, expr_t darg2); const int powerDerivOrder; @@ -852,39 +852,39 @@ public: BinaryOpcode op_code_arg, const expr_t arg2_arg); BinaryOpNode(DataTree &datatree_arg, const expr_t arg1_arg, BinaryOpcode op_code_arg, const expr_t arg2_arg, int powerDerivOrder); - virtual void prepareForDerivation(); - virtual int precedenceJson(const temporary_terms_t &temporary_terms) const; - virtual int precedence(ExprNodeOutputType output_type, const temporary_terms_t &temporary_terms) const; - virtual void computeTemporaryTerms(map > &reference_count, + void prepareForDerivation() override; + int precedenceJson(const temporary_terms_t &temporary_terms) const override; + int precedence(ExprNodeOutputType output_type, const temporary_terms_t &temporary_terms) const override; + void computeTemporaryTerms(map > &reference_count, map &temp_terms_map, - bool is_matlab, NodeTreeReference tr) const; - virtual void writeOutput(ostream &output, ExprNodeOutputType output_type, const temporary_terms_t &temporary_terms, const temporary_terms_idxs_t &temporary_terms_idxs, const deriv_node_temp_terms_t &tef_terms) const; - virtual void writeJsonOutput(ostream &output, const temporary_terms_t &temporary_terms, const deriv_node_temp_terms_t &tef_terms, const bool isdynamic) const; - virtual bool containsExternalFunction() const; - virtual void writeExternalFunctionOutput(ostream &output, ExprNodeOutputType output_type, + bool is_matlab, NodeTreeReference tr) const override; + void writeOutput(ostream &output, ExprNodeOutputType output_type, const temporary_terms_t &temporary_terms, const temporary_terms_idxs_t &temporary_terms_idxs, const deriv_node_temp_terms_t &tef_terms) const override; + void writeJsonOutput(ostream &output, const temporary_terms_t &temporary_terms, const deriv_node_temp_terms_t &tef_terms, const bool isdynamic) const override; + bool containsExternalFunction() const override; + void writeExternalFunctionOutput(ostream &output, ExprNodeOutputType output_type, const temporary_terms_t &temporary_terms, const temporary_terms_idxs_t &temporary_terms_idxs, - deriv_node_temp_terms_t &tef_terms) const; - virtual void writeJsonExternalFunctionOutput(vector &efout, + deriv_node_temp_terms_t &tef_terms) const override; + void writeJsonExternalFunctionOutput(vector &efout, const temporary_terms_t &temporary_terms, deriv_node_temp_terms_t &tef_terms, - const bool isdynamic) const; - virtual void compileExternalFunctionOutput(ostream &CompileCode, unsigned int &instruction_number, + const bool isdynamic) const override; + void compileExternalFunctionOutput(ostream &CompileCode, unsigned int &instruction_number, bool lhs_rhs, const temporary_terms_t &temporary_terms, const map_idx_t &map_idx, bool dynamic, bool steady_dynamic, - deriv_node_temp_terms_t &tef_terms) const; - virtual void computeTemporaryTerms(map &reference_count, + deriv_node_temp_terms_t &tef_terms) const override; + void computeTemporaryTerms(map &reference_count, temporary_terms_t &temporary_terms, map > &first_occurence, int Curr_block, vector< vector > &v_temporary_terms, - int equation) const; - virtual void collectVARLHSVariable(set &result) const; - virtual void collectDynamicVariables(SymbolType type_arg, set > &result) const; - virtual void collectTemporary_terms(const temporary_terms_t &temporary_terms, temporary_terms_inuse_t &temporary_terms_inuse, int Curr_Block) const; + int equation) const override; + void collectVARLHSVariable(set &result) const override; + void collectDynamicVariables(SymbolType type_arg, set > &result) const override; + void collectTemporary_terms(const temporary_terms_t &temporary_terms, temporary_terms_inuse_t &temporary_terms_inuse, int Curr_Block) const override; static double eval_opcode(double v1, BinaryOpcode op_code, double v2, int derivOrder) noexcept(false); - virtual double eval(const eval_context_t &eval_context) const noexcept(false); - virtual void compile(ostream &CompileCode, unsigned int &instruction_number, bool lhs_rhs, const temporary_terms_t &temporary_terms, const map_idx_t &map_idx, bool dynamic, bool steady_dynamic, const deriv_node_temp_terms_t &tef_terms) const; + double eval(const eval_context_t &eval_context) const noexcept(false) override; + void compile(ostream &CompileCode, unsigned int &instruction_number, bool lhs_rhs, const temporary_terms_t &temporary_terms, const map_idx_t &map_idx, bool dynamic, bool steady_dynamic, const deriv_node_temp_terms_t &tef_terms) const override; virtual expr_t Compute_RHS(expr_t arg1, expr_t arg2, int op, int op_type) const; //! Returns first operand expr_t @@ -913,60 +913,60 @@ public: pair &lhs, set > > &ec_params_and_vars, set > > &ar_params_and_vars) const; - virtual expr_t toStatic(DataTree &static_datatree) const; - virtual void computeXrefs(EquationInfo &ei) const; - virtual pair normalizeEquation(int symb_id_endo, vector > > &List_of_Op_RHS) const; - virtual expr_t getChainRuleDerivative(int deriv_id, const map &recursive_variables); - virtual int maxEndoLead() const; - virtual int maxExoLead() const; - virtual int maxEndoLag() const; - virtual int maxExoLag() const; - virtual int maxLead() const; - virtual int maxLag() const; - virtual int VarMinLag() const; - virtual void VarMaxLag(DataTree &static_datatree, set &static_lhs, int &max_lag) const; - virtual int PacMaxLag(vector &lhs) const; - virtual expr_t undiff() const; - virtual expr_t decreaseLeadsLags(int n) const; - virtual expr_t substituteEndoLeadGreaterThanTwo(subst_table_t &subst_table, vector &neweqs, bool deterministic_model) const; + expr_t toStatic(DataTree &static_datatree) const override; + void computeXrefs(EquationInfo &ei) const override; + pair normalizeEquation(int symb_id_endo, vector > > &List_of_Op_RHS) const override; + expr_t getChainRuleDerivative(int deriv_id, const map &recursive_variables) override; + int maxEndoLead() const override; + int maxExoLead() const override; + int maxEndoLag() const override; + int maxExoLag() const override; + int maxLead() const override; + int maxLag() const override; + int VarMinLag() const override; + void VarMaxLag(DataTree &static_datatree, set &static_lhs, int &max_lag) const override; + int PacMaxLag(vector &lhs) const override; + expr_t undiff() const override; + expr_t decreaseLeadsLags(int n) const override; + expr_t substituteEndoLeadGreaterThanTwo(subst_table_t &subst_table, vector &neweqs, bool deterministic_model) const override; //! Creates another BinaryOpNode with the same opcode, but with a possibly different datatree and arguments expr_t buildSimilarBinaryOpNode(expr_t alt_arg1, expr_t alt_arg2, DataTree &alt_datatree) const; - virtual expr_t substituteEndoLagGreaterThanTwo(subst_table_t &subst_table, vector &neweqs) const; - virtual expr_t substituteExoLead(subst_table_t &subst_table, vector &neweqs, bool deterministic_model) const; - virtual expr_t substituteExoLag(subst_table_t &subst_table, vector &neweqs) const; - virtual expr_t substituteExpectation(subst_table_t &subst_table, vector &neweqs, bool partial_information_model) const; - virtual expr_t substituteAdl() const; - virtual void findDiffNodes(DataTree &static_datatree, diff_table_t &diff_table) const; - virtual void findUnaryOpNodesForAuxVarCreation(DataTree &static_datatree, diff_table_t &nodes) const; - virtual expr_t substituteDiff(DataTree &static_datatree, diff_table_t &diff_table, subst_table_t &subst_table, vector &neweqs) const; - virtual expr_t substituteUnaryOpNodes(DataTree &static_datatree, diff_table_t &nodes, subst_table_t &subst_table, vector &neweqs) const; - virtual expr_t substitutePacExpectation(map &subst_table); - virtual expr_t decreaseLeadsLagsPredeterminedVariables() const; - virtual expr_t differentiateForwardVars(const vector &subset, subst_table_t &subst_table, vector &neweqs) const; - virtual bool isNumConstNodeEqualTo(double value) const; - virtual bool containsEndogenous() const; - virtual bool containsExogenous() const; - virtual int countDiffs() const; - virtual bool isVariableNodeEqualTo(SymbolType type_arg, int variable_id, int lag_arg) const; - 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 removeTrendLeadLag(map trend_symbols_map) const; + expr_t substituteEndoLagGreaterThanTwo(subst_table_t &subst_table, vector &neweqs) const override; + expr_t substituteExoLead(subst_table_t &subst_table, vector &neweqs, bool deterministic_model) const override; + expr_t substituteExoLag(subst_table_t &subst_table, vector &neweqs) const override; + expr_t substituteExpectation(subst_table_t &subst_table, vector &neweqs, bool partial_information_model) const override; + expr_t substituteAdl() const override; + void findDiffNodes(DataTree &static_datatree, diff_table_t &diff_table) const override; + void findUnaryOpNodesForAuxVarCreation(DataTree &static_datatree, diff_table_t &nodes) const override; + expr_t substituteDiff(DataTree &static_datatree, diff_table_t &diff_table, subst_table_t &subst_table, vector &neweqs) const override; + expr_t substituteUnaryOpNodes(DataTree &static_datatree, diff_table_t &nodes, subst_table_t &subst_table, vector &neweqs) const override; + expr_t substitutePacExpectation(map &subst_table) override; + expr_t decreaseLeadsLagsPredeterminedVariables() const override; + expr_t differentiateForwardVars(const vector &subset, subst_table_t &subst_table, vector &neweqs) const override; + bool isNumConstNodeEqualTo(double value) const override; + bool containsEndogenous() const override; + bool containsExogenous() const override; + int countDiffs() const override; + bool isVariableNodeEqualTo(SymbolType type_arg, int variable_id, int lag_arg) const override; + expr_t replaceTrendVar() const override; + expr_t detrend(int symb_id, bool log_trend, expr_t trend) const override; + expr_t cloneDynamic(DataTree &dynamic_datatree) const override; + expr_t removeTrendLeadLag(map trend_symbols_map) const override; //! Function to write out the oPowerNode in expr_t terms as opposed to writing out the function itself expr_t unpackPowerDeriv() const; //! Returns MULT_i*(lhs-rhs) = 0, creating multiplier MULT_i expr_t addMultipliersToConstraints(int i); //! Returns the non-zero hand-side of an equation (that must have a hand side equal to zero) expr_t getNonZeroPartofEquation() const; - virtual bool isInStaticForm() const; - virtual void setVarExpectationIndex(map > &var_model_info); - virtual void walkPacParameters(bool &pac_encountered, pair &lhs, set > > &ec_params_and_vars, set > > ¶ms_and_vars) const; - virtual void addParamInfoToPac(pair &lhs_arg, set > > &ec_params_and_vars_arg, set > > &ar_params_and_vars_arg); - virtual void fillPacExpectationVarInfo(string &model_name_arg, vector &lhs_arg, int max_lag_arg, vector &nonstationary_arg, int growth_symb_id_arg, int equation_number_arg); - virtual bool isVarModelReferenced(const string &model_info_name) const; - virtual void getEndosAndMaxLags(map &model_endos_and_lags) const; + bool isInStaticForm() const override; + void setVarExpectationIndex(map > &var_model_info) override; + void walkPacParameters(bool &pac_encountered, pair &lhs, set > > &ec_params_and_vars, set > > ¶ms_and_vars) const override; + void addParamInfoToPac(pair &lhs_arg, set > > &ec_params_and_vars_arg, set > > &ar_params_and_vars_arg) override; + void fillPacExpectationVarInfo(string &model_name_arg, vector &lhs_arg, int max_lag_arg, vector &nonstationary_arg, int growth_symb_id_arg, int equation_number_arg) override; + bool isVarModelReferenced(const string &model_info_name) const override; + void getEndosAndMaxLags(map &model_endos_and_lags) const override; //! Substitute auxiliary variables by their expression in static model - virtual expr_t substituteStaticAuxiliaryVariable() const; + expr_t substituteStaticAuxiliaryVariable() const override; //! Substitute auxiliary variables by their expression in static model auxiliary variable definition virtual expr_t substituteStaticAuxiliaryDefinition() const; }; @@ -978,102 +978,102 @@ class TrinaryOpNode : public ExprNode private: const expr_t arg1, arg2, arg3; const TrinaryOpcode op_code; - virtual expr_t computeDerivative(int deriv_id); - virtual int cost(int cost, bool is_matlab) const; - virtual int cost(const temporary_terms_t &temporary_terms, bool is_matlab) const; - virtual int cost(const map &temp_terms_map, bool is_matlab) const; + expr_t computeDerivative(int deriv_id) override; + int cost(int cost, bool is_matlab) const override; + int cost(const temporary_terms_t &temporary_terms, bool is_matlab) const override; + int cost(const map &temp_terms_map, bool is_matlab) const override; //! Returns the derivative of this node if darg1, darg2 and darg3 are the derivatives of the arguments expr_t composeDerivatives(expr_t darg1, expr_t darg2, expr_t darg3); public: TrinaryOpNode(DataTree &datatree_arg, const expr_t arg1_arg, TrinaryOpcode op_code_arg, const expr_t arg2_arg, const expr_t arg3_arg); - virtual void prepareForDerivation(); - virtual int precedence(ExprNodeOutputType output_type, const temporary_terms_t &temporary_terms) const; - virtual void computeTemporaryTerms(map > &reference_count, + void prepareForDerivation() override; + int precedence(ExprNodeOutputType output_type, const temporary_terms_t &temporary_terms) const override; + void computeTemporaryTerms(map > &reference_count, map &temp_terms_map, - bool is_matlab, NodeTreeReference tr) const; - virtual void writeOutput(ostream &output, ExprNodeOutputType output_type, const temporary_terms_t &temporary_terms, const temporary_terms_idxs_t &temporary_terms_idxs, const deriv_node_temp_terms_t &tef_terms) const; - virtual void writeJsonOutput(ostream &output, const temporary_terms_t &temporary_terms, const deriv_node_temp_terms_t &tef_terms, const bool isdynamic) const; - virtual bool containsExternalFunction() const; - virtual void writeExternalFunctionOutput(ostream &output, ExprNodeOutputType output_type, + bool is_matlab, NodeTreeReference tr) const override; + void writeOutput(ostream &output, ExprNodeOutputType output_type, const temporary_terms_t &temporary_terms, const temporary_terms_idxs_t &temporary_terms_idxs, const deriv_node_temp_terms_t &tef_terms) const override; + void writeJsonOutput(ostream &output, const temporary_terms_t &temporary_terms, const deriv_node_temp_terms_t &tef_terms, const bool isdynamic) const override; + bool containsExternalFunction() const override; + void writeExternalFunctionOutput(ostream &output, ExprNodeOutputType output_type, const temporary_terms_t &temporary_terms, const temporary_terms_idxs_t &temporary_terms_idxs, - deriv_node_temp_terms_t &tef_terms) const; - virtual void writeJsonExternalFunctionOutput(vector &efout, + deriv_node_temp_terms_t &tef_terms) const override; + void writeJsonExternalFunctionOutput(vector &efout, const temporary_terms_t &temporary_terms, deriv_node_temp_terms_t &tef_terms, - const bool isdynamic) const; - virtual void compileExternalFunctionOutput(ostream &CompileCode, unsigned int &instruction_number, + const bool isdynamic) const override; + void compileExternalFunctionOutput(ostream &CompileCode, unsigned int &instruction_number, bool lhs_rhs, const temporary_terms_t &temporary_terms, const map_idx_t &map_idx, bool dynamic, bool steady_dynamic, - deriv_node_temp_terms_t &tef_terms) const; - virtual void computeTemporaryTerms(map &reference_count, + deriv_node_temp_terms_t &tef_terms) const override; + void computeTemporaryTerms(map &reference_count, temporary_terms_t &temporary_terms, map > &first_occurence, int Curr_block, vector< vector > &v_temporary_terms, - int equation) const; - virtual void collectVARLHSVariable(set &result) const; - virtual void collectDynamicVariables(SymbolType type_arg, set > &result) const; - virtual void collectTemporary_terms(const temporary_terms_t &temporary_terms, temporary_terms_inuse_t &temporary_terms_inuse, int Curr_Block) const; + int equation) const override; + void collectVARLHSVariable(set &result) const override; + void collectDynamicVariables(SymbolType type_arg, set > &result) const override; + void collectTemporary_terms(const temporary_terms_t &temporary_terms, temporary_terms_inuse_t &temporary_terms_inuse, int Curr_Block) const override; static double eval_opcode(double v1, TrinaryOpcode op_code, double v2, double v3) noexcept(false); - virtual double eval(const eval_context_t &eval_context) const noexcept(false); - virtual void compile(ostream &CompileCode, unsigned int &instruction_number, bool lhs_rhs, const temporary_terms_t &temporary_terms, const map_idx_t &map_idx, bool dynamic, bool steady_dynamic, const deriv_node_temp_terms_t &tef_terms) const; - virtual expr_t toStatic(DataTree &static_datatree) const; - virtual void computeXrefs(EquationInfo &ei) const; - virtual pair normalizeEquation(int symb_id_endo, vector > > &List_of_Op_RHS) const; - virtual expr_t getChainRuleDerivative(int deriv_id, const map &recursive_variables); - virtual int maxEndoLead() const; - virtual int maxExoLead() const; - virtual int maxEndoLag() const; - virtual int maxExoLag() const; - virtual int maxLead() const; - virtual int maxLag() const; - virtual int VarMinLag() const; - virtual void VarMaxLag(DataTree &static_datatree, set &static_lhs, int &max_lag) const; - virtual int PacMaxLag(vector &lhs) const; - virtual expr_t undiff() const; - virtual expr_t decreaseLeadsLags(int n) const; - virtual expr_t substituteEndoLeadGreaterThanTwo(subst_table_t &subst_table, vector &neweqs, bool deterministic_model) const; + double eval(const eval_context_t &eval_context) const noexcept(false) override; + void compile(ostream &CompileCode, unsigned int &instruction_number, bool lhs_rhs, const temporary_terms_t &temporary_terms, const map_idx_t &map_idx, bool dynamic, bool steady_dynamic, const deriv_node_temp_terms_t &tef_terms) const override; + expr_t toStatic(DataTree &static_datatree) const override; + void computeXrefs(EquationInfo &ei) const override; + pair normalizeEquation(int symb_id_endo, vector > > &List_of_Op_RHS) const override; + expr_t getChainRuleDerivative(int deriv_id, const map &recursive_variables) override; + int maxEndoLead() const override; + int maxExoLead() const override; + int maxEndoLag() const override; + int maxExoLag() const override; + int maxLead() const override; + int maxLag() const override; + int VarMinLag() const override; + void VarMaxLag(DataTree &static_datatree, set &static_lhs, int &max_lag) const override; + int PacMaxLag(vector &lhs) const override; + expr_t undiff() const override; + expr_t decreaseLeadsLags(int n) const override; + expr_t substituteEndoLeadGreaterThanTwo(subst_table_t &subst_table, vector &neweqs, bool deterministic_model) const override; //! Creates another TrinaryOpNode with the same opcode, but with a possibly different datatree and arguments expr_t buildSimilarTrinaryOpNode(expr_t alt_arg1, expr_t alt_arg2, expr_t alt_arg3, DataTree &alt_datatree) const; - virtual expr_t substituteEndoLagGreaterThanTwo(subst_table_t &subst_table, vector &neweqs) const; - virtual expr_t substituteExoLead(subst_table_t &subst_table, vector &neweqs, bool deterministic_model) const; - virtual expr_t substituteExoLag(subst_table_t &subst_table, vector &neweqs) const; - virtual expr_t substituteExpectation(subst_table_t &subst_table, vector &neweqs, bool partial_information_model) const; - virtual expr_t substituteAdl() const; - virtual void findDiffNodes(DataTree &static_datatree, diff_table_t &diff_table) const; - virtual void findUnaryOpNodesForAuxVarCreation(DataTree &static_datatree, diff_table_t &nodes) const; - virtual expr_t substituteDiff(DataTree &static_datatree, diff_table_t &diff_table, subst_table_t &subst_table, vector &neweqs) const; - virtual expr_t substituteUnaryOpNodes(DataTree &static_datatree, diff_table_t &nodes, subst_table_t &subst_table, vector &neweqs) const; - virtual expr_t substitutePacExpectation(map &subst_table); - virtual expr_t decreaseLeadsLagsPredeterminedVariables() const; - virtual expr_t differentiateForwardVars(const vector &subset, subst_table_t &subst_table, vector &neweqs) const; - virtual bool isNumConstNodeEqualTo(double value) const; - virtual bool containsEndogenous() const; - virtual bool containsExogenous() const; - virtual int countDiffs() const; - virtual bool isVariableNodeEqualTo(SymbolType type_arg, int variable_id, int lag_arg) const; - 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 removeTrendLeadLag(map trend_symbols_map) const; - virtual bool isInStaticForm() const; - virtual void setVarExpectationIndex(map > &var_model_info); - virtual void walkPacParameters(bool &pac_encountered, pair &lhs, set > > &ec_params_and_vars, set > > ¶ms_and_vars) const; - virtual void addParamInfoToPac(pair &lhs_arg, set > > &ec_params_and_vars_arg, set > > ¶ms_and_vars_arg); - virtual void fillPacExpectationVarInfo(string &model_name_arg, vector &lhs_arg, int max_lag_arg, vector &nonstationary_arg, int growth_symb_id_arg, int equation_number_arg); - virtual bool isVarModelReferenced(const string &model_info_name) const; - virtual void getEndosAndMaxLags(map &model_endos_and_lags) const; + expr_t substituteEndoLagGreaterThanTwo(subst_table_t &subst_table, vector &neweqs) const override; + expr_t substituteExoLead(subst_table_t &subst_table, vector &neweqs, bool deterministic_model) const override; + expr_t substituteExoLag(subst_table_t &subst_table, vector &neweqs) const override; + expr_t substituteExpectation(subst_table_t &subst_table, vector &neweqs, bool partial_information_model) const override; + expr_t substituteAdl() const override; + void findDiffNodes(DataTree &static_datatree, diff_table_t &diff_table) const override; + void findUnaryOpNodesForAuxVarCreation(DataTree &static_datatree, diff_table_t &nodes) const override; + expr_t substituteDiff(DataTree &static_datatree, diff_table_t &diff_table, subst_table_t &subst_table, vector &neweqs) const override; + expr_t substituteUnaryOpNodes(DataTree &static_datatree, diff_table_t &nodes, subst_table_t &subst_table, vector &neweqs) const override; + expr_t substitutePacExpectation(map &subst_table) override; + expr_t decreaseLeadsLagsPredeterminedVariables() const override; + expr_t differentiateForwardVars(const vector &subset, subst_table_t &subst_table, vector &neweqs) const override; + bool isNumConstNodeEqualTo(double value) const override; + bool containsEndogenous() const override; + bool containsExogenous() const override; + int countDiffs() const override; + bool isVariableNodeEqualTo(SymbolType type_arg, int variable_id, int lag_arg) const override; + expr_t replaceTrendVar() const override; + expr_t detrend(int symb_id, bool log_trend, expr_t trend) const override; + expr_t cloneDynamic(DataTree &dynamic_datatree) const override; + expr_t removeTrendLeadLag(map trend_symbols_map) const override; + bool isInStaticForm() const override; + void setVarExpectationIndex(map > &var_model_info) override; + void walkPacParameters(bool &pac_encountered, pair &lhs, set > > &ec_params_and_vars, set > > ¶ms_and_vars) const override; + void addParamInfoToPac(pair &lhs_arg, set > > &ec_params_and_vars_arg, set > > ¶ms_and_vars_arg) override; + void fillPacExpectationVarInfo(string &model_name_arg, vector &lhs_arg, int max_lag_arg, vector &nonstationary_arg, int growth_symb_id_arg, int equation_number_arg) override; + bool isVarModelReferenced(const string &model_info_name) const override; + void getEndosAndMaxLags(map &model_endos_and_lags) const override; //! Substitute auxiliary variables by their expression in static model - virtual expr_t substituteStaticAuxiliaryVariable() const; + expr_t substituteStaticAuxiliaryVariable() const override; }; //! External function node class AbstractExternalFunctionNode : public ExprNode { private: - virtual expr_t computeDerivative(int deriv_id); + expr_t computeDerivative(int deriv_id) override; virtual expr_t composeDerivatives(const vector &dargs) = 0; protected: //! Thrown when trying to access an unknown entry in external_function_node_map @@ -1096,89 +1096,89 @@ protected: public: AbstractExternalFunctionNode(DataTree &datatree_arg, int symb_id_arg, vector arguments_arg); - virtual void prepareForDerivation(); - virtual void computeTemporaryTerms(map > &reference_count, + void prepareForDerivation() override; + void computeTemporaryTerms(map > &reference_count, map &temp_terms_map, - bool is_matlab, NodeTreeReference tr) const; - virtual void writeOutput(ostream &output, ExprNodeOutputType output_type, const temporary_terms_t &temporary_terms, const temporary_terms_idxs_t &temporary_terms_idxs, const deriv_node_temp_terms_t &tef_terms) const = 0; - virtual void writeJsonOutput(ostream &output, const temporary_terms_t &temporary_terms, const deriv_node_temp_terms_t &tef_terms, const bool isdynamic = true) const = 0; - virtual bool containsExternalFunction() const; - virtual void writeExternalFunctionOutput(ostream &output, ExprNodeOutputType output_type, + bool is_matlab, NodeTreeReference tr) const override; + void writeOutput(ostream &output, ExprNodeOutputType output_type, const temporary_terms_t &temporary_terms, const temporary_terms_idxs_t &temporary_terms_idxs, const deriv_node_temp_terms_t &tef_terms) const override = 0; + void writeJsonOutput(ostream &output, const temporary_terms_t &temporary_terms, const deriv_node_temp_terms_t &tef_terms, const bool isdynamic = true) const override = 0; + bool containsExternalFunction() const override; + void writeExternalFunctionOutput(ostream &output, ExprNodeOutputType output_type, const temporary_terms_t &temporary_terms, const temporary_terms_idxs_t &temporary_terms_idxs, - deriv_node_temp_terms_t &tef_terms) const = 0; - virtual void writeJsonExternalFunctionOutput(vector &efout, + deriv_node_temp_terms_t &tef_terms) const override = 0; + void writeJsonExternalFunctionOutput(vector &efout, const temporary_terms_t &temporary_terms, deriv_node_temp_terms_t &tef_terms, - const bool isdynamic = true) const = 0; - virtual void compileExternalFunctionOutput(ostream &CompileCode, unsigned int &instruction_number, + const bool isdynamic = true) const override = 0; + void compileExternalFunctionOutput(ostream &CompileCode, unsigned int &instruction_number, bool lhs_rhs, const temporary_terms_t &temporary_terms, const map_idx_t &map_idx, bool dynamic, bool steady_dynamic, - deriv_node_temp_terms_t &tef_terms) const = 0; - virtual void computeTemporaryTerms(map &reference_count, + deriv_node_temp_terms_t &tef_terms) const override = 0; + void computeTemporaryTerms(map &reference_count, temporary_terms_t &temporary_terms, map > &first_occurence, int Curr_block, vector< vector > &v_temporary_terms, - int equation) const = 0; - virtual void collectVARLHSVariable(set &result) const; - virtual void collectDynamicVariables(SymbolType type_arg, set > &result) const; - virtual void collectTemporary_terms(const temporary_terms_t &temporary_terms, temporary_terms_inuse_t &temporary_terms_inuse, int Curr_Block) const; - virtual double eval(const eval_context_t &eval_context) const noexcept(false); + int equation) const override = 0; + void collectVARLHSVariable(set &result) const override; + void collectDynamicVariables(SymbolType type_arg, set > &result) const override; + void collectTemporary_terms(const temporary_terms_t &temporary_terms, temporary_terms_inuse_t &temporary_terms_inuse, int Curr_Block) const override; + double eval(const eval_context_t &eval_context) const noexcept(false) override; unsigned int compileExternalFunctionArguments(ostream &CompileCode, unsigned int &instruction_number, bool lhs_rhs, const temporary_terms_t &temporary_terms, const map_idx_t &map_idx, bool dynamic, bool steady_dynamic, const deriv_node_temp_terms_t &tef_terms) const; - virtual void compile(ostream &CompileCode, unsigned int &instruction_number, bool lhs_rhs, const temporary_terms_t &temporary_terms, const map_idx_t &map_idx, bool dynamic, bool steady_dynamic, const deriv_node_temp_terms_t &tef_terms) const = 0; - virtual expr_t toStatic(DataTree &static_datatree) const = 0; - virtual void computeXrefs(EquationInfo &ei) const = 0; - virtual pair normalizeEquation(int symb_id_endo, vector > > &List_of_Op_RHS) const; - virtual expr_t getChainRuleDerivative(int deriv_id, const map &recursive_variables); - virtual int maxEndoLead() const; - virtual int maxExoLead() const; - virtual int maxEndoLag() const; - virtual int maxExoLag() const; - virtual int maxLead() const; - virtual int maxLag() const; - virtual int VarMinLag() const; - virtual void VarMaxLag(DataTree &static_datatree, set &static_lhs, int &max_lag) const; - virtual int PacMaxLag(vector &lhs) const; - virtual expr_t undiff() const; - virtual expr_t decreaseLeadsLags(int n) const; - virtual expr_t substituteEndoLeadGreaterThanTwo(subst_table_t &subst_table, vector &neweqs, bool deterministic_model) const; - virtual expr_t substituteEndoLagGreaterThanTwo(subst_table_t &subst_table, vector &neweqs) const; - virtual expr_t substituteExoLead(subst_table_t &subst_table, vector &neweqs, bool deterministic_model) const; - virtual expr_t substituteExoLag(subst_table_t &subst_table, vector &neweqs) const; - virtual expr_t substituteExpectation(subst_table_t &subst_table, vector &neweqs, bool partial_information_model) const; - virtual expr_t substituteAdl() const; - virtual void findDiffNodes(DataTree &static_datatree, diff_table_t &diff_table) const; - virtual void findUnaryOpNodesForAuxVarCreation(DataTree &static_datatree, diff_table_t &nodes) const; - virtual expr_t substituteDiff(DataTree &static_datatree, diff_table_t &diff_table, subst_table_t &subst_table, vector &neweqs) const; - virtual expr_t substituteUnaryOpNodes(DataTree &static_datatree, diff_table_t &nodes, subst_table_t &subst_table, vector &neweqs) const; - virtual expr_t substitutePacExpectation(map &subst_table); + void compile(ostream &CompileCode, unsigned int &instruction_number, bool lhs_rhs, const temporary_terms_t &temporary_terms, const map_idx_t &map_idx, bool dynamic, bool steady_dynamic, const deriv_node_temp_terms_t &tef_terms) const override = 0; + expr_t toStatic(DataTree &static_datatree) const override = 0; + void computeXrefs(EquationInfo &ei) const override = 0; + pair normalizeEquation(int symb_id_endo, vector > > &List_of_Op_RHS) const override; + expr_t getChainRuleDerivative(int deriv_id, const map &recursive_variables) override; + int maxEndoLead() const override; + int maxExoLead() const override; + int maxEndoLag() const override; + int maxExoLag() const override; + int maxLead() const override; + int maxLag() const override; + int VarMinLag() const override; + void VarMaxLag(DataTree &static_datatree, set &static_lhs, int &max_lag) const override; + int PacMaxLag(vector &lhs) const override; + expr_t undiff() const override; + expr_t decreaseLeadsLags(int n) const override; + expr_t substituteEndoLeadGreaterThanTwo(subst_table_t &subst_table, vector &neweqs, bool deterministic_model) const override; + expr_t substituteEndoLagGreaterThanTwo(subst_table_t &subst_table, vector &neweqs) const override; + expr_t substituteExoLead(subst_table_t &subst_table, vector &neweqs, bool deterministic_model) const override; + expr_t substituteExoLag(subst_table_t &subst_table, vector &neweqs) const override; + expr_t substituteExpectation(subst_table_t &subst_table, vector &neweqs, bool partial_information_model) const override; + expr_t substituteAdl() const override; + void findDiffNodes(DataTree &static_datatree, diff_table_t &diff_table) const override; + void findUnaryOpNodesForAuxVarCreation(DataTree &static_datatree, diff_table_t &nodes) const override; + expr_t substituteDiff(DataTree &static_datatree, diff_table_t &diff_table, subst_table_t &subst_table, vector &neweqs) const override; + expr_t substituteUnaryOpNodes(DataTree &static_datatree, diff_table_t &nodes, subst_table_t &subst_table, vector &neweqs) const override; + expr_t substitutePacExpectation(map &subst_table) override; virtual expr_t buildSimilarExternalFunctionNode(vector &alt_args, DataTree &alt_datatree) const = 0; - virtual expr_t decreaseLeadsLagsPredeterminedVariables() const; - virtual expr_t differentiateForwardVars(const vector &subset, subst_table_t &subst_table, vector &neweqs) const; - virtual bool isNumConstNodeEqualTo(double value) const; - virtual bool containsEndogenous() const; - virtual bool containsExogenous() const; - virtual int countDiffs() const; - virtual bool isVariableNodeEqualTo(SymbolType type_arg, int variable_id, int lag_arg) const; + expr_t decreaseLeadsLagsPredeterminedVariables() const override; + expr_t differentiateForwardVars(const vector &subset, subst_table_t &subst_table, vector &neweqs) const override; + bool isNumConstNodeEqualTo(double value) const override; + bool containsEndogenous() const override; + bool containsExogenous() const override; + int countDiffs() const override; + bool isVariableNodeEqualTo(SymbolType type_arg, int variable_id, int lag_arg) const override; virtual void writePrhs(ostream &output, ExprNodeOutputType output_type, const temporary_terms_t &temporary_terms, const temporary_terms_idxs_t &temporary_terms_idxs, const deriv_node_temp_terms_t &tef_terms, const string &ending) const; - 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 removeTrendLeadLag(map trend_symbols_map) const; - virtual bool isInStaticForm() const; - virtual void setVarExpectationIndex(map > &var_model_info); - virtual void walkPacParameters(bool &pac_encountered, pair &lhs, set > > &ec_params_and_vars, set > > ¶ms_and_vars) const; - virtual void addParamInfoToPac(pair &lhs_arg, set > > &ec_params_and_vars_arg, set > > ¶ms_and_vars_arg); - virtual void fillPacExpectationVarInfo(string &model_name_arg, vector &lhs_arg, int max_lag_arg, vector &nonstationary_arg, int growth_symb_id_arg, int equation_number_arg); - virtual bool isVarModelReferenced(const string &model_info_name) const; - virtual void getEndosAndMaxLags(map &model_endos_and_lags) const; + expr_t replaceTrendVar() const override; + expr_t detrend(int symb_id, bool log_trend, expr_t trend) const override; + expr_t cloneDynamic(DataTree &dynamic_datatree) const override = 0; + expr_t removeTrendLeadLag(map trend_symbols_map) const override; + bool isInStaticForm() const override; + void setVarExpectationIndex(map > &var_model_info) override; + void walkPacParameters(bool &pac_encountered, pair &lhs, set > > &ec_params_and_vars, set > > ¶ms_and_vars) const override; + void addParamInfoToPac(pair &lhs_arg, set > > &ec_params_and_vars_arg, set > > ¶ms_and_vars_arg) override; + void fillPacExpectationVarInfo(string &model_name_arg, vector &lhs_arg, int max_lag_arg, vector &nonstationary_arg, int growth_symb_id_arg, int equation_number_arg) override; + bool isVarModelReferenced(const string &model_info_name) const override; + void getEndosAndMaxLags(map &model_endos_and_lags) const override; //! Substitute auxiliary variables by their expression in static model - virtual expr_t substituteStaticAuxiliaryVariable() const; + expr_t substituteStaticAuxiliaryVariable() const override; }; class ExternalFunctionNode : public AbstractExternalFunctionNode @@ -1186,44 +1186,44 @@ class ExternalFunctionNode : public AbstractExternalFunctionNode friend class FirstDerivExternalFunctionNode; friend class SecondDerivExternalFunctionNode; private: - virtual expr_t composeDerivatives(const vector &dargs); + expr_t composeDerivatives(const vector &dargs) override; protected: function sameTefTermPredicate() const override; public: ExternalFunctionNode(DataTree &datatree_arg, int symb_id_arg, const vector &arguments_arg); - virtual void writeOutput(ostream &output, ExprNodeOutputType output_type, const temporary_terms_t &temporary_terms, const temporary_terms_idxs_t &temporary_terms_idxs, const deriv_node_temp_terms_t &tef_terms) const; - virtual void writeJsonOutput(ostream &output, const temporary_terms_t &temporary_terms, const deriv_node_temp_terms_t &tef_terms, const bool isdynamic) const; - virtual void writeExternalFunctionOutput(ostream &output, ExprNodeOutputType output_type, + void writeOutput(ostream &output, ExprNodeOutputType output_type, const temporary_terms_t &temporary_terms, const temporary_terms_idxs_t &temporary_terms_idxs, const deriv_node_temp_terms_t &tef_terms) const override; + void writeJsonOutput(ostream &output, const temporary_terms_t &temporary_terms, const deriv_node_temp_terms_t &tef_terms, const bool isdynamic) const override; + void writeExternalFunctionOutput(ostream &output, ExprNodeOutputType output_type, const temporary_terms_t &temporary_terms, const temporary_terms_idxs_t &temporary_terms_idxs, - deriv_node_temp_terms_t &tef_terms) const; - virtual void writeJsonExternalFunctionOutput(vector &efout, + deriv_node_temp_terms_t &tef_terms) const override; + void writeJsonExternalFunctionOutput(vector &efout, const temporary_terms_t &temporary_terms, deriv_node_temp_terms_t &tef_terms, - const bool isdynamic) const; - virtual void compileExternalFunctionOutput(ostream &CompileCode, unsigned int &instruction_number, + const bool isdynamic) const override; + void compileExternalFunctionOutput(ostream &CompileCode, unsigned int &instruction_number, bool lhs_rhs, const temporary_terms_t &temporary_terms, const map_idx_t &map_idx, bool dynamic, bool steady_dynamic, - deriv_node_temp_terms_t &tef_terms) const; - virtual void computeTemporaryTerms(map &reference_count, + deriv_node_temp_terms_t &tef_terms) const override; + void computeTemporaryTerms(map &reference_count, temporary_terms_t &temporary_terms, map > &first_occurence, int Curr_block, vector< vector > &v_temporary_terms, - int equation) const; - virtual void compile(ostream &CompileCode, unsigned int &instruction_number, bool lhs_rhs, const temporary_terms_t &temporary_terms, const map_idx_t &map_idx, bool dynamic, bool steady_dynamic, const deriv_node_temp_terms_t &tef_terms) const; - virtual expr_t toStatic(DataTree &static_datatree) const; - virtual void computeXrefs(EquationInfo &ei) const; - virtual expr_t buildSimilarExternalFunctionNode(vector &alt_args, DataTree &alt_datatree) const; - virtual expr_t cloneDynamic(DataTree &dynamic_datatree) const; + int equation) const override; + void compile(ostream &CompileCode, unsigned int &instruction_number, bool lhs_rhs, const temporary_terms_t &temporary_terms, const map_idx_t &map_idx, bool dynamic, bool steady_dynamic, const deriv_node_temp_terms_t &tef_terms) const override; + expr_t toStatic(DataTree &static_datatree) const override; + void computeXrefs(EquationInfo &ei) const override; + expr_t buildSimilarExternalFunctionNode(vector &alt_args, DataTree &alt_datatree) const override; + expr_t cloneDynamic(DataTree &dynamic_datatree) const override; }; class FirstDerivExternalFunctionNode : public AbstractExternalFunctionNode { private: const int inputIndex; - virtual expr_t composeDerivatives(const vector &dargs); + expr_t composeDerivatives(const vector &dargs) override; protected: function sameTefTermPredicate() const override; public: @@ -1231,34 +1231,34 @@ public: int top_level_symb_id_arg, const vector &arguments_arg, int inputIndex_arg); - virtual void computeTemporaryTerms(map &reference_count, + void computeTemporaryTerms(map &reference_count, temporary_terms_t &temporary_terms, map > &first_occurence, int Curr_block, vector< vector > &v_temporary_terms, - int equation) const; - virtual void writeOutput(ostream &output, ExprNodeOutputType output_type, const temporary_terms_t &temporary_terms, const temporary_terms_idxs_t &temporary_terms_idxs, const deriv_node_temp_terms_t &tef_terms) const; - virtual void writeJsonOutput(ostream &output, const temporary_terms_t &temporary_terms, const deriv_node_temp_terms_t &tef_terms, const bool isdynamic) const; - virtual void compile(ostream &CompileCode, unsigned int &instruction_number, + int equation) const override; + void writeOutput(ostream &output, ExprNodeOutputType output_type, const temporary_terms_t &temporary_terms, const temporary_terms_idxs_t &temporary_terms_idxs, const deriv_node_temp_terms_t &tef_terms) const override; + void writeJsonOutput(ostream &output, const temporary_terms_t &temporary_terms, const deriv_node_temp_terms_t &tef_terms, const bool isdynamic) const override; + void compile(ostream &CompileCode, unsigned int &instruction_number, bool lhs_rhs, const temporary_terms_t &temporary_terms, const map_idx_t &map_idx, bool dynamic, bool steady_dynamic, - const deriv_node_temp_terms_t &tef_terms) const; - virtual void writeExternalFunctionOutput(ostream &output, ExprNodeOutputType output_type, + const deriv_node_temp_terms_t &tef_terms) const override; + void writeExternalFunctionOutput(ostream &output, ExprNodeOutputType output_type, const temporary_terms_t &temporary_terms, const temporary_terms_idxs_t &temporary_terms_idxs, - deriv_node_temp_terms_t &tef_terms) const; - virtual void writeJsonExternalFunctionOutput(vector &efout, + deriv_node_temp_terms_t &tef_terms) const override; + void writeJsonExternalFunctionOutput(vector &efout, const temporary_terms_t &temporary_terms, deriv_node_temp_terms_t &tef_terms, - const bool isdynamic) const; - virtual void compileExternalFunctionOutput(ostream &CompileCode, unsigned int &instruction_number, + const bool isdynamic) const override; + void compileExternalFunctionOutput(ostream &CompileCode, unsigned int &instruction_number, bool lhs_rhs, const temporary_terms_t &temporary_terms, const map_idx_t &map_idx, bool dynamic, bool steady_dynamic, - deriv_node_temp_terms_t &tef_terms) const; - virtual expr_t toStatic(DataTree &static_datatree) const; - virtual void computeXrefs(EquationInfo &ei) const; - virtual expr_t buildSimilarExternalFunctionNode(vector &alt_args, DataTree &alt_datatree) const; - virtual expr_t cloneDynamic(DataTree &dynamic_datatree) const; + deriv_node_temp_terms_t &tef_terms) const override; + expr_t toStatic(DataTree &static_datatree) const override; + void computeXrefs(EquationInfo &ei) const override; + expr_t buildSimilarExternalFunctionNode(vector &alt_args, DataTree &alt_datatree) const override; + expr_t cloneDynamic(DataTree &dynamic_datatree) const override; }; class SecondDerivExternalFunctionNode : public AbstractExternalFunctionNode @@ -1266,7 +1266,7 @@ class SecondDerivExternalFunctionNode : public AbstractExternalFunctionNode private: const int inputIndex1; const int inputIndex2; - virtual expr_t composeDerivatives(const vector &dargs); + expr_t composeDerivatives(const vector &dargs) override; protected: function sameTefTermPredicate() const override; public: @@ -1275,34 +1275,34 @@ public: const vector &arguments_arg, int inputIndex1_arg, int inputIndex2_arg); - virtual void computeTemporaryTerms(map &reference_count, + void computeTemporaryTerms(map &reference_count, temporary_terms_t &temporary_terms, map > &first_occurence, int Curr_block, vector< vector > &v_temporary_terms, - int equation) const; - virtual void writeOutput(ostream &output, ExprNodeOutputType output_type, const temporary_terms_t &temporary_terms, const temporary_terms_idxs_t &temporary_terms_idxs, const deriv_node_temp_terms_t &tef_terms) const; - virtual void writeJsonOutput(ostream &output, const temporary_terms_t &temporary_terms, const deriv_node_temp_terms_t &tef_terms, const bool isdynamic) const; - virtual void compile(ostream &CompileCode, unsigned int &instruction_number, + int equation) const override; + void writeOutput(ostream &output, ExprNodeOutputType output_type, const temporary_terms_t &temporary_terms, const temporary_terms_idxs_t &temporary_terms_idxs, const deriv_node_temp_terms_t &tef_terms) const override; + void writeJsonOutput(ostream &output, const temporary_terms_t &temporary_terms, const deriv_node_temp_terms_t &tef_terms, const bool isdynamic) const override; + void compile(ostream &CompileCode, unsigned int &instruction_number, bool lhs_rhs, const temporary_terms_t &temporary_terms, const map_idx_t &map_idx, bool dynamic, bool steady_dynamic, - const deriv_node_temp_terms_t &tef_terms) const; - virtual void writeExternalFunctionOutput(ostream &output, ExprNodeOutputType output_type, + const deriv_node_temp_terms_t &tef_terms) const override; + void writeExternalFunctionOutput(ostream &output, ExprNodeOutputType output_type, const temporary_terms_t &temporary_terms, const temporary_terms_idxs_t &temporary_terms_idxs, - deriv_node_temp_terms_t &tef_terms) const; - virtual void writeJsonExternalFunctionOutput(vector &efout, + deriv_node_temp_terms_t &tef_terms) const override; + void writeJsonExternalFunctionOutput(vector &efout, const temporary_terms_t &temporary_terms, deriv_node_temp_terms_t &tef_terms, - const bool isdynamic) const; - virtual void compileExternalFunctionOutput(ostream &CompileCode, unsigned int &instruction_number, + const bool isdynamic) const override; + void compileExternalFunctionOutput(ostream &CompileCode, unsigned int &instruction_number, bool lhs_rhs, const temporary_terms_t &temporary_terms, const map_idx_t &map_idx, bool dynamic, bool steady_dynamic, - deriv_node_temp_terms_t &tef_terms) const; - virtual expr_t toStatic(DataTree &static_datatree) const; - virtual void computeXrefs(EquationInfo &ei) const; - virtual expr_t buildSimilarExternalFunctionNode(vector &alt_args, DataTree &alt_datatree) const; - virtual expr_t cloneDynamic(DataTree &dynamic_datatree) const; + deriv_node_temp_terms_t &tef_terms) const override; + expr_t toStatic(DataTree &static_datatree) const override; + void computeXrefs(EquationInfo &ei) const override; + expr_t buildSimilarExternalFunctionNode(vector &alt_args, DataTree &alt_datatree) const override; + expr_t cloneDynamic(DataTree &dynamic_datatree) const override; }; class VarExpectationNode : public ExprNode @@ -1314,73 +1314,73 @@ private: int yidx; public: VarExpectationNode(DataTree &datatree_arg, int symb_id_arg, int forecast_horizon_arg, const string &model_name); - virtual void computeTemporaryTerms(map > &reference_count, + void computeTemporaryTerms(map > &reference_count, map &temp_terms_map, - bool is_matlab, NodeTreeReference tr) const; - virtual void writeOutput(ostream &output, ExprNodeOutputType output_type, const temporary_terms_t &temporary_terms, const temporary_terms_idxs_t &temporary_terms_idxs, const deriv_node_temp_terms_t &tef_terms) const; - virtual void computeTemporaryTerms(map &reference_count, + bool is_matlab, NodeTreeReference tr) const override; + void writeOutput(ostream &output, ExprNodeOutputType output_type, const temporary_terms_t &temporary_terms, const temporary_terms_idxs_t &temporary_terms_idxs, const deriv_node_temp_terms_t &tef_terms) const override; + void computeTemporaryTerms(map &reference_count, temporary_terms_t &temporary_terms, map > &first_occurence, int Curr_block, vector< vector > &v_temporary_terms, - int equation) const; - virtual expr_t toStatic(DataTree &static_datatree) const; - virtual expr_t cloneDynamic(DataTree &dynamic_datatree) const; - virtual int maxEndoLead() const; - virtual int maxExoLead() const; - virtual int maxEndoLag() const; - virtual int maxExoLag() const; - virtual int maxLead() const; - virtual int maxLag() const; - virtual int VarMinLag() const; - virtual void VarMaxLag(DataTree &static_datatree, set &static_lhs, int &max_lag) const; - virtual int PacMaxLag(vector &lhs) const; - virtual expr_t undiff() const; - virtual expr_t decreaseLeadsLags(int n) const; - virtual void prepareForDerivation(); - virtual expr_t computeDerivative(int deriv_id); - virtual expr_t getChainRuleDerivative(int deriv_id, const map &recursive_variables); - virtual bool containsExternalFunction() const; - virtual double eval(const eval_context_t &eval_context) const noexcept(false); - virtual void computeXrefs(EquationInfo &ei) const; - virtual expr_t substituteEndoLeadGreaterThanTwo(subst_table_t &subst_table, vector &neweqs, bool deterministic_model) const; - virtual expr_t substituteEndoLagGreaterThanTwo(subst_table_t &subst_table, vector &neweqs) const; - virtual expr_t substituteExoLead(subst_table_t &subst_table, vector &neweqs, bool deterministic_model) const; - virtual expr_t substituteExoLag(subst_table_t &subst_table, vector &neweqs) const; - virtual expr_t substituteExpectation(subst_table_t &subst_table, vector &neweqs, bool partial_information_model) const; - virtual expr_t substituteAdl() const; - virtual void findDiffNodes(DataTree &static_datatree, diff_table_t &diff_table) const; - virtual void findUnaryOpNodesForAuxVarCreation(DataTree &static_datatree, diff_table_t &nodes) const; - virtual expr_t substituteDiff(DataTree &static_datatree, diff_table_t &diff_table, subst_table_t &subst_table, vector &neweqs) const; - virtual expr_t substituteUnaryOpNodes(DataTree &static_datatree, diff_table_t &nodes, subst_table_t &subst_table, vector &neweqs) const; - virtual expr_t substitutePacExpectation(map &subst_table); - virtual pair normalizeEquation(int symb_id_endo, vector > > &List_of_Op_RHS) const; - virtual void compile(ostream &CompileCode, unsigned int &instruction_number, + int equation) const override; + expr_t toStatic(DataTree &static_datatree) const override; + expr_t cloneDynamic(DataTree &dynamic_datatree) const override; + int maxEndoLead() const override; + int maxExoLead() const override; + int maxEndoLag() const override; + int maxExoLag() const override; + int maxLead() const override; + int maxLag() const override; + int VarMinLag() const override; + void VarMaxLag(DataTree &static_datatree, set &static_lhs, int &max_lag) const override; + int PacMaxLag(vector &lhs) const override; + expr_t undiff() const override; + expr_t decreaseLeadsLags(int n) const override; + void prepareForDerivation() override; + expr_t computeDerivative(int deriv_id) override; + expr_t getChainRuleDerivative(int deriv_id, const map &recursive_variables) override; + bool containsExternalFunction() const override; + double eval(const eval_context_t &eval_context) const noexcept(false) override; + void computeXrefs(EquationInfo &ei) const override; + expr_t substituteEndoLeadGreaterThanTwo(subst_table_t &subst_table, vector &neweqs, bool deterministic_model) const override; + expr_t substituteEndoLagGreaterThanTwo(subst_table_t &subst_table, vector &neweqs) const override; + expr_t substituteExoLead(subst_table_t &subst_table, vector &neweqs, bool deterministic_model) const override; + expr_t substituteExoLag(subst_table_t &subst_table, vector &neweqs) const override; + expr_t substituteExpectation(subst_table_t &subst_table, vector &neweqs, bool partial_information_model) const override; + expr_t substituteAdl() const override; + void findDiffNodes(DataTree &static_datatree, diff_table_t &diff_table) const override; + void findUnaryOpNodesForAuxVarCreation(DataTree &static_datatree, diff_table_t &nodes) const override; + expr_t substituteDiff(DataTree &static_datatree, diff_table_t &diff_table, subst_table_t &subst_table, vector &neweqs) const override; + expr_t substituteUnaryOpNodes(DataTree &static_datatree, diff_table_t &nodes, subst_table_t &subst_table, vector &neweqs) const override; + expr_t substitutePacExpectation(map &subst_table) override; + pair normalizeEquation(int symb_id_endo, vector > > &List_of_Op_RHS) const override; + void compile(ostream &CompileCode, unsigned int &instruction_number, bool lhs_rhs, const temporary_terms_t &temporary_terms, const map_idx_t &map_idx, bool dynamic, bool steady_dynamic, - const deriv_node_temp_terms_t &tef_terms) const; - virtual void collectTemporary_terms(const temporary_terms_t &temporary_terms, temporary_terms_inuse_t &temporary_terms_inuse, int Curr_Block) const; - virtual void collectVARLHSVariable(set &result) const; - virtual void collectDynamicVariables(SymbolType type_arg, set > &result) const; - virtual bool containsEndogenous() const; - virtual bool containsExogenous() const; - virtual int countDiffs() const; - virtual bool isNumConstNodeEqualTo(double value) const; - virtual expr_t differentiateForwardVars(const vector &subset, subst_table_t &subst_table, vector &neweqs) const; - virtual expr_t decreaseLeadsLagsPredeterminedVariables() const; - virtual bool isVariableNodeEqualTo(SymbolType type_arg, int variable_id, int lag_arg) const; - virtual expr_t replaceTrendVar() const; - virtual expr_t detrend(int symb_id, bool log_trend, expr_t trend) const; - virtual expr_t removeTrendLeadLag(map trend_symbols_map) const; - virtual bool isInStaticForm() const; - virtual void setVarExpectationIndex(map > &var_model_info); - virtual void walkPacParameters(bool &pac_encountered, pair &lhs, set > > &ec_params_and_vars, set > > ¶ms_and_vars) const; - virtual void addParamInfoToPac(pair &lhs_arg, set > > &ec_params_and_vars_arg, set > > ¶ms_and_vars_arg); - virtual void fillPacExpectationVarInfo(string &model_name_arg, vector &lhs_arg, int max_lag_arg, vector &nonstationary_arg, int growth_symb_id_arg, int equation_number_arg); - virtual bool isVarModelReferenced(const string &model_info_name) const; - virtual void getEndosAndMaxLags(map &model_endos_and_lags) const; - virtual expr_t substituteStaticAuxiliaryVariable() const; - virtual void writeJsonOutput(ostream &output, const temporary_terms_t &temporary_terms, const deriv_node_temp_terms_t &tef_terms, const bool isdynamic) const; + const deriv_node_temp_terms_t &tef_terms) const override; + void collectTemporary_terms(const temporary_terms_t &temporary_terms, temporary_terms_inuse_t &temporary_terms_inuse, int Curr_Block) const override; + void collectVARLHSVariable(set &result) const override; + void collectDynamicVariables(SymbolType type_arg, set > &result) const override; + bool containsEndogenous() const override; + bool containsExogenous() const override; + int countDiffs() const override; + bool isNumConstNodeEqualTo(double value) const override; + expr_t differentiateForwardVars(const vector &subset, subst_table_t &subst_table, vector &neweqs) const override; + expr_t decreaseLeadsLagsPredeterminedVariables() const override; + bool isVariableNodeEqualTo(SymbolType type_arg, int variable_id, int lag_arg) const override; + expr_t replaceTrendVar() const override; + expr_t detrend(int symb_id, bool log_trend, expr_t trend) const override; + expr_t removeTrendLeadLag(map trend_symbols_map) const override; + bool isInStaticForm() const override; + void setVarExpectationIndex(map > &var_model_info) override; + void walkPacParameters(bool &pac_encountered, pair &lhs, set > > &ec_params_and_vars, set > > ¶ms_and_vars) const override; + void addParamInfoToPac(pair &lhs_arg, set > > &ec_params_and_vars_arg, set > > ¶ms_and_vars_arg) override; + void fillPacExpectationVarInfo(string &model_name_arg, vector &lhs_arg, int max_lag_arg, vector &nonstationary_arg, int growth_symb_id_arg, int equation_number_arg) override; + bool isVarModelReferenced(const string &model_info_name) const override; + void getEndosAndMaxLags(map &model_endos_and_lags) const override; + expr_t substituteStaticAuxiliaryVariable() const override; + void writeJsonOutput(ostream &output, const temporary_terms_t &temporary_terms, const deriv_node_temp_terms_t &tef_terms, const bool isdynamic) const override; }; class PacExpectationNode : public ExprNode @@ -1399,73 +1399,73 @@ private: set > > ar_params_and_vars; public: PacExpectationNode(DataTree &datatree_arg, string model_name); - virtual void computeTemporaryTerms(map > &reference_count, + void computeTemporaryTerms(map > &reference_count, map &temp_terms_map, - bool is_matlab, NodeTreeReference tr) const; - virtual void writeOutput(ostream &output, ExprNodeOutputType output_type, const temporary_terms_t &temporary_terms, const temporary_terms_idxs_t &temporary_terms_idxs, const deriv_node_temp_terms_t &tef_terms) const; - virtual void computeTemporaryTerms(map &reference_count, + bool is_matlab, NodeTreeReference tr) const override; + void writeOutput(ostream &output, ExprNodeOutputType output_type, const temporary_terms_t &temporary_terms, const temporary_terms_idxs_t &temporary_terms_idxs, const deriv_node_temp_terms_t &tef_terms) const override; + void computeTemporaryTerms(map &reference_count, temporary_terms_t &temporary_terms, map > &first_occurence, int Curr_block, vector< vector > &v_temporary_terms, - int equation) const; - virtual expr_t toStatic(DataTree &static_datatree) const; - virtual expr_t cloneDynamic(DataTree &dynamic_datatree) const; - virtual int maxEndoLead() const; - virtual int maxExoLead() const; - virtual int maxEndoLag() const; - virtual int maxExoLag() const; - virtual int maxLead() const; - virtual int maxLag() const; - virtual int VarMinLag() const; - virtual void VarMaxLag(DataTree &static_datatree, set &static_lhs, int &max_lag) const; - virtual int PacMaxLag(vector &lhs) const; - virtual expr_t undiff() const; - virtual expr_t decreaseLeadsLags(int n) const; - virtual void prepareForDerivation(); - virtual expr_t computeDerivative(int deriv_id); - virtual expr_t getChainRuleDerivative(int deriv_id, const map &recursive_variables); - virtual bool containsExternalFunction() const; - virtual double eval(const eval_context_t &eval_context) const noexcept(false); - virtual void computeXrefs(EquationInfo &ei) const; - virtual expr_t substituteEndoLeadGreaterThanTwo(subst_table_t &subst_table, vector &neweqs, bool deterministic_model) const; - virtual expr_t substituteEndoLagGreaterThanTwo(subst_table_t &subst_table, vector &neweqs) const; - virtual expr_t substituteExoLead(subst_table_t &subst_table, vector &neweqs, bool deterministic_model) const; - virtual expr_t substituteExoLag(subst_table_t &subst_table, vector &neweqs) const; - virtual expr_t substituteExpectation(subst_table_t &subst_table, vector &neweqs, bool partial_information_model) const; - virtual expr_t substituteAdl() const; - virtual void findDiffNodes(DataTree &static_datatree, diff_table_t &diff_table) const; - virtual void findUnaryOpNodesForAuxVarCreation(DataTree &static_datatree, diff_table_t &nodes) const; - virtual expr_t substituteDiff(DataTree &static_datatree, diff_table_t &diff_table, subst_table_t &subst_table, vector &neweqs) const; - virtual expr_t substituteUnaryOpNodes(DataTree &static_datatree, diff_table_t &nodes, subst_table_t &subst_table, vector &neweqs) const; - virtual expr_t substitutePacExpectation(map &subst_table); - virtual pair normalizeEquation(int symb_id_endo, vector > > &List_of_Op_RHS) const; - virtual void compile(ostream &CompileCode, unsigned int &instruction_number, + int equation) const override; + expr_t toStatic(DataTree &static_datatree) const override; + expr_t cloneDynamic(DataTree &dynamic_datatree) const override; + int maxEndoLead() const override; + int maxExoLead() const override; + int maxEndoLag() const override; + int maxExoLag() const override; + int maxLead() const override; + int maxLag() const override; + int VarMinLag() const override; + void VarMaxLag(DataTree &static_datatree, set &static_lhs, int &max_lag) const override; + int PacMaxLag(vector &lhs) const override; + expr_t undiff() const override; + expr_t decreaseLeadsLags(int n) const override; + void prepareForDerivation() override; + expr_t computeDerivative(int deriv_id) override; + expr_t getChainRuleDerivative(int deriv_id, const map &recursive_variables) override; + bool containsExternalFunction() const override; + double eval(const eval_context_t &eval_context) const noexcept(false) override; + void computeXrefs(EquationInfo &ei) const override; + expr_t substituteEndoLeadGreaterThanTwo(subst_table_t &subst_table, vector &neweqs, bool deterministic_model) const override; + expr_t substituteEndoLagGreaterThanTwo(subst_table_t &subst_table, vector &neweqs) const override; + expr_t substituteExoLead(subst_table_t &subst_table, vector &neweqs, bool deterministic_model) const override; + expr_t substituteExoLag(subst_table_t &subst_table, vector &neweqs) const override; + expr_t substituteExpectation(subst_table_t &subst_table, vector &neweqs, bool partial_information_model) const override; + expr_t substituteAdl() const override; + void findDiffNodes(DataTree &static_datatree, diff_table_t &diff_table) const override; + void findUnaryOpNodesForAuxVarCreation(DataTree &static_datatree, diff_table_t &nodes) const override; + expr_t substituteDiff(DataTree &static_datatree, diff_table_t &diff_table, subst_table_t &subst_table, vector &neweqs) const override; + expr_t substituteUnaryOpNodes(DataTree &static_datatree, diff_table_t &nodes, subst_table_t &subst_table, vector &neweqs) const override; + expr_t substitutePacExpectation(map &subst_table) override; + pair normalizeEquation(int symb_id_endo, vector > > &List_of_Op_RHS) const override; + void compile(ostream &CompileCode, unsigned int &instruction_number, bool lhs_rhs, const temporary_terms_t &temporary_terms, const map_idx_t &map_idx, bool dynamic, bool steady_dynamic, - const deriv_node_temp_terms_t &tef_terms) const; - virtual void collectTemporary_terms(const temporary_terms_t &temporary_terms, temporary_terms_inuse_t &temporary_terms_inuse, int Curr_Block) const; - virtual void collectVARLHSVariable(set &result) const; - virtual void collectDynamicVariables(SymbolType type_arg, set > &result) const; - virtual bool containsEndogenous() const; - virtual bool containsExogenous() const; - virtual int countDiffs() const; - virtual bool isNumConstNodeEqualTo(double value) const; - virtual expr_t differentiateForwardVars(const vector &subset, subst_table_t &subst_table, vector &neweqs) const; - virtual expr_t decreaseLeadsLagsPredeterminedVariables() const; - virtual bool isVariableNodeEqualTo(SymbolType type_arg, int variable_id, int lag_arg) const; - virtual expr_t replaceTrendVar() const; - virtual expr_t detrend(int symb_id, bool log_trend, expr_t trend) const; - virtual expr_t removeTrendLeadLag(map trend_symbols_map) const; - virtual bool isInStaticForm() const; - virtual void setVarExpectationIndex(map > &var_model_info); - virtual void walkPacParameters(bool &pac_encountered, pair &lhs, set > > &ec_params_and_vars, set > > ¶ms_and_vars) const; - virtual void addParamInfoToPac(pair &lhs_arg, set > > &ec_params_and_vars_arg, set > > ¶ms_and_vars_arg); - virtual void fillPacExpectationVarInfo(string &model_name_arg, vector &lhs_arg, int max_lag_arg, vector &nonstationary_arg, int growth_symb_id_arg, int equation_number_arg); - virtual bool isVarModelReferenced(const string &model_info_name) const; - virtual void getEndosAndMaxLags(map &model_endos_and_lags) const; - virtual expr_t substituteStaticAuxiliaryVariable() const; - virtual void writeJsonOutput(ostream &output, const temporary_terms_t &temporary_terms, const deriv_node_temp_terms_t &tef_terms, const bool isdynamic) const; + const deriv_node_temp_terms_t &tef_terms) const override; + void collectTemporary_terms(const temporary_terms_t &temporary_terms, temporary_terms_inuse_t &temporary_terms_inuse, int Curr_Block) const override; + void collectVARLHSVariable(set &result) const override; + void collectDynamicVariables(SymbolType type_arg, set > &result) const override; + bool containsEndogenous() const override; + bool containsExogenous() const override; + int countDiffs() const override; + bool isNumConstNodeEqualTo(double value) const override; + expr_t differentiateForwardVars(const vector &subset, subst_table_t &subst_table, vector &neweqs) const override; + expr_t decreaseLeadsLagsPredeterminedVariables() const override; + bool isVariableNodeEqualTo(SymbolType type_arg, int variable_id, int lag_arg) const override; + expr_t replaceTrendVar() const override; + expr_t detrend(int symb_id, bool log_trend, expr_t trend) const override; + expr_t removeTrendLeadLag(map trend_symbols_map) const override; + bool isInStaticForm() const override; + void setVarExpectationIndex(map > &var_model_info) override; + void walkPacParameters(bool &pac_encountered, pair &lhs, set > > &ec_params_and_vars, set > > ¶ms_and_vars) const override; + void addParamInfoToPac(pair &lhs_arg, set > > &ec_params_and_vars_arg, set > > ¶ms_and_vars_arg) override; + void fillPacExpectationVarInfo(string &model_name_arg, vector &lhs_arg, int max_lag_arg, vector &nonstationary_arg, int growth_symb_id_arg, int equation_number_arg) override; + bool isVarModelReferenced(const string &model_info_name) const override; + void getEndosAndMaxLags(map &model_endos_and_lags) const override; + expr_t substituteStaticAuxiliaryVariable() const override; + void writeJsonOutput(ostream &output, const temporary_terms_t &temporary_terms, const deriv_node_temp_terms_t &tef_terms, const bool isdynamic) const override; }; #endif diff --git a/src/NumericalInitialization.hh b/src/NumericalInitialization.hh index b857276f..89f9092f 100644 --- a/src/NumericalInitialization.hh +++ b/src/NumericalInitialization.hh @@ -39,11 +39,11 @@ private: public: InitParamStatement(int symb_id_arg, const expr_t param_value_arg, 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 void writeJuliaOutput(ostream &output, const string &basename); - virtual void writeCOutput(ostream &output, const string &basename); - virtual void writeJsonOutput(ostream &output) const; + void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings) override; + void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const override; + void writeJuliaOutput(ostream &output, const string &basename) override; + void writeCOutput(ostream &output, const string &basename) override; + void writeJsonOutput(ostream &output) const override; //! Fill eval context with parameter value void fillEvalContext(eval_context_t &eval_context) const; }; @@ -79,9 +79,9 @@ public: InitValStatement(const init_values_t &init_values_arg, const SymbolTable &symbol_table_arg, const bool &all_values_required_arg); - virtual void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings); - virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const; - virtual void writeJsonOutput(ostream &output) const; + void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings) override; + void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const override; + void writeJsonOutput(ostream &output) const override; //! Writes initializations for oo_.exo_simul and oo_.exo_det_simul void writeOutputPostInit(ostream &output) const; }; @@ -93,9 +93,9 @@ public: const SymbolTable &symbol_table_arg, const bool &all_values_required_arg); //! 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 void writeJsonOutput(ostream &output) const; + void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings) override; + void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const override; + void writeJsonOutput(ostream &output) const override; }; class HistValStatement : public Statement @@ -119,9 +119,9 @@ public: const SymbolTable &symbol_table_arg, const bool &all_values_required_arg); //! 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 void writeJsonOutput(ostream &output) const; + void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings) override; + void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const override; + void writeJsonOutput(ostream &output) const override; }; class InitvalFileStatement : public Statement @@ -130,8 +130,8 @@ private: const string filename; public: InitvalFileStatement(string filename_arg); - virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const; - virtual void writeJsonOutput(ostream &output) const; + void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const override; + void writeJsonOutput(ostream &output) const override; }; class HistvalFileStatement : public Statement @@ -140,8 +140,8 @@ private: const string filename; public: HistvalFileStatement(string filename_arg); - virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const; - virtual void writeJsonOutput(ostream &output) const; + void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const override; + void writeJsonOutput(ostream &output) const override; }; class HomotopyStatement : public Statement @@ -156,8 +156,8 @@ private: public: HomotopyStatement(homotopy_values_t homotopy_values_arg, const SymbolTable &symbol_table_arg); - virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const; - virtual void writeJsonOutput(ostream &output) const; + void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const override; + void writeJsonOutput(ostream &output) const override; }; class SaveParamsAndSteadyStateStatement : public Statement @@ -166,8 +166,8 @@ private: const string filename; public: SaveParamsAndSteadyStateStatement(string filename_arg); - virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const; - virtual void writeJsonOutput(ostream &output) const; + void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const override; + void writeJsonOutput(ostream &output) const override; }; class LoadParamsAndSteadyStateStatement : public Statement @@ -181,10 +181,10 @@ public: LoadParamsAndSteadyStateStatement(const string &filename, const SymbolTable &symbol_table_arg, WarningConsolidation &warnings); - virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const; + void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const override; //! Fill eval context with parameters/variables values void fillEvalContext(eval_context_t &eval_context) const; - virtual void writeJsonOutput(ostream &output) const; + void writeJsonOutput(ostream &output) const override; }; #endif diff --git a/src/Shocks.hh b/src/Shocks.hh index 62345963..d170a080 100644 --- a/src/Shocks.hh +++ b/src/Shocks.hh @@ -78,9 +78,9 @@ public: covar_and_corr_shocks_t covar_shocks_arg, covar_and_corr_shocks_t corr_shocks_arg, 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 void writeJsonOutput(ostream &output) const; + void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings) override; + void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const override; + void writeJsonOutput(ostream &output) const override; }; class MShocksStatement : public AbstractShocksStatement @@ -89,7 +89,7 @@ public: MShocksStatement(bool overwrite_arg, const det_shocks_t &det_shocks_arg, const SymbolTable &symbol_table_arg); - virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const; + void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const override; }; class ConditionalForecastPathsStatement : public Statement @@ -101,8 +101,8 @@ private: public: ConditionalForecastPathsStatement(AbstractShocksStatement::det_shocks_t paths_arg, 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; + void checkPass(ModFileStructure &mod_file_struct, WarningConsolidation &warnings) override; + void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const override; }; class MomentCalibration : public Statement @@ -121,8 +121,8 @@ private: public: MomentCalibration(constraints_t constraints_arg, const SymbolTable &symbol_table_arg); - virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const; - virtual void writeJsonOutput(ostream &output) const; + void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const override; + void writeJsonOutput(ostream &output) const override; }; class IrfCalibration : public Statement @@ -143,8 +143,8 @@ public: IrfCalibration(constraints_t constraints_arg, const SymbolTable &symbol_table_arg, OptionsList options_list_arg); - virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const; - virtual void writeJsonOutput(ostream &output) const; + void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const override; + void writeJsonOutput(ostream &output) const override; }; class ShockGroupsStatement : public Statement @@ -162,7 +162,7 @@ private: string name; public: ShockGroupsStatement(group_t shock_groups_arg, string name_arg); - virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const; + void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const override; }; #endif diff --git a/src/SigmaeInitialization.hh b/src/SigmaeInitialization.hh index 8b135dad..45c95f54 100644 --- a/src/SigmaeInitialization.hh +++ b/src/SigmaeInitialization.hh @@ -57,7 +57,7 @@ private: public: SigmaeStatement(matrix_t matrix_arg) noexcept(false); - virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const; + void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const override; }; #endif diff --git a/src/Statement.hh b/src/Statement.hh index 90ebf5e1..4f45b9b7 100644 --- a/src/Statement.hh +++ b/src/Statement.hh @@ -158,8 +158,8 @@ private: const string native_statement; public: NativeStatement(string native_statement_arg); - virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const; - virtual void writeJsonOutput(ostream &output) const; + void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const override; + void writeJsonOutput(ostream &output) const override; }; class VerbatimStatement : public Statement @@ -168,8 +168,8 @@ private: const string verbatim_statement; public: VerbatimStatement(string verbatim_statement_arg); - virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const; - virtual void writeJsonOutput(ostream &output) const; + void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const override; + void writeJsonOutput(ostream &output) const override; }; class OptionsList diff --git a/src/StaticModel.hh b/src/StaticModel.hh index fd1230de..4c595c45 100644 --- a/src/StaticModel.hh +++ b/src/StaticModel.hh @@ -87,11 +87,11 @@ private: void compileChainRuleDerivative(ofstream &code_file, unsigned int &instruction_number, int eq, int var, int lag, map_idx_t &map_idx, temporary_terms_t temporary_terms) const; //! Get the type corresponding to a derivation ID - virtual SymbolType getTypeByDerivID(int deriv_id) const noexcept(false); + SymbolType getTypeByDerivID(int deriv_id) const noexcept(false) override; //! Get the lag corresponding to a derivation ID - virtual int getLagByDerivID(int deriv_id) const noexcept(false); + int getLagByDerivID(int deriv_id) const noexcept(false) override; //! Get the symbol ID corresponding to a derivation ID - virtual int getSymbIDByDerivID(int deriv_id) const noexcept(false); + int getSymbIDByDerivID(int deriv_id) const noexcept(false) override; //! Compute the column indices of the static Jacobian void computeStatJacobianCols(); //! return a map on the block jacobian @@ -208,132 +208,132 @@ public: //! See #1264 bool exoPresentInEqs() const; - virtual int getDerivID(int symb_id, int lag) const noexcept(false); - virtual void addAllParamDerivId(set &deriv_id_set); + int getDerivID(int symb_id, int lag) const noexcept(false) override; + void addAllParamDerivId(set &deriv_id_set) override; //! Return the number of blocks - virtual unsigned int - getNbBlocks() const + unsigned int + getNbBlocks() const override { return (block_type_firstequation_size_mfs.size()); }; //! Determine the simulation type of each block - virtual BlockSimulationType - getBlockSimulationType(int block_number) const + BlockSimulationType + getBlockSimulationType(int block_number) const override { return (block_type_firstequation_size_mfs[block_number].first.first); }; //! Return the first equation number of a block - virtual unsigned int - getBlockFirstEquation(int block_number) const + unsigned int + getBlockFirstEquation(int block_number) const override { return (block_type_firstequation_size_mfs[block_number].first.second); }; //! Return the size of the block block_number - virtual unsigned int - getBlockSize(int block_number) const + unsigned int + getBlockSize(int block_number) const override { return (block_type_firstequation_size_mfs[block_number].second.first); }; //! Return the number of exogenous variable in the block block_number - virtual unsigned int - getBlockExoSize(int block_number) const + unsigned int + getBlockExoSize(int block_number) const override { return 0; }; //! Return the number of colums in the jacobian matrix for exogenous variable in the block block_number - virtual unsigned int - getBlockExoColSize(int block_number) const + unsigned int + getBlockExoColSize(int block_number) const override { return 0; } //! Return the number of feedback variable of the block block_number - virtual unsigned int - getBlockMfs(int block_number) const + unsigned int + getBlockMfs(int block_number) const override { return (block_type_firstequation_size_mfs[block_number].second.second); }; //! Return the maximum lag in a block - virtual unsigned int - getBlockMaxLag(int block_number) const + unsigned int + getBlockMaxLag(int block_number) const override { return (block_lag_lead[block_number].first); }; //! Return the maximum lead in a block - virtual unsigned int - getBlockMaxLead(int block_number) const + unsigned int + getBlockMaxLead(int block_number) const override { return (block_lag_lead[block_number].second); }; //! Return the type of equation (equation_number) belonging to the block block_number - virtual EquationType - getBlockEquationType(int block_number, int equation_number) const + EquationType + getBlockEquationType(int block_number, int equation_number) const override { return (equation_type_and_normalized_equation[equation_reordered[block_type_firstequation_size_mfs[block_number].first.second+equation_number]].first); }; //! Return true if the equation has been normalized - virtual bool - isBlockEquationRenormalized(int block_number, int equation_number) const + bool + isBlockEquationRenormalized(int block_number, int equation_number) const override { return (equation_type_and_normalized_equation[equation_reordered[block_type_firstequation_size_mfs[block_number].first.second+equation_number]].first == E_EVALUATE_S); }; //! Return the expr_t of the equation equation_number belonging to the block block_number - virtual expr_t - getBlockEquationExpr(int block_number, int equation_number) const + expr_t + getBlockEquationExpr(int block_number, int equation_number) const override { return (equations[equation_reordered[block_type_firstequation_size_mfs[block_number].first.second+equation_number]]); }; //! Return the expr_t of the renormalized equation equation_number belonging to the block block_number - virtual expr_t - getBlockEquationRenormalizedExpr(int block_number, int equation_number) const + expr_t + getBlockEquationRenormalizedExpr(int block_number, int equation_number) const override { return (equation_type_and_normalized_equation[equation_reordered[block_type_firstequation_size_mfs[block_number].first.second+equation_number]].second); }; //! Return the original number of equation equation_number belonging to the block block_number - virtual int - getBlockEquationID(int block_number, int equation_number) const + int + getBlockEquationID(int block_number, int equation_number) const override { return (equation_reordered[block_type_firstequation_size_mfs[block_number].first.second+equation_number]); }; //! Return the original number of variable variable_number belonging to the block block_number - virtual int - getBlockVariableID(int block_number, int variable_number) const + int + getBlockVariableID(int block_number, int variable_number) const override { return (variable_reordered[block_type_firstequation_size_mfs[block_number].first.second+variable_number]); }; //! Return the original number of the exogenous variable varexo_number belonging to the block block_number - virtual int - getBlockVariableExoID(int block_number, int variable_number) const + int + getBlockVariableExoID(int block_number, int variable_number) const override { return 0; }; //! Return the position of equation_number in the block number belonging to the block block_number - virtual int - getBlockInitialEquationID(int block_number, int equation_number) const + int + getBlockInitialEquationID(int block_number, int equation_number) const override { return ((int) inv_equation_reordered[equation_number] - (int) block_type_firstequation_size_mfs[block_number].first.second); }; //! Return the position of variable_number in the block number belonging to the block block_number - virtual int - getBlockInitialVariableID(int block_number, int variable_number) const + int + getBlockInitialVariableID(int block_number, int variable_number) const override { return ((int) inv_variable_reordered[variable_number] - (int) block_type_firstequation_size_mfs[block_number].first.second); }; //! Return the position of variable_number in the block number belonging to the block block_number - virtual int - getBlockInitialExogenousID(int block_number, int variable_number) const + int + getBlockInitialExogenousID(int block_number, int variable_number) const override { return -1; }; //! Return the position of the deterministic exogenous variable_number in the block number belonging to the block block_number - virtual int - getBlockInitialDetExogenousID(int block_number, int variable_number) const + int + getBlockInitialDetExogenousID(int block_number, int variable_number) const override { return -1; }; //! Return the position of the other endogenous variable_number in the block number belonging to the block block_number - virtual int - getBlockInitialOtherEndogenousID(int block_number, int variable_number) const + int + getBlockInitialOtherEndogenousID(int block_number, int variable_number) const override { return -1; }; diff --git a/src/macro/MacroValue.hh b/src/macro/MacroValue.hh index baa6143f..593eafed 100644 --- a/src/macro/MacroValue.hh +++ b/src/macro/MacroValue.hh @@ -123,42 +123,42 @@ private: const int value; public: IntMV(MacroDriver &driver, int value_arg); - virtual - ~IntMV(); + + ~IntMV() override; //! Computes arithmetic addition - virtual const MacroValue *operator+(const MacroValue &mv) const noexcept(false); + const MacroValue *operator+(const MacroValue &mv) const noexcept(false) override; //! Unary plus /*! Returns itself */ - virtual const MacroValue *operator+() const noexcept(false); + const MacroValue *operator+() const noexcept(false) override; //! Computes arithmetic substraction - virtual const MacroValue *operator-(const MacroValue &mv) const noexcept(false); + const MacroValue *operator-(const MacroValue &mv) const noexcept(false) override; //! Computes opposite - virtual const MacroValue *operator-() const noexcept(false); + const MacroValue *operator-() const noexcept(false) override; //! Computes arithmetic multiplication - virtual const MacroValue *operator*(const MacroValue &mv) const noexcept(false); + const MacroValue *operator*(const MacroValue &mv) const noexcept(false) override; //! Computes arithmetic division - virtual const MacroValue *operator/(const MacroValue &mv) const noexcept(false); - virtual const MacroValue *operator<(const MacroValue &mv) const noexcept(false); - virtual const MacroValue *operator>(const MacroValue &mv) const noexcept(false); - virtual const MacroValue *operator<=(const MacroValue &mv) const noexcept(false); - virtual const MacroValue *operator>=(const MacroValue &mv) const noexcept(false); - virtual const MacroValue *operator==(const MacroValue &mv) const noexcept(false); - virtual const MacroValue *operator!=(const MacroValue &mv) const noexcept(false); + const MacroValue *operator/(const MacroValue &mv) const noexcept(false) override; + const MacroValue *operator<(const MacroValue &mv) const noexcept(false) override; + const MacroValue *operator>(const MacroValue &mv) const noexcept(false) override; + const MacroValue *operator<=(const MacroValue &mv) const noexcept(false) override; + const MacroValue *operator>=(const MacroValue &mv) const noexcept(false) override; + const MacroValue *operator==(const MacroValue &mv) const noexcept(false) override; + const MacroValue *operator!=(const MacroValue &mv) const noexcept(false) override; //! Computes logical and - virtual const MacroValue *operator&&(const MacroValue &mv) const noexcept(false); + const MacroValue *operator&&(const MacroValue &mv) const noexcept(false) override; //! Computes logical or - virtual const MacroValue *operator||(const MacroValue &mv) const noexcept(false); + const MacroValue *operator||(const MacroValue &mv) const noexcept(false) override; //! Computes logical negation - virtual const MacroValue *operator!() const noexcept(false); - virtual string toString() const; - virtual string print() const; + const MacroValue *operator!() const noexcept(false) override; + string toString() const override; + string print() const override; //! Converts value to array form /*! Returns an integer array containing a single value */ - virtual const MacroValue *toArray() const; + const MacroValue *toArray() const override; //! Appends value at the end of an array /*! The first argument must be an integer array. */ - virtual const MacroValue *append(const MacroValue *array) const noexcept(false); - virtual const MacroValue *in(const MacroValue *array) const noexcept(false); + const MacroValue *append(const MacroValue *array) const noexcept(false) override; + const MacroValue *in(const MacroValue *array) const noexcept(false) override; //! Creates a integer range /*! Arguments must be of type IntMV. Returns an integer array containing all integers between mv1 and mv2. @@ -181,25 +181,25 @@ private: const string value; public: StringMV(MacroDriver &driver, string value_arg); - virtual - ~StringMV(); + + ~StringMV() override; //! Computes string concatenation - virtual const MacroValue *operator+(const MacroValue &mv) const noexcept(false); - virtual const MacroValue *operator==(const MacroValue &mv) const noexcept(false); - virtual const MacroValue *operator!=(const MacroValue &mv) const noexcept(false); + const MacroValue *operator+(const MacroValue &mv) const noexcept(false) override; + const MacroValue *operator==(const MacroValue &mv) const noexcept(false) override; + const MacroValue *operator!=(const MacroValue &mv) const noexcept(false) override; //! Subscripting operator /*! Argument must be an ArrayMV. Indexes begin at 1. Returns a StringMV. */ - virtual const MacroValue *operator[](const MacroValue &mv) const noexcept(false); + const MacroValue *operator[](const MacroValue &mv) const noexcept(false) override; //! Returns underlying string value - virtual string toString() const; - virtual string print() const; + string toString() const override; + string print() const override; //! Converts value to array form /*! Returns a string array containing a single value */ - virtual const MacroValue *toArray() const; + const MacroValue *toArray() const override; //! Appends value at the end of an array /*! The first argument must be a string array. Returns a string array. */ - virtual const MacroValue *append(const MacroValue *array) const noexcept(false); - virtual const MacroValue *in(const MacroValue *array) const noexcept(false); + const MacroValue *append(const MacroValue *array) const noexcept(false) override; + const MacroValue *in(const MacroValue *array) const noexcept(false) override; }; //! Represents an array in macro language @@ -215,28 +215,28 @@ private: const vector values; public: ArrayMV(MacroDriver &driver, vector values_arg); - virtual - ~ArrayMV(); + + ~ArrayMV() override; //! Computes array concatenation /*! Both array must be of same type */ - virtual const MacroValue *operator+(const MacroValue &mv) const noexcept(false); + const MacroValue *operator+(const MacroValue &mv) const noexcept(false) override; //! Returns an array in which the elements of the second array have been removed from the first /*! It is close to a set difference operation, except that if an element appears two times in the first array, it will also be in the returned value (provided it is not in the second array) */ - virtual const MacroValue *operator-(const MacroValue &mv) const noexcept(false); - virtual const MacroValue *operator==(const MacroValue &mv) const noexcept(false); - virtual const MacroValue *operator!=(const MacroValue &mv) const noexcept(false); + const MacroValue *operator-(const MacroValue &mv) const noexcept(false) override; + const MacroValue *operator==(const MacroValue &mv) const noexcept(false) override; + const MacroValue *operator!=(const MacroValue &mv) const noexcept(false) override; //! Subscripting operator /*! Argument must be an ArrayMV. Indexes begin at 1. If argument is a one-element array, returns an IntMV or StringMV. Otherwise returns an array. */ - virtual const MacroValue *operator[](const MacroValue &mv) const noexcept(false); + const MacroValue *operator[](const MacroValue &mv) const noexcept(false) override; //! Returns a string containing the concatenation of string representations of elements - virtual string toString() const; - virtual string print() const; + string toString() const override; + string print() const override; //! Returns itself - virtual const MacroValue *toArray() const; + const MacroValue *toArray() const override; //! Gets length - virtual const MacroValue *length() const noexcept(false); + const MacroValue *length() const noexcept(false) override; }; template