Given a pass of astyle

This commit is contained in:
Filippo Cucchetto 2016-02-27 15:07:23 +01:00
parent b2f0c64d15
commit 7f1f91a71e
11 changed files with 254 additions and 262 deletions

View File

@ -15,7 +15,7 @@ extern "C"
#endif #endif
// QCoreApplication // QCoreApplication
DOS_API void dos_qcoreapplication_application_dir_path(char** result); DOS_API void dos_qcoreapplication_application_dir_path(char **result);
// QGuiApplication // QGuiApplication
DOS_API void dos_qguiapplication_create(); DOS_API void dos_qguiapplication_create();
@ -30,70 +30,70 @@ DOS_API void dos_qapplication_quit();
DOS_API void dos_qapplication_delete(); DOS_API void dos_qapplication_delete();
// QQmlApplicationEngine // QQmlApplicationEngine
DOS_API void dos_qqmlapplicationengine_create(void** vptr); DOS_API void dos_qqmlapplicationengine_create(void **vptr);
DOS_API void dos_qqmlapplicationengine_load(void* vptr, const char* filename); DOS_API void dos_qqmlapplicationengine_load(void *vptr, const char *filename);
DOS_API void dos_qqmlapplicationengine_load_url(void* vptr, void* url); DOS_API void dos_qqmlapplicationengine_load_url(void *vptr, void *url);
DOS_API void dos_qqmlapplicationengine_load_data(void* vptr, const char* data); DOS_API void dos_qqmlapplicationengine_load_data(void *vptr, const char *data);
DOS_API void dos_qqmlapplicationengine_add_import_path(void* vptr, const char* path); DOS_API void dos_qqmlapplicationengine_add_import_path(void *vptr, const char *path);
DOS_API void dos_qqmlapplicationengine_context(void* vptr, void** context); DOS_API void dos_qqmlapplicationengine_context(void *vptr, void **context);
DOS_API void dos_qqmlapplicationengine_delete(void* vptr); DOS_API void dos_qqmlapplicationengine_delete(void *vptr);
// QQuickView // QQuickView
DOS_API void dos_qquickview_create(void** vptr); DOS_API void dos_qquickview_create(void **vptr);
DOS_API void dos_qquickview_show(void* vptr); DOS_API void dos_qquickview_show(void *vptr);
DOS_API void dos_qquickview_source(void* vptr, char** result); DOS_API void dos_qquickview_source(void *vptr, char **result);
DOS_API void dos_qquickview_set_source_url(void* vptr, void* url); DOS_API void dos_qquickview_set_source_url(void *vptr, void *url);
DOS_API void dos_qquickview_set_source(void* vptr, const char* filename); DOS_API void dos_qquickview_set_source(void *vptr, const char *filename);
DOS_API void dos_qquickview_set_resize_mode(void* vptr, int resizeMode); DOS_API void dos_qquickview_set_resize_mode(void *vptr, int resizeMode);
DOS_API void dos_qquickview_delete(void* vptr); DOS_API void dos_qquickview_delete(void *vptr);
DOS_API void dos_qquickview_rootContext(void* vptr, void** result); DOS_API void dos_qquickview_rootContext(void *vptr, void **result);
// QQmlContext // QQmlContext
DOS_API void dos_qqmlcontext_baseUrl(void* vptr, char** result); DOS_API void dos_qqmlcontext_baseUrl(void *vptr, char **result);
DOS_API void dos_qqmlcontext_setcontextproperty(void* vptr, const char* name, void* value); DOS_API void dos_qqmlcontext_setcontextproperty(void *vptr, const char *name, void *value);
// CharArray // CharArray
DOS_API void dos_chararray_delete(char* ptr); DOS_API void dos_chararray_delete(char *ptr);
// QVariant // QVariant
DOS_API void dos_qvariant_create(void** vptr); DOS_API void dos_qvariant_create(void **vptr);
DOS_API void dos_qvariant_create_int(void** vptr, int value); DOS_API void dos_qvariant_create_int(void **vptr, int value);
DOS_API void dos_qvariant_create_bool(void** vptr, bool value); DOS_API void dos_qvariant_create_bool(void **vptr, bool value);
DOS_API void dos_qvariant_create_string(void** vptr, const char* value); DOS_API void dos_qvariant_create_string(void **vptr, const char *value);
DOS_API void dos_qvariant_create_qobject(void** vptr, void* value); DOS_API void dos_qvariant_create_qobject(void **vptr, void *value);
DOS_API void dos_qvariant_create_qvariant(void** vptr, void* value); DOS_API void dos_qvariant_create_qvariant(void **vptr, void *value);
DOS_API void dos_qvariant_create_float(void** vptr, float value); DOS_API void dos_qvariant_create_float(void **vptr, float value);
DOS_API void dos_qvariant_create_double(void** vptr, double value); DOS_API void dos_qvariant_create_double(void **vptr, double value);
DOS_API void dos_qvariant_toInt(void* vptr, int* result); DOS_API void dos_qvariant_toInt(void *vptr, int *result);
DOS_API void dos_qvariant_setInt(void* vptr, int value); DOS_API void dos_qvariant_setInt(void *vptr, int value);
DOS_API void dos_qvariant_toBool(void* vptr, bool* result); DOS_API void dos_qvariant_toBool(void *vptr, bool *result);
DOS_API void dos_qvariant_setBool(void* vptr, bool value); DOS_API void dos_qvariant_setBool(void *vptr, bool value);
DOS_API void dos_qvariant_toFloat(void* vptr, float* result); DOS_API void dos_qvariant_toFloat(void *vptr, float *result);
DOS_API void dos_qvariant_setFloat(void* vptr, float value); DOS_API void dos_qvariant_setFloat(void *vptr, float value);
DOS_API void dos_qvariant_toDouble(void* vptr, double* result); DOS_API void dos_qvariant_toDouble(void *vptr, double *result);
DOS_API void dos_qvariant_setDouble(void* vptr, double value); DOS_API void dos_qvariant_setDouble(void *vptr, double value);
DOS_API void dos_qvariant_toString(void* vptr, char** result); DOS_API void dos_qvariant_toString(void *vptr, char **result);
DOS_API void dos_qvariant_setString(void* vptr, const char* value); DOS_API void dos_qvariant_setString(void *vptr, const char *value);
DOS_API void dos_qvariant_toQObject(void* vptr, void** value); DOS_API void dos_qvariant_toQObject(void *vptr, void **value);
DOS_API void dos_qvariant_setQObject(void* vptr, void* value); DOS_API void dos_qvariant_setQObject(void *vptr, void *value);
DOS_API void dos_qvariant_isnull(void* vptr, bool* result); DOS_API void dos_qvariant_isnull(void *vptr, bool *result);
DOS_API void dos_qvariant_delete(void* vptr); DOS_API void dos_qvariant_delete(void *vptr);
DOS_API void dos_qvariant_assign(void* vptr, void* other); DOS_API void dos_qvariant_assign(void *vptr, void *other);
// QMetaObject // QMetaObject
DOS_API void dos_qmetaobject_create(void** vptr, DOS_API void dos_qmetaobject_create(void **vptr,
void *superClassMetaObject, void *superClassMetaObject,
const char *className, const char *className,
const SignalDefinitions *signalDefinitions, const SignalDefinitions *signalDefinitions,
const SlotDefinitions *slotDefinitions, const SlotDefinitions *slotDefinitions,
const PropertyDefinitions *propertyDefinitions); const PropertyDefinitions *propertyDefinitions);
DOS_API void dos_qmetaobject_delete(void* vptr); DOS_API void dos_qmetaobject_delete(void *vptr);
// QAbstractListModel // QAbstractListModel
DOS_API void dos_qabstractlistmodel_qmetaobject(void** vptr); DOS_API void dos_qabstractlistmodel_qmetaobject(void **vptr);
DOS_API void dos_qabstractlistmodel_create(void** vptr, DOS_API void dos_qabstractlistmodel_create(void **vptr,
void* callbackObject, void *callbackObject,
void* metaObject, void *metaObject,
DObjectCallback dObjectCallback, DObjectCallback dObjectCallback,
RowCountCallback rowCountCallback, RowCountCallback rowCountCallback,
ColumnCountCallback columnCountCallback, ColumnCountCallback columnCountCallback,
@ -102,68 +102,68 @@ DOS_API void dos_qabstractlistmodel_create(void** vptr,
RoleNamesCallback roleNamesCallback, RoleNamesCallback roleNamesCallback,
FlagsCallback flagsCallback, FlagsCallback flagsCallback,
HeaderDataCallback headerDataCallback); HeaderDataCallback headerDataCallback);
DOS_API void dos_qabstractlistmodel_beginInsertRows(void* vptr, void* parent, int first, int last); DOS_API void dos_qabstractlistmodel_beginInsertRows(void *vptr, void *parent, int first, int last);
DOS_API void dos_qabstractlistmodel_endInsertRows(void* vptr); DOS_API void dos_qabstractlistmodel_endInsertRows(void *vptr);
DOS_API void dos_qabstractlistmodel_beginRemoveRows(void* vptr, void* parent, int first, int last); DOS_API void dos_qabstractlistmodel_beginRemoveRows(void *vptr, void *parent, int first, int last);
DOS_API void dos_qabstractlistmodel_endRemoveRows(void* vptr); DOS_API void dos_qabstractlistmodel_endRemoveRows(void *vptr);
DOS_API void dos_qabstractlistmodel_beginResetModel(void* vptr); DOS_API void dos_qabstractlistmodel_beginResetModel(void *vptr);
DOS_API void dos_qabstractlistmodel_endResetModel(void* vptr); DOS_API void dos_qabstractlistmodel_endResetModel(void *vptr);
DOS_API void dos_qabstractlistmodel_dataChanged(void* vptr, void* topLeft, void* bottomRight, int* rolesPtr, int rolesLength); DOS_API void dos_qabstractlistmodel_dataChanged(void *vptr, void *topLeft, void *bottomRight, int *rolesPtr, int rolesLength);
// QObject // QObject
DOS_API void dos_qobject_qmetaobject(void** vptr); DOS_API void dos_qobject_qmetaobject(void **vptr);
DOS_API void dos_qobject_create(void** vptr, void* dObjectPointer, DOS_API void dos_qobject_create(void **vptr, void *dObjectPointer,
void* metaObject, void *metaObject,
DObjectCallback dObjectCallback); DObjectCallback dObjectCallback);
DOS_API void dos_qobject_signal_emit(void* vptr, DOS_API void dos_qobject_signal_emit(void *vptr,
const char* name, const char *name,
int parametersCount, int parametersCount,
void** parameters); void **parameters);
DOS_API void dos_qobject_signal_connect(void* senderVPtr, DOS_API void dos_qobject_signal_connect(void *senderVPtr,
const char* signal, const char *signal,
void* receiverVPtr, void *receiverVPtr,
const char* method, const char *method,
int type, int type,
bool* result); bool *result);
DOS_API void dos_qobject_signal_disconnect(void* senderVPtr, DOS_API void dos_qobject_signal_disconnect(void *senderVPtr,
const char* signal, const char *signal,
void* receiverVPtr, void *receiverVPtr,
const char* method, const char *method,
bool* result); bool *result);
DOS_API void dos_qobject_objectName(void* vptr, char** result); DOS_API void dos_qobject_objectName(void *vptr, char **result);
DOS_API void dos_qobject_setObjectName(void* vptr, const char* name); DOS_API void dos_qobject_setObjectName(void *vptr, const char *name);
DOS_API void dos_qobject_delete(void* vptr); DOS_API void dos_qobject_delete(void *vptr);
// QModelIndex // QModelIndex
DOS_API void dos_qmodelindex_create(void** vptr); DOS_API void dos_qmodelindex_create(void **vptr);
DOS_API void dos_qmodelindex_create_qmodelindex(void** vptr, void* index); DOS_API void dos_qmodelindex_create_qmodelindex(void **vptr, void *index);
DOS_API void dos_qmodelindex_delete(void* vptr); DOS_API void dos_qmodelindex_delete(void *vptr);
DOS_API void dos_qmodelindex_row(void* vptr, int* row); DOS_API void dos_qmodelindex_row(void *vptr, int *row);
DOS_API void dos_qmodelindex_column(void* vptr, int* column); DOS_API void dos_qmodelindex_column(void *vptr, int *column);
DOS_API void dos_qmodelindex_isValid(void* vptr, bool* isValid); DOS_API void dos_qmodelindex_isValid(void *vptr, bool *isValid);
DOS_API void dos_qmodelindex_data(void* vptr, int role, void* data); DOS_API void dos_qmodelindex_data(void *vptr, int role, void *data);
DOS_API void dos_qmodelindex_parent(void* vptr, void* parent); DOS_API void dos_qmodelindex_parent(void *vptr, void *parent);
DOS_API void dos_qmodelindex_child(void* vptr, int row, int column, void* child); DOS_API void dos_qmodelindex_child(void *vptr, int row, int column, void *child);
DOS_API void dos_qmodelindex_sibling(void* vptr, int row, int column, void* sibling); DOS_API void dos_qmodelindex_sibling(void *vptr, int row, int column, void *sibling);
DOS_API void dos_qmodelindex_assign(void* l, void* r); DOS_API void dos_qmodelindex_assign(void *l, void *r);
// QHash<int, QByteArray> // QHash<int, QByteArray>
DOS_API void dos_qhash_int_qbytearray_create(QHashIntQByteArrayVoidPtr* vptr); DOS_API void dos_qhash_int_qbytearray_create(QHashIntQByteArrayVoidPtr *vptr);
DOS_API void dos_qhash_int_qbytearray_delete(QHashIntQByteArrayVoidPtr vptr); DOS_API void dos_qhash_int_qbytearray_delete(QHashIntQByteArrayVoidPtr vptr);
DOS_API void dos_qhash_int_qbytearray_insert(QHashIntQByteArrayVoidPtr vptr, int key, const char* value); DOS_API void dos_qhash_int_qbytearray_insert(QHashIntQByteArrayVoidPtr vptr, int key, const char *value);
DOS_API void dos_qhash_int_qbytearray_value(QHashIntQByteArrayVoidPtr vptr, int key, char** result); DOS_API void dos_qhash_int_qbytearray_value(QHashIntQByteArrayVoidPtr vptr, int key, char **result);
// QResource // QResource
DOS_API void dos_qresource_register(const char* filename); DOS_API void dos_qresource_register(const char *filename);
// QUrl // QUrl
DOS_API void dos_qurl_create(void** vptr, const char* url, int parsingMode); DOS_API void dos_qurl_create(void **vptr, const char *url, int parsingMode);
DOS_API void dos_qurl_delete(void* vptr); DOS_API void dos_qurl_delete(void *vptr);
DOS_API void dos_qurl_to_string(void* vptr, char** result); DOS_API void dos_qurl_to_string(void *vptr, char **result);
// QDeclarative // QDeclarative
DOS_API void dos_qdeclarative_qmlregistertype(const QmlRegisterType* qmlRegisterType, int* result); DOS_API void dos_qdeclarative_qmlregistertype(const QmlRegisterType *qmlRegisterType, int *result);
DOS_API void dos_qdeclarative_qmlregistersingletontype(const QmlRegisterType* qmlRegisterType, int* result); DOS_API void dos_qdeclarative_qmlregistersingletontype(const QmlRegisterType *qmlRegisterType, int *result);
#ifdef __cplusplus #ifdef __cplusplus
} }

