/*
 * Module code.
 *
 * Generated by SIP 4.19.6
 */

#include "sipAPIKCodecs.h"

#include <kcodecs.h>
#include <kcodecs.h>
#include <kcodecs.h>
#include <kcodecs.h>
#include <kcodecs.h>
#include <kcodecs.h>
#include <qbytearray.h>

/* Define the strings used by this module. */
const char sipStrings_KCodecs[] = {
    'K', 'E', 'm', 'a', 'i', 'l', 'A', 'd', 'd', 'r', 'e', 's', 's', ':', ':', 'E', 'm', 'a', 'i', 'l', 'P', 'a', 'r', 's', 'e', 'R', 'e', 's', 'u', 'l', 't', 0,
    'n', 'o', 'r', 'm', 'a', 'l', 'i', 'z', 'e', 'A', 'd', 'd', 'r', 'e', 's', 's', 'e', 's', 'A', 'n', 'd', 'E', 'n', 'c', 'o', 'd', 'e', 'I', 'd', 'n', 0,
    'n', 'o', 'r', 'm', 'a', 'l', 'i', 'z', 'e', 'A', 'd', 'd', 'r', 'e', 's', 's', 'e', 's', 'A', 'n', 'd', 'D', 'e', 'c', 'o', 'd', 'e', 'I', 'd', 'n', 0,
    'K', 'E', 'n', 'c', 'o', 'd', 'i', 'n', 'g', 'P', 'r', 'o', 'b', 'e', 'r', ':', ':', 'P', 'r', 'o', 'b', 'e', 'r', 'S', 't', 'a', 't', 'e', 0,
    'K', 'E', 'n', 'c', 'o', 'd', 'i', 'n', 'g', 'P', 'r', 'o', 'b', 'e', 'r', ':', ':', 'P', 'r', 'o', 'b', 'e', 'r', 'T', 'y', 'p', 'e', 0,
    'K', 'C', 'o', 'd', 'e', 'c', 's', ':', ':', 'C', 'o', 'd', 'e', 'c', ':', ':', 'N', 'e', 'w', 'l', 'i', 'n', 'e', 'T', 'y', 'p', 'e', 0,
    'e', 'x', 't', 'r', 'a', 'c', 't', 'E', 'm', 'a', 'i', 'l', 'A', 'd', 'd', 'r', 'e', 's', 's', 'A', 'n', 'd', 'N', 'a', 'm', 'e', 0,
    's', 'i', 'm', 'p', 'l', 'e', 'E', 'm', 'a', 'i', 'l', 'A', 'd', 'd', 'r', 'e', 's', 's', 'E', 'r', 'r', 'o', 'r', 'M', 's', 'g', 0,
    'e', 'm', 'a', 'i', 'l', 'P', 'a', 'r', 's', 'e', 'R', 'e', 's', 'u', 'l', 't', 'T', 'o', 'S', 't', 'r', 'i', 'n', 'g', 0,
    'd', 'e', 's', 'c', 'r', 'i', 'p', 't', 'i', 'v', 'e', 'E', 'n', 'c', 'o', 'd', 'i', 'n', 'g', 'N', 'a', 'm', 'e', 's', 0,
    'K', 'C', 'o', 'd', 'e', 'c', 's', ':', ':', 'C', 'h', 'a', 'r', 's', 'e', 't', 'O', 'p', 't', 'i', 'o', 'n', 0,
    'd', 'e', 's', 'c', 'r', 'i', 'p', 't', 'i', 'o', 'n', 'F', 'o', 'r', 'E', 'n', 'c', 'o', 'd', 'i', 'n', 'g', 0,
    'a', 'v', 'a', 'i', 'l', 'a', 'b', 'l', 'e', 'E', 'n', 'c', 'o', 'd', 'i', 'n', 'g', 'N', 'a', 'm', 'e', 's', 0,
    'q', 'u', 'o', 't', 'e', 'd', 'P', 'r', 'i', 'n', 't', 'a', 'b', 'l', 'e', 'D', 'e', 'c', 'o', 'd', 'e', 0,
    'q', 'u', 'o', 't', 'e', 'd', 'P', 'r', 'i', 'n', 't', 'a', 'b', 'l', 'e', 'E', 'n', 'c', 'o', 'd', 'e', 0,
    'q', 'u', 'o', 't', 'e', 'N', 'a', 'm', 'e', 'I', 'f', 'N', 'e', 'c', 'e', 's', 's', 'a', 'r', 'y', 0,
    'i', 's', 'V', 'a', 'l', 'i', 'd', 'S', 'i', 'm', 'p', 'l', 'e', 'A', 'd', 'd', 'r', 'e', 's', 's', 0,
    'e', 'x', 't', 'r', 'a', 'c', 't', 'E', 'm', 'a', 'i', 'l', 'A', 'd', 'd', 'r', 'e', 's', 's', 0,
    'e', 'n', 'c', 'o', 'd', 'e', 'R', 'F', 'C', '2', '0', '4', '7', 'S', 't', 'r', 'i', 'n', 'g', 0,
    'F', 'o', 'r', 'c', 'e', 'D', 'e', 'f', 'a', 'u', 'l', 't', 'C', 'h', 'a', 'r', 's', 'e', 't', 0,
    'd', 'e', 'c', 'o', 'd', 'e', 'R', 'F', 'C', '2', '0', '4', '7', 'S', 't', 'r', 'i', 'n', 'g', 0,
    'Q', 'L', 'i', 's', 't', '<', 'Q', 'S', 't', 'r', 'i', 'n', 'g', 'L', 'i', 's', 't', '>', 0,
    'i', 's', 'V', 'a', 'l', 'i', 'd', 'A', 'd', 'd', 'r', 'e', 's', 's', 'L', 'i', 's', 't', 0,
    'I', 'n', 'v', 'a', 'l', 'i', 'd', 'D', 'i', 's', 'p', 'l', 'a', 'y', 'N', 'a', 'm', 'e', 0,
    'S', 'o', 'u', 't', 'h', 'E', 'a', 's', 't', 'e', 'r', 'n', 'E', 'u', 'r', 'o', 'p', 'e', 0,
    'C', 'h', 'i', 'n', 'e', 's', 'e', 'T', 'r', 'a', 'd', 'i', 't', 'i', 'o', 'n', 'a', 'l', 0,
    'n', 'o', 'r', 'm', 'a', 'l', 'i', 'z', 'e', 'd', 'A', 'd', 'd', 'r', 'e', 's', 's', 0,
    'f', 'i', 'r', 's', 't', 'E', 'm', 'a', 'i', 'l', 'A', 'd', 'd', 'r', 'e', 's', 's', 0,
    'U', 'n', 'o', 'p', 'e', 'n', 'e', 'd', 'A', 'n', 'g', 'l', 'e', 'A', 'd', 'd', 'r', 0,
    'U', 'n', 'c', 'l', 'o', 's', 'e', 'd', 'A', 'n', 'g', 'l', 'e', 'A', 'd', 'd', 'r', 0,
    'M', 'i', 's', 's', 'i', 'n', 'g', 'D', 'o', 'm', 'a', 'i', 'n', 'P', 'a', 'r', 't', 0,
    'n', 'a', 'm', 'e', 'F', 'o', 'r', 'P', 'r', 'o', 'b', 'e', 'r', 'T', 'y', 'p', 'e', 0,
    'p', 'r', 'o', 'b', 'e', 'r', 'T', 'y', 'p', 'e', 'F', 'o', 'r', 'N', 'a', 'm', 'e', 0,
    'C', 'h', 'i', 'n', 'e', 's', 'e', 'S', 'i', 'm', 'p', 'l', 'i', 'f', 'i', 'e', 'd', 0,
    'm', 'a', 'x', 'D', 'e', 'c', 'o', 'd', 'e', 'd', 'S', 'i', 'z', 'e', 'F', 'o', 'r', 0,
    'm', 'a', 'x', 'E', 'n', 'c', 'o', 'd', 'e', 'd', 'S', 'i', 'z', 'e', 'F', 'o', 'r', 0,
    'e', 'n', 'c', 'o', 'd', 'i', 'n', 'g', 's', 'B', 'y', 'S', 'c', 'r', 'i', 'p', 't', 0,
    's', 'p', 'l', 'i', 't', 'A', 'd', 'd', 'r', 'e', 's', 's', 'L', 'i', 's', 't', 0,
    'M', 'i', 's', 's', 'i', 'n', 'g', 'L', 'o', 'c', 'a', 'l', 'P', 'a', 'r', 't', 0,
    'U', 'n', 'b', 'a', 'l', 'a', 'n', 'c', 'e', 'd', 'P', 'a', 'r', 'e', 'n', 's', 0,
    'm', 'a', 'x', 'B', 'u', 'f', 'f', 'e', 'r', 'e', 'd', 'C', 'h', 'a', 'r', 's', 0,
    'K', 'C', 'o', 'd', 'e', 'c', 's', ':', ':', 'E', 'n', 'c', 'o', 'd', 'e', 'r', 0,
    'K', 'C', 'o', 'd', 'e', 'c', 's', ':', ':', 'D', 'e', 'c', 'o', 'd', 'e', 'r', 0,
    'd', 'e', 'c', 'o', 'd', 'e', 'M', 'a', 'i', 'l', 't', 'o', 'U', 'r', 'l', 0,
    'e', 'n', 'c', 'o', 'd', 'e', 'M', 'a', 'i', 'l', 't', 'o', 'U', 'r', 'l', 0,
    'U', 'n', 'b', 'a', 'l', 'a', 'n', 'c', 'e', 'd', 'Q', 'u', 'o', 't', 'e', 0,
    'U', 'n', 'e', 'x', 'p', 'e', 'c', 't', 'e', 'd', 'C', 'o', 'm', 'm', 'a', 0,
    'W', 'e', 's', 't', 'e', 'r', 'n', 'E', 'u', 'r', 'o', 'p', 'e', 'a', 'n', 0,
    'C', 'e', 'n', 't', 'r', 'a', 'l', 'E', 'u', 'r', 'o', 'p', 'e', 'a', 'n', 0,
    'K', 'E', 'n', 'c', 'o', 'd', 'i', 'n', 'g', 'P', 'r', 'o', 'b', 'e', 'r', 0,
    'e', 'n', 'c', 'o', 'd', 'i', 'n', 'g', 'F', 'o', 'r', 'N', 'a', 'm', 'e', 0,
    'r', 'e', 's', 'o', 'l', 'v', 'e', 'E', 'n', 't', 'i', 't', 'i', 'e', 's', 0,
    'i', 's', 'V', 'a', 'l', 'i', 'd', 'A', 'd', 'd', 'r', 'e', 's', 's', 0,
    'D', 'i', 's', 'a', 'l', 'l', 'o', 'w', 'e', 'd', 'C', 'h', 'a', 'r', 0,
    'K', 'C', 'o', 'd', 'e', 'c', 's', ':', ':', 'C', 'o', 'd', 'e', 'c', 0,
    'N', 'o', 'A', 'd', 'd', 'r', 'e', 's', 's', 'S', 'p', 'e', 'c', 0,
    'U', 'n', 'e', 'x', 'p', 'e', 'c', 't', 'e', 'd', 'E', 'n', 'd', 0,
    'K', 'E', 'm', 'a', 'i', 'l', 'A', 'd', 'd', 'r', 'e', 's', 's', 0,
    's', 'e', 't', 'P', 'r', 'o', 'b', 'e', 'r', 'T', 'y', 'p', 'e', 0,
    'N', 'o', 'r', 't', 'h', 'e', 'r', 'n', 'S', 'a', 'a', 'm', 'i', 0,
    'P', 'y', 'K', 'F', '5', '.', 'K', 'C', 'o', 'd', 'e', 'c', 's', 0,
    'c', 'o', 'm', 'p', 'a', 'r', 'e', 'E', 'm', 'a', 'i', 'l', 0,
    's', 'p', 'l', 'i', 't', 'A', 'd', 'd', 'r', 'e', 's', 's', 0,
    'A', 'd', 'd', 'r', 'e', 's', 's', 'E', 'm', 'p', 't', 'y', 0,
    'b', 'a', 's', 'e', '6', '4', 'D', 'e', 'c', 'o', 'd', 'e', 0,
    'b', 'a', 's', 'e', '6', '4', 'E', 'n', 'c', 'o', 'd', 'e', 0,
    'c', 'o', 'd', 'e', 'c', 'F', 'o', 'r', 'N', 'a', 'm', 'e', 0,
    'N', 'e', 'w', 'l', 'i', 'n', 'e', 'C', 'R', 'L', 'F', 0,
    'm', 'a', 'k', 'e', 'E', 'n', 'c', 'o', 'd', 'e', 'r', 0,
    'm', 'a', 'k', 'e', 'D', 'e', 'c', 'o', 'd', 'e', 'r', 0,
    'T', 'o', 'o', 'F', 'e', 'w', 'D', 'o', 't', 's', 0,
    'T', 'o', 'o', 'M', 'a', 'n', 'y', 'A', 't', 's', 0,
    'c', 'o', 'n', 'f', 'i', 'd', 'e', 'n', 'c', 'e', 0,
    'p', 'r', 'o', 'b', 'e', 'r', 'T', 'y', 'p', 'e', 0,
    'f', 'r', 'o', 'm', 'E', 'n', 't', 'i', 't', 'y', 0,
    'T', 'o', 'o', 'F', 'e', 'w', 'A', 't', 's', 0,
    'A', 'd', 'd', 'r', 'e', 's', 's', 'O', 'k', 0,
    'U', 'n', 'i', 'v', 'e', 'r', 's', 'a', 'l', 0,
    'N', 'e', 'w', 'l', 'i', 'n', 'e', 'L', 'F', 0,
    'K', 'C', 'h', 'a', 'r', 's', 'e', 't', 's', 0,
    'd', 'i', 'r', 'e', 'c', 't', 'o', 'r', 'y', 0,
    'p', 'r', 'e', 'c', 'i', 's', 'i', 'o', 'n', 0,
    'C', 'y', 'r', 'i', 'l', 'l', 'i', 'c', 0,
    'N', 'o', 'O', 'p', 't', 'i', 'o', 'n', 0,
    'u', 'u', 'd', 'e', 'c', 'o', 'd', 'e', 0,
    'u', 'u', 'e', 'n', 'c', 'o', 'd', 'e', 0,
    'e', 'n', 'c', 'o', 'd', 'i', 'n', 'g', 0,
    't', 'o', 'E', 'n', 't', 'i', 't', 'y', 0,
    'c', 'h', 'a', 'r', 's', 'e', 't', 's', 0,
    'n', 'a', 'm', 'e', 'T', 'y', 'p', 'e', 0,
    'J', 'a', 'p', 'a', 'n', 'e', 's', 'e', 0,
    'f', 'r', 'o', 'm', 'I', 'd', 'n', 0,
    'U', 'n', 'i', 'c', 'o', 'd', 'e', 0,
    'P', 'r', 'o', 'b', 'i', 'n', 'g', 0,
    'F', 'o', 'u', 'n', 'd', 'I', 't', 0,
    'T', 'u', 'r', 'k', 'i', 's', 'h', 0,
    'f', 'i', 'l', 't', 'e', 'r', 's', 0,
    'e', 'n', 'a', 'b', 'l', 'e', 'd', 0,
    'o', 'p', 't', 'i', 'o', 'n', 's', 0,
    'B', 'a', 'l', 't', 'i', 'c', 0,
    'p', 'r', 'o', 'p', 'e', 'r', 0,
    'v', 'a', 'l', 'u', 'e', '9', 0,
    'v', 'a', 'l', 'u', 'e', '8', 0,
    'v', 'a', 'l', 'u', 'e', '7', 0,
    'v', 'a', 'l', 'u', 'e', '6', 0,
    'v', 'a', 'l', 'u', 'e', '5', 0,
    'v', 'a', 'l', 'u', 'e', '4', 0,
    'v', 'a', 'l', 'u', 'e', '3', 0,
    'v', 'a', 'l', 'u', 'e', '2', 0,
    'v', 'a', 'l', 'u', 'e', '1', 0,
    'v', 'a', 'l', 'u', 'e', '0', 0,
    'K', 'o', 'r', 'e', 'a', 'n', 0,
    'H', 'e', 'b', 'r', 'e', 'w', 0,
    'A', 'r', 'a', 'b', 'i', 'c', 0,
    's', 'y', 'm', 'b', 'o', 'l', 0,
    's', 'u', 'f', 'f', 'i', 'x', 0,
    'p', 'r', 'e', 'f', 'i', 'x', 0,
    'l', 'o', 'c', 'a', 'l', 'e', 0,
    'f', 'o', 'r', 'm', 'a', 't', 0,
    'o', 'b', 'j', 'e', 'c', 't', 0,
    't', 'o', 'I', 'd', 'n', 0,
    'O', 't', 'h', 'e', 'r', 0,
    'N', 'o', 't', 'M', 'e', 0,
    'G', 'r', 'e', 'e', 'k', 0,
    'r', 'e', 's', 'e', 't', 0,
    'm', 's', 'e', 'c', 's', 0,
    's', 't', 'a', 't', 'e', 0,
    'f', 'e', 'e', 'd', 0,
    'N', 'o', 'n', 'e', 0,
    'T', 'h', 'a', 'i', 0,
    'm', 'o', 'd', 'e', 0,
    'n', 'a', 'm', 'e', 0,
    'b', 'a', 's', 'e', 0,
    'f', 'r', 'o', 'm', 0,
    's', 'o', 'r', 't', 0,
};

