qt5base-lts/examples/widgets
Giuseppe D'Angelo 14090760a8 Long Live QMap as a refcounted std::map!
... and QMultiMap as std::multimap.

Just use the implementation from the STL; we can't really claim that
our code is much better than STL's, or does things any differently
(de facto they're both red-black trees).

Decouple QMultiMap from QMap, by making it NOT inherit from
QMap any longer. This completes the deprecation started in 5.15:
QMap now does not store duplicated keys any more.

Something to establish is where to put the
QExplictlySharedDataPointer replcement that is in there as an
ad-hoc solution. There's a number of patches in-flight by Marc
that try to introduce the same (or very similar) functionality.

Miscellanea changes to the Q(Multi)Map code itself:

* consistently use size_type instead of int;
* pass iterators by value;
* drop QT_STRICT_ITERATORS;
* iterators implictly convert to const_iterators, and APIs
  take const_iterators;
* iterators are just bidirectional and not random access;
* added noexcept where it makes sense;
* "inline" dropped (churn);
* qMapLessThanKey dropped (undocumented, 0 hits in Qt, 1 hit in KDE);
* operator== on Q(Multi)Map requires operator== on the key type
  (we're checking for equality, not equivalence!).

Very few breakages occur in qtbase.

[ChangeLog][Potentially Source-Incompatible Changes] QMap does not
support multiple equivalent keys any more. Any related functionality
has been removed from QMap, following the deprecation that happened
in Qt 5.15. Use QMultiMap for this use case.

[ChangeLog][Potentially Source-Incompatible Changes] QMap and
QMultiMap iterators random-access API have been removed. Note that
the iterators have always been just bidirectional; moving
an iterator by N positions can still be achieved using std::next
or std::advance, at the same cost as before (O(N)).

[ChangeLog][Potentially Source-Incompatible Changes] QMultiMap does
not inherit from QMap any more. Amongst other things, this means
that iterators on a QMultiMap now belong to the QMultiMap class
(and not to the QMap class); new Java iterators have been added.

Change-Id: I5a0fe9b020f92c21b37065a1defff783b5d2b7a9
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-08-06 19:15:39 +02:00
..
animation CMake: Regenerate examples 2020-07-09 09:38:28 +02:00
desktop CMake: Regenerate examples 2020-07-09 09:38:28 +02:00
dialogs CMake: Regenerate examples 2020-07-09 09:38:28 +02:00
doc Doc: Fix typo 2020-06-25 09:56:46 +02:00
draganddrop CMake: Regenerate examples 2020-07-09 09:38:28 +02:00
effects CMake: Regenerate examples 2020-07-09 09:38:28 +02:00
gallery CMake: Regenerate examples 2020-07-09 09:38:28 +02:00
gestures CMake: Regenerate examples 2020-07-09 09:38:28 +02:00
graphicsview CMake: Regenerate examples 2020-07-09 09:38:28 +02:00
itemviews CMake: Regenerate examples 2020-07-09 09:38:28 +02:00
layouts CMake: Regenerate examples 2020-07-09 09:38:28 +02:00
mainwindows CMake: Regenerate examples 2020-07-09 09:38:28 +02:00
painting Long Live QMap as a refcounted std::map! 2020-08-06 19:15:39 +02:00
qnx/foreignwindows Use QList instead of QVector in statemachine 2020-07-06 14:06:13 +02:00
richtext CMake: Regenerate examples 2020-07-09 09:38:28 +02:00
scroller CMake: Regenerate examples 2020-07-09 09:38:28 +02:00
statemachine CMake: Regenerate examples 2020-07-09 09:38:28 +02:00
tools Polish the settingseditor example 2020-07-10 11:31:09 +00:00
touch CMake: Regenerate examples 2020-07-09 09:38:28 +02:00
tutorials CMake: Regenerate examples 2020-07-09 09:38:28 +02:00
widgets CMake: Regenerate examples 2020-07-09 09:38:28 +02:00
windowcontainer CMake: Regenerate examples 2020-07-09 09:38:28 +02:00
.prev_CMakeLists.txt CMake: Regenerate examples/widgets/ projects 2020-04-29 22:48:38 +02:00
CMakeLists.txt macOS: Remove examples for deprecated QMac(NativeWidget|CocoaViewContainer) 2020-06-26 15:10:26 +02:00
widgets.pro macOS: Remove examples for deprecated QMac(NativeWidget|CocoaViewContainer) 2020-06-26 15:10:26 +02:00