Beispiel #1
0
DataTypeEnum<Type>::DataTypeEnum(const Values & values_) : values{values_}
{
    if (values.empty())
        throw Exception{
            "DataTypeEnum enumeration cannot be empty",
            ErrorCodes::EMPTY_DATA_PASSED
        };

    fillMaps();

    std::sort(std::begin(values), std::end(values), [] (auto & left, auto & right) {
        return left.second < right.second;
    });

    name = generateName(values);
}
/**
 * @brief EditEntityDialog::setData
 * @param model
 * @param id
 */
void EditEntityDialog::setData(const models::SharedApplicationModel &model, const entity::SharedType &type)
{
    Q_ASSERT(model);
    Q_ASSERT(type);

    m_ApplicationModel = model;
    m_Project = m_ApplicationModel->currentProject();
    m_Scope = m_Project->database()->getScope(type->scopeId());
    m_Type = type;

    components::ComponentsMaker &maker = m_SignatureEditDelegate->maker();
    maker.setModel(m_ApplicationModel);
    maker.setScope(m_Scope);
    maker.setEntity(m_Type);

    // Temporary {
    if (m_Type->hashType() == entity::Class::staticHashType()) {
        auto cl = std::static_pointer_cast<entity::Class>(m_Type);

        if (cl->methods().isEmpty()) {
            auto intType = m_Scope->addType("int");
            auto doubleType = m_Scope->addType("double");

            cl->makeMethod("foo")->setReturnTypeId(intType->id());
            cl->makeMethod("bar")->setReturnTypeId(doubleType->id());
            cl->makeMethod("baz");
        }

        if (cl->fields().isEmpty()) {
            cl->addField("f1", "stub");
            cl->addField("f2", "stub");
        }
    }
    // }

    auto signatureMaker = std::make_unique<translation::SignatureMaker>(
                              m_ApplicationModel->globalDatabase(), m_Project->database(),
                              m_Scope, m_Type
                          );
    m_ComponentsModel->setSignatureMaker(std::move(signatureMaker));
    m_ComponentsModel->setComponents(m_Type);

    fillMaps();
}
Beispiel #3
0
DataTypeEnum<Type>::DataTypeEnum(const DataTypeEnum & other) : values{other.values}, name{other.name}
{
    fillMaps();
}