const char* sipVH_KCodecs_4(sip_gilstate_t sipGILState, sipVirtErrorHandlerFunc sipErrorHandler, sipSimpleWrapper *sipPySelf, PyObject *sipMethod, int sipResKey)
{
    char* sipRes = 0;
    PyObject *sipResObj = sipCallMethod(0, sipMethod, "");

    sipParseResultEx(sipGILState, sipErrorHandler, sipPySelf, sipMethod, sipResObj, "B", sipResKey, &sipRes);

    return sipRes;
}

 ::QByteArray sipVH_KCodecs_3(sip_gilstate_t sipGILState, sipVirtErrorHandlerFunc sipErrorHandler, sipSimpleWrapper *sipPySelf, PyObject *sipMethod, const  ::QByteArray& a0, ::KCodecs::Codec::NewlineType a1)
{
     ::QByteArray sipRes;
    PyObject *sipResObj = sipCallMethod(0, sipMethod, "NF", new  ::QByteArray(a0), sipType_QByteArray, NULL, a1, sipType_KCodecs_Codec_NewlineType);

    sipParseResultEx(sipGILState, sipErrorHandler, sipPySelf, sipMethod, sipResObj, "H5", sipType_QByteArray, &sipRes);

    return sipRes;
}

 ::KCodecs::Decoder* sipVH_KCodecs_2(sip_gilstate_t sipGILState, sipVirtErrorHandlerFunc sipErrorHandler, sipSimpleWrapper *sipPySelf, PyObject *sipMethod,  ::KCodecs::Codec::NewlineType a0)
{
     ::KCodecs::Decoder* sipRes = 0;
    PyObject *sipResObj = sipCallMethod(0, sipMethod, "F", a0, sipType_KCodecs_Codec_NewlineType);

    sipParseResultEx(sipGILState, sipErrorHandler, sipPySelf, sipMethod, sipResObj, "H0", sipType_KCodecs_Decoder, &sipRes);

    return sipRes;
}

 ::KCodecs::Encoder* sipVH_KCodecs_1(sip_gilstate_t sipGILState, sipVirtErrorHandlerFunc sipErrorHandler, sipSimpleWrapper *sipPySelf, PyObject *sipMethod,  ::KCodecs::Codec::NewlineType a0)
{
     ::KCodecs::Encoder* sipRes = 0;
    PyObject *sipResObj = sipCallMethod(0, sipMethod, "F", a0, sipType_KCodecs_Codec_NewlineType);

    sipParseResultEx(sipGILState, sipErrorHandler, sipPySelf, sipMethod, sipResObj, "H0", sipType_KCodecs_Encoder, &sipRes);

    return sipRes;
}