View File

@ -7,29 +7,28 @@ extern "C"
#endif #endif
// Raw data types // Raw data types
typedef void* QVariantVoidPtr; typedef void *QVariantVoidPtr;
typedef void* QModelIndexVoidPtr; typedef void *QModelIndexVoidPtr;
typedef void* QAbstractListModelVoidPtr; typedef void *QAbstractListModelVoidPtr;
typedef void* QQmlApplicationEngineVoidPtr; typedef void *QQmlApplicationEngineVoidPtr;
typedef void* QQuickViewVoidPtr; typedef void *QQuickViewVoidPtr;
typedef void* QQmlContextVoidPtr; typedef void *QQmlContextVoidPtr;
typedef void* QHashIntQByteArrayVoidPtr; typedef void *QHashIntQByteArrayVoidPtr;
// Raw function types // Raw function types
typedef void(*Function)(void*); typedef void(*Function)(void *);
typedef void(*DObjectCallback)(void*, void*, int, void**); typedef void(*DObjectCallback)(void *, void *, int, void **);
typedef void(*RowCountCallback)(void* model, const void* index, int* result); typedef void(*RowCountCallback)(void *model, const void *index, int *result);
typedef void(*ColumnCountCallback)(void* model, const void* index, int* result); typedef void(*ColumnCountCallback)(void *model, const void *index, int *result);
typedef void(*DataCallback)(void* model, const void* index, int role, QVariantVoidPtr result); typedef void(*DataCallback)(void *model, const void *index, int role, QVariantVoidPtr result);
typedef void(*SetDataCallback) (void* model, const void* index, const void* value, int role, bool* result); typedef void(*SetDataCallback) (void *model, const void *index, const void *value, int role, bool *result);
typedef void(*RoleNamesCallback)(void* model, QHashIntQByteArrayVoidPtr result); typedef void(*RoleNamesCallback)(void *model, QHashIntQByteArrayVoidPtr result);
typedef void(*FlagsCallback) (void* model, const void* index, int* result); typedef void(*FlagsCallback) (void *model, const void *index, int *result);
typedef void(*HeaderDataCallback) (void* model, int section, int orientation, int role, QVariantVoidPtr result); typedef void(*HeaderDataCallback) (void *model, int section, int orientation, int role, QVariantVoidPtr result);
typedef void(*CreateDObject)(int, void**, void**); typedef void(*CreateDObject)(int, void **, void **);
typedef void(*DeleteDObject)(int, void*); typedef void(*DeleteDObject)(int, void *);
struct QmlRegisterType struct QmlRegisterType {
{
int major; int major;
int minor; int minor;
const char *uri; const char *uri;
@ -39,46 +38,40 @@ struct QmlRegisterType
DeleteDObject deleteDObject; DeleteDObject deleteDObject;
}; };
struct SignalDefinition struct SignalDefinition {
{ const char *name;
const char* name;
int parametersCount; int parametersCount;
int* parametersMetaTypes; int *parametersMetaTypes;
}; };
struct SignalDefinitions struct SignalDefinitions {
{
int count; int count;
SignalDefinition* definitions; SignalDefinition *definitions;
}; };
struct SlotDefinition struct SlotDefinition {
{ const char *name;
const char* name;
int returnMetaType; int returnMetaType;
int parametersCount; int parametersCount;
int* parametersMetaTypes; int *parametersMetaTypes;
}; };
struct SlotDefinitions struct SlotDefinitions {
{
int count; int count;
SlotDefinition* definitions; SlotDefinition *definitions;
}; };
struct PropertyDefinition struct PropertyDefinition {
{ const char *name;
const char* name;
int propertyMetaType; int propertyMetaType;
const char* readSlot; const char *readSlot;
const char* writeSlot; const char *writeSlot;
const char* notifySignal; const char *notifySignal;
}; };
struct PropertyDefinitions struct PropertyDefinitions {
{
int count; int count;
PropertyDefinition* definitions; PropertyDefinition *definitions;
}; };
#ifdef __cplusplus #ifdef __cplusplus

