in source/Model.cpp [188:249]
Model Model::instantiate(const Method* method, Context& context) const {
Model model(method, context, modes_);
for (const auto& [port, generation_taint] : generations_.elements()) {
for (const auto& generations : generation_taint) {
for (const auto& generation : generations) {
model.add_generation(port, generation);
}
}
}
for (const auto& [port, parameter_source_taint] :
parameter_sources_.elements()) {
for (const auto& parameter_sources : parameter_source_taint) {
for (const auto& parameter_source : parameter_sources) {
model.add_parameter_source(port, parameter_source);
}
}
}
for (const auto& [port, sink_taint] : sinks_.elements()) {
for (const auto& sinks : sink_taint) {
for (const auto& sink : sinks) {
model.add_sink(port, sink);
}
}
}
for (const auto& [output, propagations] : propagations_.elements()) {
for (const auto& propagation : propagations) {
model.add_propagation(propagation, output);
}
}
for (const auto& sanitizer : global_sanitizers_) {
model.add_global_sanitizer(sanitizer);
}
for (const auto& [root, sanitizers] : port_sanitizers_) {
model.add_port_sanitizers(sanitizers, root);
}
for (const auto& [root, features] : attach_to_sources_) {
model.add_attach_to_sources(root, features);
}
for (const auto& [root, features] : attach_to_sinks_) {
model.add_attach_to_sinks(root, features);
}
for (const auto& [root, features] : attach_to_propagations_) {
model.add_attach_to_propagations(root, features);
}
for (const auto& [root, features] : add_features_to_arguments_) {
model.add_add_features_to_arguments(root, features);
}
model.set_inline_as(inline_as_);
return model;
}