int sipVH_KCodecs_0(sip_gilstate_t sipGILState, sipVirtErrorHandlerFunc sipErrorHandler, sipSimpleWrapper *sipPySelf, PyObject *sipMethod, int a0, ::KCodecs::Codec::NewlineType a1)
{
    int sipRes = 0;
    PyObject *sipResObj = sipCallMethod(0, sipMethod, "iF", a0, a1, sipType_KCodecs_Codec_NewlineType);

    sipParseResultEx(sipGILState, sipErrorHandler, sipPySelf, sipMethod, sipResObj, "i", &sipRes);

    return sipRes;
}
static sipEnumTypeDef enumTypes[] = {
    {{-1, 0, 0, SIP_TYPE_ENUM, sipNameNr_KEmailAddress__EmailParseResult, {0}, 0}, sipNameNr_EmailParseResult, 7, NULL},
    {{-1, 0, 0, SIP_TYPE_ENUM, sipNameNr_KEncodingProber__ProberType, {0}, 0}, sipNameNr_ProberType, 9, NULL},
    {{-1, 0, 0, SIP_TYPE_ENUM, sipNameNr_KEncodingProber__ProberState, {0}, 0}, sipNameNr_ProberState, 9, NULL},
    {{-1, 0, 0, SIP_TYPE_ENUM, sipNameNr_KCodecs__Codec__NewlineType, {0}, 0}, sipNameNr_NewlineType, 3, NULL},
    {{-1, 0, 0, SIP_TYPE_ENUM, sipNameNr_KCodecs__CharsetOption, {0}, 0}, sipNameNr_CharsetOption, 1, NULL},
};


