#ifndef QABSTRACTITEMMODEL_H
#define QABSTRACTITEMMODEL_H 
#include <QtCore/qvariant.h>
#include <QtCore/qobject.h>
typedef enum QtValidLicenseForCoreModule QtCoreModule;
class QModelIndex{
   public: inline QModelIndex();
   public: inline QModelIndex(class QModelIndex const & other);
   public: inline ~QModelIndex();
   public: inline int row() const
   public: inline int column() const
   public: inline void* internalPointer() const
   public: inline qint64 internalId() const
   public: inline class QAbstractItemModel const * model() const
   public: inline bool isValid() const
   public: inline bool operator ==(class QModelIndex const & other) const
   public: inline bool operator !=(class QModelIndex const & other) const
   public: inline bool operator <(class QModelIndex const & other) const
   private: int r;
   private: int c;
   private: void* p;
   private: class QAbstractItemModel const * m;
   private: inline QModelIndex(int arow, int acolumn, void* adata, class QAbstractItemModel const * amodel);
   public: inline class QModelIndex parent() const
   public: inline class QModelIndex sibling(int arow, int acolumn) const
   public: inline class QModelIndex child(int arow, int acolumn) const
   public: inline class QVariant data(int arole = Qt::DisplayRole) const
   public: inline Qt::ItemFlags flags() const
   friend class QAbstractItemModel;
   friend struct QProxyModel;
};
struct QProxyModel;
template < > class QTypeInfo < class QModelIndex >{
   public: static inline char const * name();
   public: enum /*anonymous*/{
      isComplex = 1,
      isStatic = 0,
      isLarge = 1,
      isPointer = 0,
      isDummy = 0,
   };
};
#ifndef QT_NO_DEBUG_STREAM
struct QDebug operator <<(struct QDebug, class QModelIndex const &);
#endif
struct QPersistentModelIndexData;
class QPersistentModelIndex{
   public: QPersistentModelIndex();
   public: QPersistentModelIndex(class QModelIndex const & index);
   public: QPersistentModelIndex(class QPersistentModelIndex const & other);
   public: ~QPersistentModelIndex();
   public: bool operator <(class QPersistentModelIndex const & other) const
   public: bool operator ==(class QPersistentModelIndex const & other) const
   public: inline bool operator !=(class QPersistentModelIndex const & other) const
   public: class QPersistentModelIndex& operator =(class QPersistentModelIndex const & other);
   public: bool operator ==(class QModelIndex const & other) const
   public: bool operator !=(class QModelIndex const & other) const
   public: class QPersistentModelIndex& operator =(class QModelIndex const & other);
   public: operator class QModelIndex const & () const
   public: int row() const
   public: int column() const
   public: void* internalPointer() const
   public: qint64 internalId() const
   public: class QModelIndex parent() const
   public: class QModelIndex sibling(int row, int column) const
   public: class QModelIndex child(int row, int column) const
   public: class QVariant data(int role = Qt::DisplayRole) const
   public: Qt::ItemFlags flags() const
   public: class QAbstractItemModel const * model() const
   public: bool isValid() const
   private: struct QPersistentModelIndexData* d;
   friend struct QDebug operator <<(struct QDebug, class QPersistentModelIndex const &);
};
template < > class QTypeInfo < class QPersistentModelIndex >{
   public: static inline char const * name();
   public: enum /*anonymous*/{
      isComplex = 1,
      isStatic = 0,
      isLarge = 0,
      isPointer = 0,
      isDummy = 0,
   };
};
#ifndef QT_NO_DEBUG_STREAM
struct QDebug operator <<(struct QDebug, class QPersistentModelIndex const &);
#endif
typedef class QList < class QModelIndex > QModelIndexList;
struct QMimeData;
struct QAbstractItemModelPrivate;
class QAbstractItemModel: public QObject{
   public: virtual struct QMetaObject const * metaObject() const
   public: static struct QMetaObject const staticMetaObject;
   public: virtual void* qt_metacast(char const *);
   public: static inline class QString tr(char const * s, char const * c = 0);
   public: static inline class QString trUtf8(char const * s, char const * c = 0);
   public: static inline class QString tr(char const * s, char const * c, int n);
   public: static inline class QString trUtf8(char const * s, char const * c, int n);
   public: virtual int qt_metacall(enum QMetaObject::Call, int, void* *);
   public: explicit QAbstractItemModel(class QObject* parent = 0);
   public: virtual ~QAbstractItemModel();
   public: bool hasIndex(int row, int column, class QModelIndex const & parent = QModelIndex::QModelIndex()) const
   public: virtual class QModelIndex index(int row, int column, class QModelIndex const & parent = QModelIndex::QModelIndex()) const = 0;
   public: virtual class QModelIndex parent(class QModelIndex const & child) const = 0;
   public: inline class QModelIndex sibling(int row, int column, class QModelIndex const & idx) const
   public: virtual int rowCount(class QModelIndex const & parent = QModelIndex::QModelIndex()) const = 0;
   public: virtual int columnCount(class QModelIndex const & parent = QModelIndex::QModelIndex()) const = 0;
   public: virtual bool hasChildren(class QModelIndex const & parent = QModelIndex::QModelIndex()) const
   public: virtual class QVariant data(class QModelIndex const & index, int role = Qt::DisplayRole) const = 0;
   public: virtual bool setData(class QModelIndex const & index, class QVariant const & value, int role = Qt::EditRole);
   public: virtual class QVariant headerData(int section, enum Qt::Orientation orientation, int role = Qt::DisplayRole) const
   public: virtual bool setHeaderData(int section, enum Qt::Orientation orientation, class QVariant const & value, int role = Qt::EditRole);
   public: virtual class QMap < int, class QVariant > itemData(class QModelIndex const & index) const
   public: virtual bool setItemData(class QModelIndex const & index, class QMap < int, class QVariant > const & roles);
   public: virtual struct QStringList mimeTypes() const
   public: virtual struct QMimeData* mimeData(QModelIndexList const & indexes) const
   public: virtual bool dropMimeData(struct QMimeData const * data, enum Qt::DropAction action, int row, int column, class QModelIndex const & parent);
   public: virtual Qt::DropActions supportedDropActions() const
   public: Qt::DropActions supportedDragActions() const
   public: void setSupportedDragActions(Qt::DropActions);
   public: virtual bool insertRows(int row, int count, class QModelIndex const & parent = QModelIndex::QModelIndex());
   public: virtual bool insertColumns(int column, int count, class QModelIndex const & parent = QModelIndex::QModelIndex());
   public: virtual bool removeRows(int row, int count, class QModelIndex const & parent = QModelIndex::QModelIndex());
   public: virtual bool removeColumns(int column, int count, class QModelIndex const & parent = QModelIndex::QModelIndex());
   public: virtual void fetchMore(class QModelIndex const & parent);
   public: virtual bool canFetchMore(class QModelIndex const & parent) const
   public: virtual Qt::ItemFlags flags(class QModelIndex const & index) const
   public: virtual void sort(int column, enum Qt::SortOrder order = Qt::AscendingOrder);
   public: virtual class QModelIndex buddy(class QModelIndex const & index) const
   public: virtual QModelIndexList match(class QModelIndex const & start, int role, class QVariant const & value, int hits = 1, Qt::MatchFlags flags) const
   public: virtual struct QSize span(class QModelIndex const & index) const
   protected: void dataChanged(class QModelIndex const & topLeft, class QModelIndex const & bottomRight);
   protected: void headerDataChanged(enum Qt::Orientation orientation, int first, int last);
   protected: void layoutChanged();
   protected: void layoutAboutToBeChanged();
   private: void rowsAboutToBeInserted(class QModelIndex const & parent, int first, int last);
   private: void rowsInserted(class QModelIndex const & parent, int first, int last);
   private: void rowsAboutToBeRemoved(class QModelIndex const & parent, int first, int last);
   private: void rowsRemoved(class QModelIndex const & parent, int first, int last);
   private: void columnsAboutToBeInserted(class QModelIndex const & parent, int first, int last);
   private: void columnsInserted(class QModelIndex const & parent, int first, int last);
   private: void columnsAboutToBeRemoved(class QModelIndex const & parent, int first, int last);
   private: void columnsRemoved(class QModelIndex const & parent, int first, int last);
   private: void modelAboutToBeReset();
   private: void modelReset();
   public: virtual bool submit();
   public: virtual void revert();
   protected: QAbstractItemModel(struct QAbstractItemModelPrivate& dd, class QObject* parent = 0);
   protected: void encodeData(QModelIndexList const & indexes, class QDataStream& stream) const
   protected: bool decodeData(int row, int column, class QModelIndex const & parent, class QDataStream& stream);
   protected: void beginInsertRows(class QModelIndex const & parent, int first, int last);
   protected: void endInsertRows();
   protected: void beginRemoveRows(class QModelIndex const & parent, int first, int last);
   protected: void endRemoveRows();
   protected: void beginInsertColumns(class QModelIndex const & parent, int first, int last);
   protected: void endInsertColumns();
   protected: void beginRemoveColumns(class QModelIndex const & parent, int first, int last);
   protected: void endRemoveColumns();
   protected: void reset();
   protected: void changePersistentIndex(class QModelIndex const & from, class QModelIndex const & to);
   protected: void changePersistentIndexList(QModelIndexList const & from, QModelIndexList const & to);
   protected: QModelIndexList persistentIndexList() const
   private: inline struct QAbstractItemModelPrivate* d_func();
   private: inline struct QAbstractItemModelPrivate const * d_func() const
   private: QAbstractItemModel(class QAbstractItemModel const &);
   private: class QAbstractItemModel& operator =(class QAbstractItemModel const &);
   public: inline bool insertRow(int arow, class QModelIndex const & aparent = QModelIndex::QModelIndex());
   public: inline bool insertColumn(int acolumn, class QModelIndex const & aparent = QModelIndex::QModelIndex());
   public: inline bool removeRow(int arow, class QModelIndex const & aparent = QModelIndex::QModelIndex());
   public: inline bool removeColumn(int acolumn, class QModelIndex const & aparent = QModelIndex::QModelIndex());
   protected: inline class QModelIndex createIndex(int arow, int acolumn, void* adata = 0) const
   protected: inline class QModelIndex createIndex(int arow, int acolumn, int aid) const
   protected: inline class QModelIndex createIndex(int arow, int acolumn, quint32 aid) const
   friend struct QPersistentModelIndexData;
   friend struct QAbstractItemModelPrivate;
};
class QAbstractTableModel: public QAbstractItemModel{
   public: virtual struct QMetaObject const * metaObject() const
   public: static struct QMetaObject const staticMetaObject;
   public: virtual void* qt_metacast(char const *);
   public: static inline class QString tr(char const * s, char const * c = 0);
   public: static inline class QString trUtf8(char const * s, char const * c = 0);
   public: static inline class QString tr(char const * s, char const * c, int n);
   public: static inline class QString trUtf8(char const * s, char const * c, int n);
   public: virtual int qt_metacall(enum QMetaObject::Call, int, void* *);
   public: explicit QAbstractTableModel(class QObject* parent = 0);
   public: virtual ~QAbstractTableModel();
   public: virtual class QModelIndex index(int row, int column, class QModelIndex const & parent = QModelIndex::QModelIndex()) const
   public: virtual bool dropMimeData(struct QMimeData const * data, enum Qt::DropAction action, int row, int column, class QModelIndex const & parent);
   protected: QAbstractTableModel(struct QAbstractItemModelPrivate& dd, class QObject* parent);
   private: QAbstractTableModel(class QAbstractTableModel const &);
   private: class QAbstractTableModel& operator =(class QAbstractTableModel const &);
   private: virtual class QModelIndex parent(class QModelIndex const & child) const
   private: virtual bool hasChildren(class QModelIndex const & parent) const
};
class QAbstractListModel: public QAbstractItemModel{
   public: virtual struct QMetaObject const * metaObject() const
   public: static struct QMetaObject const staticMetaObject;
   public: virtual void* qt_metacast(char const *);
   public: static inline class QString tr(char const * s, char const * c = 0);
   public: static inline class QString trUtf8(char const * s, char const * c = 0);
   public: static inline class QString tr(char const * s, char const * c, int n);
   public: static inline class QString trUtf8(char const * s, char const * c, int n);
   public: virtual int qt_metacall(enum QMetaObject::Call, int, void* *);
   public: explicit QAbstractListModel(class QObject* parent = 0);
   public: virtual ~QAbstractListModel();
   public: virtual class QModelIndex index(int row, int column = 0, class QModelIndex const & parent = QModelIndex::QModelIndex()) const
   public: virtual bool dropMimeData(struct QMimeData const * data, enum Qt::DropAction action, int row, int column, class QModelIndex const & parent);
   protected: QAbstractListModel(struct QAbstractItemModelPrivate& dd, class QObject* parent);
   private: QAbstractListModel(class QAbstractListModel const &);
   private: class QAbstractListModel& operator =(class QAbstractListModel const &);
   private: virtual class QModelIndex parent(class QModelIndex const & child) const
   private: virtual int columnCount(class QModelIndex const & parent) const
   private: virtual bool hasChildren(class QModelIndex const & parent) const
};
inline uint qHash(class QModelIndex const & index);
#endif // QABSTRACTITEMMODEL_H