Use QHash<K,V> instead of QMap<K,V> when K is a pointer type
authorGiuseppe D'Angelo <dangelog@gmail.com>
Thu, 1 Mar 2012 23:47:36 +0000 (23:47 +0000)
committerQt by Nokia <qt-info@nokia.com>
Fri, 2 Mar 2012 22:16:25 +0000 (23:16 +0100)
commit7ae38c49b78515e1e49f8a8858ce9c581e534284
tree33815a82d11975f9fee1853ff68e95bfe4678beb
parent95d83cb1b68cc4a415d5d80859b4e74472ad7112
Use QHash<K,V> instead of QMap<K,V> when K is a pointer type

Changes various internal usages of QMap when the key is a pointer type.
Being ordered by the pointer value itself, it makes very little sense
to use QMap<K*, V> (esp. in cases where the key is actually allocated
on the heap).

The usages have been found with the following script:

 #!/usr/bin/perl

 use strict;
 use warnings;
 use Regexp::Common;
 use File::Find;
 use feature ':5.10';

 my $container = qr/(?:QMap)/;

 sub process {
     return unless (-f and -r and /(\.c|\.cpp|\.h|\.txt)$/);
     open my $fh, "<", $_ or die "Cannot open $_: $!";
     while (my $line = <$fh>) {
         chomp $line;
         while ($line =~ /($container\s*$RE{balanced}{-parens=>"<>"})/g) {
             my $tmp = $1;
             $tmp =~ s/\s+//g;
             say "$_:$.: $line" if $tmp =~ /^$container\s*<[^,]+\*,/;
         }
     }
     close $fh;
 }

 find( { no_chdir => 1, wanted => \&process }, @ARGV );

Change-Id: Idd9819c3f4c48f98ef92831d5e8e5ac0fa42283c
Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
src/widgets/graphicsview/qgraphicsitem.cpp
src/widgets/graphicsview/qgraphicsitem_p.h
src/widgets/graphicsview/qgraphicsscene_p.h
src/widgets/graphicsview/qgraphicswidget.cpp
src/widgets/kernel/qapplication_p.h
src/widgets/kernel/qgesturemanager.cpp
src/widgets/kernel/qgesturemanager_p.h
src/widgets/styles/qgtkstyle_p.cpp
src/widgets/styles/qgtkstyle_p.h
src/widgets/widgets/qabstractbutton.cpp
src/widgets/widgets/qwidgetanimator_p.h