24 #include <ast/parser/parse.hpp>
25 #include <deps/builders/eq_graph_builder.hpp>
26 #include <deps/sbg_graph/build_from_exps.hpp>
27 #include <deps/sb_dependencies.hpp>
47 if (_post_process_eval) {
52 std::stringstream simple;
53 std::stringstream
generic;
54 for (Equation der = equations.begin(it); !equations.end(it); der = equations.next(it)) {
56 string alg_code =
addAlgDeps(der, SB::Deps::LMapExp(), _der_deps, _alg_deps, printed_deps);
57 der.setAlgCode(alg_code);
59 generic << der << endl;
61 simple << der << endl;
64 _qss_model_def.simple = simple.str();
65 _qss_model_def.generic =
generic.str();
66 _post_process_eval =
true;
75 void QSSModelGenerator::visitF(SB::Deps::SetVertex vertex, SB::Deps::VariableDep var_dep, SB::Deps::SetVertex gen_vertex) {}
77 void QSSModelGenerator::visitG(SB::Deps::SetVertex v_vertex, SB::Deps::SetVertex g_vertex, SB::Deps::VariableDep var_dep,
int index_shift)
79 if (var_dep.isRecursive()) {
80 Equation v_eq = getEquation(v_vertex, _config.eqs);
81 Equation g_eq = getEquation(g_vertex, _config.eqs);
82 DefAlgDepsUse new_dep(g_eq, var_dep);
88 SB::Deps::LMapExp use_map_exp,
Expression use_exp, SB::PWLMap def_map, SB::Deps::LMapExp def_map_exp,
91 Equation v_eq = getEquation(v_vertex, _config.eqs);
92 Equation g_eq = getEquation(g_vertex, _config.eqs);
93 DefAlgDepsUse new_dep(g_eq, def_map, use_exp, use_map_exp, def_map_exp, g_vertex.id());
101 template <
typename GraphBuilder>
106 template <
typename GraphBuilder>
111 QSSModelBuilder qss_model;
112 IndexShiftBuilder index_shifts(algebraics);
113 GraphBuilder EQSBGraph(eqs, algebraics);
114 SB::Deps::Graph graph = EQSBGraph.build();
117 config.
graph = graph;
118 qss_model.setup(config);
119 qss_model.compute(graph, index_shifts.build());
120 _qss_model_def = qss_model.def();
123 template <
typename GraphBuilder>
126 return _qss_model_def.simple;
129 template <
typename GraphBuilder>
132 return _qss_model_def.generic;