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

#include "sipAPI_core.h"
        #include <wx/artprov.h>
        #include <wx/iconbndl.h>
        #include <wx/bmpbndl.h>
        #include <wx/gdicmn.h>
        #include <wx/bitmap.h>
        #include <wx/icon.h>
        #include <wx/window.h>
        #include <wx/object.h>
        #include <wx/object.h>
        #include <wx/object.h>


class sipwxArtProvider : public ::wxArtProvider
{
public:
    sipwxArtProvider();
    sipwxArtProvider(const ::wxArtProvider&);
    virtual ~sipwxArtProvider();

    /*
     * There is a public method for every protected method visible from
     * this class.
     */
    ::wxBitmap sipProtectVirt_CreateBitmap(bool, const ::wxArtID&, const ::wxArtClient&, const ::wxSize&);
    ::wxBitmapBundle sipProtectVirt_CreateBitmapBundle(bool, const ::wxArtID&, const ::wxArtClient&, const ::wxSize&);
    ::wxIconBundle sipProtectVirt_CreateIconBundle(bool, const ::wxArtID&, const ::wxArtClient&);

    /*
     * There is a protected method for every virtual method visible from
     * this class.
     */
protected:
    ::wxIconBundle CreateIconBundle(const ::wxArtID&, const ::wxArtClient&) SIP_OVERRIDE;
    ::wxBitmapBundle CreateBitmapBundle(const ::wxArtID&, const ::wxArtClient&, const ::wxSize&) SIP_OVERRIDE;
    ::wxBitmap CreateBitmap(const ::wxArtID&, const ::wxArtClient&, const ::wxSize&) SIP_OVERRIDE;

public:
    sipSimpleWrapper *sipPySelf;

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

    char sipPyMethods[3];
};

sipwxArtProvider::sipwxArtProvider(): ::wxArtProvider(), sipPySelf(SIP_NULLPTR)
{
    memset(sipPyMethods, 0, sizeof (sipPyMethods));
}

sipwxArtProvider::sipwxArtProvider(const ::wxArtProvider& a0): ::wxArtProvider(a0), sipPySelf(SIP_NULLPTR)
{
    memset(sipPyMethods, 0, sizeof (sipPyMethods));
}

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

::wxIconBundle sipwxArtProvider::CreateIconBundle(const ::wxArtID& id, const ::wxArtClient& client)
{
    sip_gilstate_t sipGILState;
    PyObject *sipMeth;

    sipMeth = sipIsPyMethod(&sipGILState, &sipPyMethods[0], &sipPySelf, SIP_NULLPTR, sipName_CreateIconBundle);

    if (!sipMeth)
        return ::wxArtProvider::CreateIconBundle(id, client);

    extern ::wxIconBundle sipVH__core_213(sip_gilstate_t, sipVirtErrorHandlerFunc, sipSimpleWrapper *, PyObject *, const ::wxArtID&, const ::wxArtClient&);

    return sipVH__core_213(sipGILState, 0, sipPySelf, sipMeth, id, client);
}

::wxBitmapBundle sipwxArtProvider::CreateBitmapBundle(const ::wxArtID& id, const ::wxArtClient& client, const ::wxSize& size)
{
    sip_gilstate_t sipGILState;
    PyObject *sipMeth;

    sipMeth = sipIsPyMethod(&sipGILState, &sipPyMethods[1], &sipPySelf, SIP_NULLPTR, sipName_CreateBitmapBundle);

    if (!sipMeth)
        return ::wxArtProvider::CreateBitmapBundle(id, client, size);

    extern ::wxBitmapBundle sipVH__core_212(sip_gilstate_t, sipVirtErrorHandlerFunc, sipSimpleWrapper *, PyObject *, const ::wxArtID&, const ::wxArtClient&, const ::wxSize&);

    return sipVH__core_212(sipGILState, 0, sipPySelf, sipMeth, id, client, size);
}

::wxBitmap sipwxArtProvider::CreateBitmap(const ::wxArtID& id, const ::wxArtClient& client, const ::wxSize& size)
{
    sip_gilstate_t sipGILState;
    PyObject *sipMeth;

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

    if (!sipMeth)
        return ::wxArtProvider::CreateBitmap(id, client, size);

    extern ::wxBitmap sipVH__core_211(sip_gilstate_t, sipVirtErrorHandlerFunc, sipSimpleWrapper *, PyObject *, const ::wxArtID&, const ::wxArtClient&, const ::wxSize&);

    return sipVH__core_211(sipGILState, 0, sipPySelf, sipMeth, id, client, size);
}

