コード例 #1
0
ファイル: instantiator.cpp プロジェクト: memsharded/dogen
bool instantiator::is_instantiable(const field_definition& fd) const {
    return
        fd.definition_type() == field_definition_types::global_template ||
        fd.definition_type() == field_definition_types::model_template ||
        fd.definition_type() == field_definition_types::facet_template ||
        fd.definition_type() == field_definition_types::formatter_template;
}
コード例 #2
0
std::size_t field_definition_hasher::hash(const field_definition& v) {
    std::size_t seed(0);

    combine(seed, v.name());
    combine(seed, v.value_type());
    combine(seed, v.scope());
    combine(seed, v.ownership_hierarchy());
    combine(seed, hash_boost_shared_ptr_dogen_dynamic_value(v.default_value()));
    combine(seed, v.definition_type());

    return seed;
}
コード例 #3
0
ファイル: instantiator.cpp プロジェクト: memsharded/dogen
std::list<field_definition>
instantiator::instantiate(const field_definition& fd) const {
    validate(fd);

    BOOST_LOG_SEV(lg, debug) << "Instantiating template: " << fd;

    std::list<field_definition> r;
    const auto dt(fd.definition_type());
    if (dt == field_definition_types::global_template)
        r = instantiate_global_template(fd);
    else if (dt == field_definition_types::facet_template)
        r = instantiate_facet_template(fd);
    else if (dt == field_definition_types::formatter_template)
        r = instantiate_formatter_template(fd);
    else {
        BOOST_LOG_SEV(lg, error) << unsupported_definition_type << dt;
        BOOST_THROW_EXCEPTION(instantiation_error(unsupported_definition_type +
                boost::lexical_cast<std::string>(dt)));
    }

    BOOST_LOG_SEV(lg, debug) << "Instantiation result: " << r;
    return r;
}
コード例 #4
0
ファイル: instantiator.cpp プロジェクト: memsharded/dogen
void instantiator::validate(const field_definition& fd) const {
    const auto sn(fd.name().simple());
    if (fd.name().simple().empty()) {
        BOOST_LOG_SEV(lg, error) << empty_simple_name;
        BOOST_THROW_EXCEPTION(instantiation_error(empty_simple_name));
    }

    if (!is_instantiable(fd)) {
        BOOST_LOG_SEV(lg, error) << field_not_instantiable << sn;
        BOOST_THROW_EXCEPTION(instantiation_error(field_not_instantiable + sn));
    }

    if (!fd.name().qualified().empty()) {
        BOOST_LOG_SEV(lg, error) << qualified_name_not_empty << sn;
        BOOST_THROW_EXCEPTION(
            instantiation_error(qualified_name_not_empty + sn));
    }

    if (fd.definition_type() == field_definition_types::global_template) {
        if (!fd.ownership_hierarchy().facet_name().empty()) {
            BOOST_LOG_SEV(lg, error) << facet_name_not_empty << sn;
            BOOST_THROW_EXCEPTION(
                instantiation_error(facet_name_not_empty + sn));
        }

        if (!fd.ownership_hierarchy().formatter_name().empty()) {
            BOOST_LOG_SEV(lg, error) << formatter_name_not_empty << sn;
            BOOST_THROW_EXCEPTION(
                instantiation_error(formatter_name_not_empty + sn));
        }

        if (!fd.ownership_hierarchy().formatter_group_name().empty()) {
            BOOST_LOG_SEV(lg, error) << formatter_group_not_empty << sn;
            BOOST_THROW_EXCEPTION(
                instantiation_error(formatter_group_not_empty + sn));
        }
    }

    if (fd.definition_type() == field_definition_types::facet_template) {
        if (!fd.ownership_hierarchy().facet_name().empty()) {
            BOOST_LOG_SEV(lg, error) << facet_name_not_empty << sn;
            BOOST_THROW_EXCEPTION(
                instantiation_error(facet_name_not_empty + sn));
        }

        if (!fd.ownership_hierarchy().formatter_group_name().empty()) {
            BOOST_LOG_SEV(lg, error) << formatter_group_not_empty << sn;
            BOOST_THROW_EXCEPTION(
                instantiation_error(formatter_group_not_empty + sn));
        }

        if (!fd.ownership_hierarchy().formatter_name().empty()) {
            BOOST_LOG_SEV(lg, error) << formatter_name_not_empty << sn;
            BOOST_THROW_EXCEPTION(
                instantiation_error(formatter_name_not_empty + sn));
        }
    }

    if (fd.definition_type() == field_definition_types::formatter_template) {
        if (!fd.ownership_hierarchy().formatter_name().empty()) {
            BOOST_LOG_SEV(lg, error) << formatter_name_not_empty << sn;
            BOOST_THROW_EXCEPTION(
                instantiation_error(formatter_name_not_empty + sn));
        }
    }
}