Skip to content

Commit 40b3bad

Browse files
committed
Pass object factory to variable_sensitivity_dependence_graph
1 parent 3b220ec commit 40b3bad

File tree

3 files changed

+23
-9
lines changed

3 files changed

+23
-9
lines changed

src/analyses/variable-sensitivity/variable_sensitivity_dependence_graph.cpp

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -610,31 +610,35 @@ class variable_sensitivity_dependence_domain_factoryt
610610
{
611611
public:
612612
explicit variable_sensitivity_dependence_domain_factoryt(
613-
variable_sensitivity_dependence_grapht &_dg)
614-
: dg(_dg)
613+
variable_sensitivity_dependence_grapht &_dg,
614+
variable_sensitivity_object_factory_ptrt _object_factory)
615+
: dg(_dg),
616+
object_factory(_object_factory)
615617
{
616618
}
617619

618620
std::unique_ptr<statet> make(locationt l) const override
619621
{
620622
auto node_id = dg.add_node();
621623
dg.nodes[node_id].PC = l;
622-
auto p = util_make_unique<variable_sensitivity_dependence_domaint>(node_id);
624+
auto p = util_make_unique<variable_sensitivity_dependence_domaint>(node_id, object_factory);
623625
CHECK_RETURN(p->is_bottom());
624626

625627
return std::unique_ptr<statet>(p.release());
626628
}
627629

628630
private:
629631
variable_sensitivity_dependence_grapht &dg;
632+
variable_sensitivity_object_factory_ptrt object_factory;
630633
};
631634

632635
variable_sensitivity_dependence_grapht::variable_sensitivity_dependence_grapht(
633636
const goto_functionst &goto_functions,
634-
const namespacet &_ns)
637+
const namespacet &_ns,
638+
variable_sensitivity_object_factory_ptrt _object_factory)
635639
: ai_three_way_merget(
636640
util_make_unique<ai_history_factory_default_constructort<ahistoricalt>>(),
637-
util_make_unique<variable_sensitivity_dependence_domain_factoryt>(*this),
641+
util_make_unique<variable_sensitivity_dependence_domain_factoryt>(*this, _object_factory),
638642
util_make_unique<location_sensitive_storaget>()),
639643
goto_functions(goto_functions),
640644
ns(_ns)

src/analyses/variable-sensitivity/variable_sensitivity_dependence_graph.h

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -74,8 +74,13 @@ class variable_sensitivity_dependence_domaint
7474
public:
7575
typedef grapht<vs_dep_nodet>::node_indext node_indext;
7676

77-
explicit variable_sensitivity_dependence_domaint(node_indext id)
78-
: node_id(id), has_values(false), has_changed(false)
77+
explicit variable_sensitivity_dependence_domaint(
78+
node_indext id,
79+
variable_sensitivity_object_factory_ptrt object_factory
80+
) : variable_sensitivity_domaint(object_factory),
81+
node_id(id),
82+
has_values(false),
83+
has_changed(false)
7984
{
8085
}
8186

@@ -237,7 +242,8 @@ class variable_sensitivity_dependence_grapht : public ai_three_way_merget,
237242

238243
explicit variable_sensitivity_dependence_grapht(
239244
const goto_functionst &goto_functions,
240-
const namespacet &_ns);
245+
const namespacet &_ns,
246+
variable_sensitivity_object_factory_ptrt object_factory);
241247

242248
void
243249
initialize(const irep_idt &function_id, const goto_programt &goto_program)

src/goto-analyzer/goto_analyzer_parse_options.cpp

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -540,8 +540,12 @@ ai_baset *goto_analyzer_parse_optionst::build_analyzer(
540540
}
541541
else if(options.get_bool_option("dependence-graph-vs"))
542542
{
543+
auto vsd_config = vsd_configt::from_options(options);
544+
auto vs_object_factory =
545+
std::make_shared<variable_sensitivity_object_factoryt>(vsd_config);
546+
543547
return new variable_sensitivity_dependence_grapht(
544-
goto_model.goto_functions, ns);
548+
goto_model.goto_functions, ns, vs_object_factory);
545549
}
546550
else if(options.get_bool_option("vsd"))
547551
{

0 commit comments

Comments
 (0)