::wxBitmap sipwxArtProvider::sipProtectVirt_CreateBitmap(bool sipSelfWasArg, const ::wxArtID& id, const ::wxArtClient& client, const ::wxSize& size)
{
    return (sipSelfWasArg ? ::wxArtProvider::CreateBitmap(id, client, size) : CreateBitmap(id, client, size));
}

::wxBitmapBundle sipwxArtProvider::sipProtectVirt_CreateBitmapBundle(bool sipSelfWasArg, const ::wxArtID& id, const ::wxArtClient& client, const ::wxSize& size)
{
    return (sipSelfWasArg ? ::wxArtProvider::CreateBitmapBundle(id, client, size) : CreateBitmapBundle(id, client, size));
}

::wxIconBundle sipwxArtProvider::sipProtectVirt_CreateIconBundle(bool sipSelfWasArg, const ::wxArtID& id, const ::wxArtClient& client)
{
    return (sipSelfWasArg ? ::wxArtProvider::CreateIconBundle(id, client) : CreateIconBundle(id, client));
}


PyDoc_STRVAR(doc_wxArtProvider_Delete, "Delete(provider) -> bool\n"
"\n"
"Delete the given provider.");

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

    {
        ::wxArtProvider* provider;

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

        if (sipParseKwdArgs(&sipParseErr, sipArgs, sipKwds, sipKwdList, SIP_NULLPTR, "J8", sipType_wxArtProvider, &provider))
        {
            bool sipRes;

            PyErr_Clear();

            Py_BEGIN_ALLOW_THREADS
            sipRes = ::wxArtProvider::Delete(provider);
            Py_END_ALLOW_THREADS

            if (PyErr_Occurred())
                return 0;

            return PyBool_FromLong(sipRes);
        }
    }

    sipNoMethod(sipParseErr, sipName_ArtProvider, sipName_Delete, SIP_NULLPTR);

    return SIP_NULLPTR;
}


