/*
 * Interface wrapper code.
 *
 * Generated by SIP 6.15.1
 *
 *     Copyright: (c) 2020 by Total Control Software
 *     License:   wxWindows License
 */

#include "sipAPI_dataview.h"
        #include <wx/dataview.h>
        #include <wx/dataview.h>
        #include <wx/dataview.h>
        #include <wx/dataview.h>


class sipwxDataViewIndexListModel : public ::wxDataViewIndexListModel
{
public:
    sipwxDataViewIndexListModel(uint);
    virtual ~sipwxDataViewIndexListModel();

    /*
     * There is a protected method for every virtual method visible from
     * this class.
     */
protected:
    bool IsVirtualListModel() const SIP_OVERRIDE;
    bool IsListModel() const SIP_OVERRIDE;
    bool SetValue(const ::wxDVCVariant&, const ::wxDataViewItem&, uint) SIP_OVERRIDE;
    void Resort() SIP_OVERRIDE;
    bool IsContainer(const ::wxDataViewItem&) const SIP_OVERRIDE;
    bool HasValue(const ::wxDataViewItem&, uint) const SIP_OVERRIDE;
    bool HasDefaultCompare() const SIP_OVERRIDE;
    bool HasContainerColumns(const ::wxDataViewItem&) const SIP_OVERRIDE;
    ::wxDataViewItem GetParent(const ::wxDataViewItem&) const SIP_OVERRIDE;
    uint GetChildren(const ::wxDataViewItem&, ::wxDataViewItemArray&) const SIP_OVERRIDE;
    bool IsEnabled(const ::wxDataViewItem&, uint) const SIP_OVERRIDE;
    bool GetAttr(const ::wxDataViewItem&, uint, ::wxDataViewItemAttr&) const SIP_OVERRIDE;
    int Compare(const ::wxDataViewItem&, const ::wxDataViewItem&, uint, bool) const SIP_OVERRIDE;
    bool GetAttrByRow(uint, uint, ::wxDataViewItemAttr&) const SIP_OVERRIDE;
    bool IsEnabledByRow(uint, uint) const SIP_OVERRIDE;
    uint GetCount() const SIP_OVERRIDE;
    uint GetRow(const ::wxDataViewItem&) const SIP_OVERRIDE;
    void GetValueByRow(::wxVariant&, uint, uint) const SIP_OVERRIDE;
    bool SetValueByRow(const ::wxDVCVariant&, uint, uint) SIP_OVERRIDE;
    void GetValue(::wxDVCVariant&, const ::wxDataViewItem&, uint) const SIP_OVERRIDE;

public:
    sipSimpleWrapper *sipPySelf;

private:
    sipwxDataViewIndexListModel(const sipwxDataViewIndexListModel &);
    sipwxDataViewIndexListModel &operator = (const sipwxDataViewIndexListModel &);

    char sipPyMethods[20];
};

sipwxDataViewIndexListModel::sipwxDataViewIndexListModel(uint initial_size): ::wxDataViewIndexListModel(initial_size), sipPySelf(SIP_NULLPTR)
{
    memset(sipPyMethods, 0, sizeof (sipPyMethods));
}

sipwxDataViewIndexListModel::~sipwxDataViewIndexListModel()
{
    sipInstanceDestroyedEx(&sipPySelf);
}

bool sipwxDataViewIndexListModel::IsVirtualListModel() const
{
    sip_gilstate_t sipGILState;
    PyObject *sipMeth;

    sipMeth = sipIsPyMethod(&sipGILState, const_cast<char *>(&sipPyMethods[0]), const_cast<sipSimpleWrapper **>(&sipPySelf), SIP_NULLPTR, sipName_IsVirtualListModel);

    if (!sipMeth)
        return ::wxDataViewIndexListModel::IsVirtualListModel();

    extern bool sipVH__dataview_0(sip_gilstate_t, sipVirtErrorHandlerFunc, sipSimpleWrapper *, PyObject *);

    return sipVH__dataview_0(sipGILState, 0, sipPySelf, sipMeth);
}

bool sipwxDataViewIndexListModel::IsListModel() const
{
    sip_gilstate_t sipGILState;
    PyObject *sipMeth;

    sipMeth = sipIsPyMethod(&sipGILState, const_cast<char *>(&sipPyMethods[1]), const_cast<sipSimpleWrapper **>(&sipPySelf), SIP_NULLPTR, sipName_IsListModel);

    if (!sipMeth)
        return ::wxDataViewIndexListModel::IsListModel();

    extern bool sipVH__dataview_0(sip_gilstate_t, sipVirtErrorHandlerFunc, sipSimpleWrapper *, PyObject *);

    return sipVH__dataview_0(sipGILState, 0, sipPySelf, sipMeth);
}

bool sipwxDataViewIndexListModel::SetValue(const ::wxDVCVariant& variant, const ::wxDataViewItem& item, uint col)
{
    sip_gilstate_t sipGILState;
    PyObject *sipMeth;

    sipMeth = sipIsPyMethod(&sipGILState, &sipPyMethods[2], &sipPySelf, SIP_NULLPTR, sipName_SetValue);

    if (!sipMeth)
        return ::wxDataViewIndexListModel::SetValue(variant, item, col);

    extern bool sipVH__dataview_12(sip_gilstate_t, sipVirtErrorHandlerFunc, sipSimpleWrapper *, PyObject *, const ::wxDVCVariant&, const ::wxDataViewItem&, uint);

    return sipVH__dataview_12(sipGILState, 0, sipPySelf, sipMeth, variant, item, col);
}

