#ifndef QITEMSELECTIONMODEL_H
#define QITEMSELECTIONMODEL_H 
#include <QtCore/qset.h>
#include <QtCore/qvector.h>
#include <QtCore/qlist.h>
#include <QtCore/qabstractitemmodel.h>
typedef enum QtValidLicenseForGuiModule QtGuiModule;
#ifndef QT_NO_ITEMVIEWS
class QItemSelectionRange{
   public: inline QItemSelectionRange();
   public: inline QItemSelectionRange(class QItemSelectionRange const & other);
   public: explicit inline QItemSelectionRange(class QModelIndex const & index);
   public: inline int top() const
   public: inline int left() const
   public: inline int bottom() const
   public: inline int right() const
   public: inline int width() const
   public: inline int height() const
   public: inline class QModelIndex topLeft() const
   public: inline class QModelIndex bottomRight() const
   public: inline class QModelIndex parent() const
   public: inline class QAbstractItemModel const * model() const
   public: inline bool contains(class QModelIndex const & index) const
   public: inline bool contains(int row, int column, class QModelIndex const & parentIndex) const
   public: bool intersects(class QItemSelectionRange const & other) const
   public: class QItemSelectionRange intersect(class QItemSelectionRange const & other) const
   public: inline class QItemSelectionRange intersected(class QItemSelectionRange const & other) const
   public: inline bool operator ==(class QItemSelectionRange const & other) const
   public: inline bool operator !=(class QItemSelectionRange const & other) const
   public: inline bool isValid() const
   public: QModelIndexList indexes() const
   private: class QPersistentModelIndex tl;
   private: class QPersistentModelIndex br;
   public: inline QItemSelectionRange(class QModelIndex const & atopLeft, class QModelIndex const & abottomRight);
};
template < > class QTypeInfo < class QItemSelectionRange >{
   public: static inline char const * name();
   public: enum /*anonymous*/{
      isComplex = 1,
      isStatic = 0,
      isLarge = 1,
      isPointer = 0,
      isDummy = 0,
   };
};
struct QItemSelectionModelPrivate;
class QItemSelectionModel: 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* *);
   private: inline struct QItemSelectionModelPrivate* d_func();
   private: inline struct QItemSelectionModelPrivate const * d_func() const
   public: enum SelectionFlag{
      NoUpdate = 0,
      Clear = 1,
      Select = 2,
      Deselect = 4,
      Toggle = 8,
      Current = 16,
      Rows = 32,
      Columns = 64,
      SelectCurrent = 18,
      ToggleCurrent = 24,
      ClearAndSelect = 3,
   };
   public: typedef class QFlags < enum QItemSelectionModel::SelectionFlag > SelectionFlags;
   public: explicit QItemSelectionModel(class QAbstractItemModel* model);
   public: explicit QItemSelectionModel(class QAbstractItemModel* model, class QObject* parent);
   public: virtual ~QItemSelectionModel();
   public: class QModelIndex currentIndex() const
   public: bool isSelected(class QModelIndex const & index) const
   public: bool isRowSelected(int row, class QModelIndex const & parent) const
   public: bool isColumnSelected(int column, class QModelIndex const & parent) const
   public: bool rowIntersectsSelection(int row, class QModelIndex const & parent) const
   public: bool columnIntersectsSelection(int column, class QModelIndex const & parent) const
   public: bool hasSelection() const
   public: QModelIndexList selectedIndexes() const
   public: QModelIndexList selectedRows(int column = 0) const
   public: QModelIndexList selectedColumns(int row = 0) const
   public: class QItemSelection const selection() const
   public: class QAbstractItemModel const * model() const
   public: void setCurrentIndex(class QModelIndex const & index, class QFlags < enum QItemSelectionModel::SelectionFlag > command);
   public: virtual void select(class QModelIndex const & index, class QFlags < enum QItemSelectionModel::SelectionFlag > command);
   public: virtual void select(class QItemSelection const & selection, class QFlags < enum QItemSelectionModel::SelectionFlag > command);
   public: virtual void clear();
   public: virtual void reset();
   public: void clearSelection();
   protected: void selectionChanged(class QItemSelection const & selected, class QItemSelection const & deselected);
   protected: void currentChanged(class QModelIndex const & current, class QModelIndex const & previous);
   protected: void currentRowChanged(class QModelIndex const & current, class QModelIndex const & previous);
   protected: void currentColumnChanged(class QModelIndex const & current, class QModelIndex const & previous);
   protected: QItemSelectionModel(struct QItemSelectionModelPrivate& dd, class QAbstractItemModel* model);
   protected: void emitSelectionChanged(class QItemSelection const & newSelection, class QItemSelection const & oldSelection);
   private: QItemSelectionModel(class QItemSelectionModel const &);
   private: class QItemSelectionModel& operator =(class QItemSelectionModel const &);
   friend struct QItemSelectionModelPrivate;
};
inline class QFlags < enum QItemSelectionModel::SelectionFlag > operator |(enum QItemSelectionModel::SelectionFlag f1, class QFlags < enum QItemSelectionModel::SelectionFlag > f2);
inline class QFlags < enum QItemSelectionModel::SelectionFlag > operator |(enum QItemSelectionModel::SelectionFlag f1, enum QItemSelectionModel::SelectionFlag f2);
inline uint qHash(class QItemSelectionRange const &);
class QItemSelection: public QList < class QItemSelectionRange >{
   public: inline QItemSelection();
   public: QItemSelection(class QModelIndex const & topLeft, class QModelIndex const & bottomRight);
   public: void select(class QModelIndex const & topLeft, class QModelIndex const & bottomRight);
   public: bool contains(class QModelIndex const & index) const
   public: QModelIndexList indexes() const
   public: void merge(class QItemSelection const & other, class QFlags < enum QItemSelectionModel::SelectionFlag > command);
   public: static void split(class QItemSelectionRange const & range, class QItemSelectionRange const & other, class QItemSelection* result);
};
#ifndef QT_NO_DEBUG_STREAM
struct QDebug operator <<(struct QDebug, class QItemSelectionRange const &);
#endif
#endif // QT_NO_ITEMVIEWS
#endif // QITEMSELECTIONMODEL_H