qt6-bb10/tests/auto
Giuseppe D'Angelo 69496d4e22 Introduce QAbstractItemModel::checkIndex()
When implementing a custom model there's the habit, in each and every
function that takes a QModelIndex, to carefully checking the index
passed by the caller. This index is checked for "legality" (*): does the
index belong to this model, is the index pointing to an existing row and
column, and so on.  These checks are hand-rolled and, as such, slightly
different and possibly incomplete (i.e. wrong) every time.

What's worse, these checks are implemented via "ordinary" code (if
statements). However, passing an illegal index to a QAIM function is a
precondition violation, and as such does not (and must not) be
checked in ordinary conditions, as it triggers undefined behavior. On
the other hand, while debugging a custom model or a custom hierarchy
of (proxy) models, having such checks in place can be a significant
aid.

Enter checkIndex(): a debugging helper for QAbstractItemModel and its
subclasses. checkIndex() centralizes the checks for legality of a
given index. User code is free to assert on it, or have some other
fallback mechanism in case a check fails.

(*) Using "legality" here instead of "validity" in order to avoid
confusion between QModelIndex::isValid() and what checkIndex() really
does.

[ChangeLog][QtCore][QAbstractItemModel] Added
QAbstractItemModel::checkIndex(), a debugging function for
QAbstractItemModel subclasses.

Change-Id: I1eea0586b1ac3ededdbfbf46759145022dc5ad86
Reviewed-by: Thorbjørn Lund Martsum <tmartsum@gmail.com>
Reviewed-by: David Faure <david.faure@kdab.com>
2018-01-08 09:41:53 +00:00
..
android Updated license headers 2016-01-21 18:55:18 +00:00
bic/data Add binary compatibility files for QtBase for 5.10 2018-01-04 16:26:32 +00:00
cmake CMake: Set SKIP_AUTOMOC/AUTOUIC where needed 2017-11-22 13:51:30 +00:00
compilerwarnings/data Updated license headers 2016-01-21 18:55:18 +00:00
concurrent Merge remote-tracking branch 'origin/5.10' into dev 2017-11-23 09:36:03 +01:00
corelib Introduce QAbstractItemModel::checkIndex() 2018-01-08 09:41:53 +00:00
dbus Use dependencies instead of CONFIG+=ordered 2017-12-02 11:09:15 +00:00
gui Merge remote-tracking branch 'origin/5.10' into dev 2018-01-02 09:58:44 +01:00
guiapplauncher
installed_cmake
network Merge remote-tracking branch 'origin/5.10' into dev 2018-01-02 09:58:44 +01:00
opengl Change almost all other uses of qrand() to QRandomGenerator 2017-11-08 09:14:03 +00:00
other Cocoa: Make AA_MacDontSwapCtrlMeta work 2018-01-08 07:18:01 +00:00
printsupport Convert features.completer to QT_[REQUIRE_]CONFIG 2017-09-04 11:28:02 +00:00
shared Remove workaround for potentially unavailable pasteboard in macOS 2017-03-07 01:04:46 +00:00
sql QPSQL: Add support for multiple result sets 2018-01-08 09:10:10 +00:00
testlib Tests: Raise minimum supported MSVC version to 2015 2018-01-04 20:23:25 +00:00
tools Remove references to obsolete platforms 2017-11-05 06:33:53 +00:00
widgets QMenuBar: Add overloads of addAction() using Qt 5 signals and slots 2018-01-06 18:48:54 +00:00
xml tst_qxmlsimplereader::inputFromSocket - fix race condition(s) 2017-11-06 19:14:41 +00:00
auto.pro tests/auto/auto.pro: Use correct null device for DBUS check 2017-12-01 09:53:07 +00:00
network-settings.h Merge remote-tracking branch 'origin/5.6' into 5.7 2016-05-06 15:36:44 +02:00