<?xml version="1.0"?>
<typesystem package="com.trolltech.qt.sql">
  <rejection class="QSqlDriverCreator"/>
  <rejection class="QSqlDriverPlugin"/>
  <rejection class="QSqlDriverFactoryInterface"/>
  <enum-type name="QSqlDriver::NotificationSource"/>
  <enum-type name="QSqlDriver::DbmsType"/>

  <namespace-type name="QSql">
     <include file-name="qsql.h" location="global"/>
  </namespace-type>

  <value-type name="QSqlDatabase">
    <extra-includes>
        <include file-name="QSqlQuery" location="global"/>
        <include file-name="QSqlError" location="global"/>
        <include file-name="QSqlIndex" location="global"/>
        <include file-name="QSqlRecord" location="global"/>
        <include file-name="QStringList" location="global"/>
        <include file-name="QSize" location="global"/>
    </extra-includes>
    <modify-function signature="operator=(QSqlDatabase)" remove="all"/>

    <modify-function signature="contains(const QString &amp;)">
      <modify-argument index="1">
        <replace-default-expression with="QLatin1String(QSqlDatabase::defaultConnection)"/>
      </modify-argument>      
    </modify-function>
    <modify-function signature="database(const QString &amp;,bool)">
      <modify-argument index="1">
        <replace-default-expression with="QLatin1String(QSqlDatabase::defaultConnection)"/>
      </modify-argument>
    </modify-function>
    <modify-function signature="addDatabase(QSqlDriver*,const QString &amp;)">
      <modify-argument index="2">
        <replace-default-expression with="QLatin1String(QSqlDatabase::defaultConnection)"/>
      </modify-argument>
    </modify-function>
    <modify-function signature="addDatabase(const QString &amp;,const QString &amp;)">
      <modify-argument index="2">
        <replace-default-expression with="QLatin1String(QSqlDatabase::defaultConnection)"/>
      </modify-argument>
    </modify-function>
  </value-type>

  <value-type name="QSqlQuery">
    <extra-includes>
        <include file-name="QSqlError" location="global"/>
        <include file-name="QSqlRecord" location="global"/>
        <include file-name="QStringList" location="global"/>
        <include file-name="QSize" location="global"/>
    </extra-includes>
    <modify-function signature="operator=(QSqlQuery)" remove="all"/>
  </value-type>

  <value-type name="QSqlRecord">
    <extra-includes>
        <include file-name="QSqlField" location="global"/>
    </extra-includes>
    <modify-function signature="append(QSqlField)" access="non-final"/>
    <modify-function signature="operator=(QSqlRecord)" remove="all"/>
  </value-type>

  <value-type name="QSqlError">
    <modify-function signature="operator=(QSqlError)" remove="all"/>
  </value-type>

  <value-type name="QSqlIndex">
    <modify-function signature="operator=(QSqlIndex)" remove="all"/>
  </value-type>

  <value-type name="QSqlRelation"/>

  <value-type name="QSqlField">
    <modify-function signature="operator=(QSqlField)" remove="all"/>
  </value-type>

  <object-type name="QSqlDriver">
    <extra-includes>
        <include file-name="QSqlQuery" location="global"/>
        <include file-name="QSqlError" location="global"/>
        <include file-name="QSqlIndex" location="global"/>
        <include file-name="QSqlRecord" location="global"/>
        <include file-name="QStringList" location="global"/>
        <include file-name="QSize" location="global"/>
    </extra-includes>
  </object-type>

  <object-type name="QSqlQueryModel">
    <modify-function signature="indexInQuery(QModelIndex)const" access="non-final"/>
    <modify-function signature="setQuery(QSqlQuery)" access="non-final"/>
    <extra-includes>
        <include file-name="QSqlError" location="global"/>
        <include file-name="QSqlQuery" location="global"/>
        <include file-name="QSqlRecord" location="global"/>
        <include file-name="QStringList" location="global"/>
        <include file-name="QSize" location="global"/>
    </extra-includes>
  </object-type>
  <object-type name="QSqlRelationalTableModel">
    <extra-includes>
        <include file-name="QStringList" location="global"/>
        <include file-name="QSize" location="global"/>
    </extra-includes>
  </object-type>
  <object-type name="QSqlResult">
      <extra-includes>
        <include file-name="QSqlError" location="global"/>
        <include file-name="QSqlQuery" location="global"/>
        <include file-name="QSqlRecord" location="global"/>
        <include file-name="QStringList" location="global"/>
        <include file-name="QSize" location="global"/>
      </extra-includes>
      <modify-function signature="virtual_hook(int,void*)">
        <remove/>
      </modify-function>

  </object-type>
  <object-type name="QSqlTableModel">
    <extra-includes>
        <include file-name="QSqlIndex" location="global"/>
        <include file-name="QStringList" location="global"/>
        <include file-name="QSize" location="global"/>
    </extra-includes>
  </object-type>
  <object-type name="QSqlDriverCreatorBase">
    <extra-includes>
        <include file-name="QSqlDriver" location="global"/>
    </extra-includes>
  </object-type>

  <enum-type name="QSql::Location"/>
  <enum-type name="QSql::ParamTypeFlag" flags="QSql::ParamType"/>
  <enum-type name="QSql::TableType"/>
  <enum-type name="QSql::NumericalPrecisionPolicy"/>
  <enum-type name="QSqlDriver::DriverFeature"/>
  <enum-type name="QSqlDriver::IdentifierType"/>
  <enum-type name="QSqlDriver::StatementType"/>
  <enum-type name="QSqlError::ErrorType"/>
  <enum-type name="QSqlField::RequiredStatus"/>
  <enum-type name="QSqlQuery::BatchExecutionMode"/>
  <enum-type name="QSqlResult::BindingSyntax"/>
  <enum-type name="QSqlResult::VirtualHookOperation"/>
  <enum-type name="QSqlTableModel::EditStrategy"/>
  <enum-type name="QSqlRelationalTableModel::JoinMode"/>

  <suppress-warning text="WARNING(MetaJavaBuilder) :: Class 'QSqlField' has equals operators but no qHash() function. Hashcode of objects will consistently be 0."/>
  <suppress-warning text="WARNING(MetaJavaBuilder) :: Class 'QSqlRecord' has equals operators but no qHash() function. Hashcode of objects will consistently be 0."/>

  <suppress-warning text="WARNING(CppImplGenerator) :: protected function '*' in final class '*'"/>
  <suppress-warning text="WARNING(MetaJavaBuilder) :: visibility of function '*' modified in class '*'"/>
  <suppress-warning text="WARNING(MetaJavaBuilder) :: hiding of function '*' in class '*'"/>

</typesystem>
