void merger::merge_model(const model& m) { const auto mn(m.name().model_name()); BOOST_LOG_SEV(lg, info) << "Merging model: '" << mn << " modules: " << m.modules().size() << " concepts: " << m.concepts().size() << " primitives: " << m.primitives().size() << " enumerations: " << m.enumerations().size() << " objects: " << m.objects().size(); for (const auto& c : m.concepts()) { check_qname(m.name().model_name(), c.first, c.second.name()); merged_model_.concepts().insert(c); } for (const auto& p : m.primitives()) { // FIXME: mega hack to handle primitive model. const auto pmn(mn == primitive_model_name ? empty : mn); check_qname(pmn, p.first, p.second.name()); merged_model_.primitives().insert(p); } for (const auto& p : m.enumerations()) { check_qname(mn, p.first, p.second.name()); merged_model_.enumerations().insert(p); } for (const auto& o : m.objects()) { check_qname(mn, o.first, o.second->name()); merged_model_.objects().insert(o); } }
void json_hydrator::post_process(model& m) const { update_containing_module(m, m.objects()); update_containing_module(m, m.primitives()); update_containing_module(m, m.enumerations()); update_containing_module(m, m.concepts()); update_containing_module(m, m.modules()); }
void modules_expander::expand_containing_module(model& m) const { update_containing_module(m, m.objects()); update_containing_module(m, m.primitives()); update_containing_module(m, m.enumerations()); update_containing_module(m, m.concepts()); update_containing_module(m, m.modules()); }
void merger::merge_model(const model& m) { BOOST_LOG_SEV(lg, info) << "Merging model: '" << m.name().qualified() << " modules: " << m.modules().size() << " concepts: " << m.concepts().size() << " primitives: " << m.primitives().size() << " enumerations: " << m.enumerations().size() << " objects: " << m.objects().size(); const auto mn(m.name().location().original_model_name()); for (const auto& c : m.concepts()) { check_name(mn, c.first, c.second.name()); merged_model_.concepts().insert(c); } for (const auto& pair : m.primitives()) { // FIXME: mega hack to handle primitive model. const auto pmn(mn == hardware_model_name ? empty : mn); check_name(pmn, pair.first, pair.second.name()); merged_model_.primitives().insert(pair); } for (const auto& pair : m.enumerations()) { check_name(mn, pair.first, pair.second.name()); merged_model_.enumerations().insert(pair); } for (const auto& pair : m.objects()) { check_name(mn, pair.first, pair.second.name()); merged_model_.objects().insert(pair); } for (const auto& pair : m.modules()) { if (!pair.first.simple().empty()) check_name(mn, pair.first, pair.second.name()); merged_model_.modules().insert(pair); } }
std::size_t model_hasher::hash(const model& v) { std::size_t seed(0); combine(seed, v.documentation()); combine(seed, v.extensions()); combine(seed, v.name()); combine(seed, v.generation_type()); combine(seed, v.origin_type()); combine(seed, hash_boost_optional_dogen_tack_name(v.containing_module())); combine(seed, hash_std_unordered_map_dogen_tack_name_dogen_tack_origin_types(v.references())); combine(seed, hash_std_unordered_set_dogen_tack_name(v.leaves())); combine(seed, hash_std_unordered_map_dogen_tack_name_dogen_tack_module(v.modules())); combine(seed, hash_std_unordered_map_dogen_tack_name_dogen_tack_concept(v.concepts())); combine(seed, hash_std_unordered_map_dogen_tack_name_dogen_tack_primitive(v.primitives())); combine(seed, hash_std_unordered_map_dogen_tack_name_dogen_tack_enumeration(v.enumerations())); combine(seed, hash_std_unordered_map_dogen_tack_name_dogen_tack_object(v.objects())); combine(seed, v.is_target()); combine(seed, v.has_generatable_types()); return seed; }