27 #include <deps/sbg_graph/deps_graph.hpp>
34 struct QSSModelDepsDef {
40 vector<std::string> begin;
41 vector<std::string> end;
42 vector<std::string> code;
43 vector<std::string> alg_code;
47 class QSSModelDepsGenerator {
49 QSSModelDepsGenerator();
50 ~QSSModelDepsGenerator() =
default;
52 void init(SB::Deps::SetVertex vertex);
54 void postProcess(SB::Deps::SetVertex vertex);
55 void visitF(SB::Deps::SetVertex vertex, SB::Deps::VariableDep var_dep);
56 void visitF(SB::Deps::SetVertex vertex, SB::Deps::VariableDep var_dep, SB::Deps::SetVertex gen_vertex);
57 void visitG(SB::Deps::SetVertex v_vertex, SB::Deps::SetVertex g_vertex, SB::Deps::VariableDep var_dep,
int index_shift = 0);
58 void visitG(SB::Deps::SetVertex v_vertex, SB::Deps::SetVertex g_vertex, SB::PWLMap use_map, SB::Deps::LMapExp use_map_exp,
59 Expression use_exp, SB::PWLMap def_map, SB::Deps::LMapExp def_map_exp, SB::Set intersection);
60 void initG(SB::Deps::SetVertex vertex, SB::Deps::SetEdge edge);
61 QSSModelDepsDef def();
63 void setup(QSSModelConfig _config);
64 QSSModelConfig config();
67 void addCode(DepCode dep_code, std::stringstream& code);
74 bool _post_process_eval;
85 std::string simpleDef();
87 std::string genericDef();