void sipwxDataViewIndexListModel::Resort()
{
    sip_gilstate_t sipGILState;
    PyObject *sipMeth;

    sipMeth = sipIsPyMethod(&sipGILState, &sipPyMethods[3], &sipPySelf, SIP_NULLPTR, sipName_Resort);

    if (!sipMeth)
    {
        ::wxDataViewIndexListModel::Resort();
        return;
    }

    extern void sipVH__dataview_5(sip_gilstate_t, sipVirtErrorHandlerFunc, sipSimpleWrapper *, PyObject *);

    sipVH__dataview_5(sipGILState, 0, sipPySelf, sipMeth);
}

bool sipwxDataViewIndexListModel::IsContainer(const ::wxDataViewItem& item) const
{
    sip_gilstate_t sipGILState;
    PyObject *sipMeth;

    sipMeth = sipIsPyMethod(&sipGILState, const_cast<char *>(&sipPyMethods[4]), const_cast<sipSimpleWrapper **>(&sipPySelf), SIP_NULLPTR, sipName_IsContainer);

    if (!sipMeth)
        return ::wxDataViewIndexListModel::IsContainer(item);

    extern bool sipVH__dataview_2(sip_gilstate_t, sipVirtErrorHandlerFunc, sipSimpleWrapper *, PyObject *, const ::wxDataViewItem&);

    return sipVH__dataview_2(sipGILState, 0, sipPySelf, sipMeth, item);
}

bool sipwxDataViewIndexListModel::HasValue(const ::wxDataViewItem& item, uint col) const
{
    sip_gilstate_t sipGILState;
    PyObject *sipMeth;

    sipMeth = sipIsPyMethod(&sipGILState, const_cast<char *>(&sipPyMethods[5]), const_cast<sipSimpleWrapper **>(&sipPySelf), SIP_NULLPTR, sipName_HasValue);

    if (!sipMeth)
        return ::wxDataViewIndexListModel::HasValue(item, col);

    extern bool sipVH__dataview_6(sip_gilstate_t, sipVirtErrorHandlerFunc, sipSimpleWrapper *, PyObject *, const ::wxDataViewItem&, uint);

    return sipVH__dataview_6(sipGILState, 0, sipPySelf, sipMeth, item, col);
}

bool sipwxDataViewIndexListModel::HasDefaultCompare() const
{
    sip_gilstate_t sipGILState;
    PyObject *sipMeth;

    sipMeth = sipIsPyMethod(&sipGILState, const_cast<char *>(&sipPyMethods[6]), const_cast<sipSimpleWrapper **>(&sipPySelf), SIP_NULLPTR, sipName_HasDefaultCompare);

    if (!sipMeth)
        return ::wxDataViewIndexListModel::HasDefaultCompare();

    extern bool sipVH__dataview_0(sip_gilstate_t, sipVirtErrorHandlerFunc, sipSimpleWrapper *, PyObject *);

    return sipVH__dataview_0(sipGILState, 0, sipPySelf, sipMeth);
}

bool sipwxDataViewIndexListModel::HasContainerColumns(const ::wxDataViewItem& item) const
{
    sip_gilstate_t sipGILState;
    PyObject *sipMeth;

    sipMeth = sipIsPyMethod(&sipGILState, const_cast<char *>(&sipPyMethods[7]), const_cast<sipSimpleWrapper **>(&sipPySelf), SIP_NULLPTR, sipName_HasContainerColumns);

    if (!sipMeth)
        return ::wxDataViewIndexListModel::HasContainerColumns(item);

    extern bool sipVH__dataview_2(sip_gilstate_t, sipVirtErrorHandlerFunc, sipSimpleWrapper *, PyObject *, const ::wxDataViewItem&);

    return sipVH__dataview_2(sipGILState, 0, sipPySelf, sipMeth, item);
}

::wxDataViewItem sipwxDataViewIndexListModel::GetParent(const ::wxDataViewItem& item) const
{
    sip_gilstate_t sipGILState;
    PyObject *sipMeth;

    sipMeth = sipIsPyMethod(&sipGILState, const_cast<char *>(&sipPyMethods[8]), const_cast<sipSimpleWrapper **>(&sipPySelf), SIP_NULLPTR, sipName_GetParent);

    if (!sipMeth)
        return ::wxDataViewIndexListModel::GetParent(item);

    extern ::wxDataViewItem sipVH__dataview_10(sip_gilstate_t, sipVirtErrorHandlerFunc, sipSimpleWrapper *, PyObject *, const ::wxDataViewItem&);

    return sipVH__dataview_10(sipGILState, 0, sipPySelf, sipMeth, item);
}

uint sipwxDataViewIndexListModel::GetChildren(const ::wxDataViewItem& item, ::wxDataViewItemArray& children) const
{
    sip_gilstate_t sipGILState;
    PyObject *sipMeth;

    sipMeth = sipIsPyMethod(&sipGILState, const_cast<char *>(&sipPyMethods[9]), const_cast<sipSimpleWrapper **>(&sipPySelf), SIP_NULLPTR, sipName_GetChildren);

    if (!sipMeth)
        return ::wxDataViewIndexListModel::GetChildren(item, children);

    extern uint sipVH__dataview_9(sip_gilstate_t, sipVirtErrorHandlerFunc, sipSimpleWrapper *, PyObject *, const ::wxDataViewItem&, ::wxDataViewItemArray&);

    return sipVH__dataview_9(sipGILState, 0, sipPySelf, sipMeth, item, children);
}

