//Auto-generated by kalyptus. DO NOT EDIT.
namespace Qyoto {
    using System;
    using System.Collections.Generic;
    /// <remarks> See <see cref="IQSqlDriverSignals"></see> for signals emitted by QSqlDriver
    /// </remarks>
    [SmokeClass("QSqlDriver")]
    public abstract class QSqlDriver : QObject {
        protected QSqlDriver(Type dummy) : base((Type) null) {}
        protected new void CreateProxy() {
            interceptor = new SmokeInvocation(typeof(QSqlDriver), this);
        }
        private static SmokeInvocation staticInterceptor = null;
        static QSqlDriver() {
            staticInterceptor = new SmokeInvocation(typeof(QSqlDriver), null);
        }
        public enum DriverFeature {
            Transactions = 0,
            QuerySize = 1,
            BLOB = 2,
            Unicode = 3,
            PreparedQueries = 4,
            NamedPlaceholders = 5,
            PositionalPlaceholders = 6,
            LastInsertId = 7,
            BatchOperations = 8,
            SimpleLocking = 9,
            LowPrecisionNumbers = 10,
            EventNotifications = 11,
            FinishQuery = 12,
            MultipleResultSets = 13,
        }
        public enum StatementType {
            WhereStatement = 0,
            SelectStatement = 1,
            UpdateStatement = 2,
            InsertStatement = 3,
            DeleteStatement = 4,
        }
        public enum IdentifierType {
            FieldName = 0,
            TableName = 1,
        }
        public QSqlDriver(QObject parent) : this((Type) null) {
            CreateProxy();
            interceptor.Invoke("QSqlDriver#", "QSqlDriver(QObject*)", typeof(void), typeof(QObject), parent);
        }
        public QSqlDriver() : this((Type) null) {
            CreateProxy();
            interceptor.Invoke("QSqlDriver", "QSqlDriver()", typeof(void));
        }
        [SmokeMethod("isOpen() const")]
        public virtual bool IsOpen() {
            return (bool) interceptor.Invoke("isOpen", "isOpen() const", typeof(bool));
        }
        public bool IsOpenError() {
            return (bool) interceptor.Invoke("isOpenError", "isOpenError() const", typeof(bool));
        }
        [SmokeMethod("beginTransaction()")]
        public virtual bool BeginTransaction() {
            return (bool) interceptor.Invoke("beginTransaction", "beginTransaction()", typeof(bool));
        }
        [SmokeMethod("commitTransaction()")]
        public virtual bool CommitTransaction() {
            return (bool) interceptor.Invoke("commitTransaction", "commitTransaction()", typeof(bool));
        }
        [SmokeMethod("rollbackTransaction()")]
        public virtual bool RollbackTransaction() {
            return (bool) interceptor.Invoke("rollbackTransaction", "rollbackTransaction()", typeof(bool));
        }
        [SmokeMethod("tables(QSql::TableType) const")]
        public virtual List<string> Tables(QSql.TableType tableType) {
            return (List<string>) interceptor.Invoke("tables$", "tables(QSql::TableType) const", typeof(List<string>), typeof(QSql.TableType), tableType);
        }
        [SmokeMethod("primaryIndex(const QString&) const")]
        public virtual QSqlIndex PrimaryIndex(string tableName) {
            return (QSqlIndex) interceptor.Invoke("primaryIndex$", "primaryIndex(const QString&) const", typeof(QSqlIndex), typeof(string), tableName);
        }
        [SmokeMethod("record(const QString&) const")]
        public virtual QSqlRecord Record(string tableName) {
            return (QSqlRecord) interceptor.Invoke("record$", "record(const QString&) const", typeof(QSqlRecord), typeof(string), tableName);
        }
        [SmokeMethod("formatValue(const QSqlField&, bool) const")]
        public virtual string FormatValue(QSqlField field, bool trimStrings) {
            return (string) interceptor.Invoke("formatValue#$", "formatValue(const QSqlField&, bool) const", typeof(string), typeof(QSqlField), field, typeof(bool), trimStrings);
        }
        [SmokeMethod("formatValue(const QSqlField&) const")]
        public virtual string FormatValue(QSqlField field) {
            return (string) interceptor.Invoke("formatValue#", "formatValue(const QSqlField&) const", typeof(string), typeof(QSqlField), field);
        }
        [SmokeMethod("escapeIdentifier(const QString&, QSqlDriver::IdentifierType) const")]
        public virtual string EscapeIdentifier(string identifier, QSqlDriver.IdentifierType type) {
            return (string) interceptor.Invoke("escapeIdentifier$$", "escapeIdentifier(const QString&, QSqlDriver::IdentifierType) const", typeof(string), typeof(string), identifier, typeof(QSqlDriver.IdentifierType), type);
        }
        [SmokeMethod("sqlStatement(QSqlDriver::StatementType, const QString&, const QSqlRecord&, bool) const")]
        public virtual string SqlStatement(QSqlDriver.StatementType type, string tableName, QSqlRecord rec, bool preparedStatement) {
            return (string) interceptor.Invoke("sqlStatement$$#$", "sqlStatement(QSqlDriver::StatementType, const QString&, const QSqlRecord&, bool) const", typeof(string), typeof(QSqlDriver.StatementType), type, typeof(string), tableName, typeof(QSqlRecord), rec, typeof(bool), preparedStatement);
        }
        public QSqlError LastError() {
            return (QSqlError) interceptor.Invoke("lastError", "lastError() const", typeof(QSqlError));
        }
        [SmokeMethod("hasFeature(QSqlDriver::DriverFeature) const")]
        public abstract bool HasFeature(QSqlDriver.DriverFeature f);
        [SmokeMethod("close()")]
        public abstract void Close();
        [SmokeMethod("createResult() const")]
        public abstract QSqlResult CreateResult();
        [SmokeMethod("open(const QString&, const QString&, const QString&, const QString&, int, const QString&)")]
        public abstract bool Open(string db, string user, string password, string host, int port, string connOpts);
        public bool SubscribeToNotification(string name) {
            return (bool) interceptor.Invoke("subscribeToNotification$", "subscribeToNotification(const QString&)", typeof(bool), typeof(string), name);
        }
        public bool UnsubscribeFromNotification(string name) {
            return (bool) interceptor.Invoke("unsubscribeFromNotification$", "unsubscribeFromNotification(const QString&)", typeof(bool), typeof(string), name);
        }
        public List<string> SubscribedToNotifications() {
            return (List<string>) interceptor.Invoke("subscribedToNotifications", "subscribedToNotifications() const", typeof(List<string>));
        }
        [SmokeMethod("setOpen(bool)")]
        protected virtual void SetOpen(bool o) {
            interceptor.Invoke("setOpen$", "setOpen(bool)", typeof(void), typeof(bool), o);
        }
        [SmokeMethod("setOpenError(bool)")]
        protected virtual void SetOpenError(bool e) {
            interceptor.Invoke("setOpenError$", "setOpenError(bool)", typeof(void), typeof(bool), e);
        }
        [SmokeMethod("setLastError(const QSqlError&)")]
        protected virtual void SetLastError(QSqlError e) {
            interceptor.Invoke("setLastError#", "setLastError(const QSqlError&)", typeof(void), typeof(QSqlError), e);
        }
        [Q_SLOT("bool subscribeToNotificationImplementation(QString)")]
        protected bool SubscribeToNotificationImplementation(string name) {
            return (bool) interceptor.Invoke("subscribeToNotificationImplementation$", "subscribeToNotificationImplementation(const QString&)", typeof(bool), typeof(string), name);
        }
        [Q_SLOT("bool unsubscribeFromNotificationImplementation(QString)")]
        protected bool UnsubscribeFromNotificationImplementation(string name) {
            return (bool) interceptor.Invoke("unsubscribeFromNotificationImplementation$", "unsubscribeFromNotificationImplementation(const QString&)", typeof(bool), typeof(string), name);
        }
        [Q_SLOT("QStringList subscribedToNotificationsImplementation()")]
        protected List<string> SubscribedToNotificationsImplementation() {
            return (List<string>) interceptor.Invoke("subscribedToNotificationsImplementation", "subscribedToNotificationsImplementation() const", typeof(List<string>));
        }
        public static new string Tr(string s, string c) {
            return (string) staticInterceptor.Invoke("tr$$", "tr(const char*, const char*)", typeof(string), typeof(string), s, typeof(string), c);
        }
        public static new string Tr(string s) {
            return (string) staticInterceptor.Invoke("tr$", "tr(const char*)", typeof(string), typeof(string), s);
        }
        protected new IQSqlDriverSignals Emit {
            get { return (IQSqlDriverSignals) Q_EMIT; }
        }
    }

    public interface IQSqlDriverSignals : IQObjectSignals {
        [Q_SIGNAL("void notification(QString)")]
        void Notification(string name);
    }
}
