19 #ifndef QDJANGO_QUERYSET_H
20 #define QDJANGO_QUERYSET_H
23 #include "QDjangoWhere.h"
24 #include "QDjangoQuerySet_p.h"
50 typedef int size_type;
52 typedef value_type *pointer;
53 typedef const value_type *const_pointer;
54 typedef value_type &reference;
55 typedef const value_type &const_reference;
56 typedef qptrdiff difference_type;
89 typedef qptrdiff difference_type;
112 : m_querySet(other.m_querySet)
114 , m_offset(other.m_offset)
120 : m_querySet(querySet)
147 return m_querySet == other.m_querySet && m_offset == other.m_offset;
157 return m_querySet != other.m_querySet || m_offset != other.m_offset;
165 return (m_querySet == other.m_querySet && m_offset < other.m_offset)
166 || m_querySet < other.m_querySet;
174 return (m_querySet == other.m_querySet && m_offset <= other.m_offset)
175 || m_querySet < other.m_querySet;
183 return (m_querySet == other.m_querySet && m_offset > other.m_offset)
184 || m_querySet > other.m_querySet;
192 return (m_querySet == other.m_querySet && m_offset >= other.m_offset)
193 || m_querySet > other.m_querySet;
269 if (m_fetched != m_offset && m_querySet) {
271 m_fetched = m_offset;
275 return m_fetched == m_offset ? &m_object : 0;
280 mutable int m_fetched;
306 int update(
const QVariantMap &fields);
307 QList<QVariantMap>
values(
const QStringList &fields = QStringList());
308 QList<QVariantList>
valuesList(
const QStringList &fields = QStringList());
311 T *
at(
int index, T *target = 0);
322 QDjangoQuerySetPrivate *d;
330 d =
new QDjangoQuerySetPrivate(T::staticMetaObject.className());
340 other.d->counter.ref();
349 if (!d->counter.deref())
366 T *entry = target ? target :
new T;
367 if (!d->sqlLoad(entry, index))
424 other.d->lowMark = d->lowMark;
425 other.d->highMark = d->highMark;
426 other.d->orderBy = d->orderBy;
427 other.d->selectRelated = d->selectRelated;
428 other.d->whereClause = d->whereClause;
445 return d->properties.size();
446 return d->sqlCount();
463 other.d->addFilter(!where);
481 other.d->addFilter(where);
500 return qs.
size() == 1 ? qs.
at(0, target) : 0;
519 Q_ASSERT(length >= -1);
522 other.d->lowMark += pos;
526 other.d->highMark = other.d->lowMark + length;
528 if (d->highMark > 0 && other.d->highMark > d->highMark)
529 other.d->highMark = d->highMark;
555 Q_ASSERT(!d->lowMark && !d->highMark);
558 other.d->orderBy << keys;
569 return d->sqlDelete();
580 other.d->selectRelated =
true;
595 return d->properties.size();
604 return d->sqlUpdate(fields);
615 return d->sqlValues(fields);
627 return d->sqlValuesList(fields);
646 other.d->counter.ref();
647 if (!d->counter.deref())