bool sipwxDataViewIndexListModel::IsEnabled(const ::wxDataViewItem& item, uint col) const
{
    sip_gilstate_t sipGILState;
    PyObject *sipMeth;

    sipMeth = sipIsPyMethod(&sipGILState, const_cast<char *>(&sipPyMethods[10]), const_cast<sipSimpleWrapper **>(&sipPySelf), SIP_NULLPTR, sipName_IsEnabled);

    if (!sipMeth)
        return ::wxDataViewIndexListModel::IsEnabled(item, col);

    extern bool sipVH__dataview_6(sip_gilstate_t, sipVirtErrorHandlerFunc, sipSimpleWrapper *, PyObject *, const ::wxDataViewItem&, uint);

    return sipVH__dataview_6(sipGILState, 0, sipPySelf, sipMeth, item, col);
}

bool sipwxDataViewIndexListModel::GetAttr(const ::wxDataViewItem& item, uint col, ::wxDataViewItemAttr& attr) const
{
    sip_gilstate_t sipGILState;
    PyObject *sipMeth;

    sipMeth = sipIsPyMethod(&sipGILState, const_cast<char *>(&sipPyMethods[11]), const_cast<sipSimpleWrapper **>(&sipPySelf), SIP_NULLPTR, sipName_GetAttr);

    if (!sipMeth)
        return ::wxDataViewIndexListModel::GetAttr(item, col, attr);

    extern bool sipVH__dataview_8(sip_gilstate_t, sipVirtErrorHandlerFunc, sipSimpleWrapper *, PyObject *, const ::wxDataViewItem&, uint, ::wxDataViewItemAttr&);

    return sipVH__dataview_8(sipGILState, 0, sipPySelf, sipMeth, item, col, attr);
}

int sipwxDataViewIndexListModel::Compare(const ::wxDataViewItem& item1, const ::wxDataViewItem& item2, uint column, bool ascending) const
{
    sip_gilstate_t sipGILState;
    PyObject *sipMeth;

    sipMeth = sipIsPyMethod(&sipGILState, const_cast<char *>(&sipPyMethods[12]), const_cast<sipSimpleWrapper **>(&sipPySelf), SIP_NULLPTR, sipName_Compare);

    if (!sipMeth)
        return ::wxDataViewIndexListModel::Compare(item1, item2, column, ascending);

    extern int sipVH__dataview_7(sip_gilstate_t, sipVirtErrorHandlerFunc, sipSimpleWrapper *, PyObject *, const ::wxDataViewItem&, const ::wxDataViewItem&, uint, bool);

    return sipVH__dataview_7(sipGILState, 0, sipPySelf, sipMeth, item1, item2, column, ascending);
}

bool sipwxDataViewIndexListModel::GetAttrByRow(uint row, uint col, ::wxDataViewItemAttr& attr) const
{
    sip_gilstate_t sipGILState;
    PyObject *sipMeth;

    sipMeth = sipIsPyMethod(&sipGILState, const_cast<char *>(&sipPyMethods[13]), const_cast<sipSimpleWrapper **>(&sipPySelf), SIP_NULLPTR, sipName_GetAttrByRow);

    if (!sipMeth)
        return ::wxDataViewIndexListModel::GetAttrByRow(row, col, attr);

    extern bool sipVH__dataview_13(sip_gilstate_t, sipVirtErrorHandlerFunc, sipSimpleWrapper *, PyObject *, uint, uint, ::wxDataViewItemAttr&);

    return sipVH__dataview_13(sipGILState, 0, sipPySelf, sipMeth, row, col, attr);
}

bool sipwxDataViewIndexListModel::IsEnabledByRow(uint row, uint col) const
{
    sip_gilstate_t sipGILState;
    PyObject *sipMeth;

    sipMeth = sipIsPyMethod(&sipGILState, const_cast<char *>(&sipPyMethods[14]), const_cast<sipSimpleWrapper **>(&sipPySelf), SIP_NULLPTR, sipName_IsEnabledByRow);

    if (!sipMeth)
        return ::wxDataViewIndexListModel::IsEnabledByRow(row, col);

    extern bool sipVH__dataview_14(sip_gilstate_t, sipVirtErrorHandlerFunc, sipSimpleWrapper *, PyObject *, uint, uint);

    return sipVH__dataview_14(sipGILState, 0, sipPySelf, sipMeth, row, col);
}

uint sipwxDataViewIndexListModel::GetCount() const
{
    sip_gilstate_t sipGILState;
    PyObject *sipMeth;

    sipMeth = sipIsPyMethod(&sipGILState, const_cast<char *>(&sipPyMethods[15]), const_cast<sipSimpleWrapper **>(&sipPySelf), SIP_NULLPTR, sipName_GetCount);

    if (!sipMeth)
        return ::wxDataViewIndexListModel::GetCount();

    extern uint sipVH__dataview_15(sip_gilstate_t, sipVirtErrorHandlerFunc, sipSimpleWrapper *, PyObject *);

    return sipVH__dataview_15(sipGILState, 0, sipPySelf, sipMeth);
}

uint sipwxDataViewIndexListModel::GetRow(const ::wxDataViewItem& item) const
{
    sip_gilstate_t sipGILState;
    PyObject *sipMeth;

    sipMeth = sipIsPyMethod(&sipGILState, const_cast<char *>(&sipPyMethods[16]), const_cast<sipSimpleWrapper **>(&sipPySelf), SIP_NULLPTR, sipName_GetRow);

    if (!sipMeth)
        return ::wxDataViewIndexListModel::GetRow(item);

    extern uint sipVH__dataview_16(sip_gilstate_t, sipVirtErrorHandlerFunc, sipSimpleWrapper *, PyObject *, const ::wxDataViewItem&);

    return sipVH__dataview_16(sipGILState, 0, sipPySelf, sipMeth, item);
}