View File

@ -10,11 +10,9 @@
#include "DOtherSide/DOtherSideTypes.h" #include "DOtherSide/DOtherSideTypes.h"
#include "DOtherSide/Utils.h" #include "DOtherSide/Utils.h"
namespace DOS namespace DOS {
{
struct SignalDefinition struct SignalDefinition {
{
SignalDefinition(QString n, SignalDefinition(QString n,
std::vector<QMetaType::Type> v) std::vector<QMetaType::Type> v)
: name(std::move(n)) : name(std::move(n))
@ -34,8 +32,7 @@ struct SignalDefinition
std::vector<QMetaType::Type> parameterTypes; std::vector<QMetaType::Type> parameterTypes;
}; };
struct SlotDefinition struct SlotDefinition {
{
SlotDefinition(QString n, SlotDefinition(QString n,
QMetaType::Type t, QMetaType::Type t,
std::vector<QMetaType::Type> v) std::vector<QMetaType::Type> v)
@ -57,8 +54,7 @@ struct SlotDefinition
std::vector<QMetaType::Type> parameterTypes; std::vector<QMetaType::Type> parameterTypes;
}; };
struct PropertyDefinition struct PropertyDefinition {
{
PropertyDefinition(QString n, PropertyDefinition(QString n,
QMetaType::Type t, QMetaType::Type t,
QString r, QString r,
@ -90,9 +86,9 @@ using SignalDefinitions = std::vector<SignalDefinition>;
using SlotDefinitions = std::vector<SlotDefinition>; using SlotDefinitions = std::vector<SlotDefinition>;
using PropertyDefinitions = std::vector<PropertyDefinition>; using PropertyDefinitions = std::vector<PropertyDefinition>;
SignalDefinitions toVector(const ::SignalDefinitions& cType); SignalDefinitions toVector(const ::SignalDefinitions &cType);
SlotDefinitions toVector(const ::SlotDefinitions& cType); SlotDefinitions toVector(const ::SlotDefinitions &cType);
PropertyDefinitions toVector(const ::PropertyDefinitions& cType); PropertyDefinitions toVector(const ::PropertyDefinitions &cType);
class DosIQMetaObjectHolder; class DosIQMetaObjectHolder;
class DosIQMetaObject; class DosIQMetaObject;
@ -101,31 +97,39 @@ class DosQMetaObject;
using OnMetaObject = std::function<DosIQMetaObjectHolder*()>; using OnMetaObject = std::function<DosIQMetaObjectHolder*()>;
using OnSlotExecuted = std::function<QVariant(const QString&, const std::vector<QVariant>&)>; using OnSlotExecuted = std::function<QVariant(const QString &, const std::vector<QVariant>&)>;
class SafeQMetaObjectPtr class SafeQMetaObjectPtr
{ {
public: public:
SafeQMetaObjectPtr(QMetaObject* ptr) SafeQMetaObjectPtr(QMetaObject *ptr)
: m_d(ptr, ::free) : m_d(ptr, ::free)
{} {}
SafeQMetaObjectPtr(SafeQMetaObjectPtr&&) = delete; SafeQMetaObjectPtr(SafeQMetaObjectPtr &&) = delete;
SafeQMetaObjectPtr(const SafeQMetaObjectPtr&) = delete; SafeQMetaObjectPtr(const SafeQMetaObjectPtr &) = delete;
SafeQMetaObjectPtr& operator=(const SafeQMetaObjectPtr&) = delete; SafeQMetaObjectPtr &operator=(const SafeQMetaObjectPtr &) = delete;
operator bool() const Q_DECL_NOEXCEPT { return m_d != nullptr; } operator bool() const Q_DECL_NOEXCEPT
operator const QMetaObject*() const Q_DECL_NOEXCEPT { return m_d.get(); } {
const QMetaObject* operator->() const Q_DECL_NOEXCEPT { return m_d.get(); } return m_d != nullptr;
void reset(QMetaObject* other) Q_DECL_NOEXCEPT { m_d.reset(other); } }
operator const QMetaObject *() const Q_DECL_NOEXCEPT
{
return m_d.get();
}
const QMetaObject *operator->() const Q_DECL_NOEXCEPT
{
return m_d.get();
}
void reset(QMetaObject *other) Q_DECL_NOEXCEPT { m_d.reset(other); }
private: private:
std::unique_ptr<QMetaObject, void(*)(void*)> m_d; std::unique_ptr<QMetaObject, void(*)(void *)> m_d;
}; };
struct QmlRegisterType struct QmlRegisterType {
{
int major; int major;
int minor; int minor;
std::string uri; std::string uri;

View File

@ -7,14 +7,13 @@
#include "DOtherSide/DosIQObjectImpl.h" #include "DOtherSide/DosIQObjectImpl.h"
#include "DOtherSide/OnSlotExecutedHandler.h" #include "DOtherSide/OnSlotExecutedHandler.h"
namespace DOS namespace DOS {
{
class DosQAbstractListModel : public QAbstractListModel, public DosIQObjectImpl class DosQAbstractListModel : public QAbstractListModel, public DosIQObjectImpl
{ {
public: public:
/// Constructor /// Constructor
DosQAbstractListModel(void* modelObject, DosQAbstractListModel(void *modelObject,
DosIQMetaObjectPtr metaObject, DosIQMetaObjectPtr metaObject,
OnSlotExecuted onSlotExecuted, OnSlotExecuted onSlotExecuted,
RowCountCallback rowCountCallback, RowCountCallback rowCountCallback,
@ -35,37 +34,37 @@ public:
int qt_metacall(QMetaObject::Call, int, void **) override; int qt_metacall(QMetaObject::Call, int, void **) override;
/// Return the model's row count /// Return the model's row count
int rowCount(const QModelIndex& parent = QModelIndex()) const override; int rowCount(const QModelIndex &parent = QModelIndex()) const override;
/// Return the model's column count /// Return the model's column count
int columnCount(const QModelIndex& parent = QModelIndex()) const override; int columnCount(const QModelIndex &parent = QModelIndex()) const override;
/// Return the QVariant at the given index /// Return the QVariant at the given index
QVariant data(const QModelIndex& index, int role = Qt::DisplayRole) const override; QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override;
/// Sets the QVariant value at the given index and role /// Sets the QVariant value at the given index and role
bool setData(const QModelIndex& index, const QVariant& value, int role = Qt::EditRole) override; bool setData(const QModelIndex &index, const QVariant &value, int role = Qt::EditRole) override;
/// Return the item flags for the given index /// Return the item flags for the given index
Qt::ItemFlags flags(const QModelIndex& index) const override; Qt::ItemFlags flags(const QModelIndex &index) const override;
/// Return the data for the given role and section in the header with the specified orientation /// Return the data for the given role and section in the header with the specified orientation
QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const override; QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const override;
/// Return the dModelPointer /// Return the dModelPointer
void* modelObject(); void *modelObject();
/// Return the roleNames /// Return the roleNames
QHash<int, QByteArray> roleNames() const override; QHash<int, QByteArray> roleNames() const override;
/// Expose beginInsertRows /// Expose beginInsertRows
void publicBeginInsertRows(const QModelIndex& index, int first, int last); void publicBeginInsertRows(const QModelIndex &index, int first, int last);
/// Expose endInsertRows /// Expose endInsertRows
void publicEndInsertRows(); void publicEndInsertRows();
/// Expose beginRemoveRows /// Expose beginRemoveRows
void publicBeginRemoveRows(const QModelIndex& index, int first, int last); void publicBeginRemoveRows(const QModelIndex &index, int first, int last);
/// Expose endInsertRows /// Expose endInsertRows
void publicEndRemoveRows(); void publicEndRemoveRows();
@ -77,13 +76,13 @@ public:
void publicEndResetModel(); void publicEndResetModel();
/// Expose dataChanged /// Expose dataChanged
void publicDataChanged(const QModelIndex& topLeft, void publicDataChanged(const QModelIndex &topLeft,
const QModelIndex& bottomRight, const QModelIndex &bottomRight,
const QVector<int>& roles = QVector<int>()); const QVector<int> &roles = QVector<int>());
private: private:
std::unique_ptr<DosIQObjectImpl> m_impl; std::unique_ptr<DosIQObjectImpl> m_impl;
void* m_modelObject; void *m_modelObject;
RowCountCallback m_rowCountCallback; RowCountCallback m_rowCountCallback;
ColumnCountCallback m_columnCountCallback; ColumnCountCallback m_columnCountCallback;
DataCallback m_dataCallback; DataCallback m_dataCallback;

View File

@ -7,8 +7,7 @@
#include "DOtherSideTypesCpp.h" #include "DOtherSideTypesCpp.h"
#include "DOtherSide/DosIQObjectImpl.h" #include "DOtherSide/DosIQObjectImpl.h"
namespace DOS namespace DOS {
{
/// This class model a QObject /// This class model a QObject
class DosQObject : public QObject, public DosIQObjectImpl class DosQObject : public QObject, public DosIQObjectImpl
@ -19,10 +18,10 @@ public:
OnSlotExecuted onSlotExecuted); OnSlotExecuted onSlotExecuted);
/// Emit a signal /// Emit a signal
bool emitSignal(const QString& name, const std::vector<QVariant>& arguments) override; bool emitSignal(const QString &name, const std::vector<QVariant> &arguments) override;
/// Return the metaObject /// Return the metaObject
const QMetaObject* metaObject() const override; const QMetaObject *metaObject() const override;
/// The qt_metacall /// The qt_metacall
int qt_metacall(QMetaObject::Call, int, void **) override; int qt_metacall(QMetaObject::Call, int, void **) override;

View File

@ -10,8 +10,7 @@
#include "DOtherSide/DosQObject.h" #include "DOtherSide/DosQObject.h"
#include "DOtherSide/DOtherSideTypesCpp.h" #include "DOtherSide/DOtherSideTypesCpp.h"
namespace DOS namespace DOS {
{
/// This class implement the interface IDosQObject /// This class implement the interface IDosQObject
/// and it's injected in DosQObject /// and it's injected in DosQObject
@ -21,28 +20,28 @@ public:
using ParentMetaCall = std::function<int(QMetaObject::Call, int, void **)>; using ParentMetaCall = std::function<int(QMetaObject::Call, int, void **)>;
/// Constructor /// Constructor
DosQObjectImpl(QObject* parent, DosQObjectImpl(QObject *parent,
ParentMetaCall parentMetaCall, ParentMetaCall parentMetaCall,
std::shared_ptr<const DosIQMetaObject> metaObject, std::shared_ptr<const DosIQMetaObject> metaObject,
OnSlotExecuted onSlotExecuted); OnSlotExecuted onSlotExecuted);
/// @see IDosQObject::emitSignal /// @see IDosQObject::emitSignal
bool emitSignal(const QString& name, const std::vector<QVariant>& arguments) override; bool emitSignal(const QString &name, const std::vector<QVariant> &arguments) override;
/// @see IDosQObject::metaObject() /// @see IDosQObject::metaObject()
const QMetaObject* metaObject() const override; const QMetaObject *metaObject() const override;
/// @see IDosQObject::qt_metacall /// @see IDosQObject::qt_metacall
int qt_metacall(QMetaObject::Call, int, void **) override; int qt_metacall(QMetaObject::Call, int, void **) override;
private: private:
bool executeSlot(const QMetaMethod& method, void** args, int argumentsOffset = 1); bool executeSlot(const QMetaMethod &method, void **args, int argumentsOffset = 1);
bool executeSlot(int index, void** args); bool executeSlot(int index, void **args);
bool readProperty(int index, void** args); bool readProperty(int index, void **args);
bool writeProperty(int index, void** args); bool writeProperty(int index, void **args);
QObject* m_parent; QObject *m_parent;
const ParentMetaCall m_parentMetaCall; const ParentMetaCall m_parentMetaCall;
const OnSlotExecuted m_onSlotExecuted; const OnSlotExecuted m_onSlotExecuted;
mutable std::shared_ptr<const DosIQMetaObject> m_metaObject; mutable std::shared_ptr<const DosIQMetaObject> m_metaObject;

View File

@ -5,6 +5,6 @@
#include <QtCore/QObject> #include <QtCore/QObject>
namespace DOS { namespace DOS {
int dosQmlRegisterType(QmlRegisterType args); int dosQmlRegisterType(QmlRegisterType args);
int dosQmlRegisterSingletonType(QmlRegisterType args); int dosQmlRegisterSingletonType(QmlRegisterType args);
} }

View File

@ -7,18 +7,17 @@
// DOtherSide // DOtherSide
#include "DOtherSide/DOtherSideTypesCpp.h" #include "DOtherSide/DOtherSideTypesCpp.h"
namespace DOS namespace DOS {
{
class OnSlotExecutedHandler class OnSlotExecutedHandler
{ {
public: public:
OnSlotExecutedHandler(void* dObjectPointer, DObjectCallback dObjectCallback); OnSlotExecutedHandler(void *dObjectPointer, DObjectCallback dObjectCallback);
QVariant operator()(const QString& name, const std::vector<QVariant>& args); QVariant operator()(const QString &name, const std::vector<QVariant> &args);
private: private:
void* m_dObjectPointer; void *m_dObjectPointer;
DObjectCallback m_dObjectCallback; DObjectCallback m_dObjectCallback;
}; };

View File

@ -7,29 +7,33 @@
// Qt // Qt
#include <QtGlobal> #include <QtGlobal>
namespace DOS namespace DOS {
{
template <typename T> template <typename T>
struct wrapped_array { struct wrapped_array {
wrapped_array(T* first, T* last) : begin_ {first}, end_ {last} {} wrapped_array(T *first, T *last) : begin_ {first}, end_ {last} {}
wrapped_array(T* first, std::ptrdiff_t size) wrapped_array(T *first, std::ptrdiff_t size)
: wrapped_array {first, first + size} {} : wrapped_array {first, first + size} {}
T* begin() const Q_DECL_NOEXCEPT { return begin_; } T *begin() const Q_DECL_NOEXCEPT
T* end() const Q_DECL_NOEXCEPT { return end_; } {
return begin_;
}
T *end() const Q_DECL_NOEXCEPT
{
return end_;
}
T* begin_; T *begin_;
T* end_; T *end_;
}; };
template <typename T> template <typename T>
wrapped_array<T> wrap_array(T* first, std::ptrdiff_t size) Q_DECL_NOEXCEPT wrapped_array<T> wrap_array(T *first, std::ptrdiff_t size) Q_DECL_NOEXCEPT
{ return {first, size}; } { return {first, size}; }
template <typename T, typename G> template <typename T, typename G>
std::vector<T> toVector(G* first, std::ptrdiff_t size) Q_DECL_NOEXCEPT std::vector<T> toVector(G *first, std::ptrdiff_t size) Q_DECL_NOEXCEPT {
{
const wrapped_array<G> array = wrap_array(first, size); const wrapped_array<G> array = wrap_array(first, size);
std::vector<T> result; std::vector<T> result;
for (auto it = array.begin(); it != array.end(); ++it) for (auto it = array.begin(); it != array.end(); ++it)
@ -38,8 +42,7 @@ std::vector<T> toVector(G* first, std::ptrdiff_t size) Q_DECL_NOEXCEPT
} }
template <typename T, typename K, typename R = typename std::result_of<K(T)>::type> template <typename T, typename K, typename R = typename std::result_of<K(T)>::type>
std::vector<R> toVector(T* first, std::ptrdiff_t size, K f) Q_DECL_NOEXCEPT std::vector<R> toVector(T *first, std::ptrdiff_t size, K f) Q_DECL_NOEXCEPT {
{
wrapped_array<T> array = wrap_array<T>(first, size); wrapped_array<T> array = wrap_array<T>(first, size);
std::vector<R> result; std::vector<R> result;
for (auto it = array.begin(); it != array.end(); ++it) for (auto it = array.begin(); it != array.end(); ++it)

View File

@ -342,7 +342,7 @@ void dos_qobject_create(void **vptr, void *dObjectPointer, void *metaObject,
auto dosQObject = new DosQObject(metaObjectHolder->data(), auto dosQObject = new DosQObject(metaObjectHolder->data(),
OnSlotExecutedHandler(dObjectPointer, dObjectCallback)); OnSlotExecutedHandler(dObjectPointer, dObjectCallback));
QQmlEngine::setObjectOwnership(dosQObject, QQmlEngine::CppOwnership); QQmlEngine::setObjectOwnership(dosQObject, QQmlEngine::CppOwnership);
*vptr = static_cast<QObject*>(dosQObject); *vptr = static_cast<QObject *>(dosQObject);
} }
void dos_qobject_delete(void *vptr) void dos_qobject_delete(void *vptr)
@ -391,7 +391,7 @@ void dos_qobject_objectName(void *vptr, char **result)
convert_to_cstring(object->objectName(), result); convert_to_cstring(object->objectName(), result);
} }
void dos_qobject_setObjectName(void *vptr, const char* name) void dos_qobject_setObjectName(void *vptr, const char *name)
{ {
auto object = static_cast<QObject *>(vptr); auto object = static_cast<QObject *>(vptr);
object->setObjectName(QString::fromUtf8(name)); object->setObjectName(QString::fromUtf8(name));
@ -403,10 +403,10 @@ void dos_qmodelindex_create(void **vptr)
*vptr = index; *vptr = index;
} }
void dos_qmodelindex_create_qmodelindex(void **vptr, void* other_vptr) void dos_qmodelindex_create_qmodelindex(void **vptr, void *other_vptr)
{ {
auto index = new QModelIndex(); auto index = new QModelIndex();
auto other = static_cast<QModelIndex*>(other_vptr); auto other = static_cast<QModelIndex *>(other_vptr);
*index = *other; *index = *other;
*vptr = index; *vptr = index;
} }
@ -463,7 +463,7 @@ void dos_qmodelindex_sibling(void *vptr, int row, int column, void *sibling)
*siblingIndex = index->sibling(row, column); *siblingIndex = index->sibling(row, column);
} }
void dos_qmodelindex_assign(void* l, void* r) void dos_qmodelindex_assign(void *l, void *r)
{ {
auto li = static_cast<QModelIndex *>(l); auto li = static_cast<QModelIndex *>(l);
auto ri = static_cast<QModelIndex *>(r); auto ri = static_cast<QModelIndex *>(r);
@ -572,27 +572,27 @@ void dos_qabstractlistmodel_create(void **vptr,
flagsCallback, flagsCallback,
headerDataCallback); headerDataCallback);
QQmlEngine::setObjectOwnership(model, QQmlEngine::CppOwnership); QQmlEngine::setObjectOwnership(model, QQmlEngine::CppOwnership);
*vptr = static_cast<QObject*>(model); *vptr = static_cast<QObject *>(model);
} }
void dos_qabstractlistmodel_beginInsertRows(void *vptr, QModelIndexVoidPtr parentIndex, int first, int last) void dos_qabstractlistmodel_beginInsertRows(void *vptr, QModelIndexVoidPtr parentIndex, int first, int last)
{ {
auto object = static_cast<QObject*>(vptr); auto object = static_cast<QObject *>(vptr);
auto model = dynamic_cast<DosQAbstractListModel*>(object); auto model = dynamic_cast<DosQAbstractListModel *>(object);
auto index = static_cast<QModelIndex *>(parentIndex); auto index = static_cast<QModelIndex *>(parentIndex);
model->publicBeginInsertRows(*index, first, last); model->publicBeginInsertRows(*index, first, last);
} }
void dos_qabstractlistmodel_endInsertRows(void *vptr) void dos_qabstractlistmodel_endInsertRows(void *vptr)
{ {
auto object = static_cast<QObject*>(vptr); auto object = static_cast<QObject *>(vptr);
auto model = dynamic_cast<DosQAbstractListModel*>(object); auto model = dynamic_cast<DosQAbstractListModel *>(object);
model->publicEndInsertRows(); model->publicEndInsertRows();
} }
void dos_qabstractlistmodel_beginRemoveRows(void *vptr, QModelIndexVoidPtr parentIndex, int first, int last) void dos_qabstractlistmodel_beginRemoveRows(void *vptr, QModelIndexVoidPtr parentIndex, int first, int last)
{ {
auto object = static_cast<QObject*>(vptr); auto object = static_cast<QObject *>(vptr);
auto model = dynamic_cast<DosQAbstractListModel *>(object); auto model = dynamic_cast<DosQAbstractListModel *>(object);
auto index = static_cast<QModelIndex *>(parentIndex); auto index = static_cast<QModelIndex *>(parentIndex);
model->publicBeginRemoveRows(*index, first, last); model->publicBeginRemoveRows(*index, first, last);
@ -600,22 +600,22 @@ void dos_qabstractlistmodel_beginRemoveRows(void *vptr, QModelIndexVoidPtr paren
void dos_qabstractlistmodel_endRemoveRows(void *vptr) void dos_qabstractlistmodel_endRemoveRows(void *vptr)
{ {
auto object = static_cast<QObject*>(vptr); auto object = static_cast<QObject *>(vptr);
auto model = dynamic_cast<DosQAbstractListModel*>(object); auto model = dynamic_cast<DosQAbstractListModel *>(object);
model->publicEndRemoveRows(); model->publicEndRemoveRows();
} }
void dos_qabstractlistmodel_beginResetModel(void *vptr) void dos_qabstractlistmodel_beginResetModel(void *vptr)
{ {
auto object = static_cast<QObject*>(vptr); auto object = static_cast<QObject *>(vptr);
auto model = dynamic_cast<DosQAbstractListModel*>(object); auto model = dynamic_cast<DosQAbstractListModel *>(object);
model->publicBeginResetModel(); model->publicBeginResetModel();
} }
void dos_qabstractlistmodel_endResetModel(void *vptr) void dos_qabstractlistmodel_endResetModel(void *vptr)
{ {
auto object = static_cast<QObject*>(vptr); auto object = static_cast<QObject *>(vptr);
auto model = dynamic_cast<DosQAbstractListModel*>(object); auto model = dynamic_cast<DosQAbstractListModel *>(object);
model->publicEndResetModel(); model->publicEndResetModel();
} }
@ -625,7 +625,7 @@ void dos_qabstractlistmodel_dataChanged(void *vptr,
int *rolesArrayPtr, int *rolesArrayPtr,
int rolesArrayLength) int rolesArrayLength)
{ {
auto object = static_cast<QObject*>(vptr); auto object = static_cast<QObject *>(vptr);
auto model = dynamic_cast<DosQAbstractListModel *>(object); auto model = dynamic_cast<DosQAbstractListModel *>(object);
auto topLeft = static_cast<QModelIndex *>(topLeftIndex); auto topLeft = static_cast<QModelIndex *>(topLeftIndex);
auto bottomRight = static_cast<QModelIndex *>(bottomRightIndex); auto bottomRight = static_cast<QModelIndex *>(bottomRightIndex);
@ -633,9 +633,9 @@ void dos_qabstractlistmodel_dataChanged(void *vptr,
model->publicDataChanged(*topLeft, *bottomRight, roles); model->publicDataChanged(*topLeft, *bottomRight, roles);
} }
void dos_qdeclarative_qmlregistertype(const ::QmlRegisterType *cArgs, int* result) void dos_qdeclarative_qmlregistertype(const ::QmlRegisterType *cArgs, int *result)
{ {
auto holder = static_cast<DosIQMetaObjectHolder*>(cArgs->staticMetaObject); auto holder = static_cast<DosIQMetaObjectHolder *>(cArgs->staticMetaObject);
DOS::QmlRegisterType args; DOS::QmlRegisterType args;
args.major = cArgs->major; args.major = cArgs->major;
@ -651,7 +651,7 @@ void dos_qdeclarative_qmlregistertype(const ::QmlRegisterType *cArgs, int* resul
void dos_qdeclarative_qmlregistersingletontype(const ::QmlRegisterType *cArgs, int *result) void dos_qdeclarative_qmlregistersingletontype(const ::QmlRegisterType *cArgs, int *result)
{ {
auto holder = static_cast<DosIQMetaObjectHolder*>(cArgs->staticMetaObject); auto holder = static_cast<DosIQMetaObjectHolder *>(cArgs->staticMetaObject);
DOS::QmlRegisterType args; DOS::QmlRegisterType args;
args.major = cArgs->major; args.major = cArgs->major;

View File

@ -16,45 +16,45 @@ public:
DosQObjectWrapper(QObject *parent = nullptr); DosQObjectWrapper(QObject *parent = nullptr);
~DosQObjectWrapper(); ~DosQObjectWrapper();
const QMetaObject* metaObject() const override; const QMetaObject *metaObject() const override;
int qt_metacall(QMetaObject::Call, int, void **) override; int qt_metacall(QMetaObject::Call, int, void **) override;
static const QmlRegisterType& qmlRegisterType(); static const QmlRegisterType &qmlRegisterType();
static void setQmlRegisterType(QmlRegisterType data); static void setQmlRegisterType(QmlRegisterType data);
static void setStaticMetaObject(const QMetaObject& metaObject); static void setStaticMetaObject(const QMetaObject &metaObject);
static void setId(int id); static void setId(int id);
private: private:
void* m_dObject; void *m_dObject;
DosQObject* m_impl; DosQObject *m_impl;
static int m_id; static int m_id;
static QmlRegisterType m_data; static QmlRegisterType m_data;
}; };
template<int N, int M> template<int N, int M>
const QMetaObject DosQObjectWrapper<N,M>::staticMetaObject = QObject::staticMetaObject; const QMetaObject DosQObjectWrapper<N, M>::staticMetaObject = QObject::staticMetaObject;
template<int N, int M> template<int N, int M>
QmlRegisterType DosQObjectWrapper<N,M>::m_data; QmlRegisterType DosQObjectWrapper<N, M>::m_data;
template<int N, int M> template<int N, int M>
int DosQObjectWrapper<N,M>::m_id = -1; int DosQObjectWrapper<N, M>::m_id = -1;
template<int N, int M> template<int N, int M>
DosQObjectWrapper<N,M>::DosQObjectWrapper(QObject *parent) DosQObjectWrapper<N, M>::DosQObjectWrapper(QObject *parent)
: QObject(parent) : QObject(parent)
, m_dObject(nullptr) , m_dObject(nullptr)
, m_impl(nullptr) , m_impl(nullptr)
{ {
void* impl = nullptr; void *impl = nullptr;
m_data.createDObject(m_id, &m_dObject, &impl); m_data.createDObject(m_id, &m_dObject, &impl);
m_impl = static_cast<DosQObject*>(impl); m_impl = static_cast<DosQObject *>(impl);
Q_ASSERT(m_dObject); Q_ASSERT(m_dObject);
Q_ASSERT(m_impl); Q_ASSERT(m_impl);
} }
template<int N, int M> template<int N, int M>
DosQObjectWrapper<N,M>::~DosQObjectWrapper() DosQObjectWrapper<N, M>::~DosQObjectWrapper()
{ {
m_data.deleteDObject(m_id, m_dObject); m_data.deleteDObject(m_id, m_dObject);
m_dObject = nullptr; m_dObject = nullptr;
@ -62,39 +62,39 @@ DosQObjectWrapper<N,M>::~DosQObjectWrapper()
} }
template<int N, int M> template<int N, int M>
const QMetaObject *DosQObjectWrapper<N,M>::metaObject() const const QMetaObject *DosQObjectWrapper<N, M>::metaObject() const
{ {
Q_ASSERT(m_impl); Q_ASSERT(m_impl);
return m_impl->metaObject(); return m_impl->metaObject();
} }
template<int N, int M> template<int N, int M>
int DosQObjectWrapper<N,M>::qt_metacall(QMetaObject::Call call, int index, void **args) int DosQObjectWrapper<N, M>::qt_metacall(QMetaObject::Call call, int index, void **args)
{ {
Q_ASSERT(m_impl); Q_ASSERT(m_impl);
return m_impl->qt_metacall(call, index, args); return m_impl->qt_metacall(call, index, args);
} }
template<int N, int M> template<int N, int M>
void DosQObjectWrapper<N,M>::setQmlRegisterType(QmlRegisterType data) void DosQObjectWrapper<N, M>::setQmlRegisterType(QmlRegisterType data)
{ {
m_data = std::move(data); m_data = std::move(data);
} }
template<int N, int M> template<int N, int M>
void DosQObjectWrapper<N,M>::setStaticMetaObject(const QMetaObject &metaObject) void DosQObjectWrapper<N, M>::setStaticMetaObject(const QMetaObject &metaObject)
{ {
*(const_cast<QMetaObject*>(&staticMetaObject)) = metaObject; *(const_cast<QMetaObject *>(&staticMetaObject)) = metaObject;
} }
template<int N, int M> template<int N, int M>
void DosQObjectWrapper<N,M>::setId(int id) void DosQObjectWrapper<N, M>::setId(int id)
{ {
m_id = id; m_id = id;
} }
template<int N, int M> template<int N, int M>
const QmlRegisterType& DosQObjectWrapper<N,M>::qmlRegisterType() const QmlRegisterType &DosQObjectWrapper<N, M>::qmlRegisterType()
{ {
return m_data; return m_data;
} }
@ -106,7 +106,7 @@ template<int N>
int dosQmlRegisterType(QmlRegisterType args) int dosQmlRegisterType(QmlRegisterType args)
{ {
RegisterTypeQObject<N>::setQmlRegisterType(std::move(args)); RegisterTypeQObject<N>::setQmlRegisterType(std::move(args));
const QmlRegisterType& type = RegisterTypeQObject<N>::qmlRegisterType(); const QmlRegisterType &type = RegisterTypeQObject<N>::qmlRegisterType();
RegisterTypeQObject<N>::setStaticMetaObject(*(type.staticMetaObject->metaObject())); RegisterTypeQObject<N>::setStaticMetaObject(*(type.staticMetaObject->metaObject()));
int result = qmlRegisterType<RegisterTypeQObject<N>>(type.uri.c_str(), type.major, type.minor, type.qml.c_str()); int result = qmlRegisterType<RegisterTypeQObject<N>>(type.uri.c_str(), type.major, type.minor, type.qml.c_str());
RegisterTypeQObject<N>::setId(result); RegisterTypeQObject<N>::setId(result);
@ -114,8 +114,7 @@ int dosQmlRegisterType(QmlRegisterType args)
} }
template<int N> template<int N>
struct DosQmlRegisterHelper struct DosQmlRegisterHelper {
{
static int Register(int i, QmlRegisterType args) static int Register(int i, QmlRegisterType args)
{ {
if (i > N) if (i > N)
@ -123,13 +122,12 @@ struct DosQmlRegisterHelper
else if (i == N) else if (i == N)
return dosQmlRegisterType<N>(std::move(args)); return dosQmlRegisterType<N>(std::move(args));
else else
return DosQmlRegisterHelper<N-1>::Register(i, std::move(args)); return DosQmlRegisterHelper < N - 1 >::Register(i, std::move(args));
} }
}; };
template<> template<>
struct DosQmlRegisterHelper<0> struct DosQmlRegisterHelper<0> {
{
static int Register(int i, QmlRegisterType args) static int Register(int i, QmlRegisterType args)
{ {
return i == 0 ? dosQmlRegisterType<0>(std::move(args)) : -1; return i == 0 ? dosQmlRegisterType<0>(std::move(args)) : -1;
@ -154,11 +152,11 @@ QObject *singletontype_provider(QQmlEngine *engine, QJSEngine *scriptEngine)
template<int N> template<int N>
int dosQmlRegisterSingletonType(QmlRegisterType args) int dosQmlRegisterSingletonType(QmlRegisterType args)
{ {
using Func = QObject*(*)(QQmlEngine*, QJSEngine*); using Func = QObject * (*)(QQmlEngine *, QJSEngine *);
Func f = singletontype_provider<N>; Func f = singletontype_provider<N>;
RegisterSingletonTypeQObject<N>::setQmlRegisterType(std::move(args)); RegisterSingletonTypeQObject<N>::setQmlRegisterType(std::move(args));
const QmlRegisterType& type = RegisterSingletonTypeQObject<N>::qmlRegisterType(); const QmlRegisterType &type = RegisterSingletonTypeQObject<N>::qmlRegisterType();
RegisterSingletonTypeQObject<N>::setStaticMetaObject(*(type.staticMetaObject->metaObject())); RegisterSingletonTypeQObject<N>::setStaticMetaObject(*(type.staticMetaObject->metaObject()));
int result = qmlRegisterSingletonType<RegisterSingletonTypeQObject<N>>(type.uri.c_str(), type.major, type.minor, type.qml.c_str(), f); int result = qmlRegisterSingletonType<RegisterSingletonTypeQObject<N>>(type.uri.c_str(), type.major, type.minor, type.qml.c_str(), f);
RegisterSingletonTypeQObject<N>::setId(result); RegisterSingletonTypeQObject<N>::setId(result);
@ -166,8 +164,7 @@ int dosQmlRegisterSingletonType(QmlRegisterType args)
} }
template<int N> template<int N>
struct DosQmlRegisterSingletonHelper struct DosQmlRegisterSingletonHelper {
{
static int Register(int i, QmlRegisterType args) static int Register(int i, QmlRegisterType args)
{ {
if (i > N) if (i > N)
@ -175,13 +172,12 @@ struct DosQmlRegisterSingletonHelper
else if (i == N) else if (i == N)
return dosQmlRegisterSingletonType<N>(std::move(args)); return dosQmlRegisterSingletonType<N>(std::move(args));
else else
return DosQmlRegisterSingletonHelper<N-1>::Register(i, std::move(args)); return DosQmlRegisterSingletonHelper < N - 1 >::Register(i, std::move(args));
} }
}; };
template<> template<>
struct DosQmlRegisterSingletonHelper<0> struct DosQmlRegisterSingletonHelper<0> {
{
static int Register(int i, QmlRegisterType args) static int Register(int i, QmlRegisterType args)
{ {
return i == 0 ? dosQmlRegisterSingletonType<0>(std::move(args)) : -1; return i == 0 ? dosQmlRegisterSingletonType<0>(std::move(args)) : -1;