diff options
Diffstat (limited to 'sip/tqtsql/tqsqlrecord.sip')
-rw-r--r-- | sip/tqtsql/tqsqlrecord.sip | 171 |
1 files changed, 171 insertions, 0 deletions
diff --git a/sip/tqtsql/tqsqlrecord.sip b/sip/tqtsql/tqsqlrecord.sip new file mode 100644 index 0000000..4e79fac --- /dev/null +++ b/sip/tqtsql/tqsqlrecord.sip @@ -0,0 +1,171 @@ +// This is the SIP interface definition for TQSqlRecord and TQSqlRecordInfo. +// +// Copyright (c) 2007 +// Riverbank Computing Limited <info@riverbankcomputing.co.uk> +// +// This file is part of PyTQt. +// +// This copy of PyTQt 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. +// +// PyTQt 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 +// PyTQt; 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>TQSqlRecord (TQt v3+)</Title> +<Para> +<Literal>TQSqlRecord</Literal> is fully implemented. +</Para> +</Sect2> + +<Sect2><Title>TQSqlRecordInfo (TQt v3+)</Title> +<Para> +<Literal>TQSqlRecordInfo</Literal> is implemented as a Python list of +<Literal>TQSqlFieldInfo</Literal> instances. +</Para> +</Sect2> +%End + + +class TQSqlRecord +{ +%TypeHeaderCode +#include <tqsqlrecord.h> +%End + +public: + TQSqlRecord(); + TQSqlRecord(const TQSqlRecord &); + + virtual TQVariant value(int) const; + virtual TQVariant value(const TQString &) const; + virtual void setValue(int,const TQVariant &); + virtual void setValue(const TQString &,const TQVariant &); + bool isGenerated(int) const; + bool isGenerated(const TQString &) const; + virtual void setGenerated(const TQString &,bool); + virtual void setGenerated(int,bool); + virtual void setNull(int); + virtual void setNull(const TQString &); + bool isNull(int); + bool isNull(const TQString &); +// bool isNull(int) const; +// bool isNull(const TQString &) const; + + int position(const TQString &) const; + TQString fieldName(int) const; + TQSqlField *field(int); + TQSqlField *field(const TQString &); +// const TQSqlField *field(int) const; +// const TQSqlField *field(const TQString &) const; + + virtual void append(const TQSqlField &); + virtual void insert(int,const TQSqlField &); + virtual void remove(int); + + bool isEmpty() const; + bool contains(const TQString &) const; + virtual void clear(); + virtual void clearValues(bool = 0); + uint count() const; + virtual TQString toString(const TQString & = TQString::null, + const TQString & = ",") const; + virtual TQStringList toStringList(const TQString & = TQString::null) const; +}; + + +%MappedType TQSqlRecordInfo +{ +%TypeHeaderCode +#include <tqsqlrecord.h> +%End + +%ConvertFromTypeCode + // Convert to a Python list of TQSqlFieldInfo instances. + + int i; + PyObject *l; + + // Create the list. + + if ((l = PyList_New(sipCpp -> count())) == NULL) + return NULL; + + // Get it. + + i = 0; + TQValueListConstIterator<TQSqlFieldInfo> it; + + for (it = sipCpp -> begin(); it != sipCpp -> end(); ++it) + { + PyObject *tmobj; + + if ((tmobj = sipConvertFromNewInstance(new TQSqlFieldInfo(*it),sipClass_TQSqlFieldInfo,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 TQSqlFieldInfo instances to a TQSqlRecordInfo + // 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_TQSqlFieldInfo,SIP_NOT_NONE)) + return 0; + + return 1; + } + + TQSqlRecordInfo *qri = new TQSqlRecordInfo; + + 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. + TQSqlFieldInfo *itm = reinterpret_cast<TQSqlFieldInfo *>(sipConvertToInstance(PyList_GET_ITEM(sipPy,i),sipClass_TQSqlFieldInfo,0,SIP_NOT_NONE,&state,&iserr)); + + if (iserr) + { + sipReleaseInstance(itm,sipClass_TQSqlFieldInfo,state); + + *sipIsErr = 1; + delete qri; + + return 0; + } + + qri -> append(*itm); + + sipReleaseInstance(itm,sipClass_TQSqlFieldInfo,state); + } + + *sipCppPtr = qri; + + return sipGetState(sipTransferObj); +%End +}; |