void sipwxDataViewIndexListModel::GetValueByRow(::wxVariant& variant, uint row, uint col) const
{
    sip_gilstate_t sipGILState;
    PyObject *sipMeth;

    sipMeth = sipIsPyMethod(&sipGILState, const_cast<char *>(&sipPyMethods[17]), const_cast<sipSimpleWrapper **>(&sipPySelf), sipName_DataViewIndexListModel, sipName_GetValueByRow);

    if (!sipMeth)
        return;

    extern void sipVH__dataview_17(sip_gilstate_t, sipVirtErrorHandlerFunc, sipSimpleWrapper *, PyObject *, ::wxVariant&, uint, uint);

    sipVH__dataview_17(sipGILState, 0, sipPySelf, sipMeth, variant, row, col);
}

bool sipwxDataViewIndexListModel::SetValueByRow(const ::wxDVCVariant& variant, uint row, uint col)
{
    sip_gilstate_t sipGILState;
    PyObject *sipMeth;

    sipMeth = sipIsPyMethod(&sipGILState, &sipPyMethods[18], &sipPySelf, sipName_DataViewIndexListModel, sipName_SetValueByRow);

    if (!sipMeth)
        return 0;

    extern bool sipVH__dataview_18(sip_gilstate_t, sipVirtErrorHandlerFunc, sipSimpleWrapper *, PyObject *, const ::wxDVCVariant&, uint, uint);

    return sipVH__dataview_18(sipGILState, 0, sipPySelf, sipMeth, variant, row, col);
}

void sipwxDataViewIndexListModel::GetValue(::wxDVCVariant& variant, const ::wxDataViewItem& item, uint col) const
{
    sip_gilstate_t sipGILState;
    PyObject *sipMeth;

    sipMeth = sipIsPyMethod(&sipGILState, const_cast<char *>(&sipPyMethods[19]), const_cast<sipSimpleWrapper **>(&sipPySelf), SIP_NULLPTR, sipName_GetValue);

    if (!sipMeth)
    {
        ::wxDataViewIndexListModel::GetValue(variant, item, col);
        return;
    }

    extern void sipVH__dataview_19(sip_gilstate_t, sipVirtErrorHandlerFunc, sipSimpleWrapper *, PyObject *, ::wxDVCVariant&, const ::wxDataViewItem&, uint);

    sipVH__dataview_19(sipGILState, 0, sipPySelf, sipMeth, variant, item, col);
}


PyDoc_STRVAR(doc_wxDataViewIndexListModel_GetItem, "GetItem(row) -> DataViewItem\n"
"\n"
"Returns the wxDataViewItem at the given row.");

extern "C" {static PyObject *meth_wxDataViewIndexListModel_GetItem(PyObject *, PyObject *, PyObject *);}
static PyObject *meth_wxDataViewIndexListModel_GetItem(PyObject *sipSelf, PyObject *sipArgs, PyObject *sipKwds)
{
    PyObject *sipParseErr = SIP_NULLPTR;

    {
        uint row;
        const ::wxDataViewIndexListModel *sipCpp;

        static const char *sipKwdList[] = {
            sipName_row,
        };

        if (sipParseKwdArgs(&sipParseErr, sipArgs, sipKwds, sipKwdList, SIP_NULLPTR, "Bu", &sipSelf, sipType_wxDataViewIndexListModel, &sipCpp, &row))
        {
            ::wxDataViewItem*sipRes;

            PyErr_Clear();

            Py_BEGIN_ALLOW_THREADS
            sipRes = new ::wxDataViewItem(sipCpp->GetItem(row));
            Py_END_ALLOW_THREADS

            if (PyErr_Occurred())
                return 0;

            return sipConvertFromNewType(sipRes, sipType_wxDataViewItem, SIP_NULLPTR);
        }
    }

    sipNoMethod(sipParseErr, sipName_DataViewIndexListModel, sipName_GetItem, SIP_NULLPTR);

    return SIP_NULLPTR;
}


PyDoc_STRVAR(doc_wxDataViewIndexListModel_Reset, "Reset(new_size) -> None\n"
"\n"
"Call this after if the data has to be read again from the model.");

extern "C" {static PyObject *meth_wxDataViewIndexListModel_Reset(PyObject *, PyObject *, PyObject *);}
static PyObject *meth_wxDataViewIndexListModel_Reset(PyObject *sipSelf, PyObject *sipArgs, PyObject *sipKwds)
{
    PyObject *sipParseErr = SIP_NULLPTR;

    {
        uint new_size;
        ::wxDataViewIndexListModel *sipCpp;

        static const char *sipKwdList[] = {
            sipName_new_size,
        };

        if (sipParseKwdArgs(&sipParseErr, sipArgs, sipKwds, sipKwdList, SIP_NULLPTR, "Bu", &sipSelf, sipType_wxDataViewIndexListModel, &sipCpp, &new_size))
        {
            PyErr_Clear();

            Py_BEGIN_ALLOW_THREADS
            sipCpp->Reset(new_size);
            Py_END_ALLOW_THREADS

            if (PyErr_Occurred())
                return 0;

            Py_INCREF(Py_None);
            return Py_None;
        }
    }

    sipNoMethod(sipParseErr, sipName_DataViewIndexListModel, sipName_Reset, SIP_NULLPTR);

    return SIP_NULLPTR;
}


PyDoc_STRVAR(doc_wxDataViewIndexListModel_RowAppended, "RowAppended() -> None\n"
"\n"
"Call this after a row has been appended to the model.");

