예제 #1
0
std::size_t visitor_hasher::hash(const visitor& v) {
    std::size_t seed(0);

    combine(seed, dynamic_cast<const dogen::yarn::element&>(v));

    combine(seed, hash_std_list_dogen_yarn_name(v.visits()));
    combine(seed, hash_boost_optional_dogen_yarn_name(v.parent()));

    return seed;
}
예제 #2
0
std::size_t concept_hasher::hash(const concept& v) {
    std::size_t seed(0);

    combine(seed, dynamic_cast<const dogen::yarn::element&>(v));

    combine(seed, hash_std_list_dogen_yarn_attribute(v.all_attributes()));
    combine(seed, hash_std_list_dogen_yarn_attribute(v.local_attributes()));
    combine(seed, hash_std_unordered_map_dogen_yarn_name_std_list_dogen_yarn_attribute(v.inherited_attributes()));
    combine(seed, v.is_immutable());
    combine(seed, v.is_fluent());
    combine(seed, hash_std_list_dogen_yarn_name(v.refines()));
    combine(seed, v.is_child());

    return seed;
}