* In the attributetable there was a mess with references and pointers, originating from 66fadee8ef.
* QgsVectorLayerCache did sometimes cache features which did not contain all information which needs to be cached and therefore corrupting the cache and leading to incomplete cache hits.
* Add a unit test for the cache problem
* Fix QgsCacheIndexFeatureId
* QgsAbstractCacheIndex::getCacheIterator now produces a QgsFeatureIterator (instead of a list of Feature Ids). This allows to combine a mixed response, partly satisfied by the cache and partly by an additional query to the backend.
attributeAdded and attributeDeleted signals are only emitted for "real" fields
and not for "virtual fields" as in joined fields. Therefore this signal should
be used instead to keep track of these
- update methods of existing classes
- add comment to methods missing in the sip bindings
- split up collective sip files into single files and use
same directory structure in python/ as in src/
- add a lot of missing classes (some might not make sense because of
missing python methods in those classes)
- remove some non-existing methods from the header files
- add scripts/sipdiff
- replace some usages of std::vector and std::set with QVector/QSet
- add a column containing the feature id, if no columns are there (otherwise
there are no valid model indices)
- vector layer: emit featureDeleted and featureAdded signals, when added
features change their temporary to a permanent id (e.g. makes the now defunct
rows in the attribute table disappear, instead of showing ERROR)
- memory provider: update the feature id in added features
force usage of the attribute table memory model. Apparently the memory model
was completely disfunctional before. Fixes included, but it probably needs
more testing.