//Auto-generated by /usr/bin/smokegen. DO NOT EDIT.
#include <qtsql_includes.h>
#include <typeinfo>

#include <smoke.h>
#include <qtsql_smoke.h>

class __internal_SmokeClass {};

namespace __smokeqtsql {

class x_QSqlDatabase : public QSqlDatabase {
    SmokeBinding* _binding;
public:
    void x_0(Smoke::Stack x) {
        // set the smoke binding
        _binding = (SmokeBinding*)x[1].s_class;
    }
    static void x_1(Smoke::Stack x) {
        // QSqlDatabase* QSqlDatabase()
        x_QSqlDatabase* xret = new x_QSqlDatabase();
        x[0].s_class = (void*)xret;
    }
    explicit x_QSqlDatabase() : QSqlDatabase() {}
    static void x_2(Smoke::Stack x) {
        // QSqlDatabase* QSqlDatabase(const QSqlDatabase&)
        x_QSqlDatabase* xret = new x_QSqlDatabase(*(const QSqlDatabase*)x[1].s_class);
        x[0].s_class = (void*)xret;
    }
    explicit x_QSqlDatabase(const QSqlDatabase& x1) : QSqlDatabase(x1) {}
    void x_3(Smoke::Stack x) {
        // QSqlDatabase& operator=(const QSqlDatabase&)
        QSqlDatabase& xret = this->QSqlDatabase::operator=(*(const QSqlDatabase*)x[1].s_class);
        x[0].s_class = (void*)&xret;
    }
    void x_4(Smoke::Stack x) {
        // bool open()
        bool xret = this->QSqlDatabase::open();
        x[0].s_bool = xret;
    }
    void x_5(Smoke::Stack x) {
        // bool open(const QString&, const QString&)
        bool xret = this->QSqlDatabase::open(*(const QString*)x[1].s_class,*(const QString*)x[2].s_class);
        x[0].s_bool = xret;
    }
    void x_6(Smoke::Stack x) {
        // void close()
        this->QSqlDatabase::close();
        (void)x; // noop (for compiler warning)
    }
    void x_7(Smoke::Stack x) {
        // bool isOpen() const
        bool xret = ((const x_QSqlDatabase*)this)->QSqlDatabase::isOpen();
        x[0].s_bool = xret;
    }
    void x_8(Smoke::Stack x) {
        // bool isOpenError() const
        bool xret = ((const x_QSqlDatabase*)this)->QSqlDatabase::isOpenError();
        x[0].s_bool = xret;
    }
    void x_9(Smoke::Stack x) {
        // QStringList tables(QSql::TableType) const
        QStringList xret = ((const x_QSqlDatabase*)this)->QSqlDatabase::tables((QSql::TableType)x[1].s_enum);
        x[0].s_class = (void*)new QStringList(xret);
    }
    void x_10(Smoke::Stack x) {
        // QSqlIndex primaryIndex(const QString&) const
        QSqlIndex xret = ((const x_QSqlDatabase*)this)->QSqlDatabase::primaryIndex(*(const QString*)x[1].s_class);
        x[0].s_class = (void*)new QSqlIndex(xret);
    }
    void x_11(Smoke::Stack x) {
        // QSqlRecord record(const QString&) const
        QSqlRecord xret = ((const x_QSqlDatabase*)this)->QSqlDatabase::record(*(const QString*)x[1].s_class);
        x[0].s_class = (void*)new QSqlRecord(xret);
    }
    void x_12(Smoke::Stack x) {
        // QSqlQuery exec(const QString&) const
        QSqlQuery xret = ((const x_QSqlDatabase*)this)->QSqlDatabase::exec(*(const QString*)x[1].s_class);
        x[0].s_class = (void*)new QSqlQuery(xret);
    }
    void x_13(Smoke::Stack x) {
        // QSqlError lastError() const
        QSqlError xret = ((const x_QSqlDatabase*)this)->QSqlDatabase::lastError();
        x[0].s_class = (void*)new QSqlError(xret);
    }
    void x_14(Smoke::Stack x) {
        // bool isValid() const
        bool xret = ((const x_QSqlDatabase*)this)->QSqlDatabase::isValid();
        x[0].s_bool = xret;
    }
    void x_15(Smoke::Stack x) {
        // bool transaction()
        bool xret = this->QSqlDatabase::transaction();
        x[0].s_bool = xret;
    }
    void x_16(Smoke::Stack x) {
        // bool commit()
        bool xret = this->QSqlDatabase::commit();
        x[0].s_bool = xret;
    }
    void x_17(Smoke::Stack x) {
        // bool rollback()
        bool xret = this->QSqlDatabase::rollback();
        x[0].s_bool = xret;
    }
    void x_18(Smoke::Stack x) {
        // void setDatabaseName(const QString&)
        this->QSqlDatabase::setDatabaseName(*(const QString*)x[1].s_class);
        (void)x; // noop (for compiler warning)
    }
    void x_19(Smoke::Stack x) {
        // void setUserName(const QString&)
        this->QSqlDatabase::setUserName(*(const QString*)x[1].s_class);
        (void)x; // noop (for compiler warning)
    }
    void x_20(Smoke::Stack x) {
        // void setPassword(const QString&)
        this->QSqlDatabase::setPassword(*(const QString*)x[1].s_class);
        (void)x; // noop (for compiler warning)
    }
    void x_21(Smoke::Stack x) {
        // void setHostName(const QString&)
        this->QSqlDatabase::setHostName(*(const QString*)x[1].s_class);
        (void)x; // noop (for compiler warning)
    }
    void x_22(Smoke::Stack x) {
        // void setPort(int)
        this->QSqlDatabase::setPort((int)x[1].s_int);
        (void)x; // noop (for compiler warning)
    }
    void x_23(Smoke::Stack x) {
        // void setConnectOptions(const QString&)
        this->QSqlDatabase::setConnectOptions(*(const QString*)x[1].s_class);
        (void)x; // noop (for compiler warning)
    }
    void x_24(Smoke::Stack x) {
        // QString databaseName() const
        QString xret = ((const x_QSqlDatabase*)this)->QSqlDatabase::databaseName();
        x[0].s_class = (void*)new QString(xret);
    }
    void x_25(Smoke::Stack x) {
        // QString userName() const
        QString xret = ((const x_QSqlDatabase*)this)->QSqlDatabase::userName();
        x[0].s_class = (void*)new QString(xret);
    }
    void x_26(Smoke::Stack x) {
        // QString password() const
        QString xret = ((const x_QSqlDatabase*)this)->QSqlDatabase::password();
        x[0].s_class = (void*)new QString(xret);
    }
    void x_27(Smoke::Stack x) {
        // QString hostName() const
        QString xret = ((const x_QSqlDatabase*)this)->QSqlDatabase::hostName();
        x[0].s_class = (void*)new QString(xret);
    }
    void x_28(Smoke::Stack x) {
        // QString driverName() const
        QString xret = ((const x_QSqlDatabase*)this)->QSqlDatabase::driverName();
        x[0].s_class = (void*)new QString(xret);
    }
    void x_29(Smoke::Stack x) {
        // int port() const
        int xret = ((const x_QSqlDatabase*)this)->QSqlDatabase::port();
        x[0].s_int = xret;
    }
    void x_30(Smoke::Stack x) {
        // QString connectOptions() const
        QString xret = ((const x_QSqlDatabase*)this)->QSqlDatabase::connectOptions();
        x[0].s_class = (void*)new QString(xret);
    }
    void x_31(Smoke::Stack x) {
        // QString connectionName() const
        QString xret = ((const x_QSqlDatabase*)this)->QSqlDatabase::connectionName();
        x[0].s_class = (void*)new QString(xret);
    }
    void x_32(Smoke::Stack x) {
        // void setNumericalPrecisionPolicy(QSql::NumericalPrecisionPolicy)
        this->QSqlDatabase::setNumericalPrecisionPolicy((QSql::NumericalPrecisionPolicy)x[1].s_enum);
        (void)x; // noop (for compiler warning)
    }
    void x_33(Smoke::Stack x) {
        // QSql::NumericalPrecisionPolicy numericalPrecisionPolicy() const
        QSql::NumericalPrecisionPolicy xret = ((const x_QSqlDatabase*)this)->QSqlDatabase::numericalPrecisionPolicy();
        x[0].s_enum = xret;
    }
    void x_34(Smoke::Stack x) {
        // QSqlDriver* driver() const
        QSqlDriver* xret = ((const x_QSqlDatabase*)this)->QSqlDatabase::driver();
        x[0].s_class = (void*)xret;
    }
    static void x_35(Smoke::Stack x) {
        // static QSqlDatabase addDatabase(const QString&, const QString&)
        QSqlDatabase xret = QSqlDatabase::addDatabase(*(const QString*)x[1].s_class,*(const QString*)x[2].s_class);
        x[0].s_class = (void*)new QSqlDatabase(xret);
    }
    static void x_36(Smoke::Stack x) {
        // static QSqlDatabase addDatabase(QSqlDriver*, const QString&)
        QSqlDatabase xret = QSqlDatabase::addDatabase((QSqlDriver*)x[1].s_class,*(const QString*)x[2].s_class);
        x[0].s_class = (void*)new QSqlDatabase(xret);
    }
    static void x_37(Smoke::Stack x) {
        // static QSqlDatabase cloneDatabase(const QSqlDatabase&, const QString&)
        QSqlDatabase xret = QSqlDatabase::cloneDatabase(*(const QSqlDatabase*)x[1].s_class,*(const QString*)x[2].s_class);
        x[0].s_class = (void*)new QSqlDatabase(xret);
    }
    static void x_38(Smoke::Stack x) {
        // static QSqlDatabase database(const QString&, bool)
        QSqlDatabase xret = QSqlDatabase::database(*(const QString*)x[1].s_class,(bool)x[2].s_bool);
        x[0].s_class = (void*)new QSqlDatabase(xret);
    }
    static void x_39(Smoke::Stack x) {
        // static void removeDatabase(const QString&)
        QSqlDatabase::removeDatabase(*(const QString*)x[1].s_class);
        (void)x; // noop (for compiler warning)
    }
    static void x_40(Smoke::Stack x) {
        // static bool contains(const QString&)
        bool xret = QSqlDatabase::contains(*(const QString*)x[1].s_class);
        x[0].s_bool = xret;
    }
    static void x_41(Smoke::Stack x) {
        // static QStringList drivers()
        QStringList xret = QSqlDatabase::drivers();
        x[0].s_class = (void*)new QStringList(xret);
    }
    static void x_42(Smoke::Stack x) {
        // static QStringList connectionNames()
        QStringList xret = QSqlDatabase::connectionNames();
        x[0].s_class = (void*)new QStringList(xret);
    }
    static void x_43(Smoke::Stack x) {
        // static void registerSqlDriver(const QString&, QSqlDriverCreatorBase*)
        QSqlDatabase::registerSqlDriver(*(const QString*)x[1].s_class,(QSqlDriverCreatorBase*)x[2].s_class);
        (void)x; // noop (for compiler warning)
    }
    static void x_44(Smoke::Stack x) {
        // static bool isDriverAvailable(const QString&)
        bool xret = QSqlDatabase::isDriverAvailable(*(const QString*)x[1].s_class);
        x[0].s_bool = xret;
    }
    static void x_45(Smoke::Stack x) {
        // QSqlDatabase* QSqlDatabase(const QString&)
        x_QSqlDatabase* xret = new x_QSqlDatabase(*(const QString*)x[1].s_class);
        x[0].s_class = (void*)xret;
    }
    explicit x_QSqlDatabase(const QString& x1) : QSqlDatabase(x1) {}
    static void x_46(Smoke::Stack x) {
        // QSqlDatabase* QSqlDatabase(QSqlDriver*)
        x_QSqlDatabase* xret = new x_QSqlDatabase((QSqlDriver*)x[1].s_class);
        x[0].s_class = (void*)xret;
    }
    explicit x_QSqlDatabase(QSqlDriver* x1) : QSqlDatabase(x1) {}
    void x_47(Smoke::Stack x) {
        // QStringList tables() const
        QStringList xret = ((const x_QSqlDatabase*)this)->QSqlDatabase::tables((QSql::TableType)QSql::Tables);
        x[0].s_class = (void*)new QStringList(xret);
    }
    void x_48(Smoke::Stack x) {
        // QSqlQuery exec() const
        QSqlQuery xret = ((const x_QSqlDatabase*)this)->QSqlDatabase::exec((const QString&)QString());
        x[0].s_class = (void*)new QSqlQuery(xret);
    }
    void x_49(Smoke::Stack x) {
        // void setConnectOptions()
        this->QSqlDatabase::setConnectOptions((const QString&)QString());
        (void)x; // noop (for compiler warning)
    }
    static void x_50(Smoke::Stack x) {
        // static QSqlDatabase addDatabase(const QString&)
        QSqlDatabase xret = QSqlDatabase::addDatabase(*(const QString*)x[1].s_class,(const QString&)QLatin1String(defaultConnection));
        x[0].s_class = (void*)new QSqlDatabase(xret);
    }
    static void x_51(Smoke::Stack x) {
        // static QSqlDatabase addDatabase(QSqlDriver*)
        QSqlDatabase xret = QSqlDatabase::addDatabase((QSqlDriver*)x[1].s_class,(const QString&)QLatin1String(defaultConnection));
        x[0].s_class = (void*)new QSqlDatabase(xret);
    }
    static void x_52(Smoke::Stack x) {
        // static QSqlDatabase database()
        QSqlDatabase xret = QSqlDatabase::database((const QString&)QLatin1String(defaultConnection),(bool)true);
        x[0].s_class = (void*)new QSqlDatabase(xret);
    }
    static void x_53(Smoke::Stack x) {
        // static QSqlDatabase database(const QString&)
        QSqlDatabase xret = QSqlDatabase::database(*(const QString*)x[1].s_class,(bool)true);
        x[0].s_class = (void*)new QSqlDatabase(xret);
    }
    static void x_54(Smoke::Stack x) {
        // static bool contains()
        bool xret = QSqlDatabase::contains((const QString&)QLatin1String(defaultConnection));
        x[0].s_bool = xret;
    }
    static void x_55(Smoke::Stack x) {
        // static const char* defaultConnection
        x[0].s_class = (void*)QSqlDatabase::defaultConnection;
    }
    static void x_56(Smoke::Stack x) {
        // static const char* defaultConnection=
        QSqlDatabase::defaultConnection = (const char*)x[1].s_class;
    }
    ~x_QSqlDatabase() { this->_binding->deleted(22, (void*)this); }
};
void xcall_QSqlDatabase(Smoke::Index xi, void *obj, Smoke::Stack args) {
    x_QSqlDatabase *xself = (x_QSqlDatabase*)obj;
    switch(xi) {
        case 0: xself->x_0(args);	break;
        case 1: x_QSqlDatabase::x_1(args);	break;
        case 2: x_QSqlDatabase::x_2(args);	break;
        case 3: xself->x_3(args);	break;
        case 4: xself->x_4(args);	break;
        case 5: xself->x_5(args);	break;
        case 6: xself->x_6(args);	break;
        case 7: xself->x_7(args);	break;
        case 8: xself->x_8(args);	break;
        case 9: xself->x_9(args);	break;
        case 10: xself->x_10(args);	break;
        case 11: xself->x_11(args);	break;
        case 12: xself->x_12(args);	break;
        case 13: xself->x_13(args);	break;
        case 14: xself->x_14(args);	break;
        case 15: xself->x_15(args);	break;
        case 16: xself->x_16(args);	break;
        case 17: xself->x_17(args);	break;
        case 18: xself->x_18(args);	break;
        case 19: xself->x_19(args);	break;
        case 20: xself->x_20(args);	break;
        case 21: xself->x_21(args);	break;
        case 22: xself->x_22(args);	break;
        case 23: xself->x_23(args);	break;
        case 24: xself->x_24(args);	break;
        case 25: xself->x_25(args);	break;
        case 26: xself->x_26(args);	break;
        case 27: xself->x_27(args);	break;
        case 28: xself->x_28(args);	break;
        case 29: xself->x_29(args);	break;
        case 30: xself->x_30(args);	break;
        case 31: xself->x_31(args);	break;
        case 32: xself->x_32(args);	break;
        case 33: xself->x_33(args);	break;
        case 34: xself->x_34(args);	break;
        case 35: x_QSqlDatabase::x_35(args);	break;
        case 36: x_QSqlDatabase::x_36(args);	break;
        case 37: x_QSqlDatabase::x_37(args);	break;
        case 38: x_QSqlDatabase::x_38(args);	break;
        case 39: x_QSqlDatabase::x_39(args);	break;
        case 40: x_QSqlDatabase::x_40(args);	break;
        case 41: x_QSqlDatabase::x_41(args);	break;
        case 42: x_QSqlDatabase::x_42(args);	break;
        case 43: x_QSqlDatabase::x_43(args);	break;
        case 44: x_QSqlDatabase::x_44(args);	break;
        case 45: x_QSqlDatabase::x_45(args);	break;
        case 46: x_QSqlDatabase::x_46(args);	break;
        case 47: xself->x_47(args);	break;
        case 48: xself->x_48(args);	break;
        case 49: xself->x_49(args);	break;
        case 50: x_QSqlDatabase::x_50(args);	break;
        case 51: x_QSqlDatabase::x_51(args);	break;
        case 52: x_QSqlDatabase::x_52(args);	break;
        case 53: x_QSqlDatabase::x_53(args);	break;
        case 54: x_QSqlDatabase::x_54(args);	break;
        case 55: x_QSqlDatabase::x_55(args);	break;
        case 56: x_QSqlDatabase::x_56(args);	break;
        case 57: delete (QSqlDatabase*)xself;	break;
    }
}
class x_QSqlDriver : public QSqlDriver, public __internal_SmokeClass {
    SmokeBinding* _binding;
public:
    void x_0(Smoke::Stack x) {
        // set the smoke binding
        _binding = (SmokeBinding*)x[1].s_class;
    }
    void x_1(Smoke::Stack x) {
        // virtual const QMetaObject* metaObject() const
        if (dynamic_cast<__internal_SmokeClass*>(static_cast<QSqlDriver*>(this))) {
            const QMetaObject* xret = ((const x_QSqlDriver*)this)->QSqlDriver::metaObject();
            x[0].s_class = (void*)xret;
        } else {
            const QMetaObject* xret = ((const x_QSqlDriver*)this)->metaObject();
            x[0].s_class = (void*)xret;
        }
    }
    void x_2(Smoke::Stack x) {
        // virtual void* qt_metacast(const char*)
        if (dynamic_cast<__internal_SmokeClass*>(static_cast<QSqlDriver*>(this))) {
            void* xret = this->QSqlDriver::qt_metacast((const char*)x[1].s_class);
            x[0].s_class = (void*)xret;
        } else {
            void* xret = this->qt_metacast((const char*)x[1].s_class);
            x[0].s_class = (void*)xret;
        }
    }
    static void x_3(Smoke::Stack x) {
        // static QString tr(const char*, const char*)
        QString xret = QSqlDriver::tr((const char*)x[1].s_class,(const char*)x[2].s_class);
        x[0].s_class = (void*)new QString(xret);
    }
    static void x_4(Smoke::Stack x) {
        // static QString trUtf8(const char*, const char*)
        QString xret = QSqlDriver::trUtf8((const char*)x[1].s_class,(const char*)x[2].s_class);
        x[0].s_class = (void*)new QString(xret);
    }
    static void x_5(Smoke::Stack x) {
        // static QString tr(const char*, const char*, int)
        QString xret = QSqlDriver::tr((const char*)x[1].s_class,(const char*)x[2].s_class,(int)x[3].s_int);
        x[0].s_class = (void*)new QString(xret);
    }
    static void x_6(Smoke::Stack x) {
        // static QString trUtf8(const char*, const char*, int)
        QString xret = QSqlDriver::trUtf8((const char*)x[1].s_class,(const char*)x[2].s_class,(int)x[3].s_int);
        x[0].s_class = (void*)new QString(xret);
    }
    void x_7(Smoke::Stack x) {
        // virtual int qt_metacall(QMetaObject::Call, int, void**)
        if (dynamic_cast<__internal_SmokeClass*>(static_cast<QSqlDriver*>(this))) {
            int xret = this->QSqlDriver::qt_metacall((QMetaObject::Call)x[1].s_enum,(int)x[2].s_int,(void**)x[3].s_class);
            x[0].s_int = xret;
        } else {
            int xret = this->qt_metacall((QMetaObject::Call)x[1].s_enum,(int)x[2].s_int,(void**)x[3].s_class);
            x[0].s_int = xret;
        }
    }
    static void x_8(Smoke::Stack x) {
        // QSqlDriver* QSqlDriver(QObject*)
        x_QSqlDriver* xret = new x_QSqlDriver((QObject*)x[1].s_class);
        x[0].s_class = (void*)xret;
    }
    explicit x_QSqlDriver(QObject* x1) : QSqlDriver(x1) {}
    void x_9(Smoke::Stack x) {
        // virtual bool isOpen() const
        if (dynamic_cast<__internal_SmokeClass*>(static_cast<QSqlDriver*>(this))) {
            bool xret = ((const x_QSqlDriver*)this)->QSqlDriver::isOpen();
            x[0].s_bool = xret;
        } else {
            bool xret = ((const x_QSqlDriver*)this)->isOpen();
            x[0].s_bool = xret;
        }
    }
    void x_10(Smoke::Stack x) {
        // bool isOpenError() const
        bool xret = ((const x_QSqlDriver*)this)->QSqlDriver::isOpenError();
        x[0].s_bool = xret;
    }
    void x_11(Smoke::Stack x) {
        // virtual bool beginTransaction()
        if (dynamic_cast<__internal_SmokeClass*>(static_cast<QSqlDriver*>(this))) {
            bool xret = this->QSqlDriver::beginTransaction();
            x[0].s_bool = xret;
        } else {
            bool xret = this->beginTransaction();
            x[0].s_bool = xret;
        }
    }
    void x_12(Smoke::Stack x) {
        // virtual bool commitTransaction()
        if (dynamic_cast<__internal_SmokeClass*>(static_cast<QSqlDriver*>(this))) {
            bool xret = this->QSqlDriver::commitTransaction();
            x[0].s_bool = xret;
        } else {
            bool xret = this->commitTransaction();
            x[0].s_bool = xret;
        }
    }
    void x_13(Smoke::Stack x) {
        // virtual bool rollbackTransaction()
        if (dynamic_cast<__internal_SmokeClass*>(static_cast<QSqlDriver*>(this))) {
            bool xret = this->QSqlDriver::rollbackTransaction();
            x[0].s_bool = xret;
        } else {
            bool xret = this->rollbackTransaction();
            x[0].s_bool = xret;
        }
    }
    void x_14(Smoke::Stack x) {
        // virtual QStringList tables(QSql::TableType) const
        if (dynamic_cast<__internal_SmokeClass*>(static_cast<QSqlDriver*>(this))) {
            QStringList xret = ((const x_QSqlDriver*)this)->QSqlDriver::tables((QSql::TableType)x[1].s_enum);
            x[0].s_class = (void*)new QStringList(xret);
        } else {
            QStringList xret = ((const x_QSqlDriver*)this)->tables((QSql::TableType)x[1].s_enum);
            x[0].s_class = (void*)new QStringList(xret);
        }
    }
    void x_15(Smoke::Stack x) {
        // virtual QSqlIndex primaryIndex(const QString&) const
        if (dynamic_cast<__internal_SmokeClass*>(static_cast<QSqlDriver*>(this))) {
            QSqlIndex xret = ((const x_QSqlDriver*)this)->QSqlDriver::primaryIndex(*(const QString*)x[1].s_class);
            x[0].s_class = (void*)new QSqlIndex(xret);
        } else {
            QSqlIndex xret = ((const x_QSqlDriver*)this)->primaryIndex(*(const QString*)x[1].s_class);
            x[0].s_class = (void*)new QSqlIndex(xret);
        }
    }
    void x_16(Smoke::Stack x) {
        // virtual QSqlRecord record(const QString&) const
        if (dynamic_cast<__internal_SmokeClass*>(static_cast<QSqlDriver*>(this))) {
            QSqlRecord xret = ((const x_QSqlDriver*)this)->QSqlDriver::record(*(const QString*)x[1].s_class);
            x[0].s_class = (void*)new QSqlRecord(xret);
        } else {
            QSqlRecord xret = ((const x_QSqlDriver*)this)->record(*(const QString*)x[1].s_class);
            x[0].s_class = (void*)new QSqlRecord(xret);
        }
    }
    void x_17(Smoke::Stack x) {
        // virtual QString formatValue(const QSqlField&, bool) const
        if (dynamic_cast<__internal_SmokeClass*>(static_cast<QSqlDriver*>(this))) {
            QString xret = ((const x_QSqlDriver*)this)->QSqlDriver::formatValue(*(const QSqlField*)x[1].s_class,(bool)x[2].s_bool);
            x[0].s_class = (void*)new QString(xret);
        } else {
            QString xret = ((const x_QSqlDriver*)this)->formatValue(*(const QSqlField*)x[1].s_class,(bool)x[2].s_bool);
            x[0].s_class = (void*)new QString(xret);
        }
    }
    void x_18(Smoke::Stack x) {
        // virtual QString escapeIdentifier(const QString&, QSqlDriver::IdentifierType) const
        if (dynamic_cast<__internal_SmokeClass*>(static_cast<QSqlDriver*>(this))) {
            QString xret = ((const x_QSqlDriver*)this)->QSqlDriver::escapeIdentifier(*(const QString*)x[1].s_class,(QSqlDriver::IdentifierType)x[2].s_enum);
            x[0].s_class = (void*)new QString(xret);
        } else {
            QString xret = ((const x_QSqlDriver*)this)->escapeIdentifier(*(const QString*)x[1].s_class,(QSqlDriver::IdentifierType)x[2].s_enum);
            x[0].s_class = (void*)new QString(xret);
        }
    }
    void x_19(Smoke::Stack x) {
        // virtual QString sqlStatement(QSqlDriver::StatementType, const QString&, const QSqlRecord&, bool) const
        if (dynamic_cast<__internal_SmokeClass*>(static_cast<QSqlDriver*>(this))) {
            QString xret = ((const x_QSqlDriver*)this)->QSqlDriver::sqlStatement((QSqlDriver::StatementType)x[1].s_enum,*(const QString*)x[2].s_class,*(const QSqlRecord*)x[3].s_class,(bool)x[4].s_bool);
            x[0].s_class = (void*)new QString(xret);
        } else {
            QString xret = ((const x_QSqlDriver*)this)->sqlStatement((QSqlDriver::StatementType)x[1].s_enum,*(const QString*)x[2].s_class,*(const QSqlRecord*)x[3].s_class,(bool)x[4].s_bool);
            x[0].s_class = (void*)new QString(xret);
        }
    }
    void x_20(Smoke::Stack x) {
        // QSqlError lastError() const
        QSqlError xret = ((const x_QSqlDriver*)this)->QSqlDriver::lastError();
        x[0].s_class = (void*)new QSqlError(xret);
    }
    void x_21(Smoke::Stack x) {
        // virtual QVariant handle() const
        if (dynamic_cast<__internal_SmokeClass*>(static_cast<QSqlDriver*>(this))) {
            QVariant xret = ((const x_QSqlDriver*)this)->QSqlDriver::handle();
            x[0].s_class = (void*)new QVariant(xret);
        } else {
            QVariant xret = ((const x_QSqlDriver*)this)->handle();
            x[0].s_class = (void*)new QVariant(xret);
        }
    }
    void x_22(Smoke::Stack x) {
        // virtual bool hasFeature(QSqlDriver::DriverFeature) const = 0
        bool xret = ((const x_QSqlDriver*)this)->hasFeature((QSqlDriver::DriverFeature)x[1].s_enum);
        x[0].s_bool = xret;
    }
    void x_23(Smoke::Stack x) {
        // virtual void close() = 0
        this->close();
        (void)x; // noop (for compiler warning)
    }
    void x_24(Smoke::Stack x) {
        // virtual QSqlResult* createResult() const = 0
        QSqlResult* xret = ((const x_QSqlDriver*)this)->createResult();
        x[0].s_class = (void*)xret;
    }
    void x_25(Smoke::Stack x) {
        // virtual bool open(const QString&, const QString&, const QString&, const QString&, int, const QString&) = 0
        bool xret = this->open(*(const QString*)x[1].s_class,*(const QString*)x[2].s_class,*(const QString*)x[3].s_class,*(const QString*)x[4].s_class,(int)x[5].s_int,*(const QString*)x[6].s_class);
        x[0].s_bool = xret;
    }
    void x_26(Smoke::Stack x) {
        // bool subscribeToNotification(const QString&)
        bool xret = this->QSqlDriver::subscribeToNotification(*(const QString*)x[1].s_class);
        x[0].s_bool = xret;
    }
    void x_27(Smoke::Stack x) {
        // bool unsubscribeFromNotification(const QString&)
        bool xret = this->QSqlDriver::unsubscribeFromNotification(*(const QString*)x[1].s_class);
        x[0].s_bool = xret;
    }
    void x_28(Smoke::Stack x) {
        // QStringList subscribedToNotifications() const
        QStringList xret = ((const x_QSqlDriver*)this)->QSqlDriver::subscribedToNotifications();
        x[0].s_class = (void*)new QStringList(xret);
    }
    void x_29(Smoke::Stack x) {
        // bool isIdentifierEscaped(const QString&, QSqlDriver::IdentifierType) const
        bool xret = ((const x_QSqlDriver*)this)->QSqlDriver::isIdentifierEscaped(*(const QString*)x[1].s_class,(QSqlDriver::IdentifierType)x[2].s_enum);
        x[0].s_bool = xret;
    }
    void x_30(Smoke::Stack x) {
        // QString stripDelimiters(const QString&, QSqlDriver::IdentifierType) const
        QString xret = ((const x_QSqlDriver*)this)->QSqlDriver::stripDelimiters(*(const QString*)x[1].s_class,(QSqlDriver::IdentifierType)x[2].s_enum);
        x[0].s_class = (void*)new QString(xret);
    }
    void x_31(Smoke::Stack x) {
        // void setNumericalPrecisionPolicy(QSql::NumericalPrecisionPolicy)
        this->QSqlDriver::setNumericalPrecisionPolicy((QSql::NumericalPrecisionPolicy)x[1].s_enum);
        (void)x; // noop (for compiler warning)
    }
    void x_32(Smoke::Stack x) {
        // QSql::NumericalPrecisionPolicy numericalPrecisionPolicy() const
        QSql::NumericalPrecisionPolicy xret = ((const x_QSqlDriver*)this)->QSqlDriver::numericalPrecisionPolicy();
        x[0].s_enum = xret;
    }
    void x_33(Smoke::Stack x) {
        // void notification(const QString&)
        this->QSqlDriver::notification(*(const QString*)x[1].s_class);
        (void)x; // noop (for compiler warning)
    }
    void x_34(Smoke::Stack x) {
        // virtual void setOpen(bool)
        if (dynamic_cast<__internal_SmokeClass*>(static_cast<QSqlDriver*>(this))) {
            this->QSqlDriver::setOpen((bool)x[1].s_bool);
            (void)x; // noop (for compiler warning)
        } else {
            this->setOpen((bool)x[1].s_bool);
            (void)x; // noop (for compiler warning)
        }
    }
    void x_35(Smoke::Stack x) {
        // virtual void setOpenError(bool)
        if (dynamic_cast<__internal_SmokeClass*>(static_cast<QSqlDriver*>(this))) {
            this->QSqlDriver::setOpenError((bool)x[1].s_bool);
            (void)x; // noop (for compiler warning)
        } else {
            this->setOpenError((bool)x[1].s_bool);
            (void)x; // noop (for compiler warning)
        }
    }
    void x_36(Smoke::Stack x) {
        // virtual void setLastError(const QSqlError&)
        if (dynamic_cast<__internal_SmokeClass*>(static_cast<QSqlDriver*>(this))) {
            this->QSqlDriver::setLastError(*(const QSqlError*)x[1].s_class);
            (void)x; // noop (for compiler warning)
        } else {
            this->setLastError(*(const QSqlError*)x[1].s_class);
            (void)x; // noop (for compiler warning)
        }
    }
    void x_37(Smoke::Stack x) {
        // bool subscribeToNotificationImplementation(const QString&)
        bool xret = this->QSqlDriver::subscribeToNotificationImplementation(*(const QString*)x[1].s_class);
        x[0].s_bool = xret;
    }
    void x_38(Smoke::Stack x) {
        // bool unsubscribeFromNotificationImplementation(const QString&)
        bool xret = this->QSqlDriver::unsubscribeFromNotificationImplementation(*(const QString*)x[1].s_class);
        x[0].s_bool = xret;
    }
    void x_39(Smoke::Stack x) {
        // QStringList subscribedToNotificationsImplementation() const
        QStringList xret = ((const x_QSqlDriver*)this)->QSqlDriver::subscribedToNotificationsImplementation();
        x[0].s_class = (void*)new QStringList(xret);
    }
    void x_40(Smoke::Stack x) {
        // bool isIdentifierEscapedImplementation(const QString&, QSqlDriver::IdentifierType) const
        bool xret = ((const x_QSqlDriver*)this)->QSqlDriver::isIdentifierEscapedImplementation(*(const QString*)x[1].s_class,(QSqlDriver::IdentifierType)x[2].s_enum);
        x[0].s_bool = xret;
    }
    void x_41(Smoke::Stack x) {
        // QString stripDelimitersImplementation(const QString&, QSqlDriver::IdentifierType) const
        QString xret = ((const x_QSqlDriver*)this)->QSqlDriver::stripDelimitersImplementation(*(const QString*)x[1].s_class,(QSqlDriver::IdentifierType)x[2].s_enum);
        x[0].s_class = (void*)new QString(xret);
    }
    static void x_42(Smoke::Stack x) {
        // static QString tr(const char*)
        QString xret = QSqlDriver::tr((const char*)x[1].s_class,(const char*)0);
        x[0].s_class = (void*)new QString(xret);
    }
    static void x_43(Smoke::Stack x) {
        // static QString trUtf8(const char*)
        QString xret = QSqlDriver::trUtf8((const char*)x[1].s_class,(const char*)0);
        x[0].s_class = (void*)new QString(xret);
    }
    static void x_44(Smoke::Stack x) {
        // QSqlDriver* QSqlDriver()
        x_QSqlDriver* xret = new x_QSqlDriver((QObject*)0);
        x[0].s_class = (void*)xret;
    }
    void x_45(Smoke::Stack x) {
        // QString formatValue(const QSqlField&) const
        QString xret = ((const x_QSqlDriver*)this)->QSqlDriver::formatValue(*(const QSqlField*)x[1].s_class,(bool)false);
        x[0].s_class = (void*)new QString(xret);
    }
    void x_46(Smoke::Stack x) {
        // bool open(const QString&)
        bool xret = this->open(*(const QString*)x[1].s_class,(const QString&)QString(),(const QString&)QString(),(const QString&)QString(),(int)-1,(const QString&)QString());
        x[0].s_bool = xret;
    }
    void x_47(Smoke::Stack x) {
        // bool open(const QString&, const QString&)
        bool xret = this->open(*(const QString*)x[1].s_class,*(const QString*)x[2].s_class,(const QString&)QString(),(const QString&)QString(),(int)-1,(const QString&)QString());
        x[0].s_bool = xret;
    }
    void x_48(Smoke::Stack x) {
        // bool open(const QString&, const QString&, const QString&)
        bool xret = this->open(*(const QString*)x[1].s_class,*(const QString*)x[2].s_class,*(const QString*)x[3].s_class,(const QString&)QString(),(int)-1,(const QString&)QString());
        x[0].s_bool = xret;
    }
    void x_49(Smoke::Stack x) {
        // bool open(const QString&, const QString&, const QString&, const QString&)
        bool xret = this->open(*(const QString*)x[1].s_class,*(const QString*)x[2].s_class,*(const QString*)x[3].s_class,*(const QString*)x[4].s_class,(int)-1,(const QString&)QString());
        x[0].s_bool = xret;
    }
    void x_50(Smoke::Stack x) {
        // bool open(const QString&, const QString&, const QString&, const QString&, int)
        bool xret = this->open(*(const QString*)x[1].s_class,*(const QString*)x[2].s_class,*(const QString*)x[3].s_class,*(const QString*)x[4].s_class,(int)x[5].s_int,(const QString&)QString());
        x[0].s_bool = xret;
    }
    static void x_51(Smoke::Stack x) {
        // static const QMetaObject staticMetaObject
        x[0].s_class = (void*)&QSqlDriver::staticMetaObject;
    }
    static void x_52(Smoke::Stack x) {
        x[0].s_enum = (long)QSqlDriver::Transactions;
    }
    static void x_53(Smoke::Stack x) {
        x[0].s_enum = (long)QSqlDriver::QuerySize;
    }
    static void x_54(Smoke::Stack x) {
        x[0].s_enum = (long)QSqlDriver::BLOB;
    }
    static void x_55(Smoke::Stack x) {
        x[0].s_enum = (long)QSqlDriver::Unicode;
    }
    static void x_56(Smoke::Stack x) {
        x[0].s_enum = (long)QSqlDriver::PreparedQueries;
    }
    static void x_57(Smoke::Stack x) {
        x[0].s_enum = (long)QSqlDriver::NamedPlaceholders;
    }
    static void x_58(Smoke::Stack x) {
        x[0].s_enum = (long)QSqlDriver::PositionalPlaceholders;
    }
    static void x_59(Smoke::Stack x) {
        x[0].s_enum = (long)QSqlDriver::LastInsertId;
    }
    static void x_60(Smoke::Stack x) {
        x[0].s_enum = (long)QSqlDriver::BatchOperations;
    }
    static void x_61(Smoke::Stack x) {
        x[0].s_enum = (long)QSqlDriver::SimpleLocking;
    }
    static void x_62(Smoke::Stack x) {
        x[0].s_enum = (long)QSqlDriver::LowPrecisionNumbers;
    }
    static void x_63(Smoke::Stack x) {
        x[0].s_enum = (long)QSqlDriver::EventNotifications;
    }
    static void x_64(Smoke::Stack x) {
        x[0].s_enum = (long)QSqlDriver::FinishQuery;
    }
    static void x_65(Smoke::Stack x) {
        x[0].s_enum = (long)QSqlDriver::MultipleResultSets;
    }
    static void x_66(Smoke::Stack x) {
        x[0].s_enum = (long)QSqlDriver::WhereStatement;
    }
    static void x_67(Smoke::Stack x) {
        x[0].s_enum = (long)QSqlDriver::SelectStatement;
    }
    static void x_68(Smoke::Stack x) {
        x[0].s_enum = (long)QSqlDriver::UpdateStatement;
    }
    static void x_69(Smoke::Stack x) {
        x[0].s_enum = (long)QSqlDriver::InsertStatement;
    }
    static void x_70(Smoke::Stack x) {
        x[0].s_enum = (long)QSqlDriver::DeleteStatement;
    }
    static void x_71(Smoke::Stack x) {
        x[0].s_enum = (long)QSqlDriver::FieldName;
    }
    static void x_72(Smoke::Stack x) {
        x[0].s_enum = (long)QSqlDriver::TableName;
    }
    virtual const QMetaObject* metaObject() const {
        Smoke::StackItem x[1];
        if (this->_binding->callMethod(116, (void*)this, x)) return (const QMetaObject*)x[0].s_class;
        return this->QSqlDriver::metaObject();
    }
    virtual void* qt_metacast(const char* x1) {
        Smoke::StackItem x[2];
        x[1].s_class = (void*)x1;
        if (this->_binding->callMethod(117, (void*)this, x)) return (void*)x[0].s_class;
        return this->QSqlDriver::qt_metacast(x1);
    }
    virtual int qt_metacall(QMetaObject::Call x1, int x2, void** x3) {
        Smoke::StackItem x[4];
        x[1].s_enum = x1;
        x[2].s_int = x2;
        x[3].s_class = (void*)x3;
        if (this->_binding->callMethod(122, (void*)this, x)) return (int)x[0].s_int;
        return this->QSqlDriver::qt_metacall(x1, x2, x3);
    }
    virtual bool isOpen() const {
        Smoke::StackItem x[1];
        if (this->_binding->callMethod(124, (void*)this, x)) return (bool)x[0].s_bool;
        return this->QSqlDriver::isOpen();
    }
    virtual bool beginTransaction() {
        Smoke::StackItem x[1];
        if (this->_binding->callMethod(126, (void*)this, x)) return (bool)x[0].s_bool;
        return this->QSqlDriver::beginTransaction();
    }
    virtual bool commitTransaction() {
        Smoke::StackItem x[1];
        if (this->_binding->callMethod(127, (void*)this, x)) return (bool)x[0].s_bool;
        return this->QSqlDriver::commitTransaction();
    }
    virtual bool rollbackTransaction() {
        Smoke::StackItem x[1];
        if (this->_binding->callMethod(128, (void*)this, x)) return (bool)x[0].s_bool;
        return this->QSqlDriver::rollbackTransaction();
    }
    virtual QStringList tables(QSql::TableType x1) const {
        Smoke::StackItem x[2];
        x[1].s_enum = x1;
        if (this->_binding->callMethod(129, (void*)this, x)) {
            QStringList* xptr = (QStringList*)x[0].s_class;
            QStringList xret(*xptr);
            delete xptr;
            return xret;
        }
        return this->QSqlDriver::tables(x1);
    }
    virtual QSqlIndex primaryIndex(const QString& x1) const {
        Smoke::StackItem x[2];
        x[1].s_class = (void*)&x1;
        if (this->_binding->callMethod(130, (void*)this, x)) {
            QSqlIndex* xptr = (QSqlIndex*)x[0].s_class;
            QSqlIndex xret(*xptr);
            delete xptr;
            return xret;
        }
        return this->QSqlDriver::primaryIndex(x1);
    }
    virtual QSqlRecord record(const QString& x1) const {
        Smoke::StackItem x[2];
        x[1].s_class = (void*)&x1;
        if (this->_binding->callMethod(131, (void*)this, x)) {
            QSqlRecord* xptr = (QSqlRecord*)x[0].s_class;
            QSqlRecord xret(*xptr);
            delete xptr;
            return xret;
        }
        return this->QSqlDriver::record(x1);
    }
    virtual QString formatValue(const QSqlField& x1, bool x2) const {
        Smoke::StackItem x[3];
        x[1].s_class = (void*)&x1;
        x[2].s_bool = x2;
        if (this->_binding->callMethod(132, (void*)this, x)) {
            QString* xptr = (QString*)x[0].s_class;
            QString xret(*xptr);
            delete xptr;
            return xret;
        }
        return this->QSqlDriver::formatValue(x1, x2);
    }
    virtual QString escapeIdentifier(const QString& x1, QSqlDriver::IdentifierType x2) const {
        Smoke::StackItem x[3];
        x[1].s_class = (void*)&x1;
        x[2].s_enum = x2;
        if (this->_binding->callMethod(133, (void*)this, x)) {
            QString* xptr = (QString*)x[0].s_class;
            QString xret(*xptr);
            delete xptr;
            return xret;
        }
        return this->QSqlDriver::escapeIdentifier(x1, x2);
    }
    virtual QString sqlStatement(QSqlDriver::StatementType x1, const QString& x2, const QSqlRecord& x3, bool x4) const {
        Smoke::StackItem x[5];
        x[1].s_enum = x1;
        x[2].s_class = (void*)&x2;
        x[3].s_class = (void*)&x3;
        x[4].s_bool = x4;
        if (this->_binding->callMethod(134, (void*)this, x)) {
            QString* xptr = (QString*)x[0].s_class;
            QString xret(*xptr);
            delete xptr;
            return xret;
        }
        return this->QSqlDriver::sqlStatement(x1, x2, x3, x4);
    }
    virtual QVariant handle() const {
        Smoke::StackItem x[1];
        if (this->_binding->callMethod(136, (void*)this, x)) {
            QVariant* xptr = (QVariant*)x[0].s_class;
            QVariant xret(*xptr);
            delete xptr;
            return xret;
        }
        return this->QSqlDriver::handle();
    }
    virtual bool hasFeature(QSqlDriver::DriverFeature x1) const {
        Smoke::StackItem x[2];
        x[1].s_enum = x1;
        this->_binding->callMethod(137, (void*)this, x, true /*pure virtual*/);
        return (bool)x[0].s_bool;
    }
    virtual void close() {
        Smoke::StackItem x[1];
        this->_binding->callMethod(138, (void*)this, x, true /*pure virtual*/);
    }
    virtual QSqlResult* createResult() const {
        Smoke::StackItem x[1];
        this->_binding->callMethod(139, (void*)this, x, true /*pure virtual*/);
        return (QSqlResult*)x[0].s_class;
    }
    virtual bool open(const QString& x1, const QString& x2, const QString& x3, const QString& x4, int x5, const QString& x6) {
        Smoke::StackItem x[7];
        x[1].s_class = (void*)&x1;
        x[2].s_class = (void*)&x2;
        x[3].s_class = (void*)&x3;
        x[4].s_class = (void*)&x4;
        x[5].s_int = x5;
        x[6].s_class = (void*)&x6;
        this->_binding->callMethod(140, (void*)this, x, true /*pure virtual*/);
        return (bool)x[0].s_bool;
    }
    virtual void setOpen(bool x1) {
        Smoke::StackItem x[2];
        x[1].s_bool = x1;
        if (this->_binding->callMethod(149, (void*)this, x)) return;
        this->QSqlDriver::setOpen(x1);
    }
    virtual void setOpenError(bool x1) {
        Smoke::StackItem x[2];
        x[1].s_bool = x1;
        if (this->_binding->callMethod(150, (void*)this, x)) return;
        this->QSqlDriver::setOpenError(x1);
    }
    virtual void setLastError(const QSqlError& x1) {
        Smoke::StackItem x[2];
        x[1].s_class = (void*)&x1;
        if (this->_binding->callMethod(151, (void*)this, x)) return;
        this->QSqlDriver::setLastError(x1);
    }
    virtual bool event(QEvent* x1) {
        Smoke::StackItem x[2];
        x[1].s_class = (void*)x1;
        if (this->_binding->callMethod(38, (void*)this, x)) return (bool)x[0].s_bool;
        return this->QObject::event(x1);
    }
    virtual bool eventFilter(QObject* x1, QEvent* x2) {
        Smoke::StackItem x[3];
        x[1].s_class = (void*)x1;
        x[2].s_class = (void*)x2;
        if (this->_binding->callMethod(39, (void*)this, x)) return (bool)x[0].s_bool;
        return this->QObject::eventFilter(x1, x2);
    }
    virtual void timerEvent(QTimerEvent* x1) {
        Smoke::StackItem x[2];
        x[1].s_class = (void*)x1;
        if (this->_binding->callMethod(40, (void*)this, x)) return;
        this->QObject::timerEvent(x1);
    }
    virtual void childEvent(QChildEvent* x1) {
        Smoke::StackItem x[2];
        x[1].s_class = (void*)x1;
        if (this->_binding->callMethod(41, (void*)this, x)) return;
        this->QObject::childEvent(x1);
    }
    virtual void customEvent(QEvent* x1) {
        Smoke::StackItem x[2];
        x[1].s_class = (void*)x1;
        if (this->_binding->callMethod(42, (void*)this, x)) return;
        this->QObject::customEvent(x1);
    }
    virtual void connectNotify(const char* x1) {
        Smoke::StackItem x[2];
        x[1].s_class = (void*)x1;
        if (this->_binding->callMethod(43, (void*)this, x)) return;
        this->QObject::connectNotify(x1);
    }
    virtual void disconnectNotify(const char* x1) {
        Smoke::StackItem x[2];
        x[1].s_class = (void*)x1;
        if (this->_binding->callMethod(44, (void*)this, x)) return;
        this->QObject::disconnectNotify(x1);
    }
    static void xenum_operation(Smoke::EnumOperation xop, Smoke::Index xtype, void *&xdata, long &xvalue) {
        switch(xtype) {
        case 34: //QSqlDriver::DriverFeature
            switch(xop) {
                case Smoke::EnumNew:
                    xdata = (void*)new QSqlDriver::DriverFeature;
                    break;
                case Smoke::EnumDelete:
                    delete (QSqlDriver::DriverFeature*)xdata;
                    break;
                case Smoke::EnumFromLong:
                    *(QSqlDriver::DriverFeature*)xdata = (QSqlDriver::DriverFeature)xvalue;
                    break;
                case Smoke::EnumToLong:
                    xvalue = (long)*(QSqlDriver::DriverFeature*)xdata;
                    break;
            }
            break;
        case 36: //QSqlDriver::StatementType
            switch(xop) {
                case Smoke::EnumNew:
                    xdata = (void*)new QSqlDriver::StatementType;
                    break;
                case Smoke::EnumDelete:
                    delete (QSqlDriver::StatementType*)xdata;
                    break;
                case Smoke::EnumFromLong:
                    *(QSqlDriver::StatementType*)xdata = (QSqlDriver::StatementType)xvalue;
                    break;
                case Smoke::EnumToLong:
                    xvalue = (long)*(QSqlDriver::StatementType*)xdata;
                    break;
            }
            break;
        case 35: //QSqlDriver::IdentifierType
            switch(xop) {
                case Smoke::EnumNew:
                    xdata = (void*)new QSqlDriver::IdentifierType;
                    break;
                case Smoke::EnumDelete:
                    delete (QSqlDriver::IdentifierType*)xdata;
                    break;
                case Smoke::EnumFromLong:
                    *(QSqlDriver::IdentifierType*)xdata = (QSqlDriver::IdentifierType)xvalue;
                    break;
                case Smoke::EnumToLong:
                    xvalue = (long)*(QSqlDriver::IdentifierType*)xdata;
                    break;
            }
            break;
        }
    }
    ~x_QSqlDriver() { this->_binding->deleted(23, (void*)this); }
};
void xenum_QSqlDriver(Smoke::EnumOperation xop, Smoke::Index xtype, void *&xdata, long &xvalue) {
    x_QSqlDriver::xenum_operation(xop, xtype, xdata, xvalue);
}
void xcall_QSqlDriver(Smoke::Index xi, void *obj, Smoke::Stack args) {
    x_QSqlDriver *xself = (x_QSqlDriver*)obj;
    switch(xi) {
        case 0: xself->x_0(args);	break;
        case 1: xself->x_1(args);	break;
        case 2: xself->x_2(args);	break;
        case 3: x_QSqlDriver::x_3(args);	break;
        case 4: x_QSqlDriver::x_4(args);	break;
        case 5: x_QSqlDriver::x_5(args);	break;
        case 6: x_QSqlDriver::x_6(args);	break;
        case 7: xself->x_7(args);	break;
        case 8: x_QSqlDriver::x_8(args);	break;
        case 9: xself->x_9(args);	break;
        case 10: xself->x_10(args);	break;
        case 11: xself->x_11(args);	break;
        case 12: xself->x_12(args);	break;
        case 13: xself->x_13(args);	break;
        case 14: xself->x_14(args);	break;
        case 15: xself->x_15(args);	break;
        case 16: xself->x_16(args);	break;
        case 17: xself->x_17(args);	break;
        case 18: xself->x_18(args);	break;
        case 19: xself->x_19(args);	break;
        case 20: xself->x_20(args);	break;
        case 21: xself->x_21(args);	break;
        case 22: xself->x_22(args);	break;
        case 23: xself->x_23(args);	break;
        case 24: xself->x_24(args);	break;
        case 25: xself->x_25(args);	break;
        case 26: xself->x_26(args);	break;
        case 27: xself->x_27(args);	break;
        case 28: xself->x_28(args);	break;
        case 29: xself->x_29(args);	break;
        case 30: xself->x_30(args);	break;
        case 31: xself->x_31(args);	break;
        case 32: xself->x_32(args);	break;
        case 33: xself->x_33(args);	break;
        case 34: xself->x_34(args);	break;
        case 35: xself->x_35(args);	break;
        case 36: xself->x_36(args);	break;
        case 37: xself->x_37(args);	break;
        case 38: xself->x_38(args);	break;
        case 39: xself->x_39(args);	break;
        case 40: xself->x_40(args);	break;
        case 41: xself->x_41(args);	break;
        case 42: x_QSqlDriver::x_42(args);	break;
        case 43: x_QSqlDriver::x_43(args);	break;
        case 44: x_QSqlDriver::x_44(args);	break;
        case 45: xself->x_45(args);	break;
        case 46: xself->x_46(args);	break;
        case 47: xself->x_47(args);	break;
        case 48: xself->x_48(args);	break;
        case 49: xself->x_49(args);	break;
        case 50: xself->x_50(args);	break;
        case 51: x_QSqlDriver::x_51(args);	break;
        case 52: x_QSqlDriver::x_52(args);	break;
        case 53: x_QSqlDriver::x_53(args);	break;
        case 54: x_QSqlDriver::x_54(args);	break;
        case 55: x_QSqlDriver::x_55(args);	break;
        case 56: x_QSqlDriver::x_56(args);	break;
        case 57: x_QSqlDriver::x_57(args);	break;
        case 58: x_QSqlDriver::x_58(args);	break;
        case 59: x_QSqlDriver::x_59(args);	break;
        case 60: x_QSqlDriver::x_60(args);	break;
        case 61: x_QSqlDriver::x_61(args);	break;
        case 62: x_QSqlDriver::x_62(args);	break;
        case 63: x_QSqlDriver::x_63(args);	break;
        case 64: x_QSqlDriver::x_64(args);	break;
        case 65: x_QSqlDriver::x_65(args);	break;
        case 66: x_QSqlDriver::x_66(args);	break;
        case 67: x_QSqlDriver::x_67(args);	break;
        case 68: x_QSqlDriver::x_68(args);	break;
        case 69: x_QSqlDriver::x_69(args);	break;
        case 70: x_QSqlDriver::x_70(args);	break;
        case 71: x_QSqlDriver::x_71(args);	break;
        case 72: x_QSqlDriver::x_72(args);	break;
        case 73: delete (QSqlDriver*)xself;	break;
    }
}
class x_QSqlDriverCreatorBase : public QSqlDriverCreatorBase, public __internal_SmokeClass {
    SmokeBinding* _binding;
public:
    void x_0(Smoke::Stack x) {
        // set the smoke binding
        _binding = (SmokeBinding*)x[1].s_class;
    }
    void x_1(Smoke::Stack x) {
        // virtual QSqlDriver* createObject() const = 0
        QSqlDriver* xret = ((const x_QSqlDriverCreatorBase*)this)->createObject();
        x[0].s_class = (void*)xret;
    }
    static void x_2(Smoke::Stack x) {
        // QSqlDriverCreatorBase* QSqlDriverCreatorBase()
        x_QSqlDriverCreatorBase* xret = new x_QSqlDriverCreatorBase();
        x[0].s_class = (void*)xret;
    }
    explicit x_QSqlDriverCreatorBase() : QSqlDriverCreatorBase() {}
    static void x_3(Smoke::Stack x) {
        // QSqlDriverCreatorBase* QSqlDriverCreatorBase(const QSqlDriverCreatorBase&)
        x_QSqlDriverCreatorBase* xret = new x_QSqlDriverCreatorBase(*(const QSqlDriverCreatorBase*)x[1].s_class);
        x[0].s_class = (void*)xret;
    }
    explicit x_QSqlDriverCreatorBase(const QSqlDriverCreatorBase& x1) : QSqlDriverCreatorBase(x1) {}
    virtual QSqlDriver* createObject() const {
        Smoke::StackItem x[1];
        this->_binding->callMethod(189, (void*)this, x, true /*pure virtual*/);
        return (QSqlDriver*)x[0].s_class;
    }
    ~x_QSqlDriverCreatorBase() { this->_binding->deleted(24, (void*)this); }
};
void xcall_QSqlDriverCreatorBase(Smoke::Index xi, void *obj, Smoke::Stack args) {
    x_QSqlDriverCreatorBase *xself = (x_QSqlDriverCreatorBase*)obj;
    switch(xi) {
        case 0: xself->x_0(args);	break;
        case 1: xself->x_1(args);	break;
        case 2: x_QSqlDriverCreatorBase::x_2(args);	break;
        case 3: x_QSqlDriverCreatorBase::x_3(args);	break;
        case 4: delete (QSqlDriverCreatorBase*)xself;	break;
    }
}
class x_QSqlDriverFactoryInterface : public QSqlDriverFactoryInterface, public __internal_SmokeClass {
    SmokeBinding* _binding;
public:
    void x_0(Smoke::Stack x) {
        // set the smoke binding
        _binding = (SmokeBinding*)x[1].s_class;
    }
    void x_1(Smoke::Stack x) {
        // virtual QSqlDriver* create(const QString&) = 0
        QSqlDriver* xret = this->create(*(const QString*)x[1].s_class);
        x[0].s_class = (void*)xret;
    }
    static void x_2(Smoke::Stack x) {
        // QSqlDriverFactoryInterface* QSqlDriverFactoryInterface()
        x_QSqlDriverFactoryInterface* xret = new x_QSqlDriverFactoryInterface();
        x[0].s_class = (void*)xret;
    }
    explicit x_QSqlDriverFactoryInterface() : QSqlDriverFactoryInterface() {}
    static void x_3(Smoke::Stack x) {
        // QSqlDriverFactoryInterface* QSqlDriverFactoryInterface(const QSqlDriverFactoryInterface&)
        x_QSqlDriverFactoryInterface* xret = new x_QSqlDriverFactoryInterface(*(const QSqlDriverFactoryInterface*)x[1].s_class);
        x[0].s_class = (void*)xret;
    }
    explicit x_QSqlDriverFactoryInterface(const QSqlDriverFactoryInterface& x1) : QSqlDriverFactoryInterface(x1) {}
    virtual QSqlDriver* create(const QString& x1) {
        Smoke::StackItem x[2];
        x[1].s_class = (void*)&x1;
        this->_binding->callMethod(193, (void*)this, x, true /*pure virtual*/);
        return (QSqlDriver*)x[0].s_class;
    }
    virtual QStringList keys() const {
        Smoke::StackItem x[1];
        this->_binding->callMethod(18, (void*)this, x, true /*pure virtual*/);
        QStringList* xptr = (QStringList*)x[0].s_class;
        QStringList xret(*xptr);
        delete xptr;
        return xret;
    }
    ~x_QSqlDriverFactoryInterface() { this->_binding->deleted(25, (void*)this); }
};
void xcall_QSqlDriverFactoryInterface(Smoke::Index xi, void *obj, Smoke::Stack args) {
    x_QSqlDriverFactoryInterface *xself = (x_QSqlDriverFactoryInterface*)obj;
    switch(xi) {
        case 0: xself->x_0(args);	break;
        case 1: xself->x_1(args);	break;
        case 2: x_QSqlDriverFactoryInterface::x_2(args);	break;
        case 3: x_QSqlDriverFactoryInterface::x_3(args);	break;
        case 4: delete (QSqlDriverFactoryInterface*)xself;	break;
    }
}
class x_QSqlDriverPlugin : public QSqlDriverPlugin, public __internal_SmokeClass {
    SmokeBinding* _binding;
public:
    void x_0(Smoke::Stack x) {
        // set the smoke binding
        _binding = (SmokeBinding*)x[1].s_class;
    }
    void x_1(Smoke::Stack x) {
        // virtual const QMetaObject* metaObject() const
        if (dynamic_cast<__internal_SmokeClass*>(static_cast<QSqlDriverPlugin*>(this))) {
            const QMetaObject* xret = ((const x_QSqlDriverPlugin*)this)->QSqlDriverPlugin::metaObject();
            x[0].s_class = (void*)xret;
        } else {
            const QMetaObject* xret = ((const x_QSqlDriverPlugin*)this)->metaObject();
            x[0].s_class = (void*)xret;
        }
    }
    void x_2(Smoke::Stack x) {
        // virtual void* qt_metacast(const char*)
        if (dynamic_cast<__internal_SmokeClass*>(static_cast<QSqlDriverPlugin*>(this))) {
            void* xret = this->QSqlDriverPlugin::qt_metacast((const char*)x[1].s_class);
            x[0].s_class = (void*)xret;
        } else {
            void* xret = this->qt_metacast((const char*)x[1].s_class);
            x[0].s_class = (void*)xret;
        }
    }
    static void x_3(Smoke::Stack x) {
        // static QString tr(const char*, const char*)
        QString xret = QSqlDriverPlugin::tr((const char*)x[1].s_class,(const char*)x[2].s_class);
        x[0].s_class = (void*)new QString(xret);
    }
    static void x_4(Smoke::Stack x) {
        // static QString trUtf8(const char*, const char*)
        QString xret = QSqlDriverPlugin::trUtf8((const char*)x[1].s_class,(const char*)x[2].s_class);
        x[0].s_class = (void*)new QString(xret);
    }
    static void x_5(Smoke::Stack x) {
        // static QString tr(const char*, const char*, int)
        QString xret = QSqlDriverPlugin::tr((const char*)x[1].s_class,(const char*)x[2].s_class,(int)x[3].s_int);
        x[0].s_class = (void*)new QString(xret);
    }
    static void x_6(Smoke::Stack x) {
        // static QString trUtf8(const char*, const char*, int)
        QString xret = QSqlDriverPlugin::trUtf8((const char*)x[1].s_class,(const char*)x[2].s_class,(int)x[3].s_int);
        x[0].s_class = (void*)new QString(xret);
    }
    void x_7(Smoke::Stack x) {
        // virtual int qt_metacall(QMetaObject::Call, int, void**)
        if (dynamic_cast<__internal_SmokeClass*>(static_cast<QSqlDriverPlugin*>(this))) {
            int xret = this->QSqlDriverPlugin::qt_metacall((QMetaObject::Call)x[1].s_enum,(int)x[2].s_int,(void**)x[3].s_class);
            x[0].s_int = xret;
        } else {
            int xret = this->qt_metacall((QMetaObject::Call)x[1].s_enum,(int)x[2].s_int,(void**)x[3].s_class);
            x[0].s_int = xret;
        }
    }
    static void x_8(Smoke::Stack x) {
        // QSqlDriverPlugin* QSqlDriverPlugin(QObject*)
        x_QSqlDriverPlugin* xret = new x_QSqlDriverPlugin((QObject*)x[1].s_class);
        x[0].s_class = (void*)xret;
    }
    explicit x_QSqlDriverPlugin(QObject* x1) : QSqlDriverPlugin(x1) {}
    void x_9(Smoke::Stack x) {
        // virtual QStringList keys() const = 0
        QStringList xret = ((const x_QSqlDriverPlugin*)this)->keys();
        x[0].s_class = (void*)new QStringList(xret);
    }
    void x_10(Smoke::Stack x) {
        // virtual QSqlDriver* create(const QString&) = 0
        QSqlDriver* xret = this->create(*(const QString*)x[1].s_class);
        x[0].s_class = (void*)xret;
    }
    static void x_11(Smoke::Stack x) {
        // static QString tr(const char*)
        QString xret = QSqlDriverPlugin::tr((const char*)x[1].s_class,(const char*)0);
        x[0].s_class = (void*)new QString(xret);
    }
    static void x_12(Smoke::Stack x) {
        // static QString trUtf8(const char*)
        QString xret = QSqlDriverPlugin::trUtf8((const char*)x[1].s_class,(const char*)0);
        x[0].s_class = (void*)new QString(xret);
    }
    static void x_13(Smoke::Stack x) {
        // QSqlDriverPlugin* QSqlDriverPlugin()
        x_QSqlDriverPlugin* xret = new x_QSqlDriverPlugin((QObject*)0);
        x[0].s_class = (void*)xret;
    }
    static void x_14(Smoke::Stack x) {
        // static const QMetaObject staticMetaObject
        x[0].s_class = (void*)&QSqlDriverPlugin::staticMetaObject;
    }
    virtual const QMetaObject* metaObject() const {
        Smoke::StackItem x[1];
        if (this->_binding->callMethod(197, (void*)this, x)) return (const QMetaObject*)x[0].s_class;
        return this->QSqlDriverPlugin::metaObject();
    }
    virtual void* qt_metacast(const char* x1) {
        Smoke::StackItem x[2];
        x[1].s_class = (void*)x1;
        if (this->_binding->callMethod(198, (void*)this, x)) return (void*)x[0].s_class;
        return this->QSqlDriverPlugin::qt_metacast(x1);
    }
    virtual int qt_metacall(QMetaObject::Call x1, int x2, void** x3) {
        Smoke::StackItem x[4];
        x[1].s_enum = x1;
        x[2].s_int = x2;
        x[3].s_class = (void*)x3;
        if (this->_binding->callMethod(203, (void*)this, x)) return (int)x[0].s_int;
        return this->QSqlDriverPlugin::qt_metacall(x1, x2, x3);
    }
    virtual QStringList keys() const {
        Smoke::StackItem x[1];
        this->_binding->callMethod(205, (void*)this, x, true /*pure virtual*/);
        QStringList* xptr = (QStringList*)x[0].s_class;
        QStringList xret(*xptr);
        delete xptr;
        return xret;
    }
    virtual QSqlDriver* create(const QString& x1) {
        Smoke::StackItem x[2];
        x[1].s_class = (void*)&x1;
        this->_binding->callMethod(206, (void*)this, x, true /*pure virtual*/);
        return (QSqlDriver*)x[0].s_class;
    }
    virtual bool event(QEvent* x1) {
        Smoke::StackItem x[2];
        x[1].s_class = (void*)x1;
        if (this->_binding->callMethod(38, (void*)this, x)) return (bool)x[0].s_bool;
        return this->QObject::event(x1);
    }
    virtual bool eventFilter(QObject* x1, QEvent* x2) {
        Smoke::StackItem x[3];
        x[1].s_class = (void*)x1;
        x[2].s_class = (void*)x2;
        if (this->_binding->callMethod(39, (void*)this, x)) return (bool)x[0].s_bool;
        return this->QObject::eventFilter(x1, x2);
    }
    virtual void timerEvent(QTimerEvent* x1) {
        Smoke::StackItem x[2];
        x[1].s_class = (void*)x1;
        if (this->_binding->callMethod(40, (void*)this, x)) return;
        this->QObject::timerEvent(x1);
    }
    virtual void childEvent(QChildEvent* x1) {
        Smoke::StackItem x[2];
        x[1].s_class = (void*)x1;
        if (this->_binding->callMethod(41, (void*)this, x)) return;
        this->QObject::childEvent(x1);
    }
    virtual void customEvent(QEvent* x1) {
        Smoke::StackItem x[2];
        x[1].s_class = (void*)x1;
        if (this->_binding->callMethod(42, (void*)this, x)) return;
        this->QObject::customEvent(x1);
    }
    virtual void connectNotify(const char* x1) {
        Smoke::StackItem x[2];
        x[1].s_class = (void*)x1;
        if (this->_binding->callMethod(43, (void*)this, x)) return;
        this->QObject::connectNotify(x1);
    }
    virtual void disconnectNotify(const char* x1) {
        Smoke::StackItem x[2];
        x[1].s_class = (void*)x1;
        if (this->_binding->callMethod(44, (void*)this, x)) return;
        this->QObject::disconnectNotify(x1);
    }
    ~x_QSqlDriverPlugin() { this->_binding->deleted(26, (void*)this); }
};
void xcall_QSqlDriverPlugin(Smoke::Index xi, void *obj, Smoke::Stack args) {
    x_QSqlDriverPlugin *xself = (x_QSqlDriverPlugin*)obj;
    switch(xi) {
        case 0: xself->x_0(args);	break;
        case 1: xself->x_1(args);	break;
        case 2: xself->x_2(args);	break;
        case 3: x_QSqlDriverPlugin::x_3(args);	break;
        case 4: x_QSqlDriverPlugin::x_4(args);	break;
        case 5: x_QSqlDriverPlugin::x_5(args);	break;
        case 6: x_QSqlDriverPlugin::x_6(args);	break;
        case 7: xself->x_7(args);	break;
        case 8: x_QSqlDriverPlugin::x_8(args);	break;
        case 9: xself->x_9(args);	break;
        case 10: xself->x_10(args);	break;
        case 11: x_QSqlDriverPlugin::x_11(args);	break;
        case 12: x_QSqlDriverPlugin::x_12(args);	break;
        case 13: x_QSqlDriverPlugin::x_13(args);	break;
        case 14: x_QSqlDriverPlugin::x_14(args);	break;
        case 15: delete (QSqlDriverPlugin*)xself;	break;
    }
}
class x_QSqlError : public QSqlError {
    SmokeBinding* _binding;
public:
    void x_0(Smoke::Stack x) {
        // set the smoke binding
        _binding = (SmokeBinding*)x[1].s_class;
    }
    static void x_1(Smoke::Stack x) {
        // QSqlError* QSqlError(const QString&, const QString&, QSqlError::ErrorType, int)
        x_QSqlError* xret = new x_QSqlError(*(const QString*)x[1].s_class,*(const QString*)x[2].s_class,(QSqlError::ErrorType)x[3].s_enum,(int)x[4].s_int);
        x[0].s_class = (void*)xret;
    }
    explicit x_QSqlError(const QString& x1, const QString& x2, QSqlError::ErrorType x3, int x4) : QSqlError(x1, x2, x3, x4) {}
    static void x_2(Smoke::Stack x) {
        // QSqlError* QSqlError(const QSqlError&)
        x_QSqlError* xret = new x_QSqlError(*(const QSqlError*)x[1].s_class);
        x[0].s_class = (void*)xret;
    }
    explicit x_QSqlError(const QSqlError& x1) : QSqlError(x1) {}
    void x_3(Smoke::Stack x) {
        // QSqlError& operator=(const QSqlError&)
        QSqlError& xret = this->QSqlError::operator=(*(const QSqlError*)x[1].s_class);
        x[0].s_class = (void*)&xret;
    }
    void x_4(Smoke::Stack x) {
        // QString driverText() const
        QString xret = ((const x_QSqlError*)this)->QSqlError::driverText();
        x[0].s_class = (void*)new QString(xret);
    }
    void x_5(Smoke::Stack x) {
        // void setDriverText(const QString&)
        this->QSqlError::setDriverText(*(const QString*)x[1].s_class);
        (void)x; // noop (for compiler warning)
    }
    void x_6(Smoke::Stack x) {
        // QString databaseText() const
        QString xret = ((const x_QSqlError*)this)->QSqlError::databaseText();
        x[0].s_class = (void*)new QString(xret);
    }
    void x_7(Smoke::Stack x) {
        // void setDatabaseText(const QString&)
        this->QSqlError::setDatabaseText(*(const QString*)x[1].s_class);
        (void)x; // noop (for compiler warning)
    }
    void x_8(Smoke::Stack x) {
        // QSqlError::ErrorType type() const
        QSqlError::ErrorType xret = ((const x_QSqlError*)this)->QSqlError::type();
        x[0].s_enum = xret;
    }
    void x_9(Smoke::Stack x) {
        // void setType(QSqlError::ErrorType)
        this->QSqlError::setType((QSqlError::ErrorType)x[1].s_enum);
        (void)x; // noop (for compiler warning)
    }
    void x_10(Smoke::Stack x) {
        // int number() const
        int xret = ((const x_QSqlError*)this)->QSqlError::number();
        x[0].s_int = xret;
    }
    void x_11(Smoke::Stack x) {
        // void setNumber(int)
        this->QSqlError::setNumber((int)x[1].s_int);
        (void)x; // noop (for compiler warning)
    }
    void x_12(Smoke::Stack x) {
        // QString text() const
        QString xret = ((const x_QSqlError*)this)->QSqlError::text();
        x[0].s_class = (void*)new QString(xret);
    }
    void x_13(Smoke::Stack x) {
        // bool isValid() const
        bool xret = ((const x_QSqlError*)this)->QSqlError::isValid();
        x[0].s_bool = xret;
    }
    static void x_14(Smoke::Stack x) {
        // QSqlError* QSqlError()
        x_QSqlError* xret = new x_QSqlError((const QString&)QString(),(const QString&)QString(),(QSqlError::ErrorType)QSqlError::NoError,(int)-1);
        x[0].s_class = (void*)xret;
    }
    static void x_15(Smoke::Stack x) {
        // QSqlError* QSqlError(const QString&)
        x_QSqlError* xret = new x_QSqlError(*(const QString*)x[1].s_class,(const QString&)QString(),(QSqlError::ErrorType)QSqlError::NoError,(int)-1);
        x[0].s_class = (void*)xret;
    }
    static void x_16(Smoke::Stack x) {
        // QSqlError* QSqlError(const QString&, const QString&)
        x_QSqlError* xret = new x_QSqlError(*(const QString*)x[1].s_class,*(const QString*)x[2].s_class,(QSqlError::ErrorType)QSqlError::NoError,(int)-1);
        x[0].s_class = (void*)xret;
    }
    static void x_17(Smoke::Stack x) {
        // QSqlError* QSqlError(const QString&, const QString&, QSqlError::ErrorType)
        x_QSqlError* xret = new x_QSqlError(*(const QString*)x[1].s_class,*(const QString*)x[2].s_class,(QSqlError::ErrorType)x[3].s_enum,(int)-1);
        x[0].s_class = (void*)xret;
    }
    static void x_18(Smoke::Stack x) {
        x[0].s_enum = (long)QSqlError::NoError;
    }
    static void x_19(Smoke::Stack x) {
        x[0].s_enum = (long)QSqlError::ConnectionError;
    }
    static void x_20(Smoke::Stack x) {
        x[0].s_enum = (long)QSqlError::StatementError;
    }
    static void x_21(Smoke::Stack x) {
        x[0].s_enum = (long)QSqlError::TransactionError;
    }
    static void x_22(Smoke::Stack x) {
        x[0].s_enum = (long)QSqlError::UnknownError;
    }
    static void xenum_operation(Smoke::EnumOperation xop, Smoke::Index xtype, void *&xdata, long &xvalue) {
        switch(xtype) {
        case 43: //QSqlError::ErrorType
            switch(xop) {
                case Smoke::EnumNew:
                    xdata = (void*)new QSqlError::ErrorType;
                    break;
                case Smoke::EnumDelete:
                    delete (QSqlError::ErrorType*)xdata;
                    break;
                case Smoke::EnumFromLong:
                    *(QSqlError::ErrorType*)xdata = (QSqlError::ErrorType)xvalue;
                    break;
                case Smoke::EnumToLong:
                    xvalue = (long)*(QSqlError::ErrorType*)xdata;
                    break;
            }
            break;
        }
    }
    ~x_QSqlError() { this->_binding->deleted(27, (void*)this); }
};
void xenum_QSqlError(Smoke::EnumOperation xop, Smoke::Index xtype, void *&xdata, long &xvalue) {
    x_QSqlError::xenum_operation(xop, xtype, xdata, xvalue);
}
void xcall_QSqlError(Smoke::Index xi, void *obj, Smoke::Stack args) {
    x_QSqlError *xself = (x_QSqlError*)obj;
    switch(xi) {
        case 0: xself->x_0(args);	break;
        case 1: x_QSqlError::x_1(args);	break;
        case 2: x_QSqlError::x_2(args);	break;
        case 3: xself->x_3(args);	break;
        case 4: xself->x_4(args);	break;
        case 5: xself->x_5(args);	break;
        case 6: xself->x_6(args);	break;
        case 7: xself->x_7(args);	break;
        case 8: xself->x_8(args);	break;
        case 9: xself->x_9(args);	break;
        case 10: xself->x_10(args);	break;
        case 11: xself->x_11(args);	break;
        case 12: xself->x_12(args);	break;
        case 13: xself->x_13(args);	break;
        case 14: x_QSqlError::x_14(args);	break;
        case 15: x_QSqlError::x_15(args);	break;
        case 16: x_QSqlError::x_16(args);	break;
        case 17: x_QSqlError::x_17(args);	break;
        case 18: x_QSqlError::x_18(args);	break;
        case 19: x_QSqlError::x_19(args);	break;
        case 20: x_QSqlError::x_20(args);	break;
        case 21: x_QSqlError::x_21(args);	break;
        case 22: x_QSqlError::x_22(args);	break;
        case 23: delete (QSqlError*)xself;	break;
    }
}
class x_QSqlField : public QSqlField {
    SmokeBinding* _binding;
public:
    void x_0(Smoke::Stack x) {
        // set the smoke binding
        _binding = (SmokeBinding*)x[1].s_class;
    }
    static void x_1(Smoke::Stack x) {
        // QSqlField* QSqlField(const QString&, QVariant::Type)
        x_QSqlField* xret = new x_QSqlField(*(const QString*)x[1].s_class,(QVariant::Type)x[2].s_enum);
        x[0].s_class = (void*)xret;
    }
    explicit x_QSqlField(const QString& x1, QVariant::Type x2) : QSqlField(x1, x2) {}
    static void x_2(Smoke::Stack x) {
        // QSqlField* QSqlField(const QSqlField&)
        x_QSqlField* xret = new x_QSqlField(*(const QSqlField*)x[1].s_class);
        x[0].s_class = (void*)xret;
    }
    explicit x_QSqlField(const QSqlField& x1) : QSqlField(x1) {}
    void x_3(Smoke::Stack x) {
        // QSqlField& operator=(const QSqlField&)
        QSqlField& xret = this->QSqlField::operator=(*(const QSqlField*)x[1].s_class);
        x[0].s_class = (void*)&xret;
    }
    void x_4(Smoke::Stack x) {
        // bool operator==(const QSqlField&) const
        bool xret = ((const x_QSqlField*)this)->QSqlField::operator==(*(const QSqlField*)x[1].s_class);
        x[0].s_bool = xret;
    }
    void x_5(Smoke::Stack x) {
        // bool operator!=(const QSqlField&) const
        bool xret = ((const x_QSqlField*)this)->QSqlField::operator!=(*(const QSqlField*)x[1].s_class);
        x[0].s_bool = xret;
    }
    void x_6(Smoke::Stack x) {
        // void setValue(const QVariant&)
        this->QSqlField::setValue(*(const QVariant*)x[1].s_class);
        (void)x; // noop (for compiler warning)
    }
    void x_7(Smoke::Stack x) {
        // QVariant value() const
        QVariant xret = ((const x_QSqlField*)this)->QSqlField::value();
        x[0].s_class = (void*)new QVariant(xret);
    }
    void x_8(Smoke::Stack x) {
        // void setName(const QString&)
        this->QSqlField::setName(*(const QString*)x[1].s_class);
        (void)x; // noop (for compiler warning)
    }
    void x_9(Smoke::Stack x) {
        // QString name() const
        QString xret = ((const x_QSqlField*)this)->QSqlField::name();
        x[0].s_class = (void*)new QString(xret);
    }
    void x_10(Smoke::Stack x) {
        // bool isNull() const
        bool xret = ((const x_QSqlField*)this)->QSqlField::isNull();
        x[0].s_bool = xret;
    }
    void x_11(Smoke::Stack x) {
        // void setReadOnly(bool)
        this->QSqlField::setReadOnly((bool)x[1].s_bool);
        (void)x; // noop (for compiler warning)
    }
    void x_12(Smoke::Stack x) {
        // bool isReadOnly() const
        bool xret = ((const x_QSqlField*)this)->QSqlField::isReadOnly();
        x[0].s_bool = xret;
    }
    void x_13(Smoke::Stack x) {
        // void clear()
        this->QSqlField::clear();
        (void)x; // noop (for compiler warning)
    }
    void x_14(Smoke::Stack x) {
        // QVariant::Type type() const
        QVariant::Type xret = ((const x_QSqlField*)this)->QSqlField::type();
        x[0].s_enum = xret;
    }
    void x_15(Smoke::Stack x) {
        // bool isAutoValue() const
        bool xret = ((const x_QSqlField*)this)->QSqlField::isAutoValue();
        x[0].s_bool = xret;
    }
    void x_16(Smoke::Stack x) {
        // void setType(QVariant::Type)
        this->QSqlField::setType((QVariant::Type)x[1].s_enum);
        (void)x; // noop (for compiler warning)
    }
    void x_17(Smoke::Stack x) {
        // void setRequiredStatus(QSqlField::RequiredStatus)
        this->QSqlField::setRequiredStatus((QSqlField::RequiredStatus)x[1].s_enum);
        (void)x; // noop (for compiler warning)
    }
    void x_18(Smoke::Stack x) {
        // void setRequired(bool)
        this->QSqlField::setRequired((bool)x[1].s_bool);
        (void)x; // noop (for compiler warning)
    }
    void x_19(Smoke::Stack x) {
        // void setLength(int)
        this->QSqlField::setLength((int)x[1].s_int);
        (void)x; // noop (for compiler warning)
    }
    void x_20(Smoke::Stack x) {
        // void setPrecision(int)
        this->QSqlField::setPrecision((int)x[1].s_int);
        (void)x; // noop (for compiler warning)
    }
    void x_21(Smoke::Stack x) {
        // void setDefaultValue(const QVariant&)
        this->QSqlField::setDefaultValue(*(const QVariant*)x[1].s_class);
        (void)x; // noop (for compiler warning)
    }
    void x_22(Smoke::Stack x) {
        // void setSqlType(int)
        this->QSqlField::setSqlType((int)x[1].s_int);
        (void)x; // noop (for compiler warning)
    }
    void x_23(Smoke::Stack x) {
        // void setGenerated(bool)
        this->QSqlField::setGenerated((bool)x[1].s_bool);
        (void)x; // noop (for compiler warning)
    }
    void x_24(Smoke::Stack x) {
        // void setAutoValue(bool)
        this->QSqlField::setAutoValue((bool)x[1].s_bool);
        (void)x; // noop (for compiler warning)
    }
    void x_25(Smoke::Stack x) {
        // QSqlField::RequiredStatus requiredStatus() const
        QSqlField::RequiredStatus xret = ((const x_QSqlField*)this)->QSqlField::requiredStatus();
        x[0].s_enum = xret;
    }
    void x_26(Smoke::Stack x) {
        // int length() const
        int xret = ((const x_QSqlField*)this)->QSqlField::length();
        x[0].s_int = xret;
    }
    void x_27(Smoke::Stack x) {
        // int precision() const
        int xret = ((const x_QSqlField*)this)->QSqlField::precision();
        x[0].s_int = xret;
    }
    void x_28(Smoke::Stack x) {
        // QVariant defaultValue() const
        QVariant xret = ((const x_QSqlField*)this)->QSqlField::defaultValue();
        x[0].s_class = (void*)new QVariant(xret);
    }
    void x_29(Smoke::Stack x) {
        // int typeID() const
        int xret = ((const x_QSqlField*)this)->QSqlField::typeID();
        x[0].s_int = xret;
    }
    void x_30(Smoke::Stack x) {
        // bool isGenerated() const
        bool xret = ((const x_QSqlField*)this)->QSqlField::isGenerated();
        x[0].s_bool = xret;
    }
    void x_31(Smoke::Stack x) {
        // bool isValid() const
        bool xret = ((const x_QSqlField*)this)->QSqlField::isValid();
        x[0].s_bool = xret;
    }
    static void x_32(Smoke::Stack x) {
        // QSqlField* QSqlField()
        x_QSqlField* xret = new x_QSqlField((const QString&)QString(),(QVariant::Type)QVariant::Invalid);
        x[0].s_class = (void*)xret;
    }
    static void x_33(Smoke::Stack x) {
        // QSqlField* QSqlField(const QString&)
        x_QSqlField* xret = new x_QSqlField(*(const QString*)x[1].s_class,(QVariant::Type)QVariant::Invalid);
        x[0].s_class = (void*)xret;
    }
    static void x_34(Smoke::Stack x) {
        x[0].s_enum = (long)QSqlField::Unknown;
    }
    static void x_35(Smoke::Stack x) {
        x[0].s_enum = (long)QSqlField::Optional;
    }
    static void x_36(Smoke::Stack x) {
        x[0].s_enum = (long)QSqlField::Required;
    }
    static void xenum_operation(Smoke::EnumOperation xop, Smoke::Index xtype, void *&xdata, long &xvalue) {
        switch(xtype) {
        case 47: //QSqlField::RequiredStatus
            switch(xop) {
                case Smoke::EnumNew:
                    xdata = (void*)new QSqlField::RequiredStatus;
                    break;
                case Smoke::EnumDelete:
                    delete (QSqlField::RequiredStatus*)xdata;
                    break;
                case Smoke::EnumFromLong:
                    *(QSqlField::RequiredStatus*)xdata = (QSqlField::RequiredStatus)xvalue;
                    break;
                case Smoke::EnumToLong:
                    xvalue = (long)*(QSqlField::RequiredStatus*)xdata;
                    break;
            }
            break;
        }
    }
    ~x_QSqlField() { this->_binding->deleted(28, (void*)this); }
};
void xenum_QSqlField(Smoke::EnumOperation xop, Smoke::Index xtype, void *&xdata, long &xvalue) {
    x_QSqlField::xenum_operation(xop, xtype, xdata, xvalue);
}
void xcall_QSqlField(Smoke::Index xi, void *obj, Smoke::Stack args) {
    x_QSqlField *xself = (x_QSqlField*)obj;
    switch(xi) {
        case 0: xself->x_0(args);	break;
        case 1: x_QSqlField::x_1(args);	break;
        case 2: x_QSqlField::x_2(args);	break;
        case 3: xself->x_3(args);	break;
        case 4: xself->x_4(args);	break;
        case 5: xself->x_5(args);	break;
        case 6: xself->x_6(args);	break;
        case 7: xself->x_7(args);	break;
        case 8: xself->x_8(args);	break;
        case 9: xself->x_9(args);	break;
        case 10: xself->x_10(args);	break;
        case 11: xself->x_11(args);	break;
        case 12: xself->x_12(args);	break;
        case 13: xself->x_13(args);	break;
        case 14: xself->x_14(args);	break;
        case 15: xself->x_15(args);	break;
        case 16: xself->x_16(args);	break;
        case 17: xself->x_17(args);	break;
        case 18: xself->x_18(args);	break;
        case 19: xself->x_19(args);	break;
        case 20: xself->x_20(args);	break;
        case 21: xself->x_21(args);	break;
        case 22: xself->x_22(args);	break;
        case 23: xself->x_23(args);	break;
        case 24: xself->x_24(args);	break;
        case 25: xself->x_25(args);	break;
        case 26: xself->x_26(args);	break;
        case 27: xself->x_27(args);	break;
        case 28: xself->x_28(args);	break;
        case 29: xself->x_29(args);	break;
        case 30: xself->x_30(args);	break;
        case 31: xself->x_31(args);	break;
        case 32: x_QSqlField::x_32(args);	break;
        case 33: x_QSqlField::x_33(args);	break;
        case 34: x_QSqlField::x_34(args);	break;
        case 35: x_QSqlField::x_35(args);	break;
        case 36: x_QSqlField::x_36(args);	break;
        case 37: delete (QSqlField*)xself;	break;
    }
}
class x_QSqlIndex : public QSqlIndex {
    SmokeBinding* _binding;
public:
    void x_0(Smoke::Stack x) {
        // set the smoke binding
        _binding = (SmokeBinding*)x[1].s_class;
    }
    static void x_1(Smoke::Stack x) {
        // QSqlIndex* QSqlIndex(const QString&, const QString&)
        x_QSqlIndex* xret = new x_QSqlIndex(*(const QString*)x[1].s_class,*(const QString*)x[2].s_class);
        x[0].s_class = (void*)xret;
    }
    explicit x_QSqlIndex(const QString& x1, const QString& x2) : QSqlIndex(x1, x2) {}
    static void x_2(Smoke::Stack x) {
        // QSqlIndex* QSqlIndex(const QSqlIndex&)
        x_QSqlIndex* xret = new x_QSqlIndex(*(const QSqlIndex*)x[1].s_class);
        x[0].s_class = (void*)xret;
    }
    explicit x_QSqlIndex(const QSqlIndex& x1) : QSqlIndex(x1) {}
    void x_3(Smoke::Stack x) {
        // QSqlIndex& operator=(const QSqlIndex&)
        QSqlIndex& xret = this->QSqlIndex::operator=(*(const QSqlIndex*)x[1].s_class);
        x[0].s_class = (void*)&xret;
    }
    void x_4(Smoke::Stack x) {
        // void setCursorName(const QString&)
        this->QSqlIndex::setCursorName(*(const QString*)x[1].s_class);
        (void)x; // noop (for compiler warning)
    }
    void x_5(Smoke::Stack x) {
        // QString cursorName() const
        QString xret = ((const x_QSqlIndex*)this)->QSqlIndex::cursorName();
        x[0].s_class = (void*)new QString(xret);
    }
    void x_6(Smoke::Stack x) {
        // void setName(const QString&)
        this->QSqlIndex::setName(*(const QString*)x[1].s_class);
        (void)x; // noop (for compiler warning)
    }
    void x_7(Smoke::Stack x) {
        // QString name() const
        QString xret = ((const x_QSqlIndex*)this)->QSqlIndex::name();
        x[0].s_class = (void*)new QString(xret);
    }
    void x_8(Smoke::Stack x) {
        // void append(const QSqlField&)
        this->QSqlIndex::append(*(const QSqlField*)x[1].s_class);
        (void)x; // noop (for compiler warning)
    }
    void x_9(Smoke::Stack x) {
        // void append(const QSqlField&, bool)
        this->QSqlIndex::append(*(const QSqlField*)x[1].s_class,(bool)x[2].s_bool);
        (void)x; // noop (for compiler warning)
    }
    void x_10(Smoke::Stack x) {
        // bool isDescending(int) const
        bool xret = ((const x_QSqlIndex*)this)->QSqlIndex::isDescending((int)x[1].s_int);
        x[0].s_bool = xret;
    }
    void x_11(Smoke::Stack x) {
        // void setDescending(int, bool)
        this->QSqlIndex::setDescending((int)x[1].s_int,(bool)x[2].s_bool);
        (void)x; // noop (for compiler warning)
    }
    static void x_12(Smoke::Stack x) {
        // QSqlIndex* QSqlIndex()
        x_QSqlIndex* xret = new x_QSqlIndex((const QString&)QString(),(const QString&)QString());
        x[0].s_class = (void*)xret;
    }
    static void x_13(Smoke::Stack x) {
        // QSqlIndex* QSqlIndex(const QString&)
        x_QSqlIndex* xret = new x_QSqlIndex(*(const QString*)x[1].s_class,(const QString&)QString());
        x[0].s_class = (void*)xret;
    }
    ~x_QSqlIndex() { this->_binding->deleted(29, (void*)this); }
};
void xcall_QSqlIndex(Smoke::Index xi, void *obj, Smoke::Stack args) {
    x_QSqlIndex *xself = (x_QSqlIndex*)obj;
    switch(xi) {
        case 0: xself->x_0(args);	break;
        case 1: x_QSqlIndex::x_1(args);	break;
        case 2: x_QSqlIndex::x_2(args);	break;
        case 3: xself->x_3(args);	break;
        case 4: xself->x_4(args);	break;
        case 5: xself->x_5(args);	break;
        case 6: xself->x_6(args);	break;
        case 7: xself->x_7(args);	break;
        case 8: xself->x_8(args);	break;
        case 9: xself->x_9(args);	break;
        case 10: xself->x_10(args);	break;
        case 11: xself->x_11(args);	break;
        case 12: x_QSqlIndex::x_12(args);	break;
        case 13: x_QSqlIndex::x_13(args);	break;
        case 14: delete (QSqlIndex*)xself;	break;
    }
}
class x_QSqlQuery : public QSqlQuery {
    SmokeBinding* _binding;
public:
    void x_0(Smoke::Stack x) {
        // set the smoke binding
        _binding = (SmokeBinding*)x[1].s_class;
    }
    static void x_1(Smoke::Stack x) {
        // QSqlQuery* QSqlQuery(QSqlResult*)
        x_QSqlQuery* xret = new x_QSqlQuery((QSqlResult*)x[1].s_class);
        x[0].s_class = (void*)xret;
    }
    explicit x_QSqlQuery(QSqlResult* x1) : QSqlQuery(x1) {}
    static void x_2(Smoke::Stack x) {
        // QSqlQuery* QSqlQuery(const QString&, QSqlDatabase)
        x_QSqlQuery* xret = new x_QSqlQuery(*(const QString*)x[1].s_class,*(QSqlDatabase*)x[2].s_class);
        x[0].s_class = (void*)xret;
    }
    explicit x_QSqlQuery(const QString& x1, QSqlDatabase x2) : QSqlQuery(x1, x2) {}
    static void x_3(Smoke::Stack x) {
        // QSqlQuery* QSqlQuery(QSqlDatabase)
        x_QSqlQuery* xret = new x_QSqlQuery(*(QSqlDatabase*)x[1].s_class);
        x[0].s_class = (void*)xret;
    }
    explicit x_QSqlQuery(QSqlDatabase x1) : QSqlQuery(x1) {}
    static void x_4(Smoke::Stack x) {
        // QSqlQuery* QSqlQuery(const QSqlQuery&)
        x_QSqlQuery* xret = new x_QSqlQuery(*(const QSqlQuery*)x[1].s_class);
        x[0].s_class = (void*)xret;
    }
    explicit x_QSqlQuery(const QSqlQuery& x1) : QSqlQuery(x1) {}
    void x_5(Smoke::Stack x) {
        // QSqlQuery& operator=(const QSqlQuery&)
        QSqlQuery& xret = this->QSqlQuery::operator=(*(const QSqlQuery*)x[1].s_class);
        x[0].s_class = (void*)&xret;
    }
    void x_6(Smoke::Stack x) {
        // bool isValid() const
        bool xret = ((const x_QSqlQuery*)this)->QSqlQuery::isValid();
        x[0].s_bool = xret;
    }
    void x_7(Smoke::Stack x) {
        // bool isActive() const
        bool xret = ((const x_QSqlQuery*)this)->QSqlQuery::isActive();
        x[0].s_bool = xret;
    }
    void x_8(Smoke::Stack x) {
        // bool isNull(int) const
        bool xret = ((const x_QSqlQuery*)this)->QSqlQuery::isNull((int)x[1].s_int);
        x[0].s_bool = xret;
    }
    void x_9(Smoke::Stack x) {
        // int at() const
        int xret = ((const x_QSqlQuery*)this)->QSqlQuery::at();
        x[0].s_int = xret;
    }
    void x_10(Smoke::Stack x) {
        // QString lastQuery() const
        QString xret = ((const x_QSqlQuery*)this)->QSqlQuery::lastQuery();
        x[0].s_class = (void*)new QString(xret);
    }
    void x_11(Smoke::Stack x) {
        // int numRowsAffected() const
        int xret = ((const x_QSqlQuery*)this)->QSqlQuery::numRowsAffected();
        x[0].s_int = xret;
    }
    void x_12(Smoke::Stack x) {
        // QSqlError lastError() const
        QSqlError xret = ((const x_QSqlQuery*)this)->QSqlQuery::lastError();
        x[0].s_class = (void*)new QSqlError(xret);
    }
    void x_13(Smoke::Stack x) {
        // bool isSelect() const
        bool xret = ((const x_QSqlQuery*)this)->QSqlQuery::isSelect();
        x[0].s_bool = xret;
    }
    void x_14(Smoke::Stack x) {
        // int size() const
        int xret = ((const x_QSqlQuery*)this)->QSqlQuery::size();
        x[0].s_int = xret;
    }
    void x_15(Smoke::Stack x) {
        // const QSqlDriver* driver() const
        const QSqlDriver* xret = ((const x_QSqlQuery*)this)->QSqlQuery::driver();
        x[0].s_class = (void*)xret;
    }
    void x_16(Smoke::Stack x) {
        // const QSqlResult* result() const
        const QSqlResult* xret = ((const x_QSqlQuery*)this)->QSqlQuery::result();
        x[0].s_class = (void*)xret;
    }
    void x_17(Smoke::Stack x) {
        // bool isForwardOnly() const
        bool xret = ((const x_QSqlQuery*)this)->QSqlQuery::isForwardOnly();
        x[0].s_bool = xret;
    }
    void x_18(Smoke::Stack x) {
        // QSqlRecord record() const
        QSqlRecord xret = ((const x_QSqlQuery*)this)->QSqlQuery::record();
        x[0].s_class = (void*)new QSqlRecord(xret);
    }
    void x_19(Smoke::Stack x) {
        // void setForwardOnly(bool)
        this->QSqlQuery::setForwardOnly((bool)x[1].s_bool);
        (void)x; // noop (for compiler warning)
    }
    void x_20(Smoke::Stack x) {
        // bool exec(const QString&)
        bool xret = this->QSqlQuery::exec(*(const QString*)x[1].s_class);
        x[0].s_bool = xret;
    }
    void x_21(Smoke::Stack x) {
        // QVariant value(int) const
        QVariant xret = ((const x_QSqlQuery*)this)->QSqlQuery::value((int)x[1].s_int);
        x[0].s_class = (void*)new QVariant(xret);
    }
    void x_22(Smoke::Stack x) {
        // void setNumericalPrecisionPolicy(QSql::NumericalPrecisionPolicy)
        this->QSqlQuery::setNumericalPrecisionPolicy((QSql::NumericalPrecisionPolicy)x[1].s_enum);
        (void)x; // noop (for compiler warning)
    }
    void x_23(Smoke::Stack x) {
        // QSql::NumericalPrecisionPolicy numericalPrecisionPolicy() const
        QSql::NumericalPrecisionPolicy xret = ((const x_QSqlQuery*)this)->QSqlQuery::numericalPrecisionPolicy();
        x[0].s_enum = xret;
    }
    void x_24(Smoke::Stack x) {
        // bool seek(int, bool)
        bool xret = this->QSqlQuery::seek((int)x[1].s_int,(bool)x[2].s_bool);
        x[0].s_bool = xret;
    }
    void x_25(Smoke::Stack x) {
        // bool next()
        bool xret = this->QSqlQuery::next();
        x[0].s_bool = xret;
    }
    void x_26(Smoke::Stack x) {
        // bool previous()
        bool xret = this->QSqlQuery::previous();
        x[0].s_bool = xret;
    }
    void x_27(Smoke::Stack x) {
        // bool first()
        bool xret = this->QSqlQuery::first();
        x[0].s_bool = xret;
    }
    void x_28(Smoke::Stack x) {
        // bool last()
        bool xret = this->QSqlQuery::last();
        x[0].s_bool = xret;
    }
    void x_29(Smoke::Stack x) {
        // void clear()
        this->QSqlQuery::clear();
        (void)x; // noop (for compiler warning)
    }
    void x_30(Smoke::Stack x) {
        // bool exec()
        bool xret = this->QSqlQuery::exec();
        x[0].s_bool = xret;
    }
    void x_31(Smoke::Stack x) {
        // bool execBatch(QSqlQuery::BatchExecutionMode)
        bool xret = this->QSqlQuery::execBatch((QSqlQuery::BatchExecutionMode)x[1].s_enum);
        x[0].s_bool = xret;
    }
    void x_32(Smoke::Stack x) {
        // bool prepare(const QString&)
        bool xret = this->QSqlQuery::prepare(*(const QString*)x[1].s_class);
        x[0].s_bool = xret;
    }
    void x_33(Smoke::Stack x) {
        // void bindValue(const QString&, const QVariant&, QFlags<QSql::ParamTypeFlag>)
        this->QSqlQuery::bindValue(*(const QString*)x[1].s_class,*(const QVariant*)x[2].s_class,(QFlags<QSql::ParamTypeFlag>)x[3].s_uint);
        (void)x; // noop (for compiler warning)
    }
    void x_34(Smoke::Stack x) {
        // void bindValue(int, const QVariant&, QFlags<QSql::ParamTypeFlag>)
        this->QSqlQuery::bindValue((int)x[1].s_int,*(const QVariant*)x[2].s_class,(QFlags<QSql::ParamTypeFlag>)x[3].s_uint);
        (void)x; // noop (for compiler warning)
    }
    void x_35(Smoke::Stack x) {
        // void addBindValue(const QVariant&, QFlags<QSql::ParamTypeFlag>)
        this->QSqlQuery::addBindValue(*(const QVariant*)x[1].s_class,(QFlags<QSql::ParamTypeFlag>)x[2].s_uint);
        (void)x; // noop (for compiler warning)
    }
    void x_36(Smoke::Stack x) {
        // QVariant boundValue(const QString&) const
        QVariant xret = ((const x_QSqlQuery*)this)->QSqlQuery::boundValue(*(const QString*)x[1].s_class);
        x[0].s_class = (void*)new QVariant(xret);
    }
    void x_37(Smoke::Stack x) {
        // QVariant boundValue(int) const
        QVariant xret = ((const x_QSqlQuery*)this)->QSqlQuery::boundValue((int)x[1].s_int);
        x[0].s_class = (void*)new QVariant(xret);
    }
    void x_38(Smoke::Stack x) {
        // QMap<QString,QVariant> boundValues() const
        QMap<QString,QVariant> xret = ((const x_QSqlQuery*)this)->QSqlQuery::boundValues();
        x[0].s_class = (void*)new QMap<QString,QVariant>(xret);
    }
    void x_39(Smoke::Stack x) {
        // QString executedQuery() const
        QString xret = ((const x_QSqlQuery*)this)->QSqlQuery::executedQuery();
        x[0].s_class = (void*)new QString(xret);
    }
    void x_40(Smoke::Stack x) {
        // QVariant lastInsertId() const
        QVariant xret = ((const x_QSqlQuery*)this)->QSqlQuery::lastInsertId();
        x[0].s_class = (void*)new QVariant(xret);
    }
    void x_41(Smoke::Stack x) {
        // void finish()
        this->QSqlQuery::finish();
        (void)x; // noop (for compiler warning)
    }
    void x_42(Smoke::Stack x) {
        // bool nextResult()
        bool xret = this->QSqlQuery::nextResult();
        x[0].s_bool = xret;
    }
    static void x_43(Smoke::Stack x) {
        // QSqlQuery* QSqlQuery()
        x_QSqlQuery* xret = new x_QSqlQuery((const QString&)QString(),(QSqlDatabase)QSqlDatabase());
        x[0].s_class = (void*)xret;
    }
    static void x_44(Smoke::Stack x) {
        // QSqlQuery* QSqlQuery(const QString&)
        x_QSqlQuery* xret = new x_QSqlQuery(*(const QString*)x[1].s_class,(QSqlDatabase)QSqlDatabase());
        x[0].s_class = (void*)xret;
    }
    void x_45(Smoke::Stack x) {
        // bool seek(int)
        bool xret = this->QSqlQuery::seek((int)x[1].s_int,(bool)false);
        x[0].s_bool = xret;
    }
    void x_46(Smoke::Stack x) {
        // bool execBatch()
        bool xret = this->QSqlQuery::execBatch((QSqlQuery::BatchExecutionMode)QSqlQuery::ValuesAsRows);
        x[0].s_bool = xret;
    }
    void x_47(Smoke::Stack x) {
        // void bindValue(const QString&, const QVariant&)
        this->QSqlQuery::bindValue(*(const QString*)x[1].s_class,*(const QVariant*)x[2].s_class,(QFlags<QSql::ParamTypeFlag>)QSql::In);
        (void)x; // noop (for compiler warning)
    }
    void x_48(Smoke::Stack x) {
        // void bindValue(int, const QVariant&)
        this->QSqlQuery::bindValue((int)x[1].s_int,*(const QVariant*)x[2].s_class,(QFlags<QSql::ParamTypeFlag>)QSql::In);
        (void)x; // noop (for compiler warning)
    }
    void x_49(Smoke::Stack x) {
        // void addBindValue(const QVariant&)
        this->QSqlQuery::addBindValue(*(const QVariant*)x[1].s_class,(QFlags<QSql::ParamTypeFlag>)QSql::In);
        (void)x; // noop (for compiler warning)
    }
    static void x_50(Smoke::Stack x) {
        x[0].s_enum = (long)QSqlQuery::ValuesAsRows;
    }
    static void x_51(Smoke::Stack x) {
        x[0].s_enum = (long)QSqlQuery::ValuesAsColumns;
    }
    static void xenum_operation(Smoke::EnumOperation xop, Smoke::Index xtype, void *&xdata, long &xvalue) {
        switch(xtype) {
        case 54: //QSqlQuery::BatchExecutionMode
            switch(xop) {
                case Smoke::EnumNew:
                    xdata = (void*)new QSqlQuery::BatchExecutionMode;
                    break;
                case Smoke::EnumDelete:
                    delete (QSqlQuery::BatchExecutionMode*)xdata;
                    break;
                case Smoke::EnumFromLong:
                    *(QSqlQuery::BatchExecutionMode*)xdata = (QSqlQuery::BatchExecutionMode)xvalue;
                    break;
                case Smoke::EnumToLong:
                    xvalue = (long)*(QSqlQuery::BatchExecutionMode*)xdata;
                    break;
            }
            break;
        }
    }
    ~x_QSqlQuery() { this->_binding->deleted(30, (void*)this); }
};
void xenum_QSqlQuery(Smoke::EnumOperation xop, Smoke::Index xtype, void *&xdata, long &xvalue) {
    x_QSqlQuery::xenum_operation(xop, xtype, xdata, xvalue);
}
void xcall_QSqlQuery(Smoke::Index xi, void *obj, Smoke::Stack args) {
    x_QSqlQuery *xself = (x_QSqlQuery*)obj;
    switch(xi) {
        case 0: xself->x_0(args);	break;
        case 1: x_QSqlQuery::x_1(args);	break;
        case 2: x_QSqlQuery::x_2(args);	break;
        case 3: x_QSqlQuery::x_3(args);	break;
        case 4: x_QSqlQuery::x_4(args);	break;
        case 5: xself->x_5(args);	break;
        case 6: xself->x_6(args);	break;
        case 7: xself->x_7(args);	break;
        case 8: xself->x_8(args);	break;
        case 9: xself->x_9(args);	break;
        case 10: xself->x_10(args);	break;
        case 11: xself->x_11(args);	break;
        case 12: xself->x_12(args);	break;
        case 13: xself->x_13(args);	break;
        case 14: xself->x_14(args);	break;
        case 15: xself->x_15(args);	break;
        case 16: xself->x_16(args);	break;
        case 17: xself->x_17(args);	break;
        case 18: xself->x_18(args);	break;
        case 19: xself->x_19(args);	break;
        case 20: xself->x_20(args);	break;
        case 21: xself->x_21(args);	break;
        case 22: xself->x_22(args);	break;
        case 23: xself->x_23(args);	break;
        case 24: xself->x_24(args);	break;
        case 25: xself->x_25(args);	break;
        case 26: xself->x_26(args);	break;
        case 27: xself->x_27(args);	break;
        case 28: xself->x_28(args);	break;
        case 29: xself->x_29(args);	break;
        case 30: xself->x_30(args);	break;
        case 31: xself->x_31(args);	break;
        case 32: xself->x_32(args);	break;
        case 33: xself->x_33(args);	break;
        case 34: xself->x_34(args);	break;
        case 35: xself->x_35(args);	break;
        case 36: xself->x_36(args);	break;
        case 37: xself->x_37(args);	break;
        case 38: xself->x_38(args);	break;
        case 39: xself->x_39(args);	break;
        case 40: xself->x_40(args);	break;
        case 41: xself->x_41(args);	break;
        case 42: xself->x_42(args);	break;
        case 43: x_QSqlQuery::x_43(args);	break;
        case 44: x_QSqlQuery::x_44(args);	break;
        case 45: xself->x_45(args);	break;
        case 46: xself->x_46(args);	break;
        case 47: xself->x_47(args);	break;
        case 48: xself->x_48(args);	break;
        case 49: xself->x_49(args);	break;
        case 50: x_QSqlQuery::x_50(args);	break;
        case 51: x_QSqlQuery::x_51(args);	break;
        case 52: delete (QSqlQuery*)xself;	break;
    }
}
class x_QSqlQueryModel : public QSqlQueryModel, public __internal_SmokeClass {
    SmokeBinding* _binding;
public:
    void x_0(Smoke::Stack x) {
        // set the smoke binding
        _binding = (SmokeBinding*)x[1].s_class;
    }
    void x_1(Smoke::Stack x) {
        // virtual const QMetaObject* metaObject() const
        if (dynamic_cast<__internal_SmokeClass*>(static_cast<QSqlQueryModel*>(this))) {
            const QMetaObject* xret = ((const x_QSqlQueryModel*)this)->QSqlQueryModel::metaObject();
            x[0].s_class = (void*)xret;
        } else {
            const QMetaObject* xret = ((const x_QSqlQueryModel*)this)->metaObject();
            x[0].s_class = (void*)xret;
        }
    }
    void x_2(Smoke::Stack x) {
        // virtual void* qt_metacast(const char*)
        if (dynamic_cast<__internal_SmokeClass*>(static_cast<QSqlQueryModel*>(this))) {
            void* xret = this->QSqlQueryModel::qt_metacast((const char*)x[1].s_class);
            x[0].s_class = (void*)xret;
        } else {
            void* xret = this->qt_metacast((const char*)x[1].s_class);
            x[0].s_class = (void*)xret;
        }
    }
    static void x_3(Smoke::Stack x) {
        // static QString tr(const char*, const char*)
        QString xret = QSqlQueryModel::tr((const char*)x[1].s_class,(const char*)x[2].s_class);
        x[0].s_class = (void*)new QString(xret);
    }
    static void x_4(Smoke::Stack x) {
        // static QString trUtf8(const char*, const char*)
        QString xret = QSqlQueryModel::trUtf8((const char*)x[1].s_class,(const char*)x[2].s_class);
        x[0].s_class = (void*)new QString(xret);
    }
    static void x_5(Smoke::Stack x) {
        // static QString tr(const char*, const char*, int)
        QString xret = QSqlQueryModel::tr((const char*)x[1].s_class,(const char*)x[2].s_class,(int)x[3].s_int);
        x[0].s_class = (void*)new QString(xret);
    }
    static void x_6(Smoke::Stack x) {
        // static QString trUtf8(const char*, const char*, int)
        QString xret = QSqlQueryModel::trUtf8((const char*)x[1].s_class,(const char*)x[2].s_class,(int)x[3].s_int);
        x[0].s_class = (void*)new QString(xret);
    }
    void x_7(Smoke::Stack x) {
        // virtual int qt_metacall(QMetaObject::Call, int, void**)
        if (dynamic_cast<__internal_SmokeClass*>(static_cast<QSqlQueryModel*>(this))) {
            int xret = this->QSqlQueryModel::qt_metacall((QMetaObject::Call)x[1].s_enum,(int)x[2].s_int,(void**)x[3].s_class);
            x[0].s_int = xret;
        } else {
            int xret = this->qt_metacall((QMetaObject::Call)x[1].s_enum,(int)x[2].s_int,(void**)x[3].s_class);
            x[0].s_int = xret;
        }
    }
    static void x_8(Smoke::Stack x) {
        // QSqlQueryModel* QSqlQueryModel(QObject*)
        x_QSqlQueryModel* xret = new x_QSqlQueryModel((QObject*)x[1].s_class);
        x[0].s_class = (void*)xret;
    }
    explicit x_QSqlQueryModel(QObject* x1) : QSqlQueryModel(x1) {}
    void x_9(Smoke::Stack x) {
        // int rowCount(const QModelIndex&) const
        if (dynamic_cast<__internal_SmokeClass*>(static_cast<QSqlQueryModel*>(this))) {
            int xret = ((const x_QSqlQueryModel*)this)->QSqlQueryModel::rowCount(*(const QModelIndex*)x[1].s_class);
            x[0].s_int = xret;
        } else {
            int xret = ((const x_QSqlQueryModel*)this)->rowCount(*(const QModelIndex*)x[1].s_class);
            x[0].s_int = xret;
        }
    }
    void x_10(Smoke::Stack x) {
        // int columnCount(const QModelIndex&) const
        if (dynamic_cast<__internal_SmokeClass*>(static_cast<QSqlQueryModel*>(this))) {
            int xret = ((const x_QSqlQueryModel*)this)->QSqlQueryModel::columnCount(*(const QModelIndex*)x[1].s_class);
            x[0].s_int = xret;
        } else {
            int xret = ((const x_QSqlQueryModel*)this)->columnCount(*(const QModelIndex*)x[1].s_class);
            x[0].s_int = xret;
        }
    }
    void x_11(Smoke::Stack x) {
        // QSqlRecord record(int) const
        QSqlRecord xret = ((const x_QSqlQueryModel*)this)->QSqlQueryModel::record((int)x[1].s_int);
        x[0].s_class = (void*)new QSqlRecord(xret);
    }
    void x_12(Smoke::Stack x) {
        // QSqlRecord record() const
        QSqlRecord xret = ((const x_QSqlQueryModel*)this)->QSqlQueryModel::record();
        x[0].s_class = (void*)new QSqlRecord(xret);
    }
    void x_13(Smoke::Stack x) {
        // QVariant data(const QModelIndex&, int) const
        if (dynamic_cast<__internal_SmokeClass*>(static_cast<QSqlQueryModel*>(this))) {
            QVariant xret = ((const x_QSqlQueryModel*)this)->QSqlQueryModel::data(*(const QModelIndex*)x[1].s_class,(int)x[2].s_int);
            x[0].s_class = (void*)new QVariant(xret);
        } else {
            QVariant xret = ((const x_QSqlQueryModel*)this)->data(*(const QModelIndex*)x[1].s_class,(int)x[2].s_int);
            x[0].s_class = (void*)new QVariant(xret);
        }
    }
    void x_14(Smoke::Stack x) {
        // QVariant headerData(int, Qt::Orientation, int) const
        if (dynamic_cast<__internal_SmokeClass*>(static_cast<QSqlQueryModel*>(this))) {
            QVariant xret = ((const x_QSqlQueryModel*)this)->QSqlQueryModel::headerData((int)x[1].s_int,(Qt::Orientation)x[2].s_enum,(int)x[3].s_int);
            x[0].s_class = (void*)new QVariant(xret);
        } else {
            QVariant xret = ((const x_QSqlQueryModel*)this)->headerData((int)x[1].s_int,(Qt::Orientation)x[2].s_enum,(int)x[3].s_int);
            x[0].s_class = (void*)new QVariant(xret);
        }
    }
    void x_15(Smoke::Stack x) {
        // bool setHeaderData(int, Qt::Orientation, const QVariant&, int)
        if (dynamic_cast<__internal_SmokeClass*>(static_cast<QSqlQueryModel*>(this))) {
            bool xret = this->QSqlQueryModel::setHeaderData((int)x[1].s_int,(Qt::Orientation)x[2].s_enum,*(const QVariant*)x[3].s_class,(int)x[4].s_int);
            x[0].s_bool = xret;
        } else {
            bool xret = this->setHeaderData((int)x[1].s_int,(Qt::Orientation)x[2].s_enum,*(const QVariant*)x[3].s_class,(int)x[4].s_int);
            x[0].s_bool = xret;
        }
    }
    void x_16(Smoke::Stack x) {
        // bool insertColumns(int, int, const QModelIndex&)
        if (dynamic_cast<__internal_SmokeClass*>(static_cast<QSqlQueryModel*>(this))) {
            bool xret = this->QSqlQueryModel::insertColumns((int)x[1].s_int,(int)x[2].s_int,*(const QModelIndex*)x[3].s_class);
            x[0].s_bool = xret;
        } else {
            bool xret = this->insertColumns((int)x[1].s_int,(int)x[2].s_int,*(const QModelIndex*)x[3].s_class);
            x[0].s_bool = xret;
        }
    }
    void x_17(Smoke::Stack x) {
        // bool removeColumns(int, int, const QModelIndex&)
        if (dynamic_cast<__internal_SmokeClass*>(static_cast<QSqlQueryModel*>(this))) {
            bool xret = this->QSqlQueryModel::removeColumns((int)x[1].s_int,(int)x[2].s_int,*(const QModelIndex*)x[3].s_class);
            x[0].s_bool = xret;
        } else {
            bool xret = this->removeColumns((int)x[1].s_int,(int)x[2].s_int,*(const QModelIndex*)x[3].s_class);
            x[0].s_bool = xret;
        }
    }
    void x_18(Smoke::Stack x) {
        // void setQuery(const QSqlQuery&)
        this->QSqlQueryModel::setQuery(*(const QSqlQuery*)x[1].s_class);
        (void)x; // noop (for compiler warning)
    }
    void x_19(Smoke::Stack x) {
        // void setQuery(const QString&, const QSqlDatabase&)
        this->QSqlQueryModel::setQuery(*(const QString*)x[1].s_class,*(const QSqlDatabase*)x[2].s_class);
        (void)x; // noop (for compiler warning)
    }
    void x_20(Smoke::Stack x) {
        // QSqlQuery query() const
        QSqlQuery xret = ((const x_QSqlQueryModel*)this)->QSqlQueryModel::query();
        x[0].s_class = (void*)new QSqlQuery(xret);
    }
    void x_21(Smoke::Stack x) {
        // virtual void clear()
        if (dynamic_cast<__internal_SmokeClass*>(static_cast<QSqlQueryModel*>(this))) {
            this->QSqlQueryModel::clear();
            (void)x; // noop (for compiler warning)
        } else {
            this->clear();
            (void)x; // noop (for compiler warning)
        }
    }
    void x_22(Smoke::Stack x) {
        // QSqlError lastError() const
        QSqlError xret = ((const x_QSqlQueryModel*)this)->QSqlQueryModel::lastError();
        x[0].s_class = (void*)new QSqlError(xret);
    }
    void x_23(Smoke::Stack x) {
        // void fetchMore(const QModelIndex&)
        if (dynamic_cast<__internal_SmokeClass*>(static_cast<QSqlQueryModel*>(this))) {
            this->QSqlQueryModel::fetchMore(*(const QModelIndex*)x[1].s_class);
            (void)x; // noop (for compiler warning)
        } else {
            this->fetchMore(*(const QModelIndex*)x[1].s_class);
            (void)x; // noop (for compiler warning)
        }
    }
    void x_24(Smoke::Stack x) {
        // bool canFetchMore(const QModelIndex&) const
        if (dynamic_cast<__internal_SmokeClass*>(static_cast<QSqlQueryModel*>(this))) {
            bool xret = ((const x_QSqlQueryModel*)this)->QSqlQueryModel::canFetchMore(*(const QModelIndex*)x[1].s_class);
            x[0].s_bool = xret;
        } else {
            bool xret = ((const x_QSqlQueryModel*)this)->canFetchMore(*(const QModelIndex*)x[1].s_class);
            x[0].s_bool = xret;
        }
    }
    void x_25(Smoke::Stack x) {
        // virtual void queryChange()
        if (dynamic_cast<__internal_SmokeClass*>(static_cast<QSqlQueryModel*>(this))) {
            this->QSqlQueryModel::queryChange();
            (void)x; // noop (for compiler warning)
        } else {
            this->queryChange();
            (void)x; // noop (for compiler warning)
        }
    }
    void x_26(Smoke::Stack x) {
        // QModelIndex indexInQuery(const QModelIndex&) const
        QModelIndex xret = ((const x_QSqlQueryModel*)this)->QSqlQueryModel::indexInQuery(*(const QModelIndex*)x[1].s_class);
        x[0].s_class = (void*)new QModelIndex(xret);
    }
    void x_27(Smoke::Stack x) {
        // void setLastError(const QSqlError&)
        this->QSqlQueryModel::setLastError(*(const QSqlError*)x[1].s_class);
        (void)x; // noop (for compiler warning)
    }
    static void x_28(Smoke::Stack x) {
        // static QString tr(const char*)
        QString xret = QSqlQueryModel::tr((const char*)x[1].s_class,(const char*)0);
        x[0].s_class = (void*)new QString(xret);
    }
    static void x_29(Smoke::Stack x) {
        // static QString trUtf8(const char*)
        QString xret = QSqlQueryModel::trUtf8((const char*)x[1].s_class,(const char*)0);
        x[0].s_class = (void*)new QString(xret);
    }
    static void x_30(Smoke::Stack x) {
        // QSqlQueryModel* QSqlQueryModel()
        x_QSqlQueryModel* xret = new x_QSqlQueryModel((QObject*)0);
        x[0].s_class = (void*)xret;
    }
    void x_31(Smoke::Stack x) {
        // int rowCount() const
        int xret = ((const x_QSqlQueryModel*)this)->QSqlQueryModel::rowCount((const QModelIndex&)QModelIndex());
        x[0].s_int = xret;
    }
    void x_32(Smoke::Stack x) {
        // int columnCount() const
        int xret = ((const x_QSqlQueryModel*)this)->QSqlQueryModel::columnCount((const QModelIndex&)QModelIndex());
        x[0].s_int = xret;
    }
    void x_33(Smoke::Stack x) {
        // QVariant data(const QModelIndex&) const
        QVariant xret = ((const x_QSqlQueryModel*)this)->QSqlQueryModel::data(*(const QModelIndex*)x[1].s_class,(int)Qt::DisplayRole);
        x[0].s_class = (void*)new QVariant(xret);
    }
    void x_34(Smoke::Stack x) {
        // QVariant headerData(int, Qt::Orientation) const
        QVariant xret = ((const x_QSqlQueryModel*)this)->QSqlQueryModel::headerData((int)x[1].s_int,(Qt::Orientation)x[2].s_enum,(int)Qt::DisplayRole);
        x[0].s_class = (void*)new QVariant(xret);
    }
    void x_35(Smoke::Stack x) {
        // bool setHeaderData(int, Qt::Orientation, const QVariant&)
        bool xret = this->QSqlQueryModel::setHeaderData((int)x[1].s_int,(Qt::Orientation)x[2].s_enum,*(const QVariant*)x[3].s_class,(int)Qt::EditRole);
        x[0].s_bool = xret;
    }
    void x_36(Smoke::Stack x) {
        // bool insertColumns(int, int)
        bool xret = this->QSqlQueryModel::insertColumns((int)x[1].s_int,(int)x[2].s_int,(const QModelIndex&)QModelIndex());
        x[0].s_bool = xret;
    }
    void x_37(Smoke::Stack x) {
        // bool removeColumns(int, int)
        bool xret = this->QSqlQueryModel::removeColumns((int)x[1].s_int,(int)x[2].s_int,(const QModelIndex&)QModelIndex());
        x[0].s_bool = xret;
    }
    void x_38(Smoke::Stack x) {
        // void setQuery(const QString&)
        this->QSqlQueryModel::setQuery(*(const QString*)x[1].s_class,(const QSqlDatabase&)QSqlDatabase());
        (void)x; // noop (for compiler warning)
    }
    void x_39(Smoke::Stack x) {
        // void fetchMore()
        this->QSqlQueryModel::fetchMore((const QModelIndex&)QModelIndex());
        (void)x; // noop (for compiler warning)
    }
    void x_40(Smoke::Stack x) {
        // bool canFetchMore() const
        bool xret = ((const x_QSqlQueryModel*)this)->QSqlQueryModel::canFetchMore((const QModelIndex&)QModelIndex());
        x[0].s_bool = xret;
    }
    static void x_41(Smoke::Stack x) {
        // static const QMetaObject staticMetaObject
        x[0].s_class = (void*)&QSqlQueryModel::staticMetaObject;
    }
    virtual const QMetaObject* metaObject() const {
        Smoke::StackItem x[1];
        if (this->_binding->callMethod(338, (void*)this, x)) return (const QMetaObject*)x[0].s_class;
        return this->QSqlQueryModel::metaObject();
    }
    virtual void* qt_metacast(const char* x1) {
        Smoke::StackItem x[2];
        x[1].s_class = (void*)x1;
        if (this->_binding->callMethod(339, (void*)this, x)) return (void*)x[0].s_class;
        return this->QSqlQueryModel::qt_metacast(x1);
    }
    virtual int qt_metacall(QMetaObject::Call x1, int x2, void** x3) {
        Smoke::StackItem x[4];
        x[1].s_enum = x1;
        x[2].s_int = x2;
        x[3].s_class = (void*)x3;
        if (this->_binding->callMethod(344, (void*)this, x)) return (int)x[0].s_int;
        return this->QSqlQueryModel::qt_metacall(x1, x2, x3);
    }
    virtual void clear() {
        Smoke::StackItem x[1];
        if (this->_binding->callMethod(358, (void*)this, x)) return;
        this->QSqlQueryModel::clear();
    }
    virtual void queryChange() {
        Smoke::StackItem x[1];
        if (this->_binding->callMethod(362, (void*)this, x)) return;
        this->QSqlQueryModel::queryChange();
    }
    virtual QModelIndex index(int x1, int x2, const QModelIndex& x3) const {
        Smoke::StackItem x[4];
        x[1].s_int = x1;
        x[2].s_int = x2;
        x[3].s_class = (void*)&x3;
        if (this->_binding->callMethod(16, (void*)this, x)) {
            QModelIndex* xptr = (QModelIndex*)x[0].s_class;
            QModelIndex xret(*xptr);
            delete xptr;
            return xret;
        }
        return this->QAbstractTableModel::index(x1, x2, x3);
    }
    virtual int rowCount(const QModelIndex& x1) const {
        Smoke::StackItem x[2];
        x[1].s_class = (void*)&x1;
        if (this->_binding->callMethod(346, (void*)this, x)) return (int)x[0].s_int;
        return this->QSqlQueryModel::rowCount(x1);
    }
    virtual int columnCount(const QModelIndex& x1) const {
        Smoke::StackItem x[2];
        x[1].s_class = (void*)&x1;
        if (this->_binding->callMethod(347, (void*)this, x)) return (int)x[0].s_int;
        return this->QSqlQueryModel::columnCount(x1);
    }
    virtual QVariant data(const QModelIndex& x1, int x2) const {
        Smoke::StackItem x[3];
        x[1].s_class = (void*)&x1;
        x[2].s_int = x2;
        if (this->_binding->callMethod(350, (void*)this, x)) {
            QVariant* xptr = (QVariant*)x[0].s_class;
            QVariant xret(*xptr);
            delete xptr;
            return xret;
        }
        return this->QSqlQueryModel::data(x1, x2);
    }
    virtual bool setData(const QModelIndex& x1, const QVariant& x2, int x3) {
        Smoke::StackItem x[4];
        x[1].s_class = (void*)&x1;
        x[2].s_class = (void*)&x2;
        x[3].s_int = x3;
        if (this->_binding->callMethod(1, (void*)this, x)) return (bool)x[0].s_bool;
        return this->QAbstractItemModel::setData(x1, x2, x3);
    }
    virtual QVariant headerData(int x1, Qt::Orientation x2, int x3) const {
        Smoke::StackItem x[4];
        x[1].s_int = x1;
        x[2].s_enum = x2;
        x[3].s_int = x3;
        if (this->_binding->callMethod(351, (void*)this, x)) {
            QVariant* xptr = (QVariant*)x[0].s_class;
            QVariant xret(*xptr);
            delete xptr;
            return xret;
        }
        return this->QSqlQueryModel::headerData(x1, x2, x3);
    }
    virtual bool setHeaderData(int x1, Qt::Orientation x2, const QVariant& x3, int x4) {
        Smoke::StackItem x[5];
        x[1].s_int = x1;
        x[2].s_enum = x2;
        x[3].s_class = (void*)&x3;
        x[4].s_int = x4;
        if (this->_binding->callMethod(352, (void*)this, x)) return (bool)x[0].s_bool;
        return this->QSqlQueryModel::setHeaderData(x1, x2, x3, x4);
    }
    virtual QMap<int,QVariant> itemData(const QModelIndex& x1) const {
        Smoke::StackItem x[2];
        x[1].s_class = (void*)&x1;
        if (this->_binding->callMethod(2, (void*)this, x)) {
            QMap<int,QVariant>* xptr = (QMap<int,QVariant>*)x[0].s_class;
            QMap<int,QVariant> xret(*xptr);
            delete xptr;
            return xret;
        }
        return this->QAbstractItemModel::itemData(x1);
    }
    virtual bool setItemData(const QModelIndex& x1, const QMap<int,QVariant>& x2) {
        Smoke::StackItem x[3];
        x[1].s_class = (void*)&x1;
        x[2].s_class = (void*)&x2;
        if (this->_binding->callMethod(3, (void*)this, x)) return (bool)x[0].s_bool;
        return this->QAbstractItemModel::setItemData(x1, x2);
    }
    virtual QStringList mimeTypes() const {
        Smoke::StackItem x[1];
        if (this->_binding->callMethod(4, (void*)this, x)) {
            QStringList* xptr = (QStringList*)x[0].s_class;
            QStringList xret(*xptr);
            delete xptr;
            return xret;
        }
        return this->QAbstractItemModel::mimeTypes();
    }
    virtual QMimeData* mimeData(const QList<QModelIndex>& x1) const {
        Smoke::StackItem x[2];
        x[1].s_class = (void*)&x1;
        if (this->_binding->callMethod(5, (void*)this, x)) return (QMimeData*)x[0].s_class;
        return this->QAbstractItemModel::mimeData(x1);
    }
    virtual bool dropMimeData(const QMimeData* x1, Qt::DropAction x2, int x3, int x4, const QModelIndex& x5) {
        Smoke::StackItem x[6];
        x[1].s_class = (void*)x1;
        x[2].s_enum = x2;
        x[3].s_int = x3;
        x[4].s_int = x4;
        x[5].s_class = (void*)&x5;
        if (this->_binding->callMethod(17, (void*)this, x)) return (bool)x[0].s_bool;
        return this->QAbstractTableModel::dropMimeData(x1, x2, x3, x4, x5);
    }
    virtual QFlags<Qt::DropAction> supportedDropActions() const {
        Smoke::StackItem x[1];
        if (this->_binding->callMethod(6, (void*)this, x)) return (QFlags<Qt::DropAction>)x[0].s_uint;
        return this->QAbstractItemModel::supportedDropActions();
    }
    virtual bool insertRows(int x1, int x2, const QModelIndex& x3) {
        Smoke::StackItem x[4];
        x[1].s_int = x1;
        x[2].s_int = x2;
        x[3].s_class = (void*)&x3;
        if (this->_binding->callMethod(7, (void*)this, x)) return (bool)x[0].s_bool;
        return this->QAbstractItemModel::insertRows(x1, x2, x3);
    }
    virtual bool insertColumns(int x1, int x2, const QModelIndex& x3) {
        Smoke::StackItem x[4];
        x[1].s_int = x1;
        x[2].s_int = x2;
        x[3].s_class = (void*)&x3;
        if (this->_binding->callMethod(353, (void*)this, x)) return (bool)x[0].s_bool;
        return this->QSqlQueryModel::insertColumns(x1, x2, x3);
    }
    virtual bool removeRows(int x1, int x2, const QModelIndex& x3) {
        Smoke::StackItem x[4];
        x[1].s_int = x1;
        x[2].s_int = x2;
        x[3].s_class = (void*)&x3;
        if (this->_binding->callMethod(8, (void*)this, x)) return (bool)x[0].s_bool;
        return this->QAbstractItemModel::removeRows(x1, x2, x3);
    }
    virtual bool removeColumns(int x1, int x2, const QModelIndex& x3) {
        Smoke::StackItem x[4];
        x[1].s_int = x1;
        x[2].s_int = x2;
        x[3].s_class = (void*)&x3;
        if (this->_binding->callMethod(354, (void*)this, x)) return (bool)x[0].s_bool;
        return this->QSqlQueryModel::removeColumns(x1, x2, x3);
    }
    virtual void fetchMore(const QModelIndex& x1) {
        Smoke::StackItem x[2];
        x[1].s_class = (void*)&x1;
        if (this->_binding->callMethod(360, (void*)this, x)) return;
        this->QSqlQueryModel::fetchMore(x1);
    }
    virtual bool canFetchMore(const QModelIndex& x1) const {
        Smoke::StackItem x[2];
        x[1].s_class = (void*)&x1;
        if (this->_binding->callMethod(361, (void*)this, x)) return (bool)x[0].s_bool;
        return this->QSqlQueryModel::canFetchMore(x1);
    }
    virtual QFlags<Qt::ItemFlag> flags(const QModelIndex& x1) const {
        Smoke::StackItem x[2];
        x[1].s_class = (void*)&x1;
        if (this->_binding->callMethod(9, (void*)this, x)) return (QFlags<Qt::ItemFlag>)x[0].s_uint;
        return this->QAbstractItemModel::flags(x1);
    }
    virtual void sort(int x1, Qt::SortOrder x2) {
        Smoke::StackItem x[3];
        x[1].s_int = x1;
        x[2].s_enum = x2;
        if (this->_binding->callMethod(10, (void*)this, x)) return;
        this->QAbstractItemModel::sort(x1, x2);
    }
    virtual QModelIndex buddy(const QModelIndex& x1) const {
        Smoke::StackItem x[2];
        x[1].s_class = (void*)&x1;
        if (this->_binding->callMethod(11, (void*)this, x)) {
            QModelIndex* xptr = (QModelIndex*)x[0].s_class;
            QModelIndex xret(*xptr);
            delete xptr;
            return xret;
        }
        return this->QAbstractItemModel::buddy(x1);
    }
    virtual QList<QModelIndex> match(const QModelIndex& x1, int x2, const QVariant& x3, int x4, QFlags<Qt::MatchFlag> x5) const {
        Smoke::StackItem x[6];
        x[1].s_class = (void*)&x1;
        x[2].s_int = x2;
        x[3].s_class = (void*)&x3;
        x[4].s_int = x4;
        x[5].s_uint = (uint)x5;
        if (this->_binding->callMethod(12, (void*)this, x)) {
            QList<QModelIndex>* xptr = (QList<QModelIndex>*)x[0].s_class;
            QList<QModelIndex> xret(*xptr);
            delete xptr;
            return xret;
        }
        return this->QAbstractItemModel::match(x1, x2, x3, x4, x5);
    }
    virtual QSize span(const QModelIndex& x1) const {
        Smoke::StackItem x[2];
        x[1].s_class = (void*)&x1;
        if (this->_binding->callMethod(13, (void*)this, x)) {
            QSize* xptr = (QSize*)x[0].s_class;
            QSize xret(*xptr);
            delete xptr;
            return xret;
        }
        return this->QAbstractItemModel::span(x1);
    }
    virtual bool submit() {
        Smoke::StackItem x[1];
        if (this->_binding->callMethod(14, (void*)this, x)) return (bool)x[0].s_bool;
        return this->QAbstractItemModel::submit();
    }
    virtual void revert() {
        Smoke::StackItem x[1];
        if (this->_binding->callMethod(15, (void*)this, x)) return;
        this->QAbstractItemModel::revert();
    }
    virtual bool event(QEvent* x1) {
        Smoke::StackItem x[2];
        x[1].s_class = (void*)x1;
        if (this->_binding->callMethod(38, (void*)this, x)) return (bool)x[0].s_bool;
        return this->QObject::event(x1);
    }
    virtual bool eventFilter(QObject* x1, QEvent* x2) {
        Smoke::StackItem x[3];
        x[1].s_class = (void*)x1;
        x[2].s_class = (void*)x2;
        if (this->_binding->callMethod(39, (void*)this, x)) return (bool)x[0].s_bool;
        return this->QObject::eventFilter(x1, x2);
    }
    virtual void timerEvent(QTimerEvent* x1) {
        Smoke::StackItem x[2];
        x[1].s_class = (void*)x1;
        if (this->_binding->callMethod(40, (void*)this, x)) return;
        this->QObject::timerEvent(x1);
    }
    virtual void childEvent(QChildEvent* x1) {
        Smoke::StackItem x[2];
        x[1].s_class = (void*)x1;
        if (this->_binding->callMethod(41, (void*)this, x)) return;
        this->QObject::childEvent(x1);
    }
    virtual void customEvent(QEvent* x1) {
        Smoke::StackItem x[2];
        x[1].s_class = (void*)x1;
        if (this->_binding->callMethod(42, (void*)this, x)) return;
        this->QObject::customEvent(x1);
    }
    virtual void connectNotify(const char* x1) {
        Smoke::StackItem x[2];
        x[1].s_class = (void*)x1;
        if (this->_binding->callMethod(43, (void*)this, x)) return;
        this->QObject::connectNotify(x1);
    }
    virtual void disconnectNotify(const char* x1) {
        Smoke::StackItem x[2];
        x[1].s_class = (void*)x1;
        if (this->_binding->callMethod(44, (void*)this, x)) return;
        this->QObject::disconnectNotify(x1);
    }
    ~x_QSqlQueryModel() { this->_binding->deleted(31, (void*)this); }
};
void xcall_QSqlQueryModel(Smoke::Index xi, void *obj, Smoke::Stack args) {
    x_QSqlQueryModel *xself = (x_QSqlQueryModel*)obj;
    switch(xi) {
        case 0: xself->x_0(args);	break;
        case 1: xself->x_1(args);	break;
        case 2: xself->x_2(args);	break;
        case 3: x_QSqlQueryModel::x_3(args);	break;
        case 4: x_QSqlQueryModel::x_4(args);	break;
        case 5: x_QSqlQueryModel::x_5(args);	break;
        case 6: x_QSqlQueryModel::x_6(args);	break;
        case 7: xself->x_7(args);	break;
        case 8: x_QSqlQueryModel::x_8(args);	break;
        case 9: xself->x_9(args);	break;
        case 10: xself->x_10(args);	break;
        case 11: xself->x_11(args);	break;
        case 12: xself->x_12(args);	break;
        case 13: xself->x_13(args);	break;
        case 14: xself->x_14(args);	break;
        case 15: xself->x_15(args);	break;
        case 16: xself->x_16(args);	break;
        case 17: xself->x_17(args);	break;
        case 18: xself->x_18(args);	break;
        case 19: xself->x_19(args);	break;
        case 20: xself->x_20(args);	break;
        case 21: xself->x_21(args);	break;
        case 22: xself->x_22(args);	break;
        case 23: xself->x_23(args);	break;
        case 24: xself->x_24(args);	break;
        case 25: xself->x_25(args);	break;
        case 26: xself->x_26(args);	break;
        case 27: xself->x_27(args);	break;
        case 28: x_QSqlQueryModel::x_28(args);	break;
        case 29: x_QSqlQueryModel::x_29(args);	break;
        case 30: x_QSqlQueryModel::x_30(args);	break;
        case 31: xself->x_31(args);	break;
        case 32: xself->x_32(args);	break;
        case 33: xself->x_33(args);	break;
        case 34: xself->x_34(args);	break;
        case 35: xself->x_35(args);	break;
        case 36: xself->x_36(args);	break;
        case 37: xself->x_37(args);	break;
        case 38: xself->x_38(args);	break;
        case 39: xself->x_39(args);	break;
        case 40: xself->x_40(args);	break;
        case 41: x_QSqlQueryModel::x_41(args);	break;
        case 42: delete (QSqlQueryModel*)xself;	break;
    }
}
class x_QSqlRecord : public QSqlRecord {
    SmokeBinding* _binding;
public:
    void x_0(Smoke::Stack x) {
        // set the smoke binding
        _binding = (SmokeBinding*)x[1].s_class;
    }
    static void x_1(Smoke::Stack x) {
        // QSqlRecord* QSqlRecord()
        x_QSqlRecord* xret = new x_QSqlRecord();
        x[0].s_class = (void*)xret;
    }
    explicit x_QSqlRecord() : QSqlRecord() {}
    static void x_2(Smoke::Stack x) {
        // QSqlRecord* QSqlRecord(const QSqlRecord&)
        x_QSqlRecord* xret = new x_QSqlRecord(*(const QSqlRecord*)x[1].s_class);
        x[0].s_class = (void*)xret;
    }
    explicit x_QSqlRecord(const QSqlRecord& x1) : QSqlRecord(x1) {}
    void x_3(Smoke::Stack x) {
        // QSqlRecord& operator=(const QSqlRecord&)
        QSqlRecord& xret = this->QSqlRecord::operator=(*(const QSqlRecord*)x[1].s_class);
        x[0].s_class = (void*)&xret;
    }
    void x_4(Smoke::Stack x) {
        // bool operator==(const QSqlRecord&) const
        bool xret = ((const x_QSqlRecord*)this)->QSqlRecord::operator==(*(const QSqlRecord*)x[1].s_class);
        x[0].s_bool = xret;
    }
    void x_5(Smoke::Stack x) {
        // bool operator!=(const QSqlRecord&) const
        bool xret = ((const x_QSqlRecord*)this)->QSqlRecord::operator!=(*(const QSqlRecord*)x[1].s_class);
        x[0].s_bool = xret;
    }
    void x_6(Smoke::Stack x) {
        // QVariant value(int) const
        QVariant xret = ((const x_QSqlRecord*)this)->QSqlRecord::value((int)x[1].s_int);
        x[0].s_class = (void*)new QVariant(xret);
    }
    void x_7(Smoke::Stack x) {
        // QVariant value(const QString&) const
        QVariant xret = ((const x_QSqlRecord*)this)->QSqlRecord::value(*(const QString*)x[1].s_class);
        x[0].s_class = (void*)new QVariant(xret);
    }
    void x_8(Smoke::Stack x) {
        // void setValue(int, const QVariant&)
        this->QSqlRecord::setValue((int)x[1].s_int,*(const QVariant*)x[2].s_class);
        (void)x; // noop (for compiler warning)
    }
    void x_9(Smoke::Stack x) {
        // void setValue(const QString&, const QVariant&)
        this->QSqlRecord::setValue(*(const QString*)x[1].s_class,*(const QVariant*)x[2].s_class);
        (void)x; // noop (for compiler warning)
    }
    void x_10(Smoke::Stack x) {
        // void setNull(int)
        this->QSqlRecord::setNull((int)x[1].s_int);
        (void)x; // noop (for compiler warning)
    }
    void x_11(Smoke::Stack x) {
        // void setNull(const QString&)
        this->QSqlRecord::setNull(*(const QString*)x[1].s_class);
        (void)x; // noop (for compiler warning)
    }
    void x_12(Smoke::Stack x) {
        // bool isNull(int) const
        bool xret = ((const x_QSqlRecord*)this)->QSqlRecord::isNull((int)x[1].s_int);
        x[0].s_bool = xret;
    }
    void x_13(Smoke::Stack x) {
        // bool isNull(const QString&) const
        bool xret = ((const x_QSqlRecord*)this)->QSqlRecord::isNull(*(const QString*)x[1].s_class);
        x[0].s_bool = xret;
    }
    void x_14(Smoke::Stack x) {
        // int indexOf(const QString&) const
        int xret = ((const x_QSqlRecord*)this)->QSqlRecord::indexOf(*(const QString*)x[1].s_class);
        x[0].s_int = xret;
    }
    void x_15(Smoke::Stack x) {
        // QString fieldName(int) const
        QString xret = ((const x_QSqlRecord*)this)->QSqlRecord::fieldName((int)x[1].s_int);
        x[0].s_class = (void*)new QString(xret);
    }
    void x_16(Smoke::Stack x) {
        // QSqlField field(int) const
        QSqlField xret = ((const x_QSqlRecord*)this)->QSqlRecord::field((int)x[1].s_int);
        x[0].s_class = (void*)new QSqlField(xret);
    }
    void x_17(Smoke::Stack x) {
        // QSqlField field(const QString&) const
        QSqlField xret = ((const x_QSqlRecord*)this)->QSqlRecord::field(*(const QString*)x[1].s_class);
        x[0].s_class = (void*)new QSqlField(xret);
    }
    void x_18(Smoke::Stack x) {
        // bool isGenerated(int) const
        bool xret = ((const x_QSqlRecord*)this)->QSqlRecord::isGenerated((int)x[1].s_int);
        x[0].s_bool = xret;
    }
    void x_19(Smoke::Stack x) {
        // bool isGenerated(const QString&) const
        bool xret = ((const x_QSqlRecord*)this)->QSqlRecord::isGenerated(*(const QString*)x[1].s_class);
        x[0].s_bool = xret;
    }
    void x_20(Smoke::Stack x) {
        // void setGenerated(const QString&, bool)
        this->QSqlRecord::setGenerated(*(const QString*)x[1].s_class,(bool)x[2].s_bool);
        (void)x; // noop (for compiler warning)
    }
    void x_21(Smoke::Stack x) {
        // void setGenerated(int, bool)
        this->QSqlRecord::setGenerated((int)x[1].s_int,(bool)x[2].s_bool);
        (void)x; // noop (for compiler warning)
    }
    void x_22(Smoke::Stack x) {
        // void append(const QSqlField&)
        this->QSqlRecord::append(*(const QSqlField*)x[1].s_class);
        (void)x; // noop (for compiler warning)
    }
    void x_23(Smoke::Stack x) {
        // void replace(int, const QSqlField&)
        this->QSqlRecord::replace((int)x[1].s_int,*(const QSqlField*)x[2].s_class);
        (void)x; // noop (for compiler warning)
    }
    void x_24(Smoke::Stack x) {
        // void insert(int, const QSqlField&)
        this->QSqlRecord::insert((int)x[1].s_int,*(const QSqlField*)x[2].s_class);
        (void)x; // noop (for compiler warning)
    }
    void x_25(Smoke::Stack x) {
        // void remove(int)
        this->QSqlRecord::remove((int)x[1].s_int);
        (void)x; // noop (for compiler warning)
    }
    void x_26(Smoke::Stack x) {
        // bool isEmpty() const
        bool xret = ((const x_QSqlRecord*)this)->QSqlRecord::isEmpty();
        x[0].s_bool = xret;
    }
    void x_27(Smoke::Stack x) {
        // bool contains(const QString&) const
        bool xret = ((const x_QSqlRecord*)this)->QSqlRecord::contains(*(const QString*)x[1].s_class);
        x[0].s_bool = xret;
    }
    void x_28(Smoke::Stack x) {
        // void clear()
        this->QSqlRecord::clear();
        (void)x; // noop (for compiler warning)
    }
    void x_29(Smoke::Stack x) {
        // void clearValues()
        this->QSqlRecord::clearValues();
        (void)x; // noop (for compiler warning)
    }
    void x_30(Smoke::Stack x) {
        // int count() const
        int xret = ((const x_QSqlRecord*)this)->QSqlRecord::count();
        x[0].s_int = xret;
    }
    ~x_QSqlRecord() { this->_binding->deleted(32, (void*)this); }
};
void xcall_QSqlRecord(Smoke::Index xi, void *obj, Smoke::Stack args) {
    x_QSqlRecord *xself = (x_QSqlRecord*)obj;
    switch(xi) {
        case 0: xself->x_0(args);	break;
        case 1: x_QSqlRecord::x_1(args);	break;
        case 2: x_QSqlRecord::x_2(args);	break;
        case 3: xself->x_3(args);	break;
        case 4: xself->x_4(args);	break;
        case 5: xself->x_5(args);	break;
        case 6: xself->x_6(args);	break;
        case 7: xself->x_7(args);	break;
        case 8: xself->x_8(args);	break;
        case 9: xself->x_9(args);	break;
        case 10: xself->x_10(args);	break;
        case 11: xself->x_11(args);	break;
        case 12: xself->x_12(args);	break;
        case 13: xself->x_13(args);	break;
        case 14: xself->x_14(args);	break;
        case 15: xself->x_15(args);	break;
        case 16: xself->x_16(args);	break;
        case 17: xself->x_17(args);	break;
        case 18: xself->x_18(args);	break;
        case 19: xself->x_19(args);	break;
        case 20: xself->x_20(args);	break;
        case 21: xself->x_21(args);	break;
        case 22: xself->x_22(args);	break;
        case 23: xself->x_23(args);	break;
        case 24: xself->x_24(args);	break;
        case 25: xself->x_25(args);	break;
        case 26: xself->x_26(args);	break;
        case 27: xself->x_27(args);	break;
        case 28: xself->x_28(args);	break;
        case 29: xself->x_29(args);	break;
        case 30: xself->x_30(args);	break;
        case 31: delete (QSqlRecord*)xself;	break;
    }
}
class x_QSqlRelation : public QSqlRelation {
    SmokeBinding* _binding;
public:
    void x_0(Smoke::Stack x) {
        // set the smoke binding
        _binding = (SmokeBinding*)x[1].s_class;
    }
    static void x_1(Smoke::Stack x) {
        // QSqlRelation* QSqlRelation()
        x_QSqlRelation* xret = new x_QSqlRelation();
        x[0].s_class = (void*)xret;
    }
    explicit x_QSqlRelation() : QSqlRelation() {}
    static void x_2(Smoke::Stack x) {
        // QSqlRelation* QSqlRelation(const QString&, const QString&, const QString&)
        x_QSqlRelation* xret = new x_QSqlRelation(*(const QString*)x[1].s_class,*(const QString*)x[2].s_class,*(const QString*)x[3].s_class);
        x[0].s_class = (void*)xret;
    }
    explicit x_QSqlRelation(const QString& x1, const QString& x2, const QString& x3) : QSqlRelation(x1, x2, x3) {}
    void x_3(Smoke::Stack x) {
        // QString tableName() const
        QString xret = ((const x_QSqlRelation*)this)->QSqlRelation::tableName();
        x[0].s_class = (void*)new QString(xret);
    }
    void x_4(Smoke::Stack x) {
        // QString indexColumn() const
        QString xret = ((const x_QSqlRelation*)this)->QSqlRelation::indexColumn();
        x[0].s_class = (void*)new QString(xret);
    }
    void x_5(Smoke::Stack x) {
        // QString displayColumn() const
        QString xret = ((const x_QSqlRelation*)this)->QSqlRelation::displayColumn();
        x[0].s_class = (void*)new QString(xret);
    }
    void x_6(Smoke::Stack x) {
        // bool isValid() const
        bool xret = ((const x_QSqlRelation*)this)->QSqlRelation::isValid();
        x[0].s_bool = xret;
    }
    static void x_7(Smoke::Stack x) {
        // QSqlRelation* QSqlRelation(const QSqlRelation&)
        x_QSqlRelation* xret = new x_QSqlRelation(*(const QSqlRelation*)x[1].s_class);
        x[0].s_class = (void*)xret;
    }
    explicit x_QSqlRelation(const QSqlRelation& x1) : QSqlRelation(x1) {}
    ~x_QSqlRelation() { this->_binding->deleted(33, (void*)this); }
};
void xcall_QSqlRelation(Smoke::Index xi, void *obj, Smoke::Stack args) {
    x_QSqlRelation *xself = (x_QSqlRelation*)obj;
    switch(xi) {
        case 0: xself->x_0(args);	break;
        case 1: x_QSqlRelation::x_1(args);	break;
        case 2: x_QSqlRelation::x_2(args);	break;
        case 3: xself->x_3(args);	break;
        case 4: xself->x_4(args);	break;
        case 5: xself->x_5(args);	break;
        case 6: xself->x_6(args);	break;
        case 7: x_QSqlRelation::x_7(args);	break;
        case 8: delete (QSqlRelation*)xself;	break;
    }
}
class x_QSqlRelationalDelegate : public QSqlRelationalDelegate, public __internal_SmokeClass {
    SmokeBinding* _binding;
public:
    void x_0(Smoke::Stack x) {
        // set the smoke binding
        _binding = (SmokeBinding*)x[1].s_class;
    }
    static void x_1(Smoke::Stack x) {
        // QSqlRelationalDelegate* QSqlRelationalDelegate(QObject*)
        x_QSqlRelationalDelegate* xret = new x_QSqlRelationalDelegate((QObject*)x[1].s_class);
        x[0].s_class = (void*)xret;
    }
    explicit x_QSqlRelationalDelegate(QObject* x1) : QSqlRelationalDelegate(x1) {}
    void x_2(Smoke::Stack x) {
        // QWidget* createEditor(QWidget*, const QStyleOptionViewItem&, const QModelIndex&) const
        if (dynamic_cast<__internal_SmokeClass*>(static_cast<QSqlRelationalDelegate*>(this))) {
            QWidget* xret = ((const x_QSqlRelationalDelegate*)this)->QSqlRelationalDelegate::createEditor((QWidget*)x[1].s_class,*(const QStyleOptionViewItem*)x[2].s_class,*(const QModelIndex*)x[3].s_class);
            x[0].s_class = (void*)xret;
        } else {
            QWidget* xret = ((const x_QSqlRelationalDelegate*)this)->createEditor((QWidget*)x[1].s_class,*(const QStyleOptionViewItem*)x[2].s_class,*(const QModelIndex*)x[3].s_class);
            x[0].s_class = (void*)xret;
        }
    }
    void x_3(Smoke::Stack x) {
        // void setEditorData(QWidget*, const QModelIndex&) const
        if (dynamic_cast<__internal_SmokeClass*>(static_cast<QSqlRelationalDelegate*>(this))) {
            ((const x_QSqlRelationalDelegate*)this)->QSqlRelationalDelegate::setEditorData((QWidget*)x[1].s_class,*(const QModelIndex*)x[2].s_class);
            (void)x; // noop (for compiler warning)
        } else {
            ((const x_QSqlRelationalDelegate*)this)->setEditorData((QWidget*)x[1].s_class,*(const QModelIndex*)x[2].s_class);
            (void)x; // noop (for compiler warning)
        }
    }
    void x_4(Smoke::Stack x) {
        // void setModelData(QWidget*, QAbstractItemModel*, const QModelIndex&) const
        if (dynamic_cast<__internal_SmokeClass*>(static_cast<QSqlRelationalDelegate*>(this))) {
            ((const x_QSqlRelationalDelegate*)this)->QSqlRelationalDelegate::setModelData((QWidget*)x[1].s_class,(QAbstractItemModel*)x[2].s_class,*(const QModelIndex*)x[3].s_class);
            (void)x; // noop (for compiler warning)
        } else {
            ((const x_QSqlRelationalDelegate*)this)->setModelData((QWidget*)x[1].s_class,(QAbstractItemModel*)x[2].s_class,*(const QModelIndex*)x[3].s_class);
            (void)x; // noop (for compiler warning)
        }
    }
    static void x_5(Smoke::Stack x) {
        // QSqlRelationalDelegate* QSqlRelationalDelegate()
        x_QSqlRelationalDelegate* xret = new x_QSqlRelationalDelegate((QObject*)0);
        x[0].s_class = (void*)xret;
    }
    virtual const QMetaObject* metaObject() const {
        Smoke::StackItem x[1];
        if (this->_binding->callMethod(26, (void*)this, x)) return (const QMetaObject*)x[0].s_class;
        return this->QItemDelegate::metaObject();
    }
    virtual void* qt_metacast(const char* x1) {
        Smoke::StackItem x[2];
        x[1].s_class = (void*)x1;
        if (this->_binding->callMethod(27, (void*)this, x)) return (void*)x[0].s_class;
        return this->QItemDelegate::qt_metacast(x1);
    }
    virtual int qt_metacall(QMetaObject::Call x1, int x2, void** x3) {
        Smoke::StackItem x[4];
        x[1].s_enum = x1;
        x[2].s_int = x2;
        x[3].s_class = (void*)x3;
        if (this->_binding->callMethod(28, (void*)this, x)) return (int)x[0].s_int;
        return this->QItemDelegate::qt_metacall(x1, x2, x3);
    }
    virtual void drawDisplay(QPainter* x1, const QStyleOptionViewItem& x2, const QRect& x3, const QString& x4) const {
        Smoke::StackItem x[5];
        x[1].s_class = (void*)x1;
        x[2].s_class = (void*)&x2;
        x[3].s_class = (void*)&x3;
        x[4].s_class = (void*)&x4;
        if (this->_binding->callMethod(32, (void*)this, x)) return;
        this->QItemDelegate::drawDisplay(x1, x2, x3, x4);
    }
    virtual void drawDecoration(QPainter* x1, const QStyleOptionViewItem& x2, const QRect& x3, const QPixmap& x4) const {
        Smoke::StackItem x[5];
        x[1].s_class = (void*)x1;
        x[2].s_class = (void*)&x2;
        x[3].s_class = (void*)&x3;
        x[4].s_class = (void*)&x4;
        if (this->_binding->callMethod(33, (void*)this, x)) return;
        this->QItemDelegate::drawDecoration(x1, x2, x3, x4);
    }
    virtual void drawFocus(QPainter* x1, const QStyleOptionViewItem& x2, const QRect& x3) const {
        Smoke::StackItem x[4];
        x[1].s_class = (void*)x1;
        x[2].s_class = (void*)&x2;
        x[3].s_class = (void*)&x3;
        if (this->_binding->callMethod(34, (void*)this, x)) return;
        this->QItemDelegate::drawFocus(x1, x2, x3);
    }
    virtual void drawCheck(QPainter* x1, const QStyleOptionViewItem& x2, const QRect& x3, Qt::CheckState x4) const {
        Smoke::StackItem x[5];
        x[1].s_class = (void*)x1;
        x[2].s_class = (void*)&x2;
        x[3].s_class = (void*)&x3;
        x[4].s_enum = x4;
        if (this->_binding->callMethod(35, (void*)this, x)) return;
        this->QItemDelegate::drawCheck(x1, x2, x3, x4);
    }
    virtual void paint(QPainter* x1, const QStyleOptionViewItem& x2, const QModelIndex& x3) const {
        Smoke::StackItem x[4];
        x[1].s_class = (void*)x1;
        x[2].s_class = (void*)&x2;
        x[3].s_class = (void*)&x3;
        if (this->_binding->callMethod(29, (void*)this, x)) return;
        this->QItemDelegate::paint(x1, x2, x3);
    }
    virtual QSize sizeHint(const QStyleOptionViewItem& x1, const QModelIndex& x2) const {
        Smoke::StackItem x[3];
        x[1].s_class = (void*)&x1;
        x[2].s_class = (void*)&x2;
        if (this->_binding->callMethod(30, (void*)this, x)) {
            QSize* xptr = (QSize*)x[0].s_class;
            QSize xret(*xptr);
            delete xptr;
            return xret;
        }
        return this->QItemDelegate::sizeHint(x1, x2);
    }
    virtual QWidget* createEditor(QWidget* x1, const QStyleOptionViewItem& x2, const QModelIndex& x3) const {
        Smoke::StackItem x[4];
        x[1].s_class = (void*)x1;
        x[2].s_class = (void*)&x2;
        x[3].s_class = (void*)&x3;
        if (this->_binding->callMethod(420, (void*)this, x)) return (QWidget*)x[0].s_class;
        return this->QSqlRelationalDelegate::createEditor(x1, x2, x3);
    }
    virtual void setEditorData(QWidget* x1, const QModelIndex& x2) const {
        Smoke::StackItem x[3];
        x[1].s_class = (void*)x1;
        x[2].s_class = (void*)&x2;
        if (this->_binding->callMethod(421, (void*)this, x)) return;
        this->QSqlRelationalDelegate::setEditorData(x1, x2);
    }
    virtual void setModelData(QWidget* x1, QAbstractItemModel* x2, const QModelIndex& x3) const {
        Smoke::StackItem x[4];
        x[1].s_class = (void*)x1;
        x[2].s_class = (void*)x2;
        x[3].s_class = (void*)&x3;
        if (this->_binding->callMethod(422, (void*)this, x)) return;
        this->QSqlRelationalDelegate::setModelData(x1, x2, x3);
    }
    virtual void updateEditorGeometry(QWidget* x1, const QStyleOptionViewItem& x2, const QModelIndex& x3) const {
        Smoke::StackItem x[4];
        x[1].s_class = (void*)x1;
        x[2].s_class = (void*)&x2;
        x[3].s_class = (void*)&x3;
        if (this->_binding->callMethod(31, (void*)this, x)) return;
        this->QItemDelegate::updateEditorGeometry(x1, x2, x3);
    }
    virtual bool editorEvent(QEvent* x1, QAbstractItemModel* x2, const QStyleOptionViewItem& x3, const QModelIndex& x4) {
        Smoke::StackItem x[5];
        x[1].s_class = (void*)x1;
        x[2].s_class = (void*)x2;
        x[3].s_class = (void*)&x3;
        x[4].s_class = (void*)&x4;
        if (this->_binding->callMethod(37, (void*)this, x)) return (bool)x[0].s_bool;
        return this->QItemDelegate::editorEvent(x1, x2, x3, x4);
    }
    virtual bool event(QEvent* x1) {
        Smoke::StackItem x[2];
        x[1].s_class = (void*)x1;
        if (this->_binding->callMethod(38, (void*)this, x)) return (bool)x[0].s_bool;
        return this->QObject::event(x1);
    }
    virtual bool eventFilter(QObject* x1, QEvent* x2) {
        Smoke::StackItem x[3];
        x[1].s_class = (void*)x1;
        x[2].s_class = (void*)x2;
        if (this->_binding->callMethod(36, (void*)this, x)) return (bool)x[0].s_bool;
        return this->QItemDelegate::eventFilter(x1, x2);
    }
    virtual void timerEvent(QTimerEvent* x1) {
        Smoke::StackItem x[2];
        x[1].s_class = (void*)x1;
        if (this->_binding->callMethod(40, (void*)this, x)) return;
        this->QObject::timerEvent(x1);
    }
    virtual void childEvent(QChildEvent* x1) {
        Smoke::StackItem x[2];
        x[1].s_class = (void*)x1;
        if (this->_binding->callMethod(41, (void*)this, x)) return;
        this->QObject::childEvent(x1);
    }
    virtual void customEvent(QEvent* x1) {
        Smoke::StackItem x[2];
        x[1].s_class = (void*)x1;
        if (this->_binding->callMethod(42, (void*)this, x)) return;
        this->QObject::customEvent(x1);
    }
    virtual void connectNotify(const char* x1) {
        Smoke::StackItem x[2];
        x[1].s_class = (void*)x1;
        if (this->_binding->callMethod(43, (void*)this, x)) return;
        this->QObject::connectNotify(x1);
    }
    virtual void disconnectNotify(const char* x1) {
        Smoke::StackItem x[2];
        x[1].s_class = (void*)x1;
        if (this->_binding->callMethod(44, (void*)this, x)) return;
        this->QObject::disconnectNotify(x1);
    }
    ~x_QSqlRelationalDelegate() { this->_binding->deleted(34, (void*)this); }
};
void xcall_QSqlRelationalDelegate(Smoke::Index xi, void *obj, Smoke::Stack args) {
    x_QSqlRelationalDelegate *xself = (x_QSqlRelationalDelegate*)obj;
    switch(xi) {
        case 0: xself->x_0(args);	break;
        case 1: x_QSqlRelationalDelegate::x_1(args);	break;
        case 2: xself->x_2(args);	break;
        case 3: xself->x_3(args);	break;
        case 4: xself->x_4(args);	break;
        case 5: x_QSqlRelationalDelegate::x_5(args);	break;
        case 6: delete (QSqlRelationalDelegate*)xself;	break;
    }
}
class x_QSqlRelationalTableModel : public QSqlRelationalTableModel, public __internal_SmokeClass {
    SmokeBinding* _binding;
public:
    void x_0(Smoke::Stack x) {
        // set the smoke binding
        _binding = (SmokeBinding*)x[1].s_class;
    }
    void x_1(Smoke::Stack x) {
        // virtual const QMetaObject* metaObject() const
        if (dynamic_cast<__internal_SmokeClass*>(static_cast<QSqlRelationalTableModel*>(this))) {
            const QMetaObject* xret = ((const x_QSqlRelationalTableModel*)this)->QSqlRelationalTableModel::metaObject();
            x[0].s_class = (void*)xret;
        } else {
            const QMetaObject* xret = ((const x_QSqlRelationalTableModel*)this)->metaObject();
            x[0].s_class = (void*)xret;
        }
    }
    void x_2(Smoke::Stack x) {
        // virtual void* qt_metacast(const char*)
        if (dynamic_cast<__internal_SmokeClass*>(static_cast<QSqlRelationalTableModel*>(this))) {
            void* xret = this->QSqlRelationalTableModel::qt_metacast((const char*)x[1].s_class);
            x[0].s_class = (void*)xret;
        } else {
            void* xret = this->qt_metacast((const char*)x[1].s_class);
            x[0].s_class = (void*)xret;
        }
    }
    static void x_3(Smoke::Stack x) {
        // static QString tr(const char*, const char*)
        QString xret = QSqlRelationalTableModel::tr((const char*)x[1].s_class,(const char*)x[2].s_class);
        x[0].s_class = (void*)new QString(xret);
    }
    static void x_4(Smoke::Stack x) {
        // static QString trUtf8(const char*, const char*)
        QString xret = QSqlRelationalTableModel::trUtf8((const char*)x[1].s_class,(const char*)x[2].s_class);
        x[0].s_class = (void*)new QString(xret);
    }
    static void x_5(Smoke::Stack x) {
        // static QString tr(const char*, const char*, int)
        QString xret = QSqlRelationalTableModel::tr((const char*)x[1].s_class,(const char*)x[2].s_class,(int)x[3].s_int);
        x[0].s_class = (void*)new QString(xret);
    }
    static void x_6(Smoke::Stack x) {
        // static QString trUtf8(const char*, const char*, int)
        QString xret = QSqlRelationalTableModel::trUtf8((const char*)x[1].s_class,(const char*)x[2].s_class,(int)x[3].s_int);
        x[0].s_class = (void*)new QString(xret);
    }
    void x_7(Smoke::Stack x) {
        // virtual int qt_metacall(QMetaObject::Call, int, void**)
        if (dynamic_cast<__internal_SmokeClass*>(static_cast<QSqlRelationalTableModel*>(this))) {
            int xret = this->QSqlRelationalTableModel::qt_metacall((QMetaObject::Call)x[1].s_enum,(int)x[2].s_int,(void**)x[3].s_class);
            x[0].s_int = xret;
        } else {
            int xret = this->qt_metacall((QMetaObject::Call)x[1].s_enum,(int)x[2].s_int,(void**)x[3].s_class);
            x[0].s_int = xret;
        }
    }
    static void x_8(Smoke::Stack x) {
        // QSqlRelationalTableModel* QSqlRelationalTableModel(QObject*, QSqlDatabase)
        x_QSqlRelationalTableModel* xret = new x_QSqlRelationalTableModel((QObject*)x[1].s_class,*(QSqlDatabase*)x[2].s_class);
        x[0].s_class = (void*)xret;
    }
    explicit x_QSqlRelationalTableModel(QObject* x1, QSqlDatabase x2) : QSqlRelationalTableModel(x1, x2) {}
    void x_9(Smoke::Stack x) {
        // QVariant data(const QModelIndex&, int) const
        if (dynamic_cast<__internal_SmokeClass*>(static_cast<QSqlRelationalTableModel*>(this))) {
            QVariant xret = ((const x_QSqlRelationalTableModel*)this)->QSqlRelationalTableModel::data(*(const QModelIndex*)x[1].s_class,(int)x[2].s_int);
            x[0].s_class = (void*)new QVariant(xret);
        } else {
            QVariant xret = ((const x_QSqlRelationalTableModel*)this)->data(*(const QModelIndex*)x[1].s_class,(int)x[2].s_int);
            x[0].s_class = (void*)new QVariant(xret);
        }
    }
    void x_10(Smoke::Stack x) {
        // bool setData(const QModelIndex&, const QVariant&, int)
        if (dynamic_cast<__internal_SmokeClass*>(static_cast<QSqlRelationalTableModel*>(this))) {
            bool xret = this->QSqlRelationalTableModel::setData(*(const QModelIndex*)x[1].s_class,*(const QVariant*)x[2].s_class,(int)x[3].s_int);
            x[0].s_bool = xret;
        } else {
            bool xret = this->setData(*(const QModelIndex*)x[1].s_class,*(const QVariant*)x[2].s_class,(int)x[3].s_int);
            x[0].s_bool = xret;
        }
    }
    void x_11(Smoke::Stack x) {
        // bool removeColumns(int, int, const QModelIndex&)
        if (dynamic_cast<__internal_SmokeClass*>(static_cast<QSqlRelationalTableModel*>(this))) {
            bool xret = this->QSqlRelationalTableModel::removeColumns((int)x[1].s_int,(int)x[2].s_int,*(const QModelIndex*)x[3].s_class);
            x[0].s_bool = xret;
        } else {
            bool xret = this->removeColumns((int)x[1].s_int,(int)x[2].s_int,*(const QModelIndex*)x[3].s_class);
            x[0].s_bool = xret;
        }
    }
    void x_12(Smoke::Stack x) {
        // void clear()
        if (dynamic_cast<__internal_SmokeClass*>(static_cast<QSqlRelationalTableModel*>(this))) {
            this->QSqlRelationalTableModel::clear();
            (void)x; // noop (for compiler warning)
        } else {
            this->clear();
            (void)x; // noop (for compiler warning)
        }
    }
    void x_13(Smoke::Stack x) {
        // bool select()
        if (dynamic_cast<__internal_SmokeClass*>(static_cast<QSqlRelationalTableModel*>(this))) {
            bool xret = this->QSqlRelationalTableModel::select();
            x[0].s_bool = xret;
        } else {
            bool xret = this->select();
            x[0].s_bool = xret;
        }
    }
    void x_14(Smoke::Stack x) {
        // void setTable(const QString&)
        if (dynamic_cast<__internal_SmokeClass*>(static_cast<QSqlRelationalTableModel*>(this))) {
            this->QSqlRelationalTableModel::setTable(*(const QString*)x[1].s_class);
            (void)x; // noop (for compiler warning)
        } else {
            this->setTable(*(const QString*)x[1].s_class);
            (void)x; // noop (for compiler warning)
        }
    }
    void x_15(Smoke::Stack x) {
        // virtual void setRelation(int, const QSqlRelation&)
        if (dynamic_cast<__internal_SmokeClass*>(static_cast<QSqlRelationalTableModel*>(this))) {
            this->QSqlRelationalTableModel::setRelation((int)x[1].s_int,*(const QSqlRelation*)x[2].s_class);
            (void)x; // noop (for compiler warning)
        } else {
            this->setRelation((int)x[1].s_int,*(const QSqlRelation*)x[2].s_class);
            (void)x; // noop (for compiler warning)
        }
    }
    void x_16(Smoke::Stack x) {
        // QSqlRelation relation(int) const
        QSqlRelation xret = ((const x_QSqlRelationalTableModel*)this)->QSqlRelationalTableModel::relation((int)x[1].s_int);
        x[0].s_class = (void*)new QSqlRelation(xret);
    }
    void x_17(Smoke::Stack x) {
        // virtual QSqlTableModel* relationModel(int) const
        if (dynamic_cast<__internal_SmokeClass*>(static_cast<QSqlRelationalTableModel*>(this))) {
            QSqlTableModel* xret = ((const x_QSqlRelationalTableModel*)this)->QSqlRelationalTableModel::relationModel((int)x[1].s_int);
            x[0].s_class = (void*)xret;
        } else {
            QSqlTableModel* xret = ((const x_QSqlRelationalTableModel*)this)->relationModel((int)x[1].s_int);
            x[0].s_class = (void*)xret;
        }
    }
    void x_18(Smoke::Stack x) {
        // void setJoinMode(QSqlRelationalTableModel::JoinMode)
        this->QSqlRelationalTableModel::setJoinMode((QSqlRelationalTableModel::JoinMode)x[1].s_enum);
        (void)x; // noop (for compiler warning)
    }
    void x_19(Smoke::Stack x) {
        // void revertRow(int)
        if (dynamic_cast<__internal_SmokeClass*>(static_cast<QSqlRelationalTableModel*>(this))) {
            this->QSqlRelationalTableModel::revertRow((int)x[1].s_int);
            (void)x; // noop (for compiler warning)
        } else {
            this->revertRow((int)x[1].s_int);
            (void)x; // noop (for compiler warning)
        }
    }
    void x_20(Smoke::Stack x) {
        // QString selectStatement() const
        if (dynamic_cast<__internal_SmokeClass*>(static_cast<QSqlRelationalTableModel*>(this))) {
            QString xret = ((const x_QSqlRelationalTableModel*)this)->QSqlRelationalTableModel::selectStatement();
            x[0].s_class = (void*)new QString(xret);
        } else {
            QString xret = ((const x_QSqlRelationalTableModel*)this)->selectStatement();
            x[0].s_class = (void*)new QString(xret);
        }
    }
    void x_21(Smoke::Stack x) {
        // bool updateRowInTable(int, const QSqlRecord&)
        if (dynamic_cast<__internal_SmokeClass*>(static_cast<QSqlRelationalTableModel*>(this))) {
            bool xret = this->QSqlRelationalTableModel::updateRowInTable((int)x[1].s_int,*(const QSqlRecord*)x[2].s_class);
            x[0].s_bool = xret;
        } else {
            bool xret = this->updateRowInTable((int)x[1].s_int,*(const QSqlRecord*)x[2].s_class);
            x[0].s_bool = xret;
        }
    }
    void x_22(Smoke::Stack x) {
        // bool insertRowIntoTable(const QSqlRecord&)
        if (dynamic_cast<__internal_SmokeClass*>(static_cast<QSqlRelationalTableModel*>(this))) {
            bool xret = this->QSqlRelationalTableModel::insertRowIntoTable(*(const QSqlRecord*)x[1].s_class);
            x[0].s_bool = xret;
        } else {
            bool xret = this->insertRowIntoTable(*(const QSqlRecord*)x[1].s_class);
            x[0].s_bool = xret;
        }
    }
    void x_23(Smoke::Stack x) {
        // QString orderByClause() const
        if (dynamic_cast<__internal_SmokeClass*>(static_cast<QSqlRelationalTableModel*>(this))) {
            QString xret = ((const x_QSqlRelationalTableModel*)this)->QSqlRelationalTableModel::orderByClause();
            x[0].s_class = (void*)new QString(xret);
        } else {
            QString xret = ((const x_QSqlRelationalTableModel*)this)->orderByClause();
            x[0].s_class = (void*)new QString(xret);
        }
    }
    static void x_24(Smoke::Stack x) {
        // static QString tr(const char*)
        QString xret = QSqlRelationalTableModel::tr((const char*)x[1].s_class,(const char*)0);
        x[0].s_class = (void*)new QString(xret);
    }
    static void x_25(Smoke::Stack x) {
        // static QString trUtf8(const char*)
        QString xret = QSqlRelationalTableModel::trUtf8((const char*)x[1].s_class,(const char*)0);
        x[0].s_class = (void*)new QString(xret);
    }
    static void x_26(Smoke::Stack x) {
        // QSqlRelationalTableModel* QSqlRelationalTableModel()
        x_QSqlRelationalTableModel* xret = new x_QSqlRelationalTableModel((QObject*)0,(QSqlDatabase)QSqlDatabase());
        x[0].s_class = (void*)xret;
    }
    static void x_27(Smoke::Stack x) {
        // QSqlRelationalTableModel* QSqlRelationalTableModel(QObject*)
        x_QSqlRelationalTableModel* xret = new x_QSqlRelationalTableModel((QObject*)x[1].s_class,(QSqlDatabase)QSqlDatabase());
        x[0].s_class = (void*)xret;
    }
    void x_28(Smoke::Stack x) {
        // QVariant data(const QModelIndex&) const
        QVariant xret = ((const x_QSqlRelationalTableModel*)this)->QSqlRelationalTableModel::data(*(const QModelIndex*)x[1].s_class,(int)Qt::DisplayRole);
        x[0].s_class = (void*)new QVariant(xret);
    }
    void x_29(Smoke::Stack x) {
        // bool setData(const QModelIndex&, const QVariant&)
        bool xret = this->QSqlRelationalTableModel::setData(*(const QModelIndex*)x[1].s_class,*(const QVariant*)x[2].s_class,(int)Qt::EditRole);
        x[0].s_bool = xret;
    }
    void x_30(Smoke::Stack x) {
        // bool removeColumns(int, int)
        bool xret = this->QSqlRelationalTableModel::removeColumns((int)x[1].s_int,(int)x[2].s_int,(const QModelIndex&)QModelIndex());
        x[0].s_bool = xret;
    }
    static void x_31(Smoke::Stack x) {
        // static const QMetaObject staticMetaObject
        x[0].s_class = (void*)&QSqlRelationalTableModel::staticMetaObject;
    }
    static void x_32(Smoke::Stack x) {
        x[0].s_enum = (long)QSqlRelationalTableModel::InnerJoin;
    }
    static void x_33(Smoke::Stack x) {
        x[0].s_enum = (long)QSqlRelationalTableModel::LeftJoin;
    }
    virtual const QMetaObject* metaObject() const {
        Smoke::StackItem x[1];
        if (this->_binding->callMethod(425, (void*)this, x)) return (const QMetaObject*)x[0].s_class;
        return this->QSqlRelationalTableModel::metaObject();
    }
    virtual void* qt_metacast(const char* x1) {
        Smoke::StackItem x[2];
        x[1].s_class = (void*)x1;
        if (this->_binding->callMethod(426, (void*)this, x)) return (void*)x[0].s_class;
        return this->QSqlRelationalTableModel::qt_metacast(x1);
    }
    virtual int qt_metacall(QMetaObject::Call x1, int x2, void** x3) {
        Smoke::StackItem x[4];
        x[1].s_enum = x1;
        x[2].s_int = x2;
        x[3].s_class = (void*)x3;
        if (this->_binding->callMethod(431, (void*)this, x)) return (int)x[0].s_int;
        return this->QSqlRelationalTableModel::qt_metacall(x1, x2, x3);
    }
    virtual void setRelation(int x1, const QSqlRelation& x2) {
        Smoke::StackItem x[3];
        x[1].s_int = x1;
        x[2].s_class = (void*)&x2;
        if (this->_binding->callMethod(439, (void*)this, x)) return;
        this->QSqlRelationalTableModel::setRelation(x1, x2);
    }
    virtual QSqlTableModel* relationModel(int x1) const {
        Smoke::StackItem x[2];
        x[1].s_int = x1;
        if (this->_binding->callMethod(441, (void*)this, x)) return (QSqlTableModel*)x[0].s_class;
        return this->QSqlRelationalTableModel::relationModel(x1);
    }
    virtual bool select() {
        Smoke::StackItem x[1];
        if (this->_binding->callMethod(437, (void*)this, x)) return (bool)x[0].s_bool;
        return this->QSqlRelationalTableModel::select();
    }
    virtual void setTable(const QString& x1) {
        Smoke::StackItem x[2];
        x[1].s_class = (void*)&x1;
        if (this->_binding->callMethod(438, (void*)this, x)) return;
        this->QSqlRelationalTableModel::setTable(x1);
    }
    virtual void setEditStrategy(QSqlTableModel::EditStrategy x1) {
        Smoke::StackItem x[2];
        x[1].s_enum = x1;
        if (this->_binding->callMethod(535, (void*)this, x)) return;
        this->QSqlTableModel::setEditStrategy(x1);
    }
    virtual void setSort(int x1, Qt::SortOrder x2) {
        Smoke::StackItem x[3];
        x[1].s_int = x1;
        x[2].s_enum = x2;
        if (this->_binding->callMethod(541, (void*)this, x)) return;
        this->QSqlTableModel::setSort(x1, x2);
    }
    virtual void setFilter(const QString& x1) {
        Smoke::StackItem x[2];
        x[1].s_class = (void*)&x1;
        if (this->_binding->callMethod(543, (void*)this, x)) return;
        this->QSqlTableModel::setFilter(x1);
    }
    virtual void revertRow(int x1) {
        Smoke::StackItem x[2];
        x[1].s_int = x1;
        if (this->_binding->callMethod(443, (void*)this, x)) return;
        this->QSqlRelationalTableModel::revertRow(x1);
    }
    virtual bool updateRowInTable(int x1, const QSqlRecord& x2) {
        Smoke::StackItem x[3];
        x[1].s_int = x1;
        x[2].s_class = (void*)&x2;
        if (this->_binding->callMethod(445, (void*)this, x)) return (bool)x[0].s_bool;
        return this->QSqlRelationalTableModel::updateRowInTable(x1, x2);
    }
    virtual bool insertRowIntoTable(const QSqlRecord& x1) {
        Smoke::StackItem x[2];
        x[1].s_class = (void*)&x1;
        if (this->_binding->callMethod(446, (void*)this, x)) return (bool)x[0].s_bool;
        return this->QSqlRelationalTableModel::insertRowIntoTable(x1);
    }
    virtual bool deleteRowFromTable(int x1) {
        Smoke::StackItem x[2];
        x[1].s_int = x1;
        if (this->_binding->callMethod(561, (void*)this, x)) return (bool)x[0].s_bool;
        return this->QSqlTableModel::deleteRowFromTable(x1);
    }
    virtual QString orderByClause() const {
        Smoke::StackItem x[1];
        if (this->_binding->callMethod(447, (void*)this, x)) {
            QString* xptr = (QString*)x[0].s_class;
            QString xret(*xptr);
            delete xptr;
            return xret;
        }
        return this->QSqlRelationalTableModel::orderByClause();
    }
    virtual QString selectStatement() const {
        Smoke::StackItem x[1];
        if (this->_binding->callMethod(444, (void*)this, x)) {
            QString* xptr = (QString*)x[0].s_class;
            QString xret(*xptr);
            delete xptr;
            return xret;
        }
        return this->QSqlRelationalTableModel::selectStatement();
    }
    virtual void clear() {
        Smoke::StackItem x[1];
        if (this->_binding->callMethod(436, (void*)this, x)) return;
        this->QSqlRelationalTableModel::clear();
    }
    virtual void queryChange() {
        Smoke::StackItem x[1];
        if (this->_binding->callMethod(362, (void*)this, x)) return;
        this->QSqlQueryModel::queryChange();
    }
    virtual QModelIndex index(int x1, int x2, const QModelIndex& x3) const {
        Smoke::StackItem x[4];
        x[1].s_int = x1;
        x[2].s_int = x2;
        x[3].s_class = (void*)&x3;
        if (this->_binding->callMethod(16, (void*)this, x)) {
            QModelIndex* xptr = (QModelIndex*)x[0].s_class;
            QModelIndex xret(*xptr);
            delete xptr;
            return xret;
        }
        return this->QAbstractTableModel::index(x1, x2, x3);
    }
    virtual int rowCount(const QModelIndex& x1) const {
        Smoke::StackItem x[2];
        x[1].s_class = (void*)&x1;
        if (this->_binding->callMethod(544, (void*)this, x)) return (int)x[0].s_int;
        return this->QSqlTableModel::rowCount(x1);
    }
    virtual int columnCount(const QModelIndex& x1) const {
        Smoke::StackItem x[2];
        x[1].s_class = (void*)&x1;
        if (this->_binding->callMethod(347, (void*)this, x)) return (int)x[0].s_int;
        return this->QSqlQueryModel::columnCount(x1);
    }
    virtual QVariant data(const QModelIndex& x1, int x2) const {
        Smoke::StackItem x[3];
        x[1].s_class = (void*)&x1;
        x[2].s_int = x2;
        if (this->_binding->callMethod(433, (void*)this, x)) {
            QVariant* xptr = (QVariant*)x[0].s_class;
            QVariant xret(*xptr);
            delete xptr;
            return xret;
        }
        return this->QSqlRelationalTableModel::data(x1, x2);
    }
    virtual bool setData(const QModelIndex& x1, const QVariant& x2, int x3) {
        Smoke::StackItem x[4];
        x[1].s_class = (void*)&x1;
        x[2].s_class = (void*)&x2;
        x[3].s_int = x3;
        if (this->_binding->callMethod(434, (void*)this, x)) return (bool)x[0].s_bool;
        return this->QSqlRelationalTableModel::setData(x1, x2, x3);
    }
    virtual QVariant headerData(int x1, Qt::Orientation x2, int x3) const {
        Smoke::StackItem x[4];
        x[1].s_int = x1;
        x[2].s_enum = x2;
        x[3].s_int = x3;
        if (this->_binding->callMethod(532, (void*)this, x)) {
            QVariant* xptr = (QVariant*)x[0].s_class;
            QVariant xret(*xptr);
            delete xptr;
            return xret;
        }
        return this->QSqlTableModel::headerData(x1, x2, x3);
    }
    virtual bool setHeaderData(int x1, Qt::Orientation x2, const QVariant& x3, int x4) {
        Smoke::StackItem x[5];
        x[1].s_int = x1;
        x[2].s_enum = x2;
        x[3].s_class = (void*)&x3;
        x[4].s_int = x4;
        if (this->_binding->callMethod(352, (void*)this, x)) return (bool)x[0].s_bool;
        return this->QSqlQueryModel::setHeaderData(x1, x2, x3, x4);
    }
    virtual QMap<int,QVariant> itemData(const QModelIndex& x1) const {
        Smoke::StackItem x[2];
        x[1].s_class = (void*)&x1;
        if (this->_binding->callMethod(2, (void*)this, x)) {
            QMap<int,QVariant>* xptr = (QMap<int,QVariant>*)x[0].s_class;
            QMap<int,QVariant> xret(*xptr);
            delete xptr;
            return xret;
        }
        return this->QAbstractItemModel::itemData(x1);
    }
    virtual bool setItemData(const QModelIndex& x1, const QMap<int,QVariant>& x2) {
        Smoke::StackItem x[3];
        x[1].s_class = (void*)&x1;
        x[2].s_class = (void*)&x2;
        if (this->_binding->callMethod(3, (void*)this, x)) return (bool)x[0].s_bool;
        return this->QAbstractItemModel::setItemData(x1, x2);
    }
    virtual QStringList mimeTypes() const {
        Smoke::StackItem x[1];
        if (this->_binding->callMethod(4, (void*)this, x)) {
            QStringList* xptr = (QStringList*)x[0].s_class;
            QStringList xret(*xptr);
            delete xptr;
            return xret;
        }
        return this->QAbstractItemModel::mimeTypes();
    }
    virtual QMimeData* mimeData(const QList<QModelIndex>& x1) const {
        Smoke::StackItem x[2];
        x[1].s_class = (void*)&x1;
        if (this->_binding->callMethod(5, (void*)this, x)) return (QMimeData*)x[0].s_class;
        return this->QAbstractItemModel::mimeData(x1);
    }
    virtual bool dropMimeData(const QMimeData* x1, Qt::DropAction x2, int x3, int x4, const QModelIndex& x5) {
        Smoke::StackItem x[6];
        x[1].s_class = (void*)x1;
        x[2].s_enum = x2;
        x[3].s_int = x3;
        x[4].s_int = x4;
        x[5].s_class = (void*)&x5;
        if (this->_binding->callMethod(17, (void*)this, x)) return (bool)x[0].s_bool;
        return this->QAbstractTableModel::dropMimeData(x1, x2, x3, x4, x5);
    }
    virtual QFlags<Qt::DropAction> supportedDropActions() const {
        Smoke::StackItem x[1];
        if (this->_binding->callMethod(6, (void*)this, x)) return (QFlags<Qt::DropAction>)x[0].s_uint;
        return this->QAbstractItemModel::supportedDropActions();
    }
    virtual bool insertRows(int x1, int x2, const QModelIndex& x3) {
        Smoke::StackItem x[4];
        x[1].s_int = x1;
        x[2].s_int = x2;
        x[3].s_class = (void*)&x3;
        if (this->_binding->callMethod(547, (void*)this, x)) return (bool)x[0].s_bool;
        return this->QSqlTableModel::insertRows(x1, x2, x3);
    }
    virtual bool insertColumns(int x1, int x2, const QModelIndex& x3) {
        Smoke::StackItem x[4];
        x[1].s_int = x1;
        x[2].s_int = x2;
        x[3].s_class = (void*)&x3;
        if (this->_binding->callMethod(353, (void*)this, x)) return (bool)x[0].s_bool;
        return this->QSqlQueryModel::insertColumns(x1, x2, x3);
    }
    virtual bool removeRows(int x1, int x2, const QModelIndex& x3) {
        Smoke::StackItem x[4];
        x[1].s_int = x1;
        x[2].s_int = x2;
        x[3].s_class = (void*)&x3;
        if (this->_binding->callMethod(546, (void*)this, x)) return (bool)x[0].s_bool;
        return this->QSqlTableModel::removeRows(x1, x2, x3);
    }
    virtual bool removeColumns(int x1, int x2, const QModelIndex& x3) {
        Smoke::StackItem x[4];
        x[1].s_int = x1;
        x[2].s_int = x2;
        x[3].s_class = (void*)&x3;
        if (this->_binding->callMethod(435, (void*)this, x)) return (bool)x[0].s_bool;
        return this->QSqlRelationalTableModel::removeColumns(x1, x2, x3);
    }
    virtual void fetchMore(const QModelIndex& x1) {
        Smoke::StackItem x[2];
        x[1].s_class = (void*)&x1;
        if (this->_binding->callMethod(360, (void*)this, x)) return;
        this->QSqlQueryModel::fetchMore(x1);
    }
    virtual bool canFetchMore(const QModelIndex& x1) const {
        Smoke::StackItem x[2];
        x[1].s_class = (void*)&x1;
        if (this->_binding->callMethod(361, (void*)this, x)) return (bool)x[0].s_bool;
        return this->QSqlQueryModel::canFetchMore(x1);
    }
    virtual QFlags<Qt::ItemFlag> flags(const QModelIndex& x1) const {
        Smoke::StackItem x[2];
        x[1].s_class = (void*)&x1;
        if (this->_binding->callMethod(529, (void*)this, x)) return (QFlags<Qt::ItemFlag>)x[0].s_uint;
        return this->QSqlTableModel::flags(x1);
    }
    virtual void sort(int x1, Qt::SortOrder x2) {
        Smoke::StackItem x[3];
        x[1].s_int = x1;
        x[2].s_enum = x2;
        if (this->_binding->callMethod(540, (void*)this, x)) return;
        this->QSqlTableModel::sort(x1, x2);
    }
    virtual QModelIndex buddy(const QModelIndex& x1) const {
        Smoke::StackItem x[2];
        x[1].s_class = (void*)&x1;
        if (this->_binding->callMethod(11, (void*)this, x)) {
            QModelIndex* xptr = (QModelIndex*)x[0].s_class;
            QModelIndex xret(*xptr);
            delete xptr;
            return xret;
        }
        return this->QAbstractItemModel::buddy(x1);
    }
    virtual QList<QModelIndex> match(const QModelIndex& x1, int x2, const QVariant& x3, int x4, QFlags<Qt::MatchFlag> x5) const {
        Smoke::StackItem x[6];
        x[1].s_class = (void*)&x1;
        x[2].s_int = x2;
        x[3].s_class = (void*)&x3;
        x[4].s_int = x4;
        x[5].s_uint = (uint)x5;
        if (this->_binding->callMethod(12, (void*)this, x)) {
            QList<QModelIndex>* xptr = (QList<QModelIndex>*)x[0].s_class;
            QList<QModelIndex> xret(*xptr);
            delete xptr;
            return xret;
        }
        return this->QAbstractItemModel::match(x1, x2, x3, x4, x5);
    }
    virtual QSize span(const QModelIndex& x1) const {
        Smoke::StackItem x[2];
        x[1].s_class = (void*)&x1;
        if (this->_binding->callMethod(13, (void*)this, x)) {
            QSize* xptr = (QSize*)x[0].s_class;
            QSize xret(*xptr);
            delete xptr;
            return xret;
        }
        return this->QAbstractItemModel::span(x1);
    }
    virtual bool submit() {
        Smoke::StackItem x[1];
        if (this->_binding->callMethod(551, (void*)this, x)) return (bool)x[0].s_bool;
        return this->QSqlTableModel::submit();
    }
    virtual void revert() {
        Smoke::StackItem x[1];
        if (this->_binding->callMethod(552, (void*)this, x)) return;
        this->QSqlTableModel::revert();
    }
    virtual bool event(QEvent* x1) {
        Smoke::StackItem x[2];
        x[1].s_class = (void*)x1;
        if (this->_binding->callMethod(38, (void*)this, x)) return (bool)x[0].s_bool;
        return this->QObject::event(x1);
    }
    virtual bool eventFilter(QObject* x1, QEvent* x2) {
        Smoke::StackItem x[3];
        x[1].s_class = (void*)x1;
        x[2].s_class = (void*)x2;
        if (this->_binding->callMethod(39, (void*)this, x)) return (bool)x[0].s_bool;
        return this->QObject::eventFilter(x1, x2);
    }
    virtual void timerEvent(QTimerEvent* x1) {
        Smoke::StackItem x[2];
        x[1].s_class = (void*)x1;
        if (this->_binding->callMethod(40, (void*)this, x)) return;
        this->QObject::timerEvent(x1);
    }
    virtual void childEvent(QChildEvent* x1) {
        Smoke::StackItem x[2];
        x[1].s_class = (void*)x1;
        if (this->_binding->callMethod(41, (void*)this, x)) return;
        this->QObject::childEvent(x1);
    }
    virtual void customEvent(QEvent* x1) {
        Smoke::StackItem x[2];
        x[1].s_class = (void*)x1;
        if (this->_binding->callMethod(42, (void*)this, x)) return;
        this->QObject::customEvent(x1);
    }
    virtual void connectNotify(const char* x1) {
        Smoke::StackItem x[2];
        x[1].s_class = (void*)x1;
        if (this->_binding->callMethod(43, (void*)this, x)) return;
        this->QObject::connectNotify(x1);
    }
    virtual void disconnectNotify(const char* x1) {
        Smoke::StackItem x[2];
        x[1].s_class = (void*)x1;
        if (this->_binding->callMethod(44, (void*)this, x)) return;
        this->QObject::disconnectNotify(x1);
    }
    static void xenum_operation(Smoke::EnumOperation xop, Smoke::Index xtype, void *&xdata, long &xvalue) {
        switch(xtype) {
        case 63: //QSqlRelationalTableModel::JoinMode
            switch(xop) {
                case Smoke::EnumNew:
                    xdata = (void*)new QSqlRelationalTableModel::JoinMode;
                    break;
                case Smoke::EnumDelete:
                    delete (QSqlRelationalTableModel::JoinMode*)xdata;
                    break;
                case Smoke::EnumFromLong:
                    *(QSqlRelationalTableModel::JoinMode*)xdata = (QSqlRelationalTableModel::JoinMode)xvalue;
                    break;
                case Smoke::EnumToLong:
                    xvalue = (long)*(QSqlRelationalTableModel::JoinMode*)xdata;
                    break;
            }
            break;
        }
    }
    ~x_QSqlRelationalTableModel() { this->_binding->deleted(35, (void*)this); }
};
void xenum_QSqlRelationalTableModel(Smoke::EnumOperation xop, Smoke::Index xtype, void *&xdata, long &xvalue) {
    x_QSqlRelationalTableModel::xenum_operation(xop, xtype, xdata, xvalue);
}
void xcall_QSqlRelationalTableModel(Smoke::Index xi, void *obj, Smoke::Stack args) {
    x_QSqlRelationalTableModel *xself = (x_QSqlRelationalTableModel*)obj;
    switch(xi) {
        case 0: xself->x_0(args);	break;
        case 1: xself->x_1(args);	break;
        case 2: xself->x_2(args);	break;
        case 3: x_QSqlRelationalTableModel::x_3(args);	break;
        case 4: x_QSqlRelationalTableModel::x_4(args);	break;
        case 5: x_QSqlRelationalTableModel::x_5(args);	break;
        case 6: x_QSqlRelationalTableModel::x_6(args);	break;
        case 7: xself->x_7(args);	break;
        case 8: x_QSqlRelationalTableModel::x_8(args);	break;
        case 9: xself->x_9(args);	break;
        case 10: xself->x_10(args);	break;
        case 11: xself->x_11(args);	break;
        case 12: xself->x_12(args);	break;
        case 13: xself->x_13(args);	break;
        case 14: xself->x_14(args);	break;
        case 15: xself->x_15(args);	break;
        case 16: xself->x_16(args);	break;
        case 17: xself->x_17(args);	break;
        case 18: xself->x_18(args);	break;
        case 19: xself->x_19(args);	break;
        case 20: xself->x_20(args);	break;
        case 21: xself->x_21(args);	break;
        case 22: xself->x_22(args);	break;
        case 23: xself->x_23(args);	break;
        case 24: x_QSqlRelationalTableModel::x_24(args);	break;
        case 25: x_QSqlRelationalTableModel::x_25(args);	break;
        case 26: x_QSqlRelationalTableModel::x_26(args);	break;
        case 27: x_QSqlRelationalTableModel::x_27(args);	break;
        case 28: xself->x_28(args);	break;
        case 29: xself->x_29(args);	break;
        case 30: xself->x_30(args);	break;
        case 31: x_QSqlRelationalTableModel::x_31(args);	break;
        case 32: x_QSqlRelationalTableModel::x_32(args);	break;
        case 33: x_QSqlRelationalTableModel::x_33(args);	break;
        case 34: delete (QSqlRelationalTableModel*)xself;	break;
    }
}
class x_QSqlResult : public QSqlResult, public __internal_SmokeClass {
    SmokeBinding* _binding;
public:
    void x_0(Smoke::Stack x) {
        // set the smoke binding
        _binding = (SmokeBinding*)x[1].s_class;
    }
    void x_1(Smoke::Stack x) {
        // virtual QVariant handle() const
        if (dynamic_cast<__internal_SmokeClass*>(static_cast<QSqlResult*>(this))) {
            QVariant xret = ((const x_QSqlResult*)this)->QSqlResult::handle();
            x[0].s_class = (void*)new QVariant(xret);
        } else {
            QVariant xret = ((const x_QSqlResult*)this)->handle();
            x[0].s_class = (void*)new QVariant(xret);
        }
    }
    static void x_2(Smoke::Stack x) {
        // QSqlResult* QSqlResult(const QSqlDriver*)
        x_QSqlResult* xret = new x_QSqlResult((const QSqlDriver*)x[1].s_class);
        x[0].s_class = (void*)xret;
    }
    explicit x_QSqlResult(const QSqlDriver* x1) : QSqlResult(x1) {}
    void x_3(Smoke::Stack x) {
        // int at() const
        int xret = ((const x_QSqlResult*)this)->QSqlResult::at();
        x[0].s_int = xret;
    }
    void x_4(Smoke::Stack x) {
        // QString lastQuery() const
        QString xret = ((const x_QSqlResult*)this)->QSqlResult::lastQuery();
        x[0].s_class = (void*)new QString(xret);
    }
    void x_5(Smoke::Stack x) {
        // QSqlError lastError() const
        QSqlError xret = ((const x_QSqlResult*)this)->QSqlResult::lastError();
        x[0].s_class = (void*)new QSqlError(xret);
    }
    void x_6(Smoke::Stack x) {
        // bool isValid() const
        bool xret = ((const x_QSqlResult*)this)->QSqlResult::isValid();
        x[0].s_bool = xret;
    }
    void x_7(Smoke::Stack x) {
        // bool isActive() const
        bool xret = ((const x_QSqlResult*)this)->QSqlResult::isActive();
        x[0].s_bool = xret;
    }
    void x_8(Smoke::Stack x) {
        // bool isSelect() const
        bool xret = ((const x_QSqlResult*)this)->QSqlResult::isSelect();
        x[0].s_bool = xret;
    }
    void x_9(Smoke::Stack x) {
        // bool isForwardOnly() const
        bool xret = ((const x_QSqlResult*)this)->QSqlResult::isForwardOnly();
        x[0].s_bool = xret;
    }
    void x_10(Smoke::Stack x) {
        // const QSqlDriver* driver() const
        const QSqlDriver* xret = ((const x_QSqlResult*)this)->QSqlResult::driver();
        x[0].s_class = (void*)xret;
    }
    void x_11(Smoke::Stack x) {
        // virtual void setAt(int)
        if (dynamic_cast<__internal_SmokeClass*>(static_cast<QSqlResult*>(this))) {
            this->QSqlResult::setAt((int)x[1].s_int);
            (void)x; // noop (for compiler warning)
        } else {
            this->setAt((int)x[1].s_int);
            (void)x; // noop (for compiler warning)
        }
    }
    void x_12(Smoke::Stack x) {
        // virtual void setActive(bool)
        if (dynamic_cast<__internal_SmokeClass*>(static_cast<QSqlResult*>(this))) {
            this->QSqlResult::setActive((bool)x[1].s_bool);
            (void)x; // noop (for compiler warning)
        } else {
            this->setActive((bool)x[1].s_bool);
            (void)x; // noop (for compiler warning)
        }
    }
    void x_13(Smoke::Stack x) {
        // virtual void setLastError(const QSqlError&)
        if (dynamic_cast<__internal_SmokeClass*>(static_cast<QSqlResult*>(this))) {
            this->QSqlResult::setLastError(*(const QSqlError*)x[1].s_class);
            (void)x; // noop (for compiler warning)
        } else {
            this->setLastError(*(const QSqlError*)x[1].s_class);
            (void)x; // noop (for compiler warning)
        }
    }
    void x_14(Smoke::Stack x) {
        // virtual void setQuery(const QString&)
        if (dynamic_cast<__internal_SmokeClass*>(static_cast<QSqlResult*>(this))) {
            this->QSqlResult::setQuery(*(const QString*)x[1].s_class);
            (void)x; // noop (for compiler warning)
        } else {
            this->setQuery(*(const QString*)x[1].s_class);
            (void)x; // noop (for compiler warning)
        }
    }
    void x_15(Smoke::Stack x) {
        // virtual void setSelect(bool)
        if (dynamic_cast<__internal_SmokeClass*>(static_cast<QSqlResult*>(this))) {
            this->QSqlResult::setSelect((bool)x[1].s_bool);
            (void)x; // noop (for compiler warning)
        } else {
            this->setSelect((bool)x[1].s_bool);
            (void)x; // noop (for compiler warning)
        }
    }
    void x_16(Smoke::Stack x) {
        // virtual void setForwardOnly(bool)
        if (dynamic_cast<__internal_SmokeClass*>(static_cast<QSqlResult*>(this))) {
            this->QSqlResult::setForwardOnly((bool)x[1].s_bool);
            (void)x; // noop (for compiler warning)
        } else {
            this->setForwardOnly((bool)x[1].s_bool);
            (void)x; // noop (for compiler warning)
        }
    }
    void x_17(Smoke::Stack x) {
        // virtual bool exec()
        if (dynamic_cast<__internal_SmokeClass*>(static_cast<QSqlResult*>(this))) {
            bool xret = this->QSqlResult::exec();
            x[0].s_bool = xret;
        } else {
            bool xret = this->exec();
            x[0].s_bool = xret;
        }
    }
    void x_18(Smoke::Stack x) {
        // virtual bool prepare(const QString&)
        if (dynamic_cast<__internal_SmokeClass*>(static_cast<QSqlResult*>(this))) {
            bool xret = this->QSqlResult::prepare(*(const QString*)x[1].s_class);
            x[0].s_bool = xret;
        } else {
            bool xret = this->prepare(*(const QString*)x[1].s_class);
            x[0].s_bool = xret;
        }
    }
    void x_19(Smoke::Stack x) {
        // virtual bool savePrepare(const QString&)
        if (dynamic_cast<__internal_SmokeClass*>(static_cast<QSqlResult*>(this))) {
            bool xret = this->QSqlResult::savePrepare(*(const QString*)x[1].s_class);
            x[0].s_bool = xret;
        } else {
            bool xret = this->savePrepare(*(const QString*)x[1].s_class);
            x[0].s_bool = xret;
        }
    }
    void x_20(Smoke::Stack x) {
        // virtual void bindValue(int, const QVariant&, QFlags<QSql::ParamTypeFlag>)
        if (dynamic_cast<__internal_SmokeClass*>(static_cast<QSqlResult*>(this))) {
            this->QSqlResult::bindValue((int)x[1].s_int,*(const QVariant*)x[2].s_class,(QFlags<QSql::ParamTypeFlag>)x[3].s_uint);
            (void)x; // noop (for compiler warning)
        } else {
            this->bindValue((int)x[1].s_int,*(const QVariant*)x[2].s_class,(QFlags<QSql::ParamTypeFlag>)x[3].s_uint);
            (void)x; // noop (for compiler warning)
        }
    }
    void x_21(Smoke::Stack x) {
        // virtual void bindValue(const QString&, const QVariant&, QFlags<QSql::ParamTypeFlag>)
        if (dynamic_cast<__internal_SmokeClass*>(static_cast<QSqlResult*>(this))) {
            this->QSqlResult::bindValue(*(const QString*)x[1].s_class,*(const QVariant*)x[2].s_class,(QFlags<QSql::ParamTypeFlag>)x[3].s_uint);
            (void)x; // noop (for compiler warning)
        } else {
            this->bindValue(*(const QString*)x[1].s_class,*(const QVariant*)x[2].s_class,(QFlags<QSql::ParamTypeFlag>)x[3].s_uint);
            (void)x; // noop (for compiler warning)
        }
    }
    void x_22(Smoke::Stack x) {
        // void addBindValue(const QVariant&, QFlags<QSql::ParamTypeFlag>)
        this->QSqlResult::addBindValue(*(const QVariant*)x[1].s_class,(QFlags<QSql::ParamTypeFlag>)x[2].s_uint);
        (void)x; // noop (for compiler warning)
    }
    void x_23(Smoke::Stack x) {
        // QVariant boundValue(const QString&) const
        QVariant xret = ((const x_QSqlResult*)this)->QSqlResult::boundValue(*(const QString*)x[1].s_class);
        x[0].s_class = (void*)new QVariant(xret);
    }
    void x_24(Smoke::Stack x) {
        // QVariant boundValue(int) const
        QVariant xret = ((const x_QSqlResult*)this)->QSqlResult::boundValue((int)x[1].s_int);
        x[0].s_class = (void*)new QVariant(xret);
    }
    void x_25(Smoke::Stack x) {
        // QFlags<QSql::ParamTypeFlag> bindValueType(const QString&) const
        QFlags<QSql::ParamTypeFlag> xret = ((const x_QSqlResult*)this)->QSqlResult::bindValueType(*(const QString*)x[1].s_class);
        x[0].s_uint = (uint)xret;
    }
    void x_26(Smoke::Stack x) {
        // QFlags<QSql::ParamTypeFlag> bindValueType(int) const
        QFlags<QSql::ParamTypeFlag> xret = ((const x_QSqlResult*)this)->QSqlResult::bindValueType((int)x[1].s_int);
        x[0].s_uint = (uint)xret;
    }
    void x_27(Smoke::Stack x) {
        // int boundValueCount() const
        int xret = ((const x_QSqlResult*)this)->QSqlResult::boundValueCount();
        x[0].s_int = xret;
    }
    void x_28(Smoke::Stack x) {
        // QVector<QVariant>& boundValues() const
        QVector<QVariant>& xret = ((const x_QSqlResult*)this)->QSqlResult::boundValues();
        x[0].s_class = (void*)&xret;
    }
    void x_29(Smoke::Stack x) {
        // QString executedQuery() const
        QString xret = ((const x_QSqlResult*)this)->QSqlResult::executedQuery();
        x[0].s_class = (void*)new QString(xret);
    }
    void x_30(Smoke::Stack x) {
        // QString boundValueName(int) const
        QString xret = ((const x_QSqlResult*)this)->QSqlResult::boundValueName((int)x[1].s_int);
        x[0].s_class = (void*)new QString(xret);
    }
    void x_31(Smoke::Stack x) {
        // void clear()
        this->QSqlResult::clear();
        (void)x; // noop (for compiler warning)
    }
    void x_32(Smoke::Stack x) {
        // bool hasOutValues() const
        bool xret = ((const x_QSqlResult*)this)->QSqlResult::hasOutValues();
        x[0].s_bool = xret;
    }
    void x_33(Smoke::Stack x) {
        // QSqlResult::BindingSyntax bindingSyntax() const
        QSqlResult::BindingSyntax xret = ((const x_QSqlResult*)this)->QSqlResult::bindingSyntax();
        x[0].s_enum = xret;
    }
    void x_34(Smoke::Stack x) {
        // virtual QVariant data(int) = 0
        QVariant xret = this->data((int)x[1].s_int);
        x[0].s_class = (void*)new QVariant(xret);
    }
    void x_35(Smoke::Stack x) {
        // virtual bool isNull(int) = 0
        bool xret = this->isNull((int)x[1].s_int);
        x[0].s_bool = xret;
    }
    void x_36(Smoke::Stack x) {
        // virtual bool reset(const QString&) = 0
        bool xret = this->reset(*(const QString*)x[1].s_class);
        x[0].s_bool = xret;
    }
    void x_37(Smoke::Stack x) {
        // virtual bool fetch(int) = 0
        bool xret = this->fetch((int)x[1].s_int);
        x[0].s_bool = xret;
    }
    void x_38(Smoke::Stack x) {
        // virtual bool fetchNext()
        if (dynamic_cast<__internal_SmokeClass*>(static_cast<QSqlResult*>(this))) {
            bool xret = this->QSqlResult::fetchNext();
            x[0].s_bool = xret;
        } else {
            bool xret = this->fetchNext();
            x[0].s_bool = xret;
        }
    }
    void x_39(Smoke::Stack x) {
        // virtual bool fetchPrevious()
        if (dynamic_cast<__internal_SmokeClass*>(static_cast<QSqlResult*>(this))) {
            bool xret = this->QSqlResult::fetchPrevious();
            x[0].s_bool = xret;
        } else {
            bool xret = this->fetchPrevious();
            x[0].s_bool = xret;
        }
    }
    void x_40(Smoke::Stack x) {
        // virtual bool fetchFirst() = 0
        bool xret = this->fetchFirst();
        x[0].s_bool = xret;
    }
    void x_41(Smoke::Stack x) {
        // virtual bool fetchLast() = 0
        bool xret = this->fetchLast();
        x[0].s_bool = xret;
    }
    void x_42(Smoke::Stack x) {
        // virtual int size() = 0
        int xret = this->size();
        x[0].s_int = xret;
    }
    void x_43(Smoke::Stack x) {
        // virtual int numRowsAffected() = 0
        int xret = this->numRowsAffected();
        x[0].s_int = xret;
    }
    void x_44(Smoke::Stack x) {
        // virtual QSqlRecord record() const
        if (dynamic_cast<__internal_SmokeClass*>(static_cast<QSqlResult*>(this))) {
            QSqlRecord xret = ((const x_QSqlResult*)this)->QSqlResult::record();
            x[0].s_class = (void*)new QSqlRecord(xret);
        } else {
            QSqlRecord xret = ((const x_QSqlResult*)this)->record();
            x[0].s_class = (void*)new QSqlRecord(xret);
        }
    }
    void x_45(Smoke::Stack x) {
        // virtual QVariant lastInsertId() const
        if (dynamic_cast<__internal_SmokeClass*>(static_cast<QSqlResult*>(this))) {
            QVariant xret = ((const x_QSqlResult*)this)->QSqlResult::lastInsertId();
            x[0].s_class = (void*)new QVariant(xret);
        } else {
            QVariant xret = ((const x_QSqlResult*)this)->lastInsertId();
            x[0].s_class = (void*)new QVariant(xret);
        }
    }
    void x_46(Smoke::Stack x) {
        // virtual void virtual_hook(int, void*)
        if (dynamic_cast<__internal_SmokeClass*>(static_cast<QSqlResult*>(this))) {
            this->QSqlResult::virtual_hook((int)x[1].s_int,(void*)x[2].s_class);
            (void)x; // noop (for compiler warning)
        } else {
            this->virtual_hook((int)x[1].s_int,(void*)x[2].s_class);
            (void)x; // noop (for compiler warning)
        }
    }
    void x_47(Smoke::Stack x) {
        // bool execBatch(bool)
        bool xret = this->QSqlResult::execBatch((bool)x[1].s_bool);
        x[0].s_bool = xret;
    }
    void x_48(Smoke::Stack x) {
        // void detachFromResultSet()
        this->QSqlResult::detachFromResultSet();
        (void)x; // noop (for compiler warning)
    }
    void x_49(Smoke::Stack x) {
        // void setNumericalPrecisionPolicy(QSql::NumericalPrecisionPolicy)
        this->QSqlResult::setNumericalPrecisionPolicy((QSql::NumericalPrecisionPolicy)x[1].s_enum);
        (void)x; // noop (for compiler warning)
    }
    void x_50(Smoke::Stack x) {
        // QSql::NumericalPrecisionPolicy numericalPrecisionPolicy() const
        QSql::NumericalPrecisionPolicy xret = ((const x_QSqlResult*)this)->QSqlResult::numericalPrecisionPolicy();
        x[0].s_enum = xret;
    }
    void x_51(Smoke::Stack x) {
        // bool nextResult()
        bool xret = this->QSqlResult::nextResult();
        x[0].s_bool = xret;
    }
    void x_52(Smoke::Stack x) {
        // bool execBatch()
        bool xret = this->QSqlResult::execBatch((bool)false);
        x[0].s_bool = xret;
    }
    static void x_53(Smoke::Stack x) {
        x[0].s_enum = (long)QSqlResult::PositionalBinding;
    }
    static void x_54(Smoke::Stack x) {
        x[0].s_enum = (long)QSqlResult::NamedBinding;
    }
    static void x_55(Smoke::Stack x) {
        x[0].s_enum = (long)QSqlResult::BatchOperation;
    }
    static void x_56(Smoke::Stack x) {
        x[0].s_enum = (long)QSqlResult::DetachFromResultSet;
    }
    static void x_57(Smoke::Stack x) {
        x[0].s_enum = (long)QSqlResult::SetNumericalPrecision;
    }
    static void x_58(Smoke::Stack x) {
        x[0].s_enum = (long)QSqlResult::NextResult;
    }
    virtual QVariant handle() const {
        Smoke::StackItem x[1];
        if (this->_binding->callMethod(459, (void*)this, x)) {
            QVariant* xptr = (QVariant*)x[0].s_class;
            QVariant xret(*xptr);
            delete xptr;
            return xret;
        }
        return this->QSqlResult::handle();
    }
    virtual void setAt(int x1) {
        Smoke::StackItem x[2];
        x[1].s_int = x1;
        if (this->_binding->callMethod(469, (void*)this, x)) return;
        this->QSqlResult::setAt(x1);
    }
    virtual void setActive(bool x1) {
        Smoke::StackItem x[2];
        x[1].s_bool = x1;
        if (this->_binding->callMethod(470, (void*)this, x)) return;
        this->QSqlResult::setActive(x1);
    }
    virtual void setLastError(const QSqlError& x1) {
        Smoke::StackItem x[2];
        x[1].s_class = (void*)&x1;
        if (this->_binding->callMethod(471, (void*)this, x)) return;
        this->QSqlResult::setLastError(x1);
    }
    virtual void setQuery(const QString& x1) {
        Smoke::StackItem x[2];
        x[1].s_class = (void*)&x1;
        if (this->_binding->callMethod(472, (void*)this, x)) return;
        this->QSqlResult::setQuery(x1);
    }
    virtual void setSelect(bool x1) {
        Smoke::StackItem x[2];
        x[1].s_bool = x1;
        if (this->_binding->callMethod(473, (void*)this, x)) return;
        this->QSqlResult::setSelect(x1);
    }
    virtual void setForwardOnly(bool x1) {
        Smoke::StackItem x[2];
        x[1].s_bool = x1;
        if (this->_binding->callMethod(474, (void*)this, x)) return;
        this->QSqlResult::setForwardOnly(x1);
    }
    virtual bool exec() {
        Smoke::StackItem x[1];
        if (this->_binding->callMethod(475, (void*)this, x)) return (bool)x[0].s_bool;
        return this->QSqlResult::exec();
    }
    virtual bool prepare(const QString& x1) {
        Smoke::StackItem x[2];
        x[1].s_class = (void*)&x1;
        if (this->_binding->callMethod(476, (void*)this, x)) return (bool)x[0].s_bool;
        return this->QSqlResult::prepare(x1);
    }
    virtual bool savePrepare(const QString& x1) {
        Smoke::StackItem x[2];
        x[1].s_class = (void*)&x1;
        if (this->_binding->callMethod(477, (void*)this, x)) return (bool)x[0].s_bool;
        return this->QSqlResult::savePrepare(x1);
    }
    virtual void bindValue(int x1, const QVariant& x2, QFlags<QSql::ParamTypeFlag> x3) {
        Smoke::StackItem x[4];
        x[1].s_int = x1;
        x[2].s_class = (void*)&x2;
        x[3].s_uint = (uint)x3;
        if (this->_binding->callMethod(478, (void*)this, x)) return;
        this->QSqlResult::bindValue(x1, x2, x3);
    }
    virtual void bindValue(const QString& x1, const QVariant& x2, QFlags<QSql::ParamTypeFlag> x3) {
        Smoke::StackItem x[4];
        x[1].s_class = (void*)&x1;
        x[2].s_class = (void*)&x2;
        x[3].s_uint = (uint)x3;
        if (this->_binding->callMethod(479, (void*)this, x)) return;
        this->QSqlResult::bindValue(x1, x2, x3);
    }
    virtual QVariant data(int x1) {
        Smoke::StackItem x[2];
        x[1].s_int = x1;
        this->_binding->callMethod(492, (void*)this, x, true /*pure virtual*/);
        QVariant* xptr = (QVariant*)x[0].s_class;
        QVariant xret(*xptr);
        delete xptr;
        return xret;
    }
    virtual bool isNull(int x1) {
        Smoke::StackItem x[2];
        x[1].s_int = x1;
        this->_binding->callMethod(493, (void*)this, x, true /*pure virtual*/);
        return (bool)x[0].s_bool;
    }
    virtual bool reset(const QString& x1) {
        Smoke::StackItem x[2];
        x[1].s_class = (void*)&x1;
        this->_binding->callMethod(494, (void*)this, x, true /*pure virtual*/);
        return (bool)x[0].s_bool;
    }
    virtual bool fetch(int x1) {
        Smoke::StackItem x[2];
        x[1].s_int = x1;
        this->_binding->callMethod(495, (void*)this, x, true /*pure virtual*/);
        return (bool)x[0].s_bool;
    }
    virtual bool fetchNext() {
        Smoke::StackItem x[1];
        if (this->_binding->callMethod(496, (void*)this, x)) return (bool)x[0].s_bool;
        return this->QSqlResult::fetchNext();
    }
    virtual bool fetchPrevious() {
        Smoke::StackItem x[1];
        if (this->_binding->callMethod(497, (void*)this, x)) return (bool)x[0].s_bool;
        return this->QSqlResult::fetchPrevious();
    }
    virtual bool fetchFirst() {
        Smoke::StackItem x[1];
        this->_binding->callMethod(498, (void*)this, x, true /*pure virtual*/);
        return (bool)x[0].s_bool;
    }
    virtual bool fetchLast() {
        Smoke::StackItem x[1];
        this->_binding->callMethod(499, (void*)this, x, true /*pure virtual*/);
        return (bool)x[0].s_bool;
    }
    virtual int size() {
        Smoke::StackItem x[1];
        this->_binding->callMethod(500, (void*)this, x, true /*pure virtual*/);
        return (int)x[0].s_int;
    }
    virtual int numRowsAffected() {
        Smoke::StackItem x[1];
        this->_binding->callMethod(501, (void*)this, x, true /*pure virtual*/);
        return (int)x[0].s_int;
    }
    virtual QSqlRecord record() const {
        Smoke::StackItem x[1];
        if (this->_binding->callMethod(502, (void*)this, x)) {
            QSqlRecord* xptr = (QSqlRecord*)x[0].s_class;
            QSqlRecord xret(*xptr);
            delete xptr;
            return xret;
        }
        return this->QSqlResult::record();
    }
    virtual QVariant lastInsertId() const {
        Smoke::StackItem x[1];
        if (this->_binding->callMethod(503, (void*)this, x)) {
            QVariant* xptr = (QVariant*)x[0].s_class;
            QVariant xret(*xptr);
            delete xptr;
            return xret;
        }
        return this->QSqlResult::lastInsertId();
    }
    virtual void virtual_hook(int x1, void* x2) {
        Smoke::StackItem x[3];
        x[1].s_int = x1;
        x[2].s_class = (void*)x2;
        if (this->_binding->callMethod(504, (void*)this, x)) return;
        this->QSqlResult::virtual_hook(x1, x2);
    }
    static void xenum_operation(Smoke::EnumOperation xop, Smoke::Index xtype, void *&xdata, long &xvalue) {
        switch(xtype) {
        case 65: //QSqlResult::BindingSyntax
            switch(xop) {
                case Smoke::EnumNew:
                    xdata = (void*)new QSqlResult::BindingSyntax;
                    break;
                case Smoke::EnumDelete:
                    delete (QSqlResult::BindingSyntax*)xdata;
                    break;
                case Smoke::EnumFromLong:
                    *(QSqlResult::BindingSyntax*)xdata = (QSqlResult::BindingSyntax)xvalue;
                    break;
                case Smoke::EnumToLong:
                    xvalue = (long)*(QSqlResult::BindingSyntax*)xdata;
                    break;
            }
            break;
        case 66: //QSqlResult::VirtualHookOperation
            switch(xop) {
                case Smoke::EnumNew:
                    xdata = (void*)new QSqlResult::VirtualHookOperation;
                    break;
                case Smoke::EnumDelete:
                    delete (QSqlResult::VirtualHookOperation*)xdata;
                    break;
                case Smoke::EnumFromLong:
                    *(QSqlResult::VirtualHookOperation*)xdata = (QSqlResult::VirtualHookOperation)xvalue;
                    break;
                case Smoke::EnumToLong:
                    xvalue = (long)*(QSqlResult::VirtualHookOperation*)xdata;
                    break;
            }
            break;
        }
    }
    ~x_QSqlResult() { this->_binding->deleted(36, (void*)this); }
};
void xenum_QSqlResult(Smoke::EnumOperation xop, Smoke::Index xtype, void *&xdata, long &xvalue) {
    x_QSqlResult::xenum_operation(xop, xtype, xdata, xvalue);
}
void xcall_QSqlResult(Smoke::Index xi, void *obj, Smoke::Stack args) {
    x_QSqlResult *xself = (x_QSqlResult*)obj;
    switch(xi) {
        case 0: xself->x_0(args);	break;
        case 1: xself->x_1(args);	break;
        case 2: x_QSqlResult::x_2(args);	break;
        case 3: xself->x_3(args);	break;
        case 4: xself->x_4(args);	break;
        case 5: xself->x_5(args);	break;
        case 6: xself->x_6(args);	break;
        case 7: xself->x_7(args);	break;
        case 8: xself->x_8(args);	break;
        case 9: xself->x_9(args);	break;
        case 10: xself->x_10(args);	break;
        case 11: xself->x_11(args);	break;
        case 12: xself->x_12(args);	break;
        case 13: xself->x_13(args);	break;
        case 14: xself->x_14(args);	break;
        case 15: xself->x_15(args);	break;
        case 16: xself->x_16(args);	break;
        case 17: xself->x_17(args);	break;
        case 18: xself->x_18(args);	break;
        case 19: xself->x_19(args);	break;
        case 20: xself->x_20(args);	break;
        case 21: xself->x_21(args);	break;
        case 22: xself->x_22(args);	break;
        case 23: xself->x_23(args);	break;
        case 24: xself->x_24(args);	break;
        case 25: xself->x_25(args);	break;
        case 26: xself->x_26(args);	break;
        case 27: xself->x_27(args);	break;
        case 28: xself->x_28(args);	break;
        case 29: xself->x_29(args);	break;
        case 30: xself->x_30(args);	break;
        case 31: xself->x_31(args);	break;
        case 32: xself->x_32(args);	break;
        case 33: xself->x_33(args);	break;
        case 34: xself->x_34(args);	break;
        case 35: xself->x_35(args);	break;
        case 36: xself->x_36(args);	break;
        case 37: xself->x_37(args);	break;
        case 38: xself->x_38(args);	break;
        case 39: xself->x_39(args);	break;
        case 40: xself->x_40(args);	break;
        case 41: xself->x_41(args);	break;
        case 42: xself->x_42(args);	break;
        case 43: xself->x_43(args);	break;
        case 44: xself->x_44(args);	break;
        case 45: xself->x_45(args);	break;
        case 46: xself->x_46(args);	break;
        case 47: xself->x_47(args);	break;
        case 48: xself->x_48(args);	break;
        case 49: xself->x_49(args);	break;
        case 50: xself->x_50(args);	break;
        case 51: xself->x_51(args);	break;
        case 52: xself->x_52(args);	break;
        case 53: x_QSqlResult::x_53(args);	break;
        case 54: x_QSqlResult::x_54(args);	break;
        case 55: x_QSqlResult::x_55(args);	break;
        case 56: x_QSqlResult::x_56(args);	break;
        case 57: x_QSqlResult::x_57(args);	break;
        case 58: x_QSqlResult::x_58(args);	break;
        case 59: delete (QSqlResult*)xself;	break;
    }
}
class x_QSqlTableModel : public QSqlTableModel, public __internal_SmokeClass {
    SmokeBinding* _binding;
public:
    void x_0(Smoke::Stack x) {
        // set the smoke binding
        _binding = (SmokeBinding*)x[1].s_class;
    }
    void x_1(Smoke::Stack x) {
        // virtual const QMetaObject* metaObject() const
        if (dynamic_cast<__internal_SmokeClass*>(static_cast<QSqlTableModel*>(this))) {
            const QMetaObject* xret = ((const x_QSqlTableModel*)this)->QSqlTableModel::metaObject();
            x[0].s_class = (void*)xret;
        } else {
            const QMetaObject* xret = ((const x_QSqlTableModel*)this)->metaObject();
            x[0].s_class = (void*)xret;
        }
    }
    void x_2(Smoke::Stack x) {
        // virtual void* qt_metacast(const char*)
        if (dynamic_cast<__internal_SmokeClass*>(static_cast<QSqlTableModel*>(this))) {
            void* xret = this->QSqlTableModel::qt_metacast((const char*)x[1].s_class);
            x[0].s_class = (void*)xret;
        } else {
            void* xret = this->qt_metacast((const char*)x[1].s_class);
            x[0].s_class = (void*)xret;
        }
    }
    static void x_3(Smoke::Stack x) {
        // static QString tr(const char*, const char*)
        QString xret = QSqlTableModel::tr((const char*)x[1].s_class,(const char*)x[2].s_class);
        x[0].s_class = (void*)new QString(xret);
    }
    static void x_4(Smoke::Stack x) {
        // static QString trUtf8(const char*, const char*)
        QString xret = QSqlTableModel::trUtf8((const char*)x[1].s_class,(const char*)x[2].s_class);
        x[0].s_class = (void*)new QString(xret);
    }
    static void x_5(Smoke::Stack x) {
        // static QString tr(const char*, const char*, int)
        QString xret = QSqlTableModel::tr((const char*)x[1].s_class,(const char*)x[2].s_class,(int)x[3].s_int);
        x[0].s_class = (void*)new QString(xret);
    }
    static void x_6(Smoke::Stack x) {
        // static QString trUtf8(const char*, const char*, int)
        QString xret = QSqlTableModel::trUtf8((const char*)x[1].s_class,(const char*)x[2].s_class,(int)x[3].s_int);
        x[0].s_class = (void*)new QString(xret);
    }
    void x_7(Smoke::Stack x) {
        // virtual int qt_metacall(QMetaObject::Call, int, void**)
        if (dynamic_cast<__internal_SmokeClass*>(static_cast<QSqlTableModel*>(this))) {
            int xret = this->QSqlTableModel::qt_metacall((QMetaObject::Call)x[1].s_enum,(int)x[2].s_int,(void**)x[3].s_class);
            x[0].s_int = xret;
        } else {
            int xret = this->qt_metacall((QMetaObject::Call)x[1].s_enum,(int)x[2].s_int,(void**)x[3].s_class);
            x[0].s_int = xret;
        }
    }
    static void x_8(Smoke::Stack x) {
        // QSqlTableModel* QSqlTableModel(QObject*, QSqlDatabase)
        x_QSqlTableModel* xret = new x_QSqlTableModel((QObject*)x[1].s_class,*(QSqlDatabase*)x[2].s_class);
        x[0].s_class = (void*)xret;
    }
    explicit x_QSqlTableModel(QObject* x1, QSqlDatabase x2) : QSqlTableModel(x1, x2) {}
    void x_9(Smoke::Stack x) {
        // virtual bool select()
        if (dynamic_cast<__internal_SmokeClass*>(static_cast<QSqlTableModel*>(this))) {
            bool xret = this->QSqlTableModel::select();
            x[0].s_bool = xret;
        } else {
            bool xret = this->select();
            x[0].s_bool = xret;
        }
    }
    void x_10(Smoke::Stack x) {
        // virtual void setTable(const QString&)
        if (dynamic_cast<__internal_SmokeClass*>(static_cast<QSqlTableModel*>(this))) {
            this->QSqlTableModel::setTable(*(const QString*)x[1].s_class);
            (void)x; // noop (for compiler warning)
        } else {
            this->setTable(*(const QString*)x[1].s_class);
            (void)x; // noop (for compiler warning)
        }
    }
    void x_11(Smoke::Stack x) {
        // QString tableName() const
        QString xret = ((const x_QSqlTableModel*)this)->QSqlTableModel::tableName();
        x[0].s_class = (void*)new QString(xret);
    }
    void x_12(Smoke::Stack x) {
        // QFlags<Qt::ItemFlag> flags(const QModelIndex&) const
        if (dynamic_cast<__internal_SmokeClass*>(static_cast<QSqlTableModel*>(this))) {
            QFlags<Qt::ItemFlag> xret = ((const x_QSqlTableModel*)this)->QSqlTableModel::flags(*(const QModelIndex*)x[1].s_class);
            x[0].s_uint = (uint)xret;
        } else {
            QFlags<Qt::ItemFlag> xret = ((const x_QSqlTableModel*)this)->flags(*(const QModelIndex*)x[1].s_class);
            x[0].s_uint = (uint)xret;
        }
    }
    void x_13(Smoke::Stack x) {
        // QVariant data(const QModelIndex&, int) const
        if (dynamic_cast<__internal_SmokeClass*>(static_cast<QSqlTableModel*>(this))) {
            QVariant xret = ((const x_QSqlTableModel*)this)->QSqlTableModel::data(*(const QModelIndex*)x[1].s_class,(int)x[2].s_int);
            x[0].s_class = (void*)new QVariant(xret);
        } else {
            QVariant xret = ((const x_QSqlTableModel*)this)->data(*(const QModelIndex*)x[1].s_class,(int)x[2].s_int);
            x[0].s_class = (void*)new QVariant(xret);
        }
    }
    void x_14(Smoke::Stack x) {
        // bool setData(const QModelIndex&, const QVariant&, int)
        if (dynamic_cast<__internal_SmokeClass*>(static_cast<QSqlTableModel*>(this))) {
            bool xret = this->QSqlTableModel::setData(*(const QModelIndex*)x[1].s_class,*(const QVariant*)x[2].s_class,(int)x[3].s_int);
            x[0].s_bool = xret;
        } else {
            bool xret = this->setData(*(const QModelIndex*)x[1].s_class,*(const QVariant*)x[2].s_class,(int)x[3].s_int);
            x[0].s_bool = xret;
        }
    }
    void x_15(Smoke::Stack x) {
        // QVariant headerData(int, Qt::Orientation, int) const
        if (dynamic_cast<__internal_SmokeClass*>(static_cast<QSqlTableModel*>(this))) {
            QVariant xret = ((const x_QSqlTableModel*)this)->QSqlTableModel::headerData((int)x[1].s_int,(Qt::Orientation)x[2].s_enum,(int)x[3].s_int);
            x[0].s_class = (void*)new QVariant(xret);
        } else {
            QVariant xret = ((const x_QSqlTableModel*)this)->headerData((int)x[1].s_int,(Qt::Orientation)x[2].s_enum,(int)x[3].s_int);
            x[0].s_class = (void*)new QVariant(xret);
        }
    }
    void x_16(Smoke::Stack x) {
        // bool isDirty(const QModelIndex&) const
        bool xret = ((const x_QSqlTableModel*)this)->QSqlTableModel::isDirty(*(const QModelIndex*)x[1].s_class);
        x[0].s_bool = xret;
    }
    void x_17(Smoke::Stack x) {
        // void clear()
        if (dynamic_cast<__internal_SmokeClass*>(static_cast<QSqlTableModel*>(this))) {
            this->QSqlTableModel::clear();
            (void)x; // noop (for compiler warning)
        } else {
            this->clear();
            (void)x; // noop (for compiler warning)
        }
    }
    void x_18(Smoke::Stack x) {
        // virtual void setEditStrategy(QSqlTableModel::EditStrategy)
        if (dynamic_cast<__internal_SmokeClass*>(static_cast<QSqlTableModel*>(this))) {
            this->QSqlTableModel::setEditStrategy((QSqlTableModel::EditStrategy)x[1].s_enum);
            (void)x; // noop (for compiler warning)
        } else {
            this->setEditStrategy((QSqlTableModel::EditStrategy)x[1].s_enum);
            (void)x; // noop (for compiler warning)
        }
    }
    void x_19(Smoke::Stack x) {
        // QSqlTableModel::EditStrategy editStrategy() const
        QSqlTableModel::EditStrategy xret = ((const x_QSqlTableModel*)this)->QSqlTableModel::editStrategy();
        x[0].s_enum = xret;
    }
    void x_20(Smoke::Stack x) {
        // QSqlIndex primaryKey() const
        QSqlIndex xret = ((const x_QSqlTableModel*)this)->QSqlTableModel::primaryKey();
        x[0].s_class = (void*)new QSqlIndex(xret);
    }
    void x_21(Smoke::Stack x) {
        // QSqlDatabase database() const
        QSqlDatabase xret = ((const x_QSqlTableModel*)this)->QSqlTableModel::database();
        x[0].s_class = (void*)new QSqlDatabase(xret);
    }
    void x_22(Smoke::Stack x) {
        // int fieldIndex(const QString&) const
        int xret = ((const x_QSqlTableModel*)this)->QSqlTableModel::fieldIndex(*(const QString*)x[1].s_class);
        x[0].s_int = xret;
    }
    void x_23(Smoke::Stack x) {
        // void sort(int, Qt::SortOrder)
        if (dynamic_cast<__internal_SmokeClass*>(static_cast<QSqlTableModel*>(this))) {
            this->QSqlTableModel::sort((int)x[1].s_int,(Qt::SortOrder)x[2].s_enum);
            (void)x; // noop (for compiler warning)
        } else {
            this->sort((int)x[1].s_int,(Qt::SortOrder)x[2].s_enum);
            (void)x; // noop (for compiler warning)
        }
    }
    void x_24(Smoke::Stack x) {
        // virtual void setSort(int, Qt::SortOrder)
        if (dynamic_cast<__internal_SmokeClass*>(static_cast<QSqlTableModel*>(this))) {
            this->QSqlTableModel::setSort((int)x[1].s_int,(Qt::SortOrder)x[2].s_enum);
            (void)x; // noop (for compiler warning)
        } else {
            this->setSort((int)x[1].s_int,(Qt::SortOrder)x[2].s_enum);
            (void)x; // noop (for compiler warning)
        }
    }
    void x_25(Smoke::Stack x) {
        // QString filter() const
        QString xret = ((const x_QSqlTableModel*)this)->QSqlTableModel::filter();
        x[0].s_class = (void*)new QString(xret);
    }
    void x_26(Smoke::Stack x) {
        // virtual void setFilter(const QString&)
        if (dynamic_cast<__internal_SmokeClass*>(static_cast<QSqlTableModel*>(this))) {
            this->QSqlTableModel::setFilter(*(const QString*)x[1].s_class);
            (void)x; // noop (for compiler warning)
        } else {
            this->setFilter(*(const QString*)x[1].s_class);
            (void)x; // noop (for compiler warning)
        }
    }
    void x_27(Smoke::Stack x) {
        // int rowCount(const QModelIndex&) const
        if (dynamic_cast<__internal_SmokeClass*>(static_cast<QSqlTableModel*>(this))) {
            int xret = ((const x_QSqlTableModel*)this)->QSqlTableModel::rowCount(*(const QModelIndex*)x[1].s_class);
            x[0].s_int = xret;
        } else {
            int xret = ((const x_QSqlTableModel*)this)->rowCount(*(const QModelIndex*)x[1].s_class);
            x[0].s_int = xret;
        }
    }
    void x_28(Smoke::Stack x) {
        // bool removeColumns(int, int, const QModelIndex&)
        if (dynamic_cast<__internal_SmokeClass*>(static_cast<QSqlTableModel*>(this))) {
            bool xret = this->QSqlTableModel::removeColumns((int)x[1].s_int,(int)x[2].s_int,*(const QModelIndex*)x[3].s_class);
            x[0].s_bool = xret;
        } else {
            bool xret = this->removeColumns((int)x[1].s_int,(int)x[2].s_int,*(const QModelIndex*)x[3].s_class);
            x[0].s_bool = xret;
        }
    }
    void x_29(Smoke::Stack x) {
        // bool removeRows(int, int, const QModelIndex&)
        if (dynamic_cast<__internal_SmokeClass*>(static_cast<QSqlTableModel*>(this))) {
            bool xret = this->QSqlTableModel::removeRows((int)x[1].s_int,(int)x[2].s_int,*(const QModelIndex*)x[3].s_class);
            x[0].s_bool = xret;
        } else {
            bool xret = this->removeRows((int)x[1].s_int,(int)x[2].s_int,*(const QModelIndex*)x[3].s_class);
            x[0].s_bool = xret;
        }
    }
    void x_30(Smoke::Stack x) {
        // bool insertRows(int, int, const QModelIndex&)
        if (dynamic_cast<__internal_SmokeClass*>(static_cast<QSqlTableModel*>(this))) {
            bool xret = this->QSqlTableModel::insertRows((int)x[1].s_int,(int)x[2].s_int,*(const QModelIndex*)x[3].s_class);
            x[0].s_bool = xret;
        } else {
            bool xret = this->insertRows((int)x[1].s_int,(int)x[2].s_int,*(const QModelIndex*)x[3].s_class);
            x[0].s_bool = xret;
        }
    }
    void x_31(Smoke::Stack x) {
        // bool insertRecord(int, const QSqlRecord&)
        bool xret = this->QSqlTableModel::insertRecord((int)x[1].s_int,*(const QSqlRecord*)x[2].s_class);
        x[0].s_bool = xret;
    }
    void x_32(Smoke::Stack x) {
        // bool setRecord(int, const QSqlRecord&)
        bool xret = this->QSqlTableModel::setRecord((int)x[1].s_int,*(const QSqlRecord*)x[2].s_class);
        x[0].s_bool = xret;
    }
    void x_33(Smoke::Stack x) {
        // virtual void revertRow(int)
        if (dynamic_cast<__internal_SmokeClass*>(static_cast<QSqlTableModel*>(this))) {
            this->QSqlTableModel::revertRow((int)x[1].s_int);
            (void)x; // noop (for compiler warning)
        } else {
            this->revertRow((int)x[1].s_int);
            (void)x; // noop (for compiler warning)
        }
    }
    void x_34(Smoke::Stack x) {
        // bool submit()
        if (dynamic_cast<__internal_SmokeClass*>(static_cast<QSqlTableModel*>(this))) {
            bool xret = this->QSqlTableModel::submit();
            x[0].s_bool = xret;
        } else {
            bool xret = this->submit();
            x[0].s_bool = xret;
        }
    }
    void x_35(Smoke::Stack x) {
        // void revert()
        if (dynamic_cast<__internal_SmokeClass*>(static_cast<QSqlTableModel*>(this))) {
            this->QSqlTableModel::revert();
            (void)x; // noop (for compiler warning)
        } else {
            this->revert();
            (void)x; // noop (for compiler warning)
        }
    }
    void x_36(Smoke::Stack x) {
        // bool submitAll()
        bool xret = this->QSqlTableModel::submitAll();
        x[0].s_bool = xret;
    }
    void x_37(Smoke::Stack x) {
        // void revertAll()
        this->QSqlTableModel::revertAll();
        (void)x; // noop (for compiler warning)
    }
    void x_38(Smoke::Stack x) {
        // void primeInsert(int, QSqlRecord&)
        this->QSqlTableModel::primeInsert((int)x[1].s_int,*(QSqlRecord*)x[2].s_class);
        (void)x; // noop (for compiler warning)
    }
    void x_39(Smoke::Stack x) {
        // void beforeInsert(QSqlRecord&)
        this->QSqlTableModel::beforeInsert(*(QSqlRecord*)x[1].s_class);
        (void)x; // noop (for compiler warning)
    }
    void x_40(Smoke::Stack x) {
        // void beforeUpdate(int, QSqlRecord&)
        this->QSqlTableModel::beforeUpdate((int)x[1].s_int,*(QSqlRecord*)x[2].s_class);
        (void)x; // noop (for compiler warning)
    }
    void x_41(Smoke::Stack x) {
        // void beforeDelete(int)
        this->QSqlTableModel::beforeDelete((int)x[1].s_int);
        (void)x; // noop (for compiler warning)
    }
    void x_42(Smoke::Stack x) {
        // virtual bool updateRowInTable(int, const QSqlRecord&)
        if (dynamic_cast<__internal_SmokeClass*>(static_cast<QSqlTableModel*>(this))) {
            bool xret = this->QSqlTableModel::updateRowInTable((int)x[1].s_int,*(const QSqlRecord*)x[2].s_class);
            x[0].s_bool = xret;
        } else {
            bool xret = this->updateRowInTable((int)x[1].s_int,*(const QSqlRecord*)x[2].s_class);
            x[0].s_bool = xret;
        }
    }
    void x_43(Smoke::Stack x) {
        // virtual bool insertRowIntoTable(const QSqlRecord&)
        if (dynamic_cast<__internal_SmokeClass*>(static_cast<QSqlTableModel*>(this))) {
            bool xret = this->QSqlTableModel::insertRowIntoTable(*(const QSqlRecord*)x[1].s_class);
            x[0].s_bool = xret;
        } else {
            bool xret = this->insertRowIntoTable(*(const QSqlRecord*)x[1].s_class);
            x[0].s_bool = xret;
        }
    }
    void x_44(Smoke::Stack x) {
        // virtual bool deleteRowFromTable(int)
        if (dynamic_cast<__internal_SmokeClass*>(static_cast<QSqlTableModel*>(this))) {
            bool xret = this->QSqlTableModel::deleteRowFromTable((int)x[1].s_int);
            x[0].s_bool = xret;
        } else {
            bool xret = this->deleteRowFromTable((int)x[1].s_int);
            x[0].s_bool = xret;
        }
    }
    void x_45(Smoke::Stack x) {
        // virtual QString orderByClause() const
        if (dynamic_cast<__internal_SmokeClass*>(static_cast<QSqlTableModel*>(this))) {
            QString xret = ((const x_QSqlTableModel*)this)->QSqlTableModel::orderByClause();
            x[0].s_class = (void*)new QString(xret);
        } else {
            QString xret = ((const x_QSqlTableModel*)this)->orderByClause();
            x[0].s_class = (void*)new QString(xret);
        }
    }
    void x_46(Smoke::Stack x) {
        // virtual QString selectStatement() const
        if (dynamic_cast<__internal_SmokeClass*>(static_cast<QSqlTableModel*>(this))) {
            QString xret = ((const x_QSqlTableModel*)this)->QSqlTableModel::selectStatement();
            x[0].s_class = (void*)new QString(xret);
        } else {
            QString xret = ((const x_QSqlTableModel*)this)->selectStatement();
            x[0].s_class = (void*)new QString(xret);
        }
    }
    void x_47(Smoke::Stack x) {
        // void setPrimaryKey(const QSqlIndex&)
        this->QSqlTableModel::setPrimaryKey(*(const QSqlIndex*)x[1].s_class);
        (void)x; // noop (for compiler warning)
    }
    void x_48(Smoke::Stack x) {
        // void setQuery(const QSqlQuery&)
        this->QSqlTableModel::setQuery(*(const QSqlQuery*)x[1].s_class);
        (void)x; // noop (for compiler warning)
    }
    void x_49(Smoke::Stack x) {
        // QModelIndex indexInQuery(const QModelIndex&) const
        QModelIndex xret = ((const x_QSqlTableModel*)this)->QSqlTableModel::indexInQuery(*(const QModelIndex*)x[1].s_class);
        x[0].s_class = (void*)new QModelIndex(xret);
    }
    static void x_50(Smoke::Stack x) {
        // static QString tr(const char*)
        QString xret = QSqlTableModel::tr((const char*)x[1].s_class,(const char*)0);
        x[0].s_class = (void*)new QString(xret);
    }
    static void x_51(Smoke::Stack x) {
        // static QString trUtf8(const char*)
        QString xret = QSqlTableModel::trUtf8((const char*)x[1].s_class,(const char*)0);
        x[0].s_class = (void*)new QString(xret);
    }
    static void x_52(Smoke::Stack x) {
        // QSqlTableModel* QSqlTableModel()
        x_QSqlTableModel* xret = new x_QSqlTableModel((QObject*)0,(QSqlDatabase)QSqlDatabase());
        x[0].s_class = (void*)xret;
    }
    static void x_53(Smoke::Stack x) {
        // QSqlTableModel* QSqlTableModel(QObject*)
        x_QSqlTableModel* xret = new x_QSqlTableModel((QObject*)x[1].s_class,(QSqlDatabase)QSqlDatabase());
        x[0].s_class = (void*)xret;
    }
    void x_54(Smoke::Stack x) {
        // QVariant data(const QModelIndex&) const
        QVariant xret = ((const x_QSqlTableModel*)this)->QSqlTableModel::data(*(const QModelIndex*)x[1].s_class,(int)Qt::DisplayRole);
        x[0].s_class = (void*)new QVariant(xret);
    }
    void x_55(Smoke::Stack x) {
        // bool setData(const QModelIndex&, const QVariant&)
        bool xret = this->QSqlTableModel::setData(*(const QModelIndex*)x[1].s_class,*(const QVariant*)x[2].s_class,(int)Qt::EditRole);
        x[0].s_bool = xret;
    }
    void x_56(Smoke::Stack x) {
        // QVariant headerData(int, Qt::Orientation) const
        QVariant xret = ((const x_QSqlTableModel*)this)->QSqlTableModel::headerData((int)x[1].s_int,(Qt::Orientation)x[2].s_enum,(int)Qt::DisplayRole);
        x[0].s_class = (void*)new QVariant(xret);
    }
    void x_57(Smoke::Stack x) {
        // int rowCount() const
        int xret = ((const x_QSqlTableModel*)this)->QSqlTableModel::rowCount((const QModelIndex&)QModelIndex());
        x[0].s_int = xret;
    }
    void x_58(Smoke::Stack x) {
        // bool removeColumns(int, int)
        bool xret = this->QSqlTableModel::removeColumns((int)x[1].s_int,(int)x[2].s_int,(const QModelIndex&)QModelIndex());
        x[0].s_bool = xret;
    }
    void x_59(Smoke::Stack x) {
        // bool removeRows(int, int)
        bool xret = this->QSqlTableModel::removeRows((int)x[1].s_int,(int)x[2].s_int,(const QModelIndex&)QModelIndex());
        x[0].s_bool = xret;
    }
    void x_60(Smoke::Stack x) {
        // bool insertRows(int, int)
        bool xret = this->QSqlTableModel::insertRows((int)x[1].s_int,(int)x[2].s_int,(const QModelIndex&)QModelIndex());
        x[0].s_bool = xret;
    }
    static void x_61(Smoke::Stack x) {
        // static const QMetaObject staticMetaObject
        x[0].s_class = (void*)&QSqlTableModel::staticMetaObject;
    }
    static void x_62(Smoke::Stack x) {
        x[0].s_enum = (long)QSqlTableModel::OnFieldChange;
    }
    static void x_63(Smoke::Stack x) {
        x[0].s_enum = (long)QSqlTableModel::OnRowChange;
    }
    static void x_64(Smoke::Stack x) {
        x[0].s_enum = (long)QSqlTableModel::OnManualSubmit;
    }
    virtual const QMetaObject* metaObject() const {
        Smoke::StackItem x[1];
        if (this->_binding->callMethod(518, (void*)this, x)) return (const QMetaObject*)x[0].s_class;
        return this->QSqlTableModel::metaObject();
    }
    virtual void* qt_metacast(const char* x1) {
        Smoke::StackItem x[2];
        x[1].s_class = (void*)x1;
        if (this->_binding->callMethod(519, (void*)this, x)) return (void*)x[0].s_class;
        return this->QSqlTableModel::qt_metacast(x1);
    }
    virtual int qt_metacall(QMetaObject::Call x1, int x2, void** x3) {
        Smoke::StackItem x[4];
        x[1].s_enum = x1;
        x[2].s_int = x2;
        x[3].s_class = (void*)x3;
        if (this->_binding->callMethod(524, (void*)this, x)) return (int)x[0].s_int;
        return this->QSqlTableModel::qt_metacall(x1, x2, x3);
    }
    virtual bool select() {
        Smoke::StackItem x[1];
        if (this->_binding->callMethod(526, (void*)this, x)) return (bool)x[0].s_bool;
        return this->QSqlTableModel::select();
    }
    virtual void setTable(const QString& x1) {
        Smoke::StackItem x[2];
        x[1].s_class = (void*)&x1;
        if (this->_binding->callMethod(527, (void*)this, x)) return;
        this->QSqlTableModel::setTable(x1);
    }
    virtual void setEditStrategy(QSqlTableModel::EditStrategy x1) {
        Smoke::StackItem x[2];
        x[1].s_enum = x1;
        if (this->_binding->callMethod(535, (void*)this, x)) return;
        this->QSqlTableModel::setEditStrategy(x1);
    }
    virtual void setSort(int x1, Qt::SortOrder x2) {
        Smoke::StackItem x[3];
        x[1].s_int = x1;
        x[2].s_enum = x2;
        if (this->_binding->callMethod(541, (void*)this, x)) return;
        this->QSqlTableModel::setSort(x1, x2);
    }
    virtual void setFilter(const QString& x1) {
        Smoke::StackItem x[2];
        x[1].s_class = (void*)&x1;
        if (this->_binding->callMethod(543, (void*)this, x)) return;
        this->QSqlTableModel::setFilter(x1);
    }
    virtual void revertRow(int x1) {
        Smoke::StackItem x[2];
        x[1].s_int = x1;
        if (this->_binding->callMethod(550, (void*)this, x)) return;
        this->QSqlTableModel::revertRow(x1);
    }
    virtual bool updateRowInTable(int x1, const QSqlRecord& x2) {
        Smoke::StackItem x[3];
        x[1].s_int = x1;
        x[2].s_class = (void*)&x2;
        if (this->_binding->callMethod(559, (void*)this, x)) return (bool)x[0].s_bool;
        return this->QSqlTableModel::updateRowInTable(x1, x2);
    }
    virtual bool insertRowIntoTable(const QSqlRecord& x1) {
        Smoke::StackItem x[2];
        x[1].s_class = (void*)&x1;
        if (this->_binding->callMethod(560, (void*)this, x)) return (bool)x[0].s_bool;
        return this->QSqlTableModel::insertRowIntoTable(x1);
    }
    virtual bool deleteRowFromTable(int x1) {
        Smoke::StackItem x[2];
        x[1].s_int = x1;
        if (this->_binding->callMethod(561, (void*)this, x)) return (bool)x[0].s_bool;
        return this->QSqlTableModel::deleteRowFromTable(x1);
    }
    virtual QString orderByClause() const {
        Smoke::StackItem x[1];
        if (this->_binding->callMethod(562, (void*)this, x)) {
            QString* xptr = (QString*)x[0].s_class;
            QString xret(*xptr);
            delete xptr;
            return xret;
        }
        return this->QSqlTableModel::orderByClause();
    }
    virtual QString selectStatement() const {
        Smoke::StackItem x[1];
        if (this->_binding->callMethod(563, (void*)this, x)) {
            QString* xptr = (QString*)x[0].s_class;
            QString xret(*xptr);
            delete xptr;
            return xret;
        }
        return this->QSqlTableModel::selectStatement();
    }
    virtual void clear() {
        Smoke::StackItem x[1];
        if (this->_binding->callMethod(534, (void*)this, x)) return;
        this->QSqlTableModel::clear();
    }
    virtual void queryChange() {
        Smoke::StackItem x[1];
        if (this->_binding->callMethod(362, (void*)this, x)) return;
        this->QSqlQueryModel::queryChange();
    }
    virtual QModelIndex index(int x1, int x2, const QModelIndex& x3) const {
        Smoke::StackItem x[4];
        x[1].s_int = x1;
        x[2].s_int = x2;
        x[3].s_class = (void*)&x3;
        if (this->_binding->callMethod(16, (void*)this, x)) {
            QModelIndex* xptr = (QModelIndex*)x[0].s_class;
            QModelIndex xret(*xptr);
            delete xptr;
            return xret;
        }
        return this->QAbstractTableModel::index(x1, x2, x3);
    }
    virtual int rowCount(const QModelIndex& x1) const {
        Smoke::StackItem x[2];
        x[1].s_class = (void*)&x1;
        if (this->_binding->callMethod(544, (void*)this, x)) return (int)x[0].s_int;
        return this->QSqlTableModel::rowCount(x1);
    }
    virtual int columnCount(const QModelIndex& x1) const {
        Smoke::StackItem x[2];
        x[1].s_class = (void*)&x1;
        if (this->_binding->callMethod(347, (void*)this, x)) return (int)x[0].s_int;
        return this->QSqlQueryModel::columnCount(x1);
    }
    virtual QVariant data(const QModelIndex& x1, int x2) const {
        Smoke::StackItem x[3];
        x[1].s_class = (void*)&x1;
        x[2].s_int = x2;
        if (this->_binding->callMethod(530, (void*)this, x)) {
            QVariant* xptr = (QVariant*)x[0].s_class;
            QVariant xret(*xptr);
            delete xptr;
            return xret;
        }
        return this->QSqlTableModel::data(x1, x2);
    }
    virtual bool setData(const QModelIndex& x1, const QVariant& x2, int x3) {
        Smoke::StackItem x[4];
        x[1].s_class = (void*)&x1;
        x[2].s_class = (void*)&x2;
        x[3].s_int = x3;
        if (this->_binding->callMethod(531, (void*)this, x)) return (bool)x[0].s_bool;
        return this->QSqlTableModel::setData(x1, x2, x3);
    }
    virtual QVariant headerData(int x1, Qt::Orientation x2, int x3) const {
        Smoke::StackItem x[4];
        x[1].s_int = x1;
        x[2].s_enum = x2;
        x[3].s_int = x3;
        if (this->_binding->callMethod(532, (void*)this, x)) {
            QVariant* xptr = (QVariant*)x[0].s_class;
            QVariant xret(*xptr);
            delete xptr;
            return xret;
        }
        return this->QSqlTableModel::headerData(x1, x2, x3);
    }
    virtual bool setHeaderData(int x1, Qt::Orientation x2, const QVariant& x3, int x4) {
        Smoke::StackItem x[5];
        x[1].s_int = x1;
        x[2].s_enum = x2;
        x[3].s_class = (void*)&x3;
        x[4].s_int = x4;
        if (this->_binding->callMethod(352, (void*)this, x)) return (bool)x[0].s_bool;
        return this->QSqlQueryModel::setHeaderData(x1, x2, x3, x4);
    }
    virtual QMap<int,QVariant> itemData(const QModelIndex& x1) const {
        Smoke::StackItem x[2];
        x[1].s_class = (void*)&x1;
        if (this->_binding->callMethod(2, (void*)this, x)) {
            QMap<int,QVariant>* xptr = (QMap<int,QVariant>*)x[0].s_class;
            QMap<int,QVariant> xret(*xptr);
            delete xptr;
            return xret;
        }
        return this->QAbstractItemModel::itemData(x1);
    }
    virtual bool setItemData(const QModelIndex& x1, const QMap<int,QVariant>& x2) {
        Smoke::StackItem x[3];
        x[1].s_class = (void*)&x1;
        x[2].s_class = (void*)&x2;
        if (this->_binding->callMethod(3, (void*)this, x)) return (bool)x[0].s_bool;
        return this->QAbstractItemModel::setItemData(x1, x2);
    }
    virtual QStringList mimeTypes() const {
        Smoke::StackItem x[1];
        if (this->_binding->callMethod(4, (void*)this, x)) {
            QStringList* xptr = (QStringList*)x[0].s_class;
            QStringList xret(*xptr);
            delete xptr;
            return xret;
        }
        return this->QAbstractItemModel::mimeTypes();
    }
    virtual QMimeData* mimeData(const QList<QModelIndex>& x1) const {
        Smoke::StackItem x[2];
        x[1].s_class = (void*)&x1;
        if (this->_binding->callMethod(5, (void*)this, x)) return (QMimeData*)x[0].s_class;
        return this->QAbstractItemModel::mimeData(x1);
    }
    virtual bool dropMimeData(const QMimeData* x1, Qt::DropAction x2, int x3, int x4, const QModelIndex& x5) {
        Smoke::StackItem x[6];
        x[1].s_class = (void*)x1;
        x[2].s_enum = x2;
        x[3].s_int = x3;
        x[4].s_int = x4;
        x[5].s_class = (void*)&x5;
        if (this->_binding->callMethod(17, (void*)this, x)) return (bool)x[0].s_bool;
        return this->QAbstractTableModel::dropMimeData(x1, x2, x3, x4, x5);
    }
    virtual QFlags<Qt::DropAction> supportedDropActions() const {
        Smoke::StackItem x[1];
        if (this->_binding->callMethod(6, (void*)this, x)) return (QFlags<Qt::DropAction>)x[0].s_uint;
        return this->QAbstractItemModel::supportedDropActions();
    }
    virtual bool insertRows(int x1, int x2, const QModelIndex& x3) {
        Smoke::StackItem x[4];
        x[1].s_int = x1;
        x[2].s_int = x2;
        x[3].s_class = (void*)&x3;
        if (this->_binding->callMethod(547, (void*)this, x)) return (bool)x[0].s_bool;
        return this->QSqlTableModel::insertRows(x1, x2, x3);
    }
    virtual bool insertColumns(int x1, int x2, const QModelIndex& x3) {
        Smoke::StackItem x[4];
        x[1].s_int = x1;
        x[2].s_int = x2;
        x[3].s_class = (void*)&x3;
        if (this->_binding->callMethod(353, (void*)this, x)) return (bool)x[0].s_bool;
        return this->QSqlQueryModel::insertColumns(x1, x2, x3);
    }
    virtual bool removeRows(int x1, int x2, const QModelIndex& x3) {
        Smoke::StackItem x[4];
        x[1].s_int = x1;
        x[2].s_int = x2;
        x[3].s_class = (void*)&x3;
        if (this->_binding->callMethod(546, (void*)this, x)) return (bool)x[0].s_bool;
        return this->QSqlTableModel::removeRows(x1, x2, x3);
    }
    virtual bool removeColumns(int x1, int x2, const QModelIndex& x3) {
        Smoke::StackItem x[4];
        x[1].s_int = x1;
        x[2].s_int = x2;
        x[3].s_class = (void*)&x3;
        if (this->_binding->callMethod(545, (void*)this, x)) return (bool)x[0].s_bool;
        return this->QSqlTableModel::removeColumns(x1, x2, x3);
    }
    virtual void fetchMore(const QModelIndex& x1) {
        Smoke::StackItem x[2];
        x[1].s_class = (void*)&x1;
        if (this->_binding->callMethod(360, (void*)this, x)) return;
        this->QSqlQueryModel::fetchMore(x1);
    }
    virtual bool canFetchMore(const QModelIndex& x1) const {
        Smoke::StackItem x[2];
        x[1].s_class = (void*)&x1;
        if (this->_binding->callMethod(361, (void*)this, x)) return (bool)x[0].s_bool;
        return this->QSqlQueryModel::canFetchMore(x1);
    }
    virtual QFlags<Qt::ItemFlag> flags(const QModelIndex& x1) const {
        Smoke::StackItem x[2];
        x[1].s_class = (void*)&x1;
        if (this->_binding->callMethod(529, (void*)this, x)) return (QFlags<Qt::ItemFlag>)x[0].s_uint;
        return this->QSqlTableModel::flags(x1);
    }
    virtual void sort(int x1, Qt::SortOrder x2) {
        Smoke::StackItem x[3];
        x[1].s_int = x1;
        x[2].s_enum = x2;
        if (this->_binding->callMethod(540, (void*)this, x)) return;
        this->QSqlTableModel::sort(x1, x2);
    }
    virtual QModelIndex buddy(const QModelIndex& x1) const {
        Smoke::StackItem x[2];
        x[1].s_class = (void*)&x1;
        if (this->_binding->callMethod(11, (void*)this, x)) {
            QModelIndex* xptr = (QModelIndex*)x[0].s_class;
            QModelIndex xret(*xptr);
            delete xptr;
            return xret;
        }
        return this->QAbstractItemModel::buddy(x1);
    }
    virtual QList<QModelIndex> match(const QModelIndex& x1, int x2, const QVariant& x3, int x4, QFlags<Qt::MatchFlag> x5) const {
        Smoke::StackItem x[6];
        x[1].s_class = (void*)&x1;
        x[2].s_int = x2;
        x[3].s_class = (void*)&x3;
        x[4].s_int = x4;
        x[5].s_uint = (uint)x5;
        if (this->_binding->callMethod(12, (void*)this, x)) {
            QList<QModelIndex>* xptr = (QList<QModelIndex>*)x[0].s_class;
            QList<QModelIndex> xret(*xptr);
            delete xptr;
            return xret;
        }
        return this->QAbstractItemModel::match(x1, x2, x3, x4, x5);
    }
    virtual QSize span(const QModelIndex& x1) const {
        Smoke::StackItem x[2];
        x[1].s_class = (void*)&x1;
        if (this->_binding->callMethod(13, (void*)this, x)) {
            QSize* xptr = (QSize*)x[0].s_class;
            QSize xret(*xptr);
            delete xptr;
            return xret;
        }
        return this->QAbstractItemModel::span(x1);
    }
    virtual bool submit() {
        Smoke::StackItem x[1];
        if (this->_binding->callMethod(551, (void*)this, x)) return (bool)x[0].s_bool;
        return this->QSqlTableModel::submit();
    }
    virtual void revert() {
        Smoke::StackItem x[1];
        if (this->_binding->callMethod(552, (void*)this, x)) return;
        this->QSqlTableModel::revert();
    }
    virtual bool event(QEvent* x1) {
        Smoke::StackItem x[2];
        x[1].s_class = (void*)x1;
        if (this->_binding->callMethod(38, (void*)this, x)) return (bool)x[0].s_bool;
        return this->QObject::event(x1);
    }
    virtual bool eventFilter(QObject* x1, QEvent* x2) {
        Smoke::StackItem x[3];
        x[1].s_class = (void*)x1;
        x[2].s_class = (void*)x2;
        if (this->_binding->callMethod(39, (void*)this, x)) return (bool)x[0].s_bool;
        return this->QObject::eventFilter(x1, x2);
    }
    virtual void timerEvent(QTimerEvent* x1) {
        Smoke::StackItem x[2];
        x[1].s_class = (void*)x1;
        if (this->_binding->callMethod(40, (void*)this, x)) return;
        this->QObject::timerEvent(x1);
    }
    virtual void childEvent(QChildEvent* x1) {
        Smoke::StackItem x[2];
        x[1].s_class = (void*)x1;
        if (this->_binding->callMethod(41, (void*)this, x)) return;
        this->QObject::childEvent(x1);
    }
    virtual void customEvent(QEvent* x1) {
        Smoke::StackItem x[2];
        x[1].s_class = (void*)x1;
        if (this->_binding->callMethod(42, (void*)this, x)) return;
        this->QObject::customEvent(x1);
    }
    virtual void connectNotify(const char* x1) {
        Smoke::StackItem x[2];
        x[1].s_class = (void*)x1;
        if (this->_binding->callMethod(43, (void*)this, x)) return;
        this->QObject::connectNotify(x1);
    }
    virtual void disconnectNotify(const char* x1) {
        Smoke::StackItem x[2];
        x[1].s_class = (void*)x1;
        if (this->_binding->callMethod(44, (void*)this, x)) return;
        this->QObject::disconnectNotify(x1);
    }
    static void xenum_operation(Smoke::EnumOperation xop, Smoke::Index xtype, void *&xdata, long &xvalue) {
        switch(xtype) {
        case 68: //QSqlTableModel::EditStrategy
            switch(xop) {
                case Smoke::EnumNew:
                    xdata = (void*)new QSqlTableModel::EditStrategy;
                    break;
                case Smoke::EnumDelete:
                    delete (QSqlTableModel::EditStrategy*)xdata;
                    break;
                case Smoke::EnumFromLong:
                    *(QSqlTableModel::EditStrategy*)xdata = (QSqlTableModel::EditStrategy)xvalue;
                    break;
                case Smoke::EnumToLong:
                    xvalue = (long)*(QSqlTableModel::EditStrategy*)xdata;
                    break;
            }
            break;
        }
    }
    ~x_QSqlTableModel() { this->_binding->deleted(37, (void*)this); }
};
void xenum_QSqlTableModel(Smoke::EnumOperation xop, Smoke::Index xtype, void *&xdata, long &xvalue) {
    x_QSqlTableModel::xenum_operation(xop, xtype, xdata, xvalue);
}
void xcall_QSqlTableModel(Smoke::Index xi, void *obj, Smoke::Stack args) {
    x_QSqlTableModel *xself = (x_QSqlTableModel*)obj;
    switch(xi) {
        case 0: xself->x_0(args);	break;
        case 1: xself->x_1(args);	break;
        case 2: xself->x_2(args);	break;
        case 3: x_QSqlTableModel::x_3(args);	break;
        case 4: x_QSqlTableModel::x_4(args);	break;
        case 5: x_QSqlTableModel::x_5(args);	break;
        case 6: x_QSqlTableModel::x_6(args);	break;
        case 7: xself->x_7(args);	break;
        case 8: x_QSqlTableModel::x_8(args);	break;
        case 9: xself->x_9(args);	break;
        case 10: xself->x_10(args);	break;
        case 11: xself->x_11(args);	break;
        case 12: xself->x_12(args);	break;
        case 13: xself->x_13(args);	break;
        case 14: xself->x_14(args);	break;
        case 15: xself->x_15(args);	break;
        case 16: xself->x_16(args);	break;
        case 17: xself->x_17(args);	break;
        case 18: xself->x_18(args);	break;
        case 19: xself->x_19(args);	break;
        case 20: xself->x_20(args);	break;
        case 21: xself->x_21(args);	break;
        case 22: xself->x_22(args);	break;
        case 23: xself->x_23(args);	break;
        case 24: xself->x_24(args);	break;
        case 25: xself->x_25(args);	break;
        case 26: xself->x_26(args);	break;
        case 27: xself->x_27(args);	break;
        case 28: xself->x_28(args);	break;
        case 29: xself->x_29(args);	break;
        case 30: xself->x_30(args);	break;
        case 31: xself->x_31(args);	break;
        case 32: xself->x_32(args);	break;
        case 33: xself->x_33(args);	break;
        case 34: xself->x_34(args);	break;
        case 35: xself->x_35(args);	break;
        case 36: xself->x_36(args);	break;
        case 37: xself->x_37(args);	break;
        case 38: xself->x_38(args);	break;
        case 39: xself->x_39(args);	break;
        case 40: xself->x_40(args);	break;
        case 41: xself->x_41(args);	break;
        case 42: xself->x_42(args);	break;
        case 43: xself->x_43(args);	break;
        case 44: xself->x_44(args);	break;
        case 45: xself->x_45(args);	break;
        case 46: xself->x_46(args);	break;
        case 47: xself->x_47(args);	break;
        case 48: xself->x_48(args);	break;
        case 49: xself->x_49(args);	break;
        case 50: x_QSqlTableModel::x_50(args);	break;
        case 51: x_QSqlTableModel::x_51(args);	break;
        case 52: x_QSqlTableModel::x_52(args);	break;
        case 53: x_QSqlTableModel::x_53(args);	break;
        case 54: xself->x_54(args);	break;
        case 55: xself->x_55(args);	break;
        case 56: xself->x_56(args);	break;
        case 57: xself->x_57(args);	break;
        case 58: xself->x_58(args);	break;
        case 59: xself->x_59(args);	break;
        case 60: xself->x_60(args);	break;
        case 61: x_QSqlTableModel::x_61(args);	break;
        case 62: x_QSqlTableModel::x_62(args);	break;
        case 63: x_QSqlTableModel::x_63(args);	break;
        case 64: x_QSqlTableModel::x_64(args);	break;
        case 65: delete (QSqlTableModel*)xself;	break;
    }
}
class x_QGlobalSpace {
    SmokeBinding* _binding;
public:
    void x_0(Smoke::Stack x) {
        // set the smoke binding
        _binding = (SmokeBinding*)x[1].s_class;
    }
    static void x_1(Smoke::Stack x) {
        // static QIncompatibleFlag operator|(QSql::ParamTypeFlag, int)
        QIncompatibleFlag xret = operator|((QSql::ParamTypeFlag)x[1].s_enum,(int)x[2].s_int);
        x[0].s_class = (void*)new QIncompatibleFlag(xret);
    }
    static void x_2(Smoke::Stack x) {
        // static QFlags<QSql::ParamTypeFlag> operator|(QSql::ParamTypeFlag, QSql::ParamTypeFlag)
        QFlags<QSql::ParamTypeFlag> xret = operator|((QSql::ParamTypeFlag)x[1].s_enum,(QSql::ParamTypeFlag)x[2].s_enum);
        x[0].s_uint = (uint)xret;
    }
    static void x_3(Smoke::Stack x) {
        // static QDebug operator<<(QDebug, const QSqlField&)
        QDebug xret = operator<<(*(QDebug*)x[1].s_class,*(const QSqlField*)x[2].s_class);
        x[0].s_class = (void*)new QDebug(xret);
    }
    static void x_4(Smoke::Stack x) {
        // static QDebug operator<<(QDebug, const QSqlDatabase&)
        QDebug xret = operator<<(*(QDebug*)x[1].s_class,*(const QSqlDatabase*)x[2].s_class);
        x[0].s_class = (void*)new QDebug(xret);
    }
    static void x_5(Smoke::Stack x) {
        // static QDebug operator<<(QDebug, const QSqlRecord&)
        QDebug xret = operator<<(*(QDebug*)x[1].s_class,*(const QSqlRecord*)x[2].s_class);
        x[0].s_class = (void*)new QDebug(xret);
    }
    static void x_6(Smoke::Stack x) {
        // static QFlags<QSql::ParamTypeFlag> operator|(QSql::ParamTypeFlag, QFlags<QSql::ParamTypeFlag>)
        QFlags<QSql::ParamTypeFlag> xret = operator|((QSql::ParamTypeFlag)x[1].s_enum,(QFlags<QSql::ParamTypeFlag>)x[2].s_uint);
        x[0].s_uint = (uint)xret;
    }
    static void x_7(Smoke::Stack x) {
        // static QDebug operator<<(QDebug, const QSqlError&)
        QDebug xret = operator<<(*(QDebug*)x[1].s_class,*(const QSqlError*)x[2].s_class);
        x[0].s_class = (void*)new QDebug(xret);
    }
    ~x_QGlobalSpace() { this->_binding->deleted(9, (void*)this); }
};
void xcall_QGlobalSpace(Smoke::Index xi, void *obj, Smoke::Stack args) {
    x_QGlobalSpace *xself = (x_QGlobalSpace*)obj;
    switch(xi) {
        case 0: xself->x_0(args);	break;
        case 1: x_QGlobalSpace::x_1(args);	break;
        case 2: x_QGlobalSpace::x_2(args);	break;
        case 3: x_QGlobalSpace::x_3(args);	break;
        case 4: x_QGlobalSpace::x_4(args);	break;
        case 5: x_QGlobalSpace::x_5(args);	break;
        case 6: x_QGlobalSpace::x_6(args);	break;
        case 7: x_QGlobalSpace::x_7(args);	break;
    }
}
class x_QSql {
    SmokeBinding* _binding;
public:
    void x_0(Smoke::Stack x) {
        // set the smoke binding
        _binding = (SmokeBinding*)x[1].s_class;
    }
    static void x_1(Smoke::Stack x) {
        x[0].s_enum = (long)QSql::Tables;
    }
    static void x_2(Smoke::Stack x) {
        x[0].s_enum = (long)QSql::SystemTables;
    }
    static void x_3(Smoke::Stack x) {
        x[0].s_enum = (long)QSql::Views;
    }
    static void x_4(Smoke::Stack x) {
        x[0].s_enum = (long)QSql::AllTables;
    }
    static void x_5(Smoke::Stack x) {
        x[0].s_enum = (long)QSql::In;
    }
    static void x_6(Smoke::Stack x) {
        x[0].s_enum = (long)QSql::Out;
    }
    static void x_7(Smoke::Stack x) {
        x[0].s_enum = (long)QSql::InOut;
    }
    static void x_8(Smoke::Stack x) {
        x[0].s_enum = (long)QSql::Binary;
    }
    static void x_9(Smoke::Stack x) {
        x[0].s_enum = (long)QSql::LowPrecisionInt32;
    }
    static void x_10(Smoke::Stack x) {
        x[0].s_enum = (long)QSql::LowPrecisionInt64;
    }
    static void x_11(Smoke::Stack x) {
        x[0].s_enum = (long)QSql::LowPrecisionDouble;
    }
    static void x_12(Smoke::Stack x) {
        x[0].s_enum = (long)QSql::HighPrecision;
    }
    static void x_13(Smoke::Stack x) {
        x[0].s_enum = (long)QSql::BeforeFirstRow;
    }
    static void x_14(Smoke::Stack x) {
        x[0].s_enum = (long)QSql::AfterLastRow;
    }
    static void xenum_operation(Smoke::EnumOperation xop, Smoke::Index xtype, void *&xdata, long &xvalue) {
        switch(xtype) {
        case 29: //QSql::TableType
            switch(xop) {
                case Smoke::EnumNew:
                    xdata = (void*)new QSql::TableType;
                    break;
                case Smoke::EnumDelete:
                    delete (QSql::TableType*)xdata;
                    break;
                case Smoke::EnumFromLong:
                    *(QSql::TableType*)xdata = (QSql::TableType)xvalue;
                    break;
                case Smoke::EnumToLong:
                    xvalue = (long)*(QSql::TableType*)xdata;
                    break;
            }
            break;
        case 28: //QSql::ParamTypeFlag
            switch(xop) {
                case Smoke::EnumNew:
                    xdata = (void*)new QSql::ParamTypeFlag;
                    break;
                case Smoke::EnumDelete:
                    delete (QSql::ParamTypeFlag*)xdata;
                    break;
                case Smoke::EnumFromLong:
                    *(QSql::ParamTypeFlag*)xdata = (QSql::ParamTypeFlag)xvalue;
                    break;
                case Smoke::EnumToLong:
                    xvalue = (long)*(QSql::ParamTypeFlag*)xdata;
                    break;
            }
            break;
        case 27: //QSql::NumericalPrecisionPolicy
            switch(xop) {
                case Smoke::EnumNew:
                    xdata = (void*)new QSql::NumericalPrecisionPolicy;
                    break;
                case Smoke::EnumDelete:
                    delete (QSql::NumericalPrecisionPolicy*)xdata;
                    break;
                case Smoke::EnumFromLong:
                    *(QSql::NumericalPrecisionPolicy*)xdata = (QSql::NumericalPrecisionPolicy)xvalue;
                    break;
                case Smoke::EnumToLong:
                    xvalue = (long)*(QSql::NumericalPrecisionPolicy*)xdata;
                    break;
            }
            break;
        case 26: //QSql::Location
            switch(xop) {
                case Smoke::EnumNew:
                    xdata = (void*)new QSql::Location;
                    break;
                case Smoke::EnumDelete:
                    delete (QSql::Location*)xdata;
                    break;
                case Smoke::EnumFromLong:
                    *(QSql::Location*)xdata = (QSql::Location)xvalue;
                    break;
                case Smoke::EnumToLong:
                    xvalue = (long)*(QSql::Location*)xdata;
                    break;
            }
            break;
        }
    }
    ~x_QSql() { this->_binding->deleted(21, (void*)this); }
};
void xenum_QSql(Smoke::EnumOperation xop, Smoke::Index xtype, void *&xdata, long &xvalue) {
    x_QSql::xenum_operation(xop, xtype, xdata, xvalue);
}
void xcall_QSql(Smoke::Index xi, void *obj, Smoke::Stack args) {
    x_QSql *xself = (x_QSql*)obj;
    switch(xi) {
        case 0: xself->x_0(args);	break;
        case 1: x_QSql::x_1(args);	break;
        case 2: x_QSql::x_2(args);	break;
        case 3: x_QSql::x_3(args);	break;
        case 4: x_QSql::x_4(args);	break;
        case 5: x_QSql::x_5(args);	break;
        case 6: x_QSql::x_6(args);	break;
        case 7: x_QSql::x_7(args);	break;
        case 8: x_QSql::x_8(args);	break;
        case 9: x_QSql::x_9(args);	break;
        case 10: x_QSql::x_10(args);	break;
        case 11: x_QSql::x_11(args);	break;
        case 12: x_QSql::x_12(args);	break;
        case 13: x_QSql::x_13(args);	break;
        case 14: x_QSql::x_14(args);	break;
    }
}

}
