Little refactor

This commit is contained in:
Filippo Cucchetto 2016-01-23 19:02:45 +01:00
parent c11cc30180
commit 553bec0eb7
2 changed files with 13 additions and 15 deletions

View File

@ -27,7 +27,7 @@ public:
virtual const DosIQMetaObject* superClassDosMetaObject() const = 0;
};
/// Base class for
/// Base class for any DosIQMetaObject
class BaseDosQMetaObject : public DosIQMetaObject
{
public:
@ -41,7 +41,7 @@ public:
QMetaMethod writeSlot(const char *propertyName) const override { return QMetaMethod(); }
const DosIQMetaObject* superClassDosMetaObject() const { return nullptr; }
private:
protected:
SafeQMetaObjectPtr m_metaObject;
};
@ -60,10 +60,10 @@ public:
};
/// This the generic version used by subclasses of QObject or QAbstractListModels
class DosQMetaObject : public DosIQMetaObject
class DosQMetaObject : public BaseDosQMetaObject
{
public:
DosQMetaObject(std::shared_ptr<const DosIQMetaObject> superClassDosMetaObject,
DosQMetaObject(DosIQMetaObjectPtr superClassDosMetaObject,
const QString& className,
const SignalDefinitions &signalDefinitions,
const SlotDefinitions &slotDefinitions,
@ -72,7 +72,6 @@ public:
QMetaMethod signal(const QString& signalName) const override;
QMetaMethod readSlot(const char* propertyName) const override;
QMetaMethod writeSlot(const char* propertyName) const override;
const QMetaObject *metaObject() const override;
const DosIQMetaObject *superClassDosMetaObject() const override;
private:
@ -81,10 +80,9 @@ private:
const SlotDefinitions &slotDefinitions,
const PropertyDefinitions &propertyDefinitions);
std::shared_ptr<const DosIQMetaObject> m_superClassDosMetaObject;
const DosIQMetaObjectPtr m_superClassDosMetaObject;
QHash<QString, int> m_signalIndexByName;
QHash<QString, QPair<int,int>> m_propertySlots;
SafeQMetaObjectPtr m_metaObject;
};
/// This class simply holds a ptr to a IDosQMetaObject

View File

@ -61,14 +61,19 @@ DosQAbstractListModelMetaObject::DosQAbstractListModelMetaObject()
: BaseDosQMetaObject(::createDynamicQAbstractListModelMetaObject())
{}
DosQMetaObject::DosQMetaObject(std::shared_ptr<const DosIQMetaObject> superClassMetaObject,
DosQMetaObject::DosQMetaObject(DosIQMetaObjectPtr superClassMetaObject,
const QString &className,
const SignalDefinitions& signalDefinitions,
const SlotDefinitions& slotDefinitions,
const PropertyDefinitions& propertyDefinitions)
: m_superClassDosMetaObject(std::move(superClassMetaObject))
, m_metaObject(createMetaObject(className, signalDefinitions, slotDefinitions, propertyDefinitions))
: BaseDosQMetaObject(nullptr)
, m_superClassDosMetaObject(std::move(superClassMetaObject))
, m_signalIndexByName(QHash<QString, int>())
, m_propertySlots(QHash<QString, QPair<int,int>>())
{
// We do the metaobject initialization here because
// we must wait for both maps to be initialized before filling them
m_metaObject.reset(createMetaObject(className, signalDefinitions, slotDefinitions, propertyDefinitions));
}
QMetaObject *DosQMetaObject::createMetaObject(const QString &className,
@ -142,11 +147,6 @@ QMetaMethod DosQMetaObject::writeSlot(const char *propertyName) const
return QMetaMethod();
}
const QMetaObject *DosQMetaObject::metaObject() const
{
return m_metaObject;
}
const DosIQMetaObject *DosQMetaObject::superClassDosMetaObject() const
{
return m_superClassDosMetaObject.get();