diff options
Diffstat (limited to 'python/pyqt/sip/qtsql/qsqlrecord.sip')
-rw-r--r-- | python/pyqt/sip/qtsql/qsqlrecord.sip | 178 |
1 files changed, 178 insertions, 0 deletions
diff --git a/python/pyqt/sip/qtsql/qsqlrecord.sip b/python/pyqt/sip/qtsql/qsqlrecord.sip new file mode 100644 index 00000000..cf1ec0e0 --- /dev/null +++ b/python/pyqt/sip/qtsql/qsqlrecord.sip @@ -0,0 +1,178 @@ +// This is the SIP interface definition for QSqlRecord and QSqlRecordInfo. +// +// Copyright (c) 2007 +// Riverbank Computing Limited <info@riverbankcomputing.co.uk> +// +// This file is part of PyQt. +// +// This copy of PyQt is free software; you can redistribute it and/or modify it +// under the terms of the GNU General Public License as published by the Free +// Software Foundation; either version 2, or (at your option) any later +// version. +// +// PyQt is supplied in the hope that it will be useful, but WITHOUT ANY +// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS +// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more +// details. +// +// You should have received a copy of the GNU General Public License along with +// PyQt; see the file LICENSE. If not, write to the Free Software Foundation, +// Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + + +%ExportedDoc +<Sect2><Title>QSqlRecord (Qt v3+)</Title> +<Para> +<Literal>QSqlRecord</Literal> is fully implemented. +</Para> +</Sect2> + +<Sect2><Title>QSqlRecordInfo (Qt v3+)</Title> +<Para> +<Literal>QSqlRecordInfo</Literal> is implemented as a Python list of +<Literal>QSqlFieldInfo</Literal> instances. +</Para> +</Sect2> +%End + + +%If (Qt_3_0_0 -) + +class QSqlRecord +{ +%TypeHeaderCode +#include <qsqlrecord.h> +%End + +public: + QSqlRecord(); + QSqlRecord(const QSqlRecord &); + + virtual QVariant value(int) const; + virtual QVariant value(const QString &) const; + virtual void setValue(int,const QVariant &); + virtual void setValue(const QString &,const QVariant &); + bool isGenerated(int) const; + bool isGenerated(const QString &) const; + virtual void setGenerated(const QString &,bool); + virtual void setGenerated(int,bool); + virtual void setNull(int); + virtual void setNull(const QString &); + bool isNull(int); + bool isNull(const QString &); +%If (Qt_3_1_0 -) +// bool isNull(int) const; +// bool isNull(const QString &) const; +%End + + int position(const QString &) const; + QString fieldName(int) const; + QSqlField *field(int); + QSqlField *field(const QString &); +// const QSqlField *field(int) const; +// const QSqlField *field(const QString &) const; + + virtual void append(const QSqlField &); + virtual void insert(int,const QSqlField &); + virtual void remove(int); + + bool isEmpty() const; + bool contains(const QString &) const; + virtual void clear(); + virtual void clearValues(bool = 0); + uint count() const; + virtual QString toString(const QString & = QString::null, + const QString & = ",") const; + virtual QStringList toStringList(const QString & = QString::null) const; +}; + + +%MappedType QSqlRecordInfo +{ +%TypeHeaderCode +#include <qsqlrecord.h> +#include "sipqtsqlQSqlFieldInfo.h" +%End + +%ConvertFromTypeCode + // Convert to a Python list of QSqlFieldInfo instances. + + int i; + PyObject *l; + + // Create the list. + + if ((l = PyList_New(sipCpp -> count())) == NULL) + return NULL; + + // Get it. + + i = 0; + QValueListConstIterator<QSqlFieldInfo> it; + + for (it = sipCpp -> begin(); it != sipCpp -> end(); ++it) + { + PyObject *tmobj; + + if ((tmobj = sipConvertFromNewInstance(new QSqlFieldInfo(*it),sipClass_QSqlFieldInfo,sipTransferObj)) == NULL || PyList_SetItem(l,i,tmobj) < 0) + { + Py_XDECREF(tmobj); + Py_DECREF(l); + + return NULL; + } + + ++i; + } + + return l; +%End + + +%ConvertToTypeCode + // Convert a Python list of QSqlFieldInfo instances to a QSqlRecordInfo + // on the heap. + + if (sipIsErr == NULL) + { + if (!PyList_Check(sipPy)) + return 0; + + for (int i = 0; i < PyList_GET_SIZE(sipPy); ++i) + if (!sipCanConvertToInstance(PyList_GET_ITEM(sipPy,i),sipClass_QSqlFieldInfo,SIP_NOT_NONE)) + return 0; + + return 1; + } + + QSqlRecordInfo *qri = new QSqlRecordInfo; + + for (int i = 0; i < PyList_GET_SIZE(sipPy); ++i) + { + int iserr = 0, state; + + // We apply the transfer to the list itself, not the elements. + QSqlFieldInfo *itm = reinterpret_cast<QSqlFieldInfo *>(sipConvertToInstance(PyList_GET_ITEM(sipPy,i),sipClass_QSqlFieldInfo,0,SIP_NOT_NONE,&state,&iserr)); + + if (iserr) + { + sipReleaseInstance(itm,sipClass_QSqlFieldInfo,state); + + *sipIsErr = 1; + delete qri; + + return 0; + } + + qri -> append(*itm); + + sipReleaseInstance(itm,sipClass_QSqlFieldInfo,state); + } + + *sipCppPtr = qri; + + return sipGetState(sipTransferObj); +%End +}; + +%End |