#!/usr/bin/perl # Strips unnecessary whitespace from SIGNAL() and SLOT() macros, # so that this doesn't have to be done at runtime. # Believe it or not, this actually speeds things up. # # Limitation: only 1 set of (...) inside the macro, so it can't handle # signals and slots that have function pointers as arguments. for $arg (@ARGV) { if ( 0 ) { # opts } else { push @files, $arg; } } sub canonWS { my ($s) = @_; $s =~ s/(.)\s+(\W)/$1$2/g; $s =~ s/(\W)\s+(.)/$1$2/g; return $s; }; for $file (@files) { open F, $file; $c = join "",; close F; $c =~ s/\b((?:SIGNAL|SLOT)\s*\(\s*)((?:[^\n;()]+|\([^()]*\))*)\)/"$1".canonWS($2).")"/egs; open F, ">t$$"; print F $c; close F; system("diff -u $file t$$"); }