PyDoc_STRVAR(doc_wxArtProvider_GetBitmap, "GetBitmap(id, client=ART_OTHER, size=DefaultSize) -> Bitmap\n"
"\n"
"Query registered providers for bitmap with given ID.");

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

    {
        const ::wxArtID* id;
        int idState = 0;
        const ::wxArtClient& clientdef = wxART_OTHER;
        const ::wxArtClient* client = &clientdef;
        int clientState = 0;
        const ::wxSize& sizedef = wxDefaultSize;
        const ::wxSize* size = &sizedef;
        int sizeState = 0;

        static const char *sipKwdList[] = {
            sipName_id,
            sipName_client,
            sipName_size,
        };

        if (sipParseKwdArgs(&sipParseErr, sipArgs, sipKwds, sipKwdList, SIP_NULLPTR, "J1|J1J1", sipType_wxString, &id, &idState, sipType_wxString, &client, &clientState, sipType_wxSize, &size, &sizeState))
        {
            ::wxBitmap*sipRes;
        if (!wxPyCheckForApp()) return NULL;

            PyErr_Clear();

            Py_BEGIN_ALLOW_THREADS
            sipRes = new ::wxBitmap(::wxArtProvider::GetBitmap(*id, *client, *size));
            Py_END_ALLOW_THREADS
            sipReleaseType(const_cast< ::wxArtID *>(id), sipType_wxString, idState);
            sipReleaseType(const_cast< ::wxArtClient *>(client), sipType_wxString, clientState);
            sipReleaseType(const_cast< ::wxSize *>(size), sipType_wxSize, sizeState);

            if (PyErr_Occurred())
                return 0;

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

    sipNoMethod(sipParseErr, sipName_ArtProvider, sipName_GetBitmap, SIP_NULLPTR);

    return SIP_NULLPTR;
}


PyDoc_STRVAR(doc_wxArtProvider_GetBitmapBundle, "GetBitmapBundle(id, client=ART_OTHER, size=DefaultSize) -> BitmapBundle\n"
"\n"
"Query registered providers for a bundle of bitmaps with given ID.");

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

    {
        const ::wxArtID* id;
        int idState = 0;
        const ::wxArtClient& clientdef = wxART_OTHER;
        const ::wxArtClient* client = &clientdef;
        int clientState = 0;
        const ::wxSize& sizedef = wxDefaultSize;
        const ::wxSize* size = &sizedef;
        int sizeState = 0;

        static const char *sipKwdList[] = {
            sipName_id,
            sipName_client,
            sipName_size,
        };

        if (sipParseKwdArgs(&sipParseErr, sipArgs, sipKwds, sipKwdList, SIP_NULLPTR, "J1|J1J1", sipType_wxString, &id, &idState, sipType_wxString, &client, &clientState, sipType_wxSize, &size, &sizeState))
        {
            ::wxBitmapBundle*sipRes;

            PyErr_Clear();

            Py_BEGIN_ALLOW_THREADS
            sipRes = new ::wxBitmapBundle(::wxArtProvider::GetBitmapBundle(*id, *client, *size));
            Py_END_ALLOW_THREADS
            sipReleaseType(const_cast< ::wxArtID *>(id), sipType_wxString, idState);
            sipReleaseType(const_cast< ::wxArtClient *>(client), sipType_wxString, clientState);
            sipReleaseType(const_cast< ::wxSize *>(size), sipType_wxSize, sizeState);

            if (PyErr_Occurred())
                return 0;

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

    sipNoMethod(sipParseErr, sipName_ArtProvider, sipName_GetBitmapBundle, SIP_NULLPTR);

    return SIP_NULLPTR;
}


PyDoc_STRVAR(doc_wxArtProvider_GetIcon, "GetIcon(id, client=ART_OTHER, size=DefaultSize) -> Icon\n"
"\n"
"Same as wxArtProvider::GetBitmap, but return a wxIcon object (or\n"
"wxNullIcon on failure).");

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

    {
        const ::wxArtID* id;
        int idState = 0;
        const ::wxArtClient& clientdef = wxART_OTHER;
        const ::wxArtClient* client = &clientdef;
        int clientState = 0;
        const ::wxSize& sizedef = wxDefaultSize;
        const ::wxSize* size = &sizedef;
        int sizeState = 0;

        static const char *sipKwdList[] = {
            sipName_id,
            sipName_client,
            sipName_size,
        };

        if (sipParseKwdArgs(&sipParseErr, sipArgs, sipKwds, sipKwdList, SIP_NULLPTR, "J1|J1J1", sipType_wxString, &id, &idState, sipType_wxString, &client, &clientState, sipType_wxSize, &size, &sizeState))
        {
            ::wxIcon*sipRes;
        if (!wxPyCheckForApp()) return NULL;

            PyErr_Clear();

            Py_BEGIN_ALLOW_THREADS
            sipRes = new ::wxIcon(::wxArtProvider::GetIcon(*id, *client, *size));
            Py_END_ALLOW_THREADS
            sipReleaseType(const_cast< ::wxArtID *>(id), sipType_wxString, idState);
            sipReleaseType(const_cast< ::wxArtClient *>(client), sipType_wxString, clientState);
            sipReleaseType(const_cast< ::wxSize *>(size), sipType_wxSize, sizeState);

            if (PyErr_Occurred())
                return 0;

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

    sipNoMethod(sipParseErr, sipName_ArtProvider, sipName_GetIcon, SIP_NULLPTR);

    return SIP_NULLPTR;
}


PyDoc_STRVAR(doc_wxArtProvider_GetNativeDIPSizeHint, "GetNativeDIPSizeHint(client) -> Size\n"
"\n"
"Returns native icon size for use specified by client hint in DIPs.");

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

    {
        const ::wxArtClient* client;
        int clientState = 0;

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

        if (sipParseKwdArgs(&sipParseErr, sipArgs, sipKwds, sipKwdList, SIP_NULLPTR, "J1", sipType_wxString, &client, &clientState))
        {
            ::wxSize*sipRes;

            PyErr_Clear();

            Py_BEGIN_ALLOW_THREADS
            sipRes = new ::wxSize(::wxArtProvider::GetNativeDIPSizeHint(*client));
            Py_END_ALLOW_THREADS
            sipReleaseType(const_cast< ::wxArtClient *>(client), sipType_wxString, clientState);

            if (PyErr_Occurred())
                return 0;

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

    sipNoMethod(sipParseErr, sipName_ArtProvider, sipName_GetNativeDIPSizeHint, SIP_NULLPTR);

    return SIP_NULLPTR;
}


PyDoc_STRVAR(doc_wxArtProvider_GetNativeSizeHint, "GetNativeSizeHint(client, win=None) -> Size\n"
"\n"
"Returns native icon size for use specified by client hint.");

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

    {
        const ::wxArtClient* client;
        int clientState = 0;
        ::wxWindow* win = 0;

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

        if (sipParseKwdArgs(&sipParseErr, sipArgs, sipKwds, sipKwdList, SIP_NULLPTR, "J1|J8", sipType_wxString, &client, &clientState, sipType_wxWindow, &win))
        {
            ::wxSize*sipRes;

            PyErr_Clear();

            Py_BEGIN_ALLOW_THREADS
            sipRes = new ::wxSize(::wxArtProvider::GetNativeSizeHint(*client, win));
            Py_END_ALLOW_THREADS
            sipReleaseType(const_cast< ::wxArtClient *>(client), sipType_wxString, clientState);

            if (PyErr_Occurred())
                return 0;

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

    sipNoMethod(sipParseErr, sipName_ArtProvider, sipName_GetNativeSizeHint, SIP_NULLPTR);

    return SIP_NULLPTR;
}


PyDoc_STRVAR(doc_wxArtProvider_GetDIPSizeHint, "GetDIPSizeHint(client) -> Size\n"
"\n"
"Returns a suitable size hint for the given wxArtClient in DIPs.");

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

    {
        const ::wxArtClient* client;
        int clientState = 0;

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

        if (sipParseKwdArgs(&sipParseErr, sipArgs, sipKwds, sipKwdList, SIP_NULLPTR, "J1", sipType_wxString, &client, &clientState))
        {
            ::wxSize*sipRes;

            PyErr_Clear();

            Py_BEGIN_ALLOW_THREADS
            sipRes = new ::wxSize(::wxArtProvider::GetDIPSizeHint(*client));
            Py_END_ALLOW_THREADS
            sipReleaseType(const_cast< ::wxArtClient *>(client), sipType_wxString, clientState);

            if (PyErr_Occurred())
                return 0;

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

    sipNoMethod(sipParseErr, sipName_ArtProvider, sipName_GetDIPSizeHint, SIP_NULLPTR);

    return SIP_NULLPTR;
}


PyDoc_STRVAR(doc_wxArtProvider_GetSizeHint, "GetSizeHint(client, win=None) -> Size\n"
"\n"
"Returns a suitable size hint for the given wxArtClient.");

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

    {
        const ::wxArtClient* client;
        int clientState = 0;
        ::wxWindow* win = 0;

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

        if (sipParseKwdArgs(&sipParseErr, sipArgs, sipKwds, sipKwdList, SIP_NULLPTR, "J1|J8", sipType_wxString, &client, &clientState, sipType_wxWindow, &win))
        {
            ::wxSize*sipRes;

            PyErr_Clear();

            Py_BEGIN_ALLOW_THREADS
            sipRes = new ::wxSize(::wxArtProvider::GetSizeHint(*client, win));
            Py_END_ALLOW_THREADS
            sipReleaseType(const_cast< ::wxArtClient *>(client), sipType_wxString, clientState);

            if (PyErr_Occurred())
                return 0;

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

    sipNoMethod(sipParseErr, sipName_ArtProvider, sipName_GetSizeHint, SIP_NULLPTR);

    return SIP_NULLPTR;
}


PyDoc_STRVAR(doc_wxArtProvider_GetIconBundle, "GetIconBundle(id, client=ART_OTHER) -> IconBundle\n"
"\n"
"Query registered providers for icon bundle with given ID.");

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

    {
        const ::wxArtID* id;
        int idState = 0;
        const ::wxArtClient& clientdef = wxART_OTHER;
        const ::wxArtClient* client = &clientdef;
        int clientState = 0;

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

        if (sipParseKwdArgs(&sipParseErr, sipArgs, sipKwds, sipKwdList, SIP_NULLPTR, "J1|J1", sipType_wxString, &id, &idState, sipType_wxString, &client, &clientState))
        {
            ::wxIconBundle*sipRes;

            PyErr_Clear();

            Py_BEGIN_ALLOW_THREADS
            sipRes = new ::wxIconBundle(::wxArtProvider::GetIconBundle(*id, *client));
            Py_END_ALLOW_THREADS
            sipReleaseType(const_cast< ::wxArtID *>(id), sipType_wxString, idState);
            sipReleaseType(const_cast< ::wxArtClient *>(client), sipType_wxString, clientState);

            if (PyErr_Occurred())
                return 0;

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

    sipNoMethod(sipParseErr, sipName_ArtProvider, sipName_GetIconBundle, SIP_NULLPTR);

    return SIP_NULLPTR;
}


PyDoc_STRVAR(doc_wxArtProvider_HasNativeProvider, "HasNativeProvider() -> bool\n"
"\n"
"Returns true if the platform uses native icons provider that should\n"
"take precedence over any customizations.");

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

    {
        if (sipParseArgs(&sipParseErr, sipArgs, ""))
        {
            bool sipRes;

            PyErr_Clear();

            Py_BEGIN_ALLOW_THREADS
            sipRes = ::wxArtProvider::HasNativeProvider();
            Py_END_ALLOW_THREADS

            if (PyErr_Occurred())
                return 0;

            return PyBool_FromLong(sipRes);
        }
    }

    sipNoMethod(sipParseErr, sipName_ArtProvider, sipName_HasNativeProvider, SIP_NULLPTR);

    return SIP_NULLPTR;
}


PyDoc_STRVAR(doc_wxArtProvider_Pop, "Pop() -> bool\n"
"\n"
"Remove latest added provider and delete it.");

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

    {
        if (sipParseArgs(&sipParseErr, sipArgs, ""))
        {
            bool sipRes;

            PyErr_Clear();

            Py_BEGIN_ALLOW_THREADS
            sipRes = ::wxArtProvider::Pop();
            Py_END_ALLOW_THREADS

            if (PyErr_Occurred())
                return 0;

            return PyBool_FromLong(sipRes);
        }
    }

    sipNoMethod(sipParseErr, sipName_ArtProvider, sipName_Pop, SIP_NULLPTR);

    return SIP_NULLPTR;
}


PyDoc_STRVAR(doc_wxArtProvider_Push, "Push(provider) -> None\n"
"\n"
"Register new art provider and add it to the top of providers stack\n"
"(i.e.");

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

    {
        ::wxArtProvider* provider;

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

        if (sipParseKwdArgs(&sipParseErr, sipArgs, sipKwds, sipKwdList, SIP_NULLPTR, "J:", sipType_wxArtProvider, &provider))
        {
            PyErr_Clear();

            Py_BEGIN_ALLOW_THREADS
            ::wxArtProvider::Push(provider);
            Py_END_ALLOW_THREADS

            if (PyErr_Occurred())
                return 0;

            Py_INCREF(Py_None);
            return Py_None;
        }
    }

    sipNoMethod(sipParseErr, sipName_ArtProvider, sipName_Push, SIP_NULLPTR);

    return SIP_NULLPTR;
}


PyDoc_STRVAR(doc_wxArtProvider_PushBack, "PushBack(provider) -> None\n"
"\n"
"Register new art provider and add it to the bottom of providers stack.");

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

    {
        ::wxArtProvider* provider;

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

        if (sipParseKwdArgs(&sipParseErr, sipArgs, sipKwds, sipKwdList, SIP_NULLPTR, "J:", sipType_wxArtProvider, &provider))
        {
            PyErr_Clear();

            Py_BEGIN_ALLOW_THREADS
            ::wxArtProvider::PushBack(provider);
            Py_END_ALLOW_THREADS

            if (PyErr_Occurred())
                return 0;

            Py_INCREF(Py_None);
            return Py_None;
        }
    }

    sipNoMethod(sipParseErr, sipName_ArtProvider, sipName_PushBack, SIP_NULLPTR);

    return SIP_NULLPTR;
}


PyDoc_STRVAR(doc_wxArtProvider_Remove, "Remove(provider) -> bool\n"
"\n"
"Remove a provider from the stack if it is on it.");

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

    {
        ::wxArtProvider* provider;

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

        if (sipParseKwdArgs(&sipParseErr, sipArgs, sipKwds, sipKwdList, SIP_NULLPTR, "J<", sipType_wxArtProvider, &provider))
        {
            bool sipRes;

            PyErr_Clear();

            Py_BEGIN_ALLOW_THREADS
            sipRes = ::wxArtProvider::Remove(provider);
            Py_END_ALLOW_THREADS

            if (PyErr_Occurred())
                return 0;

            return PyBool_FromLong(sipRes);
        }
    }

    sipNoMethod(sipParseErr, sipName_ArtProvider, sipName_Remove, SIP_NULLPTR);

    return SIP_NULLPTR;
}


PyDoc_STRVAR(doc_wxArtProvider_GetMessageBoxIconId, "GetMessageBoxIconId(flags) -> ArtID\n"
"\n"
"Helper used by GetMessageBoxIcon(): return the art id corresponding to\n"
"the standard wxICON_INFORMATION/WARNING/ERROR/QUESTION flags (only one\n"
"can be set)");

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

    {
        int flags;

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

        if (sipParseKwdArgs(&sipParseErr, sipArgs, sipKwds, sipKwdList, SIP_NULLPTR, "i", &flags))
        {
            ::wxArtID*sipRes;

            PyErr_Clear();

            Py_BEGIN_ALLOW_THREADS
            sipRes = new ::wxArtID(::wxArtProvider::GetMessageBoxIconId(flags));
            Py_END_ALLOW_THREADS

            if (PyErr_Occurred())
                return 0;

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

    sipNoMethod(sipParseErr, sipName_ArtProvider, sipName_GetMessageBoxIconId, SIP_NULLPTR);

    return SIP_NULLPTR;
}


PyDoc_STRVAR(doc_wxArtProvider_GetMessageBoxIcon, "GetMessageBoxIcon(flags) -> Icon\n"
"\n"
"Helper used by several generic classes: return the icon corresponding\n"
"to the standard wxICON_INFORMATION/WARNING/ERROR/QUESTION flags (only\n"
"one can be set)");

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

    {
        int flags;

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

        if (sipParseKwdArgs(&sipParseErr, sipArgs, sipKwds, sipKwdList, SIP_NULLPTR, "i", &flags))
        {
            ::wxIcon*sipRes;

            PyErr_Clear();

            Py_BEGIN_ALLOW_THREADS
            sipRes = new ::wxIcon(::wxArtProvider::GetMessageBoxIcon(flags));
            Py_END_ALLOW_THREADS

            if (PyErr_Occurred())
                return 0;

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

    sipNoMethod(sipParseErr, sipName_ArtProvider, sipName_GetMessageBoxIcon, SIP_NULLPTR);

    return SIP_NULLPTR;
}


PyDoc_STRVAR(doc_wxArtProvider_CreateBitmap, "CreateBitmap(id, client, size) -> Bitmap\n"
"\n"
"Derived art provider classes may override this method to create\n"
"requested art resource.");

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

    {
        const ::wxArtID* id;
        int idState = 0;
        const ::wxArtClient* client;
        int clientState = 0;
        const ::wxSize* size;
        int sizeState = 0;
        sipwxArtProvider *sipCpp;

        static const char *sipKwdList[] = {
            sipName_id,
            sipName_client,
            sipName_size,
        };

        if (sipParseKwdArgs(&sipParseErr, sipArgs, sipKwds, sipKwdList, SIP_NULLPTR, "BJ1J1J1", &sipSelf, sipType_wxArtProvider, &sipCpp, sipType_wxString, &id, &idState, sipType_wxString, &client, &clientState, sipType_wxSize, &size, &sizeState))
        {
            ::wxBitmap*sipRes;

            PyErr_Clear();

            Py_BEGIN_ALLOW_THREADS
            sipRes = new ::wxBitmap(sipCpp->sipProtectVirt_CreateBitmap(sipSelfWasArg, *id, *client, *size));
            Py_END_ALLOW_THREADS
            sipReleaseType(const_cast< ::wxArtID *>(id), sipType_wxString, idState);
            sipReleaseType(const_cast< ::wxArtClient *>(client), sipType_wxString, clientState);
            sipReleaseType(const_cast< ::wxSize *>(size), sipType_wxSize, sizeState);

            if (PyErr_Occurred())
                return 0;

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

    sipNoMethod(sipParseErr, sipName_ArtProvider, sipName_CreateBitmap, SIP_NULLPTR);

    return SIP_NULLPTR;
}


PyDoc_STRVAR(doc_wxArtProvider_CreateBitmapBundle, "CreateBitmapBundle(id, client, size) -> BitmapBundle\n"
"\n"
"Override this method to create the requested art resources available\n"
"in more than one size.");

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

    {
        const ::wxArtID* id;
        int idState = 0;
        const ::wxArtClient* client;
        int clientState = 0;
        const ::wxSize* size;
        int sizeState = 0;
        sipwxArtProvider *sipCpp;

        static const char *sipKwdList[] = {
            sipName_id,
            sipName_client,
            sipName_size,
        };

        if (sipParseKwdArgs(&sipParseErr, sipArgs, sipKwds, sipKwdList, SIP_NULLPTR, "BJ1J1J1", &sipSelf, sipType_wxArtProvider, &sipCpp, sipType_wxString, &id, &idState, sipType_wxString, &client, &clientState, sipType_wxSize, &size, &sizeState))
        {
            ::wxBitmapBundle*sipRes;

            PyErr_Clear();

            Py_BEGIN_ALLOW_THREADS
            sipRes = new ::wxBitmapBundle(sipCpp->sipProtectVirt_CreateBitmapBundle(sipSelfWasArg, *id, *client, *size));
            Py_END_ALLOW_THREADS
            sipReleaseType(const_cast< ::wxArtID *>(id), sipType_wxString, idState);
            sipReleaseType(const_cast< ::wxArtClient *>(client), sipType_wxString, clientState);
            sipReleaseType(const_cast< ::wxSize *>(size), sipType_wxSize, sizeState);

            if (PyErr_Occurred())
                return 0;

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

    sipNoMethod(sipParseErr, sipName_ArtProvider, sipName_CreateBitmapBundle, SIP_NULLPTR);

    return SIP_NULLPTR;
}


PyDoc_STRVAR(doc_wxArtProvider_CreateIconBundle, "CreateIconBundle(id, client) -> IconBundle\n"
"\n"
"This method is similar to CreateBitmap() but can be used when a bitmap\n"
"(or an icon) exists in several sizes.");

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

    {
        const ::wxArtID* id;
        int idState = 0;
        const ::wxArtClient* client;
        int clientState = 0;
        sipwxArtProvider *sipCpp;

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

        if (sipParseKwdArgs(&sipParseErr, sipArgs, sipKwds, sipKwdList, SIP_NULLPTR, "BJ1J1", &sipSelf, sipType_wxArtProvider, &sipCpp, sipType_wxString, &id, &idState, sipType_wxString, &client, &clientState))
        {
            ::wxIconBundle*sipRes;

            PyErr_Clear();

            Py_BEGIN_ALLOW_THREADS
            sipRes = new ::wxIconBundle(sipCpp->sipProtectVirt_CreateIconBundle(sipSelfWasArg, *id, *client));
            Py_END_ALLOW_THREADS
            sipReleaseType(const_cast< ::wxArtID *>(id), sipType_wxString, idState);
            sipReleaseType(const_cast< ::wxArtClient *>(client), sipType_wxString, clientState);

            if (PyErr_Occurred())
                return 0;

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

    sipNoMethod(sipParseErr, sipName_ArtProvider, sipName_CreateIconBundle, SIP_NULLPTR);

    return SIP_NULLPTR;
}


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

    if (targetType == sipType_wxArtProvider)
        return sipCppV;

    if (targetType == sipType_wxObject)
        return static_cast< ::wxObject *>(sipCpp);

    return SIP_NULLPTR;
}


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

    if (sipState & SIP_DERIVED_CLASS)
        delete reinterpret_cast<sipwxArtProvider *>(sipCppV);
    else
        delete reinterpret_cast< ::wxArtProvider *>(sipCppV);

    Py_END_ALLOW_THREADS
}


extern "C" {static void *array_wxArtProvider(Py_ssize_t);}
static void *array_wxArtProvider(Py_ssize_t sipNrElem)
{
    return new ::wxArtProvider[sipNrElem];
}


extern "C" {static void array_delete_wxArtProvider(void *);}
static void array_delete_wxArtProvider(void *sipCpp)
{
    delete[] reinterpret_cast< ::wxArtProvider *>(sipCpp);
}


extern "C" {static void assign_wxArtProvider(void *, Py_ssize_t, void *);}
static void assign_wxArtProvider(void *sipDst, Py_ssize_t sipDstIdx, void *sipSrc)
{
    reinterpret_cast< ::wxArtProvider *>(sipDst)[sipDstIdx] = *reinterpret_cast< ::wxArtProvider *>(sipSrc);
}


extern "C" {static void *copy_wxArtProvider(const void *, Py_ssize_t);}
static void *copy_wxArtProvider(const void *sipSrc, Py_ssize_t sipSrcIdx)
{
    return new ::wxArtProvider(reinterpret_cast<const ::wxArtProvider *>(sipSrc)[sipSrcIdx]);
}


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

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


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

    {
        if (sipParseKwdArgs(sipParseErr, sipArgs, sipKwds, SIP_NULLPTR, sipUnused, ""))
        {
            Py_BEGIN_ALLOW_THREADS
            sipCpp = new sipwxArtProvider();
            Py_END_ALLOW_THREADS

            sipCpp->sipPySelf = sipSelf;

            return sipCpp;
        }
    }

    {
        const ::wxArtProvider* a0;

        if (sipParseKwdArgs(sipParseErr, sipArgs, sipKwds, SIP_NULLPTR, sipUnused, "J9", sipType_wxArtProvider, &a0))
        {
            Py_BEGIN_ALLOW_THREADS
            sipCpp = new sipwxArtProvider(*a0);
            Py_END_ALLOW_THREADS

            sipCpp->sipPySelf = sipSelf;

            return sipCpp;
        }
    }

    return SIP_NULLPTR;
}


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


static PyMethodDef methods_wxArtProvider[] = {
    {sipName_CreateBitmap, SIP_MLMETH_CAST(meth_wxArtProvider_CreateBitmap), METH_VARARGS|METH_KEYWORDS, doc_wxArtProvider_CreateBitmap},
    {sipName_CreateBitmapBundle, SIP_MLMETH_CAST(meth_wxArtProvider_CreateBitmapBundle), METH_VARARGS|METH_KEYWORDS, doc_wxArtProvider_CreateBitmapBundle},
    {sipName_CreateIconBundle, SIP_MLMETH_CAST(meth_wxArtProvider_CreateIconBundle), METH_VARARGS|METH_KEYWORDS, doc_wxArtProvider_CreateIconBundle},
    {sipName_Delete, SIP_MLMETH_CAST(meth_wxArtProvider_Delete), METH_VARARGS|METH_KEYWORDS, doc_wxArtProvider_Delete},
    {sipName_GetBitmap, SIP_MLMETH_CAST(meth_wxArtProvider_GetBitmap), METH_VARARGS|METH_KEYWORDS, doc_wxArtProvider_GetBitmap},
    {sipName_GetBitmapBundle, SIP_MLMETH_CAST(meth_wxArtProvider_GetBitmapBundle), METH_VARARGS|METH_KEYWORDS, doc_wxArtProvider_GetBitmapBundle},
    {sipName_GetDIPSizeHint, SIP_MLMETH_CAST(meth_wxArtProvider_GetDIPSizeHint), METH_VARARGS|METH_KEYWORDS, doc_wxArtProvider_GetDIPSizeHint},
    {sipName_GetIcon, SIP_MLMETH_CAST(meth_wxArtProvider_GetIcon), METH_VARARGS|METH_KEYWORDS, doc_wxArtProvider_GetIcon},
    {sipName_GetIconBundle, SIP_MLMETH_CAST(meth_wxArtProvider_GetIconBundle), METH_VARARGS|METH_KEYWORDS, doc_wxArtProvider_GetIconBundle},
    {sipName_GetMessageBoxIcon, SIP_MLMETH_CAST(meth_wxArtProvider_GetMessageBoxIcon), METH_VARARGS|METH_KEYWORDS, doc_wxArtProvider_GetMessageBoxIcon},
    {sipName_GetMessageBoxIconId, SIP_MLMETH_CAST(meth_wxArtProvider_GetMessageBoxIconId), METH_VARARGS|METH_KEYWORDS, doc_wxArtProvider_GetMessageBoxIconId},
    {sipName_GetNativeDIPSizeHint, SIP_MLMETH_CAST(meth_wxArtProvider_GetNativeDIPSizeHint), METH_VARARGS|METH_KEYWORDS, doc_wxArtProvider_GetNativeDIPSizeHint},
    {sipName_GetNativeSizeHint, SIP_MLMETH_CAST(meth_wxArtProvider_GetNativeSizeHint), METH_VARARGS|METH_KEYWORDS, doc_wxArtProvider_GetNativeSizeHint},
    {sipName_GetSizeHint, SIP_MLMETH_CAST(meth_wxArtProvider_GetSizeHint), METH_VARARGS|METH_KEYWORDS, doc_wxArtProvider_GetSizeHint},
    {sipName_HasNativeProvider, meth_wxArtProvider_HasNativeProvider, METH_VARARGS, doc_wxArtProvider_HasNativeProvider},
    {sipName_Pop, meth_wxArtProvider_Pop, METH_VARARGS, doc_wxArtProvider_Pop},
    {sipName_Push, SIP_MLMETH_CAST(meth_wxArtProvider_Push), METH_VARARGS|METH_KEYWORDS, doc_wxArtProvider_Push},
    {sipName_PushBack, SIP_MLMETH_CAST(meth_wxArtProvider_PushBack), METH_VARARGS|METH_KEYWORDS, doc_wxArtProvider_PushBack},
    {sipName_Remove, SIP_MLMETH_CAST(meth_wxArtProvider_Remove), METH_VARARGS|METH_KEYWORDS, doc_wxArtProvider_Remove}
};

PyDoc_STRVAR(doc_wxArtProvider, "wxArtProvider class is used to customize the look of wxWidgets\n"
"application.");


sipClassTypeDef sipTypeDef__core_wxArtProvider = {
    {
        -1,
        SIP_NULLPTR,
        SIP_NULLPTR,
        SIP_TYPE_SCC|SIP_TYPE_CLASS,
        sipNameNr_wxArtProvider,
        SIP_NULLPTR,
        SIP_NULLPTR,
    },
    {
        sipNameNr_ArtProvider,
        {0, 0, 1},
        19, methods_wxArtProvider,
        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_wxArtProvider,
    -1,
    -1,
    supers_wxArtProvider,
    SIP_NULLPTR,
    init_type_wxArtProvider,
    SIP_NULLPTR,
    SIP_NULLPTR,
    SIP_NULLPTR,
    SIP_NULLPTR,
    dealloc_wxArtProvider,
    assign_wxArtProvider,
    array_wxArtProvider,
    copy_wxArtProvider,
    release_wxArtProvider,
    cast_wxArtProvider,
    SIP_NULLPTR,
    SIP_NULLPTR,
    SIP_NULLPTR,
    SIP_NULLPTR,
    SIP_NULLPTR,
    SIP_NULLPTR,
    array_delete_wxArtProvider,
    sizeof (::wxArtProvider),
};
