Work on MockQAbstractListModel

This commit is contained in:
Filippo Cucchetto 2016-06-19 12:20:00 +02:00
parent b198de0fd6
commit 864849680b
5 changed files with 80 additions and 58 deletions

View File

@ -155,14 +155,14 @@ DOS_API void DOS_CALL dos_qobject_delete(DosQObject *vptr);
DOS_API DosQModelIndex *DOS_CALL dos_qmodelindex_create();
DOS_API DosQModelIndex *DOS_CALL dos_qmodelindex_create_qmodelindex(DosQModelIndex *index);
DOS_API void DOS_CALL dos_qmodelindex_delete (DosQModelIndex *vptr);
DOS_API int DOS_CALL dos_qmodelindex_row (DosQModelIndex *vptr);
DOS_API int DOS_CALL dos_qmodelindex_column (DosQModelIndex *vptr);
DOS_API bool DOS_CALL dos_qmodelindex_isValid(DosQModelIndex *vptr);
DOS_API int DOS_CALL dos_qmodelindex_row (const DosQModelIndex *vptr);
DOS_API int DOS_CALL dos_qmodelindex_column (const DosQModelIndex *vptr);
DOS_API bool DOS_CALL dos_qmodelindex_isValid(const DosQModelIndex *vptr);
DOS_API DosQVariant *DOS_CALL dos_qmodelindex_data (DosQModelIndex *vptr, int role);
DOS_API DosQModelIndex *DOS_CALL dos_qmodelindex_parent (DosQModelIndex *vptr);
DOS_API DosQModelIndex *DOS_CALL dos_qmodelindex_child (DosQModelIndex *vptr, int row, int column);
DOS_API DosQModelIndex *DOS_CALL dos_qmodelindex_sibling(DosQModelIndex *vptr, int row, int column);
DOS_API void DOS_CALL dos_qmodelindex_assign (DosQModelIndex *l, DosQModelIndex *r);
DOS_API DosQModelIndex *DOS_CALL dos_qmodelindex_parent (const DosQModelIndex *vptr);
DOS_API DosQModelIndex *DOS_CALL dos_qmodelindex_child (const DosQModelIndex *vptr, int row, int column);
DOS_API DosQModelIndex *DOS_CALL dos_qmodelindex_sibling(const DosQModelIndex *vptr, int row, int column);
DOS_API void DOS_CALL dos_qmodelindex_assign (DosQModelIndex *l, const DosQModelIndex *r);
// QHash<int, QByteArray>
DOS_API DosQHashIntQByteArray *DOS_CALL dos_qhash_int_qbytearray_create();

View File

@ -35,13 +35,30 @@ typedef void (DOS_CALL *Function)(void *);
/// @param argv An array of DosQVariant pointers. They should not be deleted
typedef void (DOS_CALL *DObjectCallback)(void *self, DosQVariant *slotName, int argc, DosQVariant **argv);
typedef void (DOS_CALL *RowCountCallback) (DosQAbstractListModel *model, const DosQModelIndex *index, int *result);
typedef void (DOS_CALL *ColumnCountCallback) (DosQAbstractListModel *model, const DosQModelIndex *index, int *result);
typedef void (DOS_CALL *DataCallback) (DosQAbstractListModel *model, const DosQModelIndex *index, int role, DosQVariant *result);
typedef void (DOS_CALL *SetDataCallback) (DosQAbstractListModel *model, const DosQModelIndex *index, const DosQVariant *value, int role, bool *result);
typedef void (DOS_CALL *RoleNamesCallback) (DosQAbstractListModel *model, DosQHashIntQByteArray *result);
typedef void (DOS_CALL *FlagsCallback) (DosQAbstractListModel *model, const DosQModelIndex *index, int *result);
typedef void (DOS_CALL *HeaderDataCallback) (DosQAbstractListModel *model, int section, int orientation, int role, DosQVariant *result);
/// Called when the QAbstractListModel::rowCount method must be executed
/// @param self The pointer to the QAbstractListModel in the binded language
/// @param index The parent DosQModelIndex. It should not be deleted
/// @param result The rowCount result. This must be deferenced and filled from the binded language.
/// It should not be deleted
typedef void (DOS_CALL *RowCountCallback) (void *self, const DosQModelIndex *parent, int *result);
/// Called when the QAbstractListModel::columnCount method must be executed
/// @param self The pointer to the QAbstractListModel in the binded language
/// @param index The parent DosQModelIndex. It should not be deleted
/// @param result The rowCount result. This must be deferenced and filled from the binded language.
/// It should not be deleted
typedef void (DOS_CALL *ColumnCountCallback) (void *self, const DosQModelIndex *parent, int *result);
/// Called when the QAbstractListModel::data method must be executed
/// @param self The pointer to the QAbstractListModel in the binded language
/// @param index The DosQModelIndex to which we request the data. It should not be deleted
/// @param result The DosQVariant result. This must be deferenced and filled from the binded language.
/// It should not be deleted. See dos_qvariant_assign or other DosQVariant setters
typedef void (DOS_CALL *DataCallback) (void *self, const DosQModelIndex *index, int role, DosQVariant *result);
typedef void (DOS_CALL *SetDataCallback) (void *self, const DosQModelIndex *index, const DosQVariant *value, int role, bool *result);
typedef void (DOS_CALL *RoleNamesCallback) (void *self, DosQHashIntQByteArray *result);
typedef void (DOS_CALL *FlagsCallback) (void *self, const DosQModelIndex *index, int *result);
typedef void (DOS_CALL *HeaderDataCallback) (void *self, int section, int orientation, int role, DosQVariant *result);
typedef void (DOS_CALL *CreateDObject)(int, void *, void **, void **);
typedef void (DOS_CALL *DeleteDObject)(int, void *);