/*
 * This defines each type in this module.
 */
sipTypeDef *sipExportedTypes_KCodecs[] = {
    &sipTypeDef_KCodecs_KCharsets.ctd_base,
    &sipTypeDef_KCodecs_KCodecs.ctd_base,
    &enumTypes[4].etd_base,
    &sipTypeDef_KCodecs_KCodecs_Codec.ctd_base,
    &enumTypes[3].etd_base,
    &sipTypeDef_KCodecs_KCodecs_Decoder.ctd_base,
    &sipTypeDef_KCodecs_KCodecs_Encoder.ctd_base,
    &sipTypeDef_KCodecs_KEmailAddress.ctd_base,
    &enumTypes[0].etd_base,
    &sipTypeDef_KCodecs_KEncodingProber.ctd_base,
    &enumTypes[2].etd_base,
    &enumTypes[1].etd_base,
    &sipTypeDef_KCodecs_QList_0100QStringList.mtd_base,
};


/* This defines the types that this module needs to import from QtCore. */
sipImportedTypeDef sipImportedTypes_KCodecs_QtCore[] = {
    {"QByteArray"},
    {"QChar"},
    {"QString"},
    {"QStringList"},
    {"QTextCodec"},
    {"QUrl"},
    {NULL}
};


/*
 * This defines the virtual error handlers that this module needs to import
 * from QtCore.
 */
