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(); }
DataTypeEnum<Type>::DataTypeEnum(const DataTypeEnum & other) : values{other.values}, name{other.name} { fillMaps(); }