#include "abstract_item_model.h"
#include<QModelIndex>
#include<QDebug>

extern "C"
{
  uintptr_t nativeAbstractItemModelIndex(uintptr_t ptr,int row,int column,uintptr_t parent)
  {

      QAbstractItemModel *obj = reinterpret_cast<QAbstractItemModel *>(static_cast<uintptr_t>(ptr));
      QModelIndex *p =new QModelIndex();
      if(parent>0){
        p = reinterpret_cast<QModelIndex *>(static_cast<uintptr_t>(parent));
      }
      QModelIndex model = obj->index(row,column, *p);
      uintptr_t a= reinterpret_cast<uintptr_t>(&model);
      qDebug()<<"cpp:a:"<<a<<endl;
      return a;
  }

  uintptr_t nativeAbstractItemModelData(uintptr_t ptr,uintptr_t index, int role = Qt::DisplayRole)
  {
      QAbstractItemModel *instance = reinterpret_cast<QAbstractItemModel *>(static_cast<uintptr_t>(ptr));
      QModelIndex *modelIndex = reinterpret_cast<QModelIndex *>(static_cast<uintptr_t>(index));
      QVariant data = instance->data(*modelIndex, role);
      uintptr_t a=  reinterpret_cast<uintptr_t>(&data);
      qDebug()<<"cpp:b:"<<a<<endl;
      return a;
  }
}