View File

@ -412,56 +412,56 @@ void dos_qmodelindex_delete(::DosQModelIndex *vptr)
delete index;
}
int dos_qmodelindex_row(::DosQModelIndex *vptr)
int dos_qmodelindex_row(const ::DosQModelIndex *vptr)
{
auto index = static_cast<QModelIndex *>(vptr);
auto index = static_cast<const QModelIndex *>(vptr);
return index->row();
}
int dos_qmodelindex_column(::DosQModelIndex *vptr)
int dos_qmodelindex_column(const ::DosQModelIndex *vptr)
{
auto index = static_cast<QModelIndex *>(vptr);
auto index = static_cast<const QModelIndex *>(vptr);
return index->column();
}
bool dos_qmodelindex_isValid(::DosQModelIndex *vptr)
bool dos_qmodelindex_isValid(const ::DosQModelIndex *vptr)
{
auto index = static_cast<QModelIndex *>(vptr);
auto index = static_cast<const QModelIndex *>(vptr);
return index->isValid();
}
::DosQVariant *dos_qmodelindex_data(::DosQModelIndex *vptr, int role)
::DosQVariant *dos_qmodelindex_data(const ::DosQModelIndex *vptr, int role)
{
auto index = static_cast<QModelIndex *>(vptr);
auto index = static_cast<const QModelIndex *>(vptr);
auto result = new QVariant(index->data(role));
return static_cast<QVariant *>(result);
}
::DosQModelIndex *dos_qmodelindex_parent(::DosQModelIndex *vptr)
::DosQModelIndex *dos_qmodelindex_parent(const ::DosQModelIndex *vptr)
{
auto index = static_cast<QModelIndex *>(vptr);
auto index = static_cast<const QModelIndex *>(vptr);
auto result = new QModelIndex(index->parent());
return static_cast<QModelIndex *>(result);
}
::DosQModelIndex *dos_qmodelindex_child(::DosQModelIndex *vptr, int row, int column)
::DosQModelIndex *dos_qmodelindex_child(const ::DosQModelIndex *vptr, int row, int column)
{
auto index = static_cast<QModelIndex *>(vptr);
auto index = static_cast<const QModelIndex *>(vptr);
auto result = new QModelIndex(index->child(row, column));
return static_cast<QModelIndex *>(result);
}
::DosQModelIndex *dos_qmodelindex_sibling(::DosQModelIndex *vptr, int row, int column)
::DosQModelIndex *dos_qmodelindex_sibling(const ::DosQModelIndex *vptr, int row, int column)
{
auto index = static_cast<QModelIndex *>(vptr);
auto index = static_cast<const QModelIndex *>(vptr);
auto result = new QModelIndex(index->sibling(row, column));
return static_cast<QModelIndex *>(result);
}
void dos_qmodelindex_assign(::DosQModelIndex *l, ::DosQModelIndex *r)
void dos_qmodelindex_assign(::DosQModelIndex *l, const ::DosQModelIndex *r)
{
auto li = static_cast<QModelIndex *>(l);
auto ri = static_cast<QModelIndex *>(r);
auto ri = static_cast<const QModelIndex *>(r);
*li = *ri;
}

View File