sipImportedVirtErrorHandlerDef sipImportedVirtErrorHandlers_KCodecs_QtCore[] = {
    {"PyQt5"},
    {NULL}
};


/* This defines the modules that this module needs to import. */
static sipImportedModuleDef importsTable[] = {
    {"PyQt5.QtCore", sipImportedTypes_KCodecs_QtCore, sipImportedVirtErrorHandlers_KCodecs_QtCore, NULL},
    {NULL, NULL, NULL, NULL}
};


/* This defines this module. */
sipExportedModuleDef sipModuleAPI_KCodecs = {
    0,
    SIP_API_MINOR_NR,
    sipNameNr_PyKF5_KCodecs,
    0,
    sipStrings_KCodecs,
    importsTable,
    NULL,
    13,
    sipExportedTypes_KCodecs,
    NULL,
    0,
    NULL,
    0,
    NULL,
    NULL,
    NULL,
    {NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL},
    NULL,
    NULL,
    NULL,
    NULL,
    NULL,
    NULL,
    NULL,
    NULL
};


/* The SIP API and the APIs of any imported modules. */
const sipAPIDef *sipAPI_KCodecs;

sip_qt_metaobject_func sip_KCodecs_qt_metaobject;
sip_qt_metacall_func sip_KCodecs_qt_metacall;
sip_qt_metacast_func sip_KCodecs_qt_metacast;