extern "C" {static PyObject *meth_wxDataViewIndexListModel_RowAppended(PyObject *, PyObject *);}
static PyObject *meth_wxDataViewIndexListModel_RowAppended(PyObject *sipSelf, PyObject *sipArgs)
{
    PyObject *sipParseErr = SIP_NULLPTR;

    {
        ::wxDataViewIndexListModel *sipCpp;

        if (sipParseArgs(&sipParseErr, sipArgs, "B", &sipSelf, sipType_wxDataViewIndexListModel, &sipCpp))
        {
            PyErr_Clear();

            Py_BEGIN_ALLOW_THREADS
            sipCpp->RowAppended();
            Py_END_ALLOW_THREADS

            if (PyErr_Occurred())
                return 0;

            Py_INCREF(Py_None);
            return Py_None;
        }
    }

    sipNoMethod(sipParseErr, sipName_DataViewIndexListModel, sipName_RowAppended, SIP_NULLPTR);

    return SIP_NULLPTR;
}


PyDoc_STRVAR(doc_wxDataViewIndexListModel_RowChanged, "RowChanged(row) -> None\n"
"\n"
"Call this after a row has been changed.");

extern "C" {static PyObject *meth_wxDataViewIndexListModel_RowChanged(PyObject *, PyObject *, PyObject *);}
static PyObject *meth_wxDataViewIndexListModel_RowChanged(PyObject *sipSelf, PyObject *sipArgs, PyObject *sipKwds)
{
    PyObject *sipParseErr = SIP_NULLPTR;

    {
        uint row;
        ::wxDataViewIndexListModel *sipCpp;

        static const char *sipKwdList[] = {
            sipName_row,
        };

        if (sipParseKwdArgs(&sipParseErr, sipArgs, sipKwds, sipKwdList, SIP_NULLPTR, "Bu", &sipSelf, sipType_wxDataViewIndexListModel, &sipCpp, &row))
        {
            PyErr_Clear();

            Py_BEGIN_ALLOW_THREADS
            sipCpp->RowChanged(row);
            Py_END_ALLOW_THREADS

            if (PyErr_Occurred())
                return 0;

            Py_INCREF(Py_None);
            return Py_None;
        }
    }

    sipNoMethod(sipParseErr, sipName_DataViewIndexListModel, sipName_RowChanged, SIP_NULLPTR);

    return SIP_NULLPTR;
}


PyDoc_STRVAR(doc_wxDataViewIndexListModel_RowDeleted, "RowDeleted(row) -> None\n"
"\n"
"Call this after a row has been deleted.");

extern "C" {static PyObject *meth_wxDataViewIndexListModel_RowDeleted(PyObject *, PyObject *, PyObject *);}
static PyObject *meth_wxDataViewIndexListModel_RowDeleted(PyObject *sipSelf, PyObject *sipArgs, PyObject *sipKwds)
{
    PyObject *sipParseErr = SIP_NULLPTR;

    {
        uint row;
        ::wxDataViewIndexListModel *sipCpp;

        static const char *sipKwdList[] = {
            sipName_row,
        };

        if (sipParseKwdArgs(&sipParseErr, sipArgs, sipKwds, sipKwdList, SIP_NULLPTR, "Bu", &sipSelf, sipType_wxDataViewIndexListModel, &sipCpp, &row))
        {
            PyErr_Clear();

            Py_BEGIN_ALLOW_THREADS
            sipCpp->RowDeleted(row);
            Py_END_ALLOW_THREADS

            if (PyErr_Occurred())
                return 0;

            Py_INCREF(Py_None);
            return Py_None;
        }
    }

    sipNoMethod(sipParseErr, sipName_DataViewIndexListModel, sipName_RowDeleted, SIP_NULLPTR);

    return SIP_NULLPTR;
}


PyDoc_STRVAR(doc_wxDataViewIndexListModel_RowInserted, "RowInserted(before) -> None\n"
"\n"
"Call this after a row has been inserted at the given position.");

extern "C" {static PyObject *meth_wxDataViewIndexListModel_RowInserted(PyObject *, PyObject *, PyObject *);}
static PyObject *meth_wxDataViewIndexListModel_RowInserted(PyObject *sipSelf, PyObject *sipArgs, PyObject *sipKwds)
{
    PyObject *sipParseErr = SIP_NULLPTR;

    {
        uint before;
        ::wxDataViewIndexListModel *sipCpp;

        static const char *sipKwdList[] = {
            sipName_before,
        };

        if (sipParseKwdArgs(&sipParseErr, sipArgs, sipKwds, sipKwdList, SIP_NULLPTR, "Bu", &sipSelf, sipType_wxDataViewIndexListModel, &sipCpp, &before))
        {
            PyErr_Clear();

            Py_BEGIN_ALLOW_THREADS
            sipCpp->RowInserted(before);
            Py_END_ALLOW_THREADS

            if (PyErr_Occurred())
                return 0;

            Py_INCREF(Py_None);
            return Py_None;
        }
    }

    sipNoMethod(sipParseErr, sipName_DataViewIndexListModel, sipName_RowInserted, SIP_NULLPTR);

    return SIP_NULLPTR;
}


PyDoc_STRVAR(doc_wxDataViewIndexListModel_RowPrepended, "RowPrepended() -> None\n"
"\n"
"Call this after a row has been prepended to the model.");