@ -24,8 +24,6 @@ namespace
slotDefinitions.definitions = nullptr;
// Properties
::PropertyDefinition propertyDefinitionArray[1];
::PropertyDefinitions propertyDefinitions;
propertyDefinitions.count = 0;
propertyDefinitions.definitions = nullptr;
@ -39,6 +37,7 @@ MockQAbstractListModel::MockQAbstractListModel()
: m_vptr(dos_qabstractlistmodel_create(this, metaObject(), &onSlotCalled, &onRowCountCalled,
&onColumnCountCalled, &onDataCalled, &onSetDataCalled,
&onRoleNamesCalled, &onFlagsCalled, &onHeaderDataCalled), &dos_qobject_delete)
, m_names({"John", "Mary", "Andy", "Anna"})
{
}
@ -60,37 +59,40 @@ void MockQAbstractListModel::onSlotCalled(void *selfVPtr, DosQVariant *dosSlotNa
string slotName = toStringFromQVariant(dosSlotNameVariant);
}
void MockQAbstractListModel::onRowCountCalled(DosQAbstractListModel *model, const DosQModelIndex *index, int *result)
void MockQAbstractListModel::onRowCountCalled(void *selfVPtr, const DosQModelIndex *index, int *result)
{
auto self = static_cast<MockQAbstractListModel*>(selfVPtr);
*result = self->m_names.size();
}
void MockQAbstractListModel::onColumnCountCalled(void *selfVPtr, const DosQModelIndex *index, int *result)
{
auto self = static_cast<MockQAbstractListModel*>(selfVPtr);
*result = 0;
}
void MockQAbstractListModel::onDataCalled(void *selfVPtr, const DosQModelIndex *index, int role, DosQVariant *result)
{
if (!dos_qmodelindex_isValid(index))
return;
}
void MockQAbstractListModel::onSetDataCalled(void *selfVPtr, const DosQModelIndex *index, const DosQVariant *value, int role, bool *result)
{
}
void MockQAbstractListModel::onColumnCountCalled(DosQAbstractListModel *model, const DosQModelIndex *index, int *result)
void MockQAbstractListModel::onRoleNamesCalled(void *selfVPtr, DosQHashIntQByteArray *result)
{
}
void MockQAbstractListModel::onDataCalled(DosQAbstractListModel *model, const DosQModelIndex *index, int role, DosQVariant *result)
void MockQAbstractListModel::onFlagsCalled(void *selfVPtr, const DosQModelIndex *index, int *result)
{
}
void MockQAbstractListModel::onSetDataCalled(DosQAbstractListModel *model, const DosQModelIndex *index, const DosQVariant *value, int role, bool *result)
{
}
void MockQAbstractListModel::onRoleNamesCalled(DosQAbstractListModel *model, DosQHashIntQByteArray *result)
{
}
void MockQAbstractListModel::onFlagsCalled(DosQAbstractListModel *model, const DosQModelIndex *index, int *result)
{
}
void MockQAbstractListModel::onHeaderDataCalled(DosQAbstractListModel *model, int section, int orientation, int role, DosQVariant *result)
void MockQAbstractListModel::onHeaderDataCalled(void *selfVPtr, int section, int orientation, int role, DosQVariant *result)
{
}

View File

@ -1,6 +1,8 @@
#pragma once
#include <Global.h>
#include <vector>
#include <string>
class MockQAbstractListModel
{
@ -12,13 +14,14 @@ public:
private:
static void onSlotCalled(void *selfVPtr, DosQVariant *dosSlotNameVariant, int dosSlotArgc, DosQVariant **dosSlotArgv);
static void onRowCountCalled(DosQAbstractListModel *model, const DosQModelIndex *index, int *result);
static void onColumnCountCalled(DosQAbstractListModel *model, const DosQModelIndex *index, int *result);
static void onDataCalled(DosQAbstractListModel *model, const DosQModelIndex *index, int role, DosQVariant *result);
static void onSetDataCalled(DosQAbstractListModel *model, const DosQModelIndex *index, const DosQVariant *value, int role, bool *result);
static void onRoleNamesCalled(DosQAbstractListModel *model, DosQHashIntQByteArray *result);
static void onFlagsCalled(DosQAbstractListModel *model, const DosQModelIndex *index, int *result);
static void onHeaderDataCalled(DosQAbstractListModel *model, int section, int orientation, int role, DosQVariant *result);
static void onRowCountCalled(void *selfVPtr, const DosQModelIndex *index, int *result);
static void onColumnCountCalled(void *selfVPtr, const DosQModelIndex *index, int *result);
static void onDataCalled(void *selfVPtr, const DosQModelIndex *index, int role, DosQVariant *result);
static void onSetDataCalled(void *selfVPtr, const DosQModelIndex *index, const DosQVariant *value, int role, bool *result);
static void onRoleNamesCalled(void *selfVPtr, DosQHashIntQByteArray *result);
static void onFlagsCalled(void *selfVPtr, const DosQModelIndex *index, int *result);
static void onHeaderDataCalled(void *selfVPtr, int section, int orientation, int role, DosQVariant *result);
VoidPointer m_vptr;
std::vector<std::string> m_names;
};