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();
 
  448     QDjangoQuery query(d->countQuery());
 
  449     if (!query.exec() || !query.next())
 
  451     return query.value(0).toInt();
 
  468     other.d->addFilter(!where);
 
  486     other.d->addFilter(where);
 
  505     return qs.
size() == 1 ? qs.
at(0, target) : 0;
 
  524     Q_ASSERT(length >= -1);
 
  527     other.d->lowMark += pos;
 
  531         other.d->highMark = other.d->lowMark + length;
 
  533         if (d->highMark > 0 && other.d->highMark > d->highMark)
 
  534             other.d->highMark = d->highMark;
 
  560     Q_ASSERT(!d->lowMark && !d->highMark);
 
  563     other.d->orderBy << keys;
 
  574     return d->sqlDelete();
 
  585     other.d->selectRelated = 
true;
 
  600     return d->properties.size();
 
  609     return d->sqlUpdate(fields);
 
  620     return d->sqlValues(fields);
 
  632     return d->sqlValuesList(fields);
 
  651     other.d->counter.ref();
 
  652     if (!d->counter.deref())