extern "C" {static PyObject *meth_wxDataViewIndexListModel_RowPrepended(PyObject *, PyObject *);}
static PyObject *meth_wxDataViewIndexListModel_RowPrepended(PyObject *sipSelf, PyObject *sipArgs)
{
    PyObject *sipParseErr = SIP_NULLPTR;

    {
        ::wxDataViewIndexListModel *sipCpp;

        if (sipParseArgs(&sipParseErr, sipArgs, "B", &sipSelf, sipType_wxDataViewIndexListModel, &sipCpp))
        {
            PyErr_Clear();

            Py_BEGIN_ALLOW_THREADS
            sipCpp->RowPrepended();
            Py_END_ALLOW_THREADS

            if (PyErr_Occurred())
                return 0;

            Py_INCREF(Py_None);
            return Py_None;
        }
    }

    sipNoMethod(sipParseErr, sipName_DataViewIndexListModel, sipName_RowPrepended, SIP_NULLPTR);

    return SIP_NULLPTR;
}


PyDoc_STRVAR(doc_wxDataViewIndexListModel_RowValueChanged, "RowValueChanged(row, col) -> None\n"
"\n"
"Call this after a value has been changed.");

extern "C" {static PyObject *meth_wxDataViewIndexListModel_RowValueChanged(PyObject *, PyObject *, PyObject *);}
static PyObject *meth_wxDataViewIndexListModel_RowValueChanged(PyObject *sipSelf, PyObject *sipArgs, PyObject *sipKwds)
{
    PyObject *sipParseErr = SIP_NULLPTR;

    {
        uint row;
        uint col;
        ::wxDataViewIndexListModel *sipCpp;

        static const char *sipKwdList[] = {
            sipName_row,
            sipName_col,
        };

        if (sipParseKwdArgs(&sipParseErr, sipArgs, sipKwds, sipKwdList, SIP_NULLPTR, "Buu", &sipSelf, sipType_wxDataViewIndexListModel, &sipCpp, &row, &col))
        {
            PyErr_Clear();

            Py_BEGIN_ALLOW_THREADS
            sipCpp->RowValueChanged(row, col);
            Py_END_ALLOW_THREADS

            if (PyErr_Occurred())
                return 0;

            Py_INCREF(Py_None);
            return Py_None;
        }
    }

    sipNoMethod(sipParseErr, sipName_DataViewIndexListModel, sipName_RowValueChanged, SIP_NULLPTR);

    return SIP_NULLPTR;
}


PyDoc_STRVAR(doc_wxDataViewIndexListModel_RowsDeleted, "RowsDeleted(rows) -> None\n"
"\n"
"Call this after rows have been deleted.");

extern "C" {static PyObject *meth_wxDataViewIndexListModel_RowsDeleted(PyObject *, PyObject *, PyObject *);}
static PyObject *meth_wxDataViewIndexListModel_RowsDeleted(PyObject *sipSelf, PyObject *sipArgs, PyObject *sipKwds)
{
    PyObject *sipParseErr = SIP_NULLPTR;

    {
        const ::wxArrayInt* rows;
        int rowsState = 0;
        ::wxDataViewIndexListModel *sipCpp;

        static const char *sipKwdList[] = {
            sipName_rows,
        };

        if (sipParseKwdArgs(&sipParseErr, sipArgs, sipKwds, sipKwdList, SIP_NULLPTR, "BJ1", &sipSelf, sipType_wxDataViewIndexListModel, &sipCpp, sipType_wxArrayInt, &rows, &rowsState))
        {
            PyErr_Clear();

            Py_BEGIN_ALLOW_THREADS
            sipCpp->RowsDeleted(*rows);
            Py_END_ALLOW_THREADS
            sipReleaseType(const_cast< ::wxArrayInt *>(rows), sipType_wxArrayInt, rowsState);

            if (PyErr_Occurred())
                return 0;

            Py_INCREF(Py_None);
            return Py_None;
        }
    }

    sipNoMethod(sipParseErr, sipName_DataViewIndexListModel, sipName_RowsDeleted, SIP_NULLPTR);

    return SIP_NULLPTR;
}


PyDoc_STRVAR(doc_wxDataViewIndexListModel_GetRow, "GetRow(self, item: DataViewItem) -> int");

extern "C" {static PyObject *meth_wxDataViewIndexListModel_GetRow(PyObject *, PyObject *, PyObject *);}
static PyObject *meth_wxDataViewIndexListModel_GetRow(PyObject *sipSelf, PyObject *sipArgs, PyObject *sipKwds)
{
    PyObject *sipParseErr = SIP_NULLPTR;
    bool sipSelfWasArg = (!sipSelf || sipIsDerivedClass((sipSimpleWrapper *)sipSelf));

    {
        const ::wxDataViewItem* item;
        const ::wxDataViewIndexListModel *sipCpp;

        static const char *sipKwdList[] = {
            sipName_item,
        };

        if (sipParseKwdArgs(&sipParseErr, sipArgs, sipKwds, sipKwdList, SIP_NULLPTR, "BJ9", &sipSelf, sipType_wxDataViewIndexListModel, &sipCpp, sipType_wxDataViewItem, &item))
        {
            uint sipRes;

            PyErr_Clear();

            Py_BEGIN_ALLOW_THREADS
            sipRes = (sipSelfWasArg ? sipCpp->::wxDataViewIndexListModel::GetRow(*item) : sipCpp->GetRow(*item));
            Py_END_ALLOW_THREADS

            if (PyErr_Occurred())
                return 0;

            return PyLong_FromUnsignedLong(sipRes);
        }
    }

    sipNoMethod(sipParseErr, sipName_DataViewIndexListModel, sipName_GetRow, doc_wxDataViewIndexListModel_GetRow);

    return SIP_NULLPTR;
}


