Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision 31565d02

Von Christian Ehringfeld vor mehr als 6 Jahren hinzugefügt

  • ID 31565d0226857e7b1db333ee85486d9d8eab370e
  • Vorgänger c24e100e
  • Nachfolger 55f3201d

Revert "Merge branch 'seb' of ssh://synlos.net/entitymanager into dev"

This reverts commit 2c89eb94005a9c61337ede9cb858dfb467d3f251, reversing
changes made to 55dc7c8e7203a1f5aadee49ec9693b47d0008928.

Unterschiede anzeigen:

src/entityinstancefactory.cpp
QHash<QByteArray, EntityInstanceFactory::Constructor>
EntityInstanceFactory::instance =
QHash<QByteArray, EntityInstanceFactory::Constructor>();
QHash<QByteArray, EntityInstanceFactory::Constructor>();
EntityInstanceFactory::EntityInstanceFactory() {
}
......
s.append("*");
}
auto ptr = EntityInstanceFactory::createInstance(QMetaType::type(
s.toUtf8().constData()));
s.toUtf8().constData()));
if (!ptr) {
s.remove("*");
ptr = EntityInstanceFactory::createObject(s.toUtf8());
......
if(!e) {
e = qobject_cast<Entity *>(metaObject->newInstance());
qDebug() << "Backup method for dynamic object creation was called. Maybe the class " +
QString(metaObject->className()) + " isn't registered?";
QString(metaObject->className()) + " isn't registered?";
}
} else {
void *newObj = QMetaType::create(metaTypeId);
......
}
Entity *EntityInstanceFactory::createInstance(const char *className,
const QHash<QString, QVariant> &attributes) {
const QHash<QString, QVariant> &attributes) {
Entity *e = EntityInstanceFactory::createInstance(className);
EntityInstanceFactory::setAttributes(e, attributes);
return e;
}
void EntityInstanceFactory::setAttributes(Entity *&e,
const QHash<QString, QVariant> &attributes,
QHash<QString, QMetaProperty> metaprops) {
const QHash<QString, QVariant> &attributes,
QHash<QString, QMetaProperty> metaprops) {
if (e) {
auto iterator = attributes.constBegin();
while (iterator != attributes.constEnd()) {
......
}
} else {
qWarning() << prop.name() << "on Entity" << EntityHelper::getClassname(
e) << "not writeable!";
e) << "not writeable!";
}
} else {
e->setProperty(iterator.key().toLatin1().data(), iterator.value());
......
}
void EntityInstanceFactory::setAttributes(Entity *&e,
const QHash<QString, QVariant> &attributes) {
const QHash<QString, QVariant> &attributes) {
if (!attributes.isEmpty()) {
auto metaprops = EntityHelper::getMetaProperties(e);
EntityInstanceFactory::setAttributes(e, attributes, metaprops);
......
QStringList EntityInstanceFactory::getRegisteredClasses() {
QStringList registered = QStringList();
for (auto i = EntityInstanceFactory::instance.constBegin();
i != EntityInstanceFactory::instance.constEnd(); ++i) {
i != EntityInstanceFactory::instance.constEnd(); ++i) {
registered.append(i.key());
}
return registered;
......
Entity *EntityInstanceFactory::createInstance(Attribute *&attr) {
return EntityInstanceFactory::createInstance(
EntityInstanceFactory::extractEntityType(
attr->getMetaProperty().typeName()));
EntityInstanceFactory::extractEntityType(
attr->getMetaProperty().typeName()));
}

Auch abrufbar als: Unified diff