/* The Python module initialisation function. */
#if PY_MAJOR_VERSION >= 3
#define SIP_MODULE_ENTRY        PyInit_KCodecs
#define SIP_MODULE_TYPE         PyObject *
#define SIP_MODULE_DISCARD(r)   Py_DECREF(r)
#define SIP_MODULE_RETURN(r)    return (r)
#else
#define SIP_MODULE_ENTRY        initKCodecs
#define SIP_MODULE_TYPE         void
#define SIP_MODULE_DISCARD(r)
#define SIP_MODULE_RETURN(r)    return
#endif

#if defined(SIP_STATIC_MODULE)
extern "C" SIP_MODULE_TYPE SIP_MODULE_ENTRY()
#else
PyMODINIT_FUNC SIP_MODULE_ENTRY()
#endif
{
    static PyMethodDef sip_methods[] = {
        {0, 0, 0, 0}
    };

#if PY_MAJOR_VERSION >= 3
    static PyModuleDef sip_module_def = {
        PyModuleDef_HEAD_INIT,
        "PyKF5.KCodecs",
        NULL,
        -1,
        sip_methods,
        NULL,
        NULL,
        NULL,
        NULL
    };
#endif

    PyObject *sipModule, *sipModuleDict;
    PyObject *sip_sipmod, *sip_capiobj;

    /* Initialise the module and get it's dictionary. */
#if PY_MAJOR_VERSION >= 3
    sipModule = PyModule_Create(&sip_module_def);
#elif PY_VERSION_HEX >= 0x02050000
    sipModule = Py_InitModule(sipName_PyKF5_KCodecs, sip_methods);
#else
    sipModule = Py_InitModule(const_cast<char *>(sipName_PyKF5_KCodecs), sip_methods);
#endif

    if (sipModule == NULL)
        SIP_MODULE_RETURN(NULL);

    sipModuleDict = PyModule_GetDict(sipModule);

    /* Get the SIP module's API. */
#if PY_VERSION_HEX >= 0x02050000
    sip_sipmod = PyImport_ImportModule(SIP_MODULE_NAME);
#else
    sip_sipmod = PyImport_ImportModule(const_cast<char *>(SIP_MODULE_NAME));
#endif

    if (sip_sipmod == NULL)
    {
        SIP_MODULE_DISCARD(sipModule);
        SIP_MODULE_RETURN(NULL);
    }

    sip_capiobj = PyDict_GetItemString(PyModule_GetDict(sip_sipmod), "_C_API");
    Py_DECREF(sip_sipmod);

#if defined(SIP_USE_PYCAPSULE)
    if (sip_capiobj == NULL || !PyCapsule_CheckExact(sip_capiobj))
#else
    if (sip_capiobj == NULL || !PyCObject_Check(sip_capiobj))
#endif
    {
        SIP_MODULE_DISCARD(sipModule);
        SIP_MODULE_RETURN(NULL);
    }

#if defined(SIP_USE_PYCAPSULE)
    sipAPI_KCodecs = reinterpret_cast<const sipAPIDef *>(PyCapsule_GetPointer(sip_capiobj, SIP_MODULE_NAME "._C_API"));
#else
    sipAPI_KCodecs = reinterpret_cast<const sipAPIDef *>(PyCObject_AsVoidPtr(sip_capiobj));
#endif

#if defined(SIP_USE_PYCAPSULE)
    if (sipAPI_KCodecs == NULL)
    {
        SIP_MODULE_DISCARD(sipModule);
        SIP_MODULE_RETURN(NULL);
    }
#endif

    /* Export the module and publish it's API. */
    if (sipExportModule(&sipModuleAPI_KCodecs,SIP_API_MAJOR_NR,SIP_API_MINOR_NR,0) < 0)
    {
        SIP_MODULE_DISCARD(sipModule);
        SIP_MODULE_RETURN(0);
    }

    sip_KCodecs_qt_metaobject = (sip_qt_metaobject_func)sipImportSymbol("qtcore_qt_metaobject");
    sip_KCodecs_qt_metacall = (sip_qt_metacall_func)sipImportSymbol("qtcore_qt_metacall");
    sip_KCodecs_qt_metacast = (sip_qt_metacast_func)sipImportSymbol("qtcore_qt_metacast");

    if (!sip_KCodecs_qt_metacast)
        Py_FatalError("Unable to import qtcore_qt_metacast");

    /* Initialise the module now all its dependencies have been set up. */
    if (sipInitModule(&sipModuleAPI_KCodecs,sipModuleDict) < 0)
    {
        SIP_MODULE_DISCARD(sipModule);
        SIP_MODULE_RETURN(0);
    }

    SIP_MODULE_RETURN(sipModule);
}