PyDoc_STRVAR(doc_wxDataViewIndexListModel_GetCount, "GetCount(self) -> int");

extern "C" {static PyObject *meth_wxDataViewIndexListModel_GetCount(PyObject *, PyObject *);}
static PyObject *meth_wxDataViewIndexListModel_GetCount(PyObject *sipSelf, PyObject *sipArgs)
{
    PyObject *sipParseErr = SIP_NULLPTR;
    bool sipSelfWasArg = (!sipSelf || sipIsDerivedClass((sipSimpleWrapper *)sipSelf));

    {
        const ::wxDataViewIndexListModel *sipCpp;

        if (sipParseArgs(&sipParseErr, sipArgs, "B", &sipSelf, sipType_wxDataViewIndexListModel, &sipCpp))
        {
            uint sipRes;

            PyErr_Clear();

            Py_BEGIN_ALLOW_THREADS
            sipRes = (sipSelfWasArg ? sipCpp->::wxDataViewIndexListModel::GetCount() : sipCpp->GetCount());
            Py_END_ALLOW_THREADS

            if (PyErr_Occurred())
                return 0;

            return PyLong_FromUnsignedLong(sipRes);
        }
    }

    sipNoMethod(sipParseErr, sipName_DataViewIndexListModel, sipName_GetCount, doc_wxDataViewIndexListModel_GetCount);

    return SIP_NULLPTR;
}


PyDoc_STRVAR(doc_wxDataViewIndexListModel_GetChildren, "GetChildren(self, item: DataViewItem, children: DataViewItemArray) -> int");

extern "C" {static PyObject *meth_wxDataViewIndexListModel_GetChildren(PyObject *, PyObject *, PyObject *);}
static PyObject *meth_wxDataViewIndexListModel_GetChildren(PyObject *sipSelf, PyObject *sipArgs, PyObject *sipKwds)
{
    PyObject *sipParseErr = SIP_NULLPTR;
    bool sipSelfWasArg = (!sipSelf || sipIsDerivedClass((sipSimpleWrapper *)sipSelf));

    {
        const ::wxDataViewItem* item;
        ::wxDataViewItemArray* children;
        const ::wxDataViewIndexListModel *sipCpp;

        static const char *sipKwdList[] = {
            sipName_item,
            sipName_children,
        };

        if (sipParseKwdArgs(&sipParseErr, sipArgs, sipKwds, sipKwdList, SIP_NULLPTR, "BJ9J9", &sipSelf, sipType_wxDataViewIndexListModel, &sipCpp, sipType_wxDataViewItem, &item, sipType_wxDataViewItemArray, &children))
        {
            uint sipRes;

            PyErr_Clear();

            Py_BEGIN_ALLOW_THREADS
            sipRes = (sipSelfWasArg ? sipCpp->::wxDataViewIndexListModel::GetChildren(*item, *children) : sipCpp->GetChildren(*item, *children));
            Py_END_ALLOW_THREADS

            if (PyErr_Occurred())
                return 0;

            return PyLong_FromUnsignedLong(sipRes);
        }
    }

    sipNoMethod(sipParseErr, sipName_DataViewIndexListModel, sipName_GetChildren, doc_wxDataViewIndexListModel_GetChildren);

    return SIP_NULLPTR;
}


/* Cast a pointer to a type somewhere in its inheritance hierarchy. */
extern "C" {static void *cast_wxDataViewIndexListModel(void *, const sipTypeDef *);}
static void *cast_wxDataViewIndexListModel(void *sipCppV, const sipTypeDef *targetType)
{
    ::wxDataViewIndexListModel *sipCpp = reinterpret_cast< ::wxDataViewIndexListModel *>(sipCppV);

    if (targetType == sipType_wxDataViewIndexListModel)
        return sipCppV;

    sipCppV = ((const sipClassTypeDef *)sipType_wxDataViewListModel)->ctd_cast(static_cast< ::wxDataViewListModel *>(sipCpp), targetType);
    if (sipCppV)
        return sipCppV;

    return SIP_NULLPTR;
}


/* Call the instance's destructor. */
extern "C" {static void release_wxDataViewIndexListModel(void *, int);}
static void release_wxDataViewIndexListModel(void *sipCppV, int sipState)
{
    Py_BEGIN_ALLOW_THREADS

    if (sipState & SIP_DERIVED_CLASS)
        delete reinterpret_cast<sipwxDataViewIndexListModel *>(sipCppV);
    else
        delete reinterpret_cast< ::wxDataViewIndexListModel *>(sipCppV);

    Py_END_ALLOW_THREADS
}


extern "C" {static void dealloc_wxDataViewIndexListModel(sipSimpleWrapper *);}
static void dealloc_wxDataViewIndexListModel(sipSimpleWrapper *sipSelf)
{
    if (sipIsDerivedClass(sipSelf))
        reinterpret_cast<sipwxDataViewIndexListModel *>(sipGetAddress(sipSelf))->sipPySelf = SIP_NULLPTR;

    if (sipIsOwnedByPython(sipSelf))
    {
        release_wxDataViewIndexListModel(sipGetAddress(sipSelf), sipIsDerivedClass(sipSelf));
    }
}


