#ifndef SBK_KTWOFINGERTAPRECOGNIZERWRAPPER_H
#define SBK_KTWOFINGERTAPRECOGNIZERWRAPPER_H

// Workaround to access protected functions
#ifndef protected
#  define protected public
#endif

#include <ktwofingertap.h>

#include <sbkpython.h>

#include <array>
namespace Shiboken { struct AutoDecRef; class GilState; }

class KTwoFingerTapRecognizerWrapper : public KTwoFingerTapRecognizer
{
public:
    KTwoFingerTapRecognizerWrapper();
    KTwoFingerTapRecognizerWrapper(const KTwoFingerTapRecognizerWrapper &) = delete;
    KTwoFingerTapRecognizerWrapper& operator=(const KTwoFingerTapRecognizerWrapper &) = delete;
    KTwoFingerTapRecognizerWrapper(KTwoFingerTapRecognizerWrapper &&) = delete;
    KTwoFingerTapRecognizerWrapper& operator=(KTwoFingerTapRecognizerWrapper &&) = delete;
    ~KTwoFingerTapRecognizerWrapper() override;

    ::QGesture * create(::QObject * target) override;
    static ::QGesture * sbk_o_create([[maybe_unused]] const char *ownerClassName, [[maybe_unused]] const char *funcName, [[maybe_unused]] Shiboken::GilState &gil, [[maybe_unused]] const Shiboken::AutoDecRef &pyOverride, [[maybe_unused]] ::QObject * target);
    ::QFlags<QGestureRecognizer::ResultFlag> recognize(::QGesture * gesture, ::QObject * watched, ::QEvent * event) override;
    static ::QFlags<QGestureRecognizer::ResultFlag> sbk_o_recognize([[maybe_unused]] const char *ownerClassName, [[maybe_unused]] const char *funcName, [[maybe_unused]] Shiboken::GilState &gil, [[maybe_unused]] const Shiboken::AutoDecRef &pyOverride, [[maybe_unused]] ::QGesture * gesture, [[maybe_unused]] ::QObject * watched, [[maybe_unused]] ::QEvent * event);
    void reset(::QGesture * state) override;
    static void sbk_o_reset([[maybe_unused]] const char *ownerClassName, [[maybe_unused]] const char *funcName, [[maybe_unused]] Shiboken::GilState &gil, [[maybe_unused]] const Shiboken::AutoDecRef &pyOverride, [[maybe_unused]] ::QGesture * state);
    static void pysideInitQtMetaTypes();

    void resetPyMethodCache();

private:
    mutable std::array<PyObject *, 3> m_PyMethodCache = {nullptr, nullptr, nullptr};
};

#endif // SBK_KTWOFINGERTAPRECOGNIZERWRAPPER_H
