Moved the responsability of allocating and copying to the binding side

This commit is contained in:
Filippo Cucchetto 2016-02-25 23:56:54 +01:00
parent ef0ed26f7c
commit 53563cf716
2 changed files with 10 additions and 22 deletions

View File

@ -22,12 +22,12 @@ typedef void* QHashIntQByteArrayVoidPtr;
// Raw function types
typedef void(*Function)(void*);
typedef void(*DObjectCallback)(void*, void*, int, void**);
typedef void(*RowCountCallback)(void* model, QModelIndexVoidPtr index, IntPtr result);
typedef void(*ColumnCountCallback)(void* model, QModelIndexVoidPtr index, IntPtr result);
typedef void(*DataCallback)(void* model, QModelIndexVoidPtr index, int role, QVariantVoidPtr result);
typedef void(*SetDataCallback) (void* model, QModelIndexVoidPtr index, QVariantVoidPtr value, int role, BoolPtr result);
typedef void(*RowCountCallback)(void* model, const void* index, IntPtr result);
typedef void(*ColumnCountCallback)(void* model, const void* index, IntPtr 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, BoolPtr result);
typedef void(*RoleNamesCallback)(void* model, QHashIntQByteArrayVoidPtr result);
typedef void(*FlagsCallback) (void* model, QModelIndexVoidPtr index, IntPtr result);
typedef void(*FlagsCallback) (void* model, const void* index, IntPtr result);
typedef void(*HeaderDataCallback) (void* model, int section, int orientation, int role, QVariantVoidPtr result);
typedef void(*CreateDObject)(int, void**, void**);
typedef void(*DeleteDObject)(int, void*);

View File

@ -54,48 +54,36 @@ int DosQAbstractListModel::qt_metacall(QMetaObject::Call call, int index, void *
int DosQAbstractListModel::rowCount(const QModelIndex &parent) const
{
auto parentIndex = new QModelIndex();
*parentIndex = parent;
int result;
m_rowCountCallback(m_modelObject, parentIndex, &result);
m_rowCountCallback(m_modelObject, &parent, &result);
return result;
}
int DosQAbstractListModel::columnCount(const QModelIndex &parent) const
{
auto parentIndex = new QModelIndex();
*parentIndex = parent;
int result;
m_columnCountCallback(m_modelObject, parentIndex, &result);
m_columnCountCallback(m_modelObject, &parent, &result);
return result;
}
QVariant DosQAbstractListModel::data(const QModelIndex &index, int role) const
{
auto newIndex = new QModelIndex();
*newIndex = index;
QVariant result;
m_dataCallback(m_modelObject, newIndex, role, &result);
m_dataCallback(m_modelObject, &index, role, &result);
return result;
}
bool DosQAbstractListModel::setData(const QModelIndex &index, const QVariant &value, int role)
{
auto newIndex = new QModelIndex(index);
*newIndex = index;
auto newValue = new QVariant();
*newValue = value;
bool result = false;
m_setDataCallback(m_modelObject, newIndex, newValue, role, &result);
m_setDataCallback(m_modelObject, &index, &value, role, &result);
return result;
}
Qt::ItemFlags DosQAbstractListModel::flags(const QModelIndex &index) const
{
auto newIndex = new QModelIndex(index);
*newIndex = index;
int result;
m_flagsCallback(m_modelObject, newIndex, &result);
m_flagsCallback(m_modelObject, &index, &result);
return Qt::ItemFlags(result);
}