extern "C" {static void *init_type_wxDataViewIndexListModel(sipSimpleWrapper *, PyObject *, PyObject *, PyObject **, PyObject **, PyObject **);}
static void *init_type_wxDataViewIndexListModel(sipSimpleWrapper *sipSelf, PyObject *sipArgs, PyObject *sipKwds, PyObject **sipUnused, PyObject **, PyObject **sipParseErr)
{
    sipwxDataViewIndexListModel *sipCpp = SIP_NULLPTR;

    {
        uint initial_size = 0;

        static const char *sipKwdList[] = {
            sipName_initial_size,
        };

        if (sipParseKwdArgs(sipParseErr, sipArgs, sipKwds, sipKwdList, sipUnused, "|u", &initial_size))
        {
            PyErr_Clear();

            Py_BEGIN_ALLOW_THREADS
            sipCpp = new sipwxDataViewIndexListModel(initial_size);
            Py_END_ALLOW_THREADS

            if (PyErr_Occurred())
            {
                delete sipCpp;
                return SIP_NULLPTR;
            }

            sipCpp->sipPySelf = sipSelf;

            return sipCpp;
        }
    }

    return SIP_NULLPTR;
}


/* Define this type's super-types. */
static sipEncodedTypeDef supers_wxDataViewIndexListModel[] = {{20, 255, 1}};


static PyMethodDef methods_wxDataViewIndexListModel[] = {
    {sipName_GetChildren, SIP_MLMETH_CAST(meth_wxDataViewIndexListModel_GetChildren), METH_VARARGS|METH_KEYWORDS, doc_wxDataViewIndexListModel_GetChildren},
    {sipName_GetCount, meth_wxDataViewIndexListModel_GetCount, METH_VARARGS, doc_wxDataViewIndexListModel_GetCount},
    {sipName_GetItem, SIP_MLMETH_CAST(meth_wxDataViewIndexListModel_GetItem), METH_VARARGS|METH_KEYWORDS, doc_wxDataViewIndexListModel_GetItem},
    {sipName_GetRow, SIP_MLMETH_CAST(meth_wxDataViewIndexListModel_GetRow), METH_VARARGS|METH_KEYWORDS, doc_wxDataViewIndexListModel_GetRow},
    {sipName_Reset, SIP_MLMETH_CAST(meth_wxDataViewIndexListModel_Reset), METH_VARARGS|METH_KEYWORDS, doc_wxDataViewIndexListModel_Reset},
    {sipName_RowAppended, meth_wxDataViewIndexListModel_RowAppended, METH_VARARGS, doc_wxDataViewIndexListModel_RowAppended},
    {sipName_RowChanged, SIP_MLMETH_CAST(meth_wxDataViewIndexListModel_RowChanged), METH_VARARGS|METH_KEYWORDS, doc_wxDataViewIndexListModel_RowChanged},
    {sipName_RowDeleted, SIP_MLMETH_CAST(meth_wxDataViewIndexListModel_RowDeleted), METH_VARARGS|METH_KEYWORDS, doc_wxDataViewIndexListModel_RowDeleted},
    {sipName_RowInserted, SIP_MLMETH_CAST(meth_wxDataViewIndexListModel_RowInserted), METH_VARARGS|METH_KEYWORDS, doc_wxDataViewIndexListModel_RowInserted},
    {sipName_RowPrepended, meth_wxDataViewIndexListModel_RowPrepended, METH_VARARGS, doc_wxDataViewIndexListModel_RowPrepended},
    {sipName_RowValueChanged, SIP_MLMETH_CAST(meth_wxDataViewIndexListModel_RowValueChanged), METH_VARARGS|METH_KEYWORDS, doc_wxDataViewIndexListModel_RowValueChanged},
    {sipName_RowsDeleted, SIP_MLMETH_CAST(meth_wxDataViewIndexListModel_RowsDeleted), METH_VARARGS|METH_KEYWORDS, doc_wxDataViewIndexListModel_RowsDeleted}
};

PyDoc_STRVAR(doc_wxDataViewIndexListModel, "DataViewIndexListModel(initial_size=0) -> None\n"
"\n"
"wxDataViewIndexListModel is a specialized data model which lets you\n"
"address an item by its position (row) rather than its wxDataViewItem\n"
"(which you can obtain from this class).");


sipClassTypeDef sipTypeDef__dataview_wxDataViewIndexListModel = {
    {
        -1,
        SIP_NULLPTR,
        SIP_NULLPTR,
        SIP_TYPE_ABSTRACT|SIP_TYPE_CLASS,
        sipNameNr_wxDataViewIndexListModel,
        SIP_NULLPTR,
        SIP_NULLPTR,
    },
    {
        sipNameNr_DataViewIndexListModel,
        {0, 0, 1},
        12, methods_wxDataViewIndexListModel,
        0, SIP_NULLPTR,
        0, SIP_NULLPTR,
        {SIP_NULLPTR, SIP_NULLPTR, SIP_NULLPTR, SIP_NULLPTR, SIP_NULLPTR, SIP_NULLPTR, SIP_NULLPTR, SIP_NULLPTR, SIP_NULLPTR, SIP_NULLPTR},
    },
    doc_wxDataViewIndexListModel,
    -1,
    -1,
    supers_wxDataViewIndexListModel,
    SIP_NULLPTR,
    init_type_wxDataViewIndexListModel,
    SIP_NULLPTR,
    SIP_NULLPTR,
    SIP_NULLPTR,
    SIP_NULLPTR,
    dealloc_wxDataViewIndexListModel,
    SIP_NULLPTR,
    SIP_NULLPTR,
    SIP_NULLPTR,
    release_wxDataViewIndexListModel,
    cast_wxDataViewIndexListModel,
    SIP_NULLPTR,
    SIP_NULLPTR,
    SIP_NULLPTR,
    SIP_NULLPTR,
    SIP_NULLPTR,
    SIP_NULLPTR,
    SIP_NULLPTR,
    sizeof (::wxDataViewIndexListModel),
};
