[QGIS Commit] r9137 - trunk/qgis/scripts
svn_qgis at osgeo.org
svn_qgis at osgeo.org
Sat Aug 23 16:17:30 EDT 2008
Author: jef
Date: 2008-08-23 16:17:30 -0400 (Sat, 23 Aug 2008)
New Revision: 9137
Added:
trunk/qgis/scripts/astyle-all.sh
trunk/qgis/scripts/astyle-rollback.sh
trunk/qgis/scripts/astyle.sh
trunk/qgis/scripts/qgsloggermig.pl
Log:
scripts for the astyle re-indentation & iostream=>QgsDebugMsg migration cleanup
Added: trunk/qgis/scripts/astyle-all.sh
===================================================================
--- trunk/qgis/scripts/astyle-all.sh (rev 0)
+++ trunk/qgis/scripts/astyle-all.sh 2008-08-23 20:17:30 UTC (rev 9137)
@@ -0,0 +1,51 @@
+#!/bin/bash
+
+if ! astyle.sh >/dev/null 2>&1; then
+ echo astyle.sh not found in path >&2
+ exit 1
+fi
+
+set -e
+
+export elcr="$(tput el)$(tput cr)"
+
+find src -type f -print | while read f; do
+ case "$f" in
+ *.cpp|*.h|*.c|*.h|*.cxx|*.hxx|*.c++|*.h++|*.cc|*.hh|*.C|*.H)
+ ;;
+
+ *)
+ continue
+ ;;
+ esac
+
+ if [ -f "$f.astyle" ]; then
+ # reformat backup
+ cp "$f.astyle" "$f"
+ touch -r "$f.astyle" "$f"
+ else
+ # make backup
+ cp "$f" "$f.astyle"
+ touch -r "$f" "$f.astyle"
+ fi
+
+ echo -ne "Reformating $f$elcr"
+ astyle.sh "$f"
+done
+
+echo
+
+# convert CRLF to LF
+find .. -type f \
+ ! -path "*/.svn/*" \
+ ! -path "*/win_build/*" \
+ ! -name "*.def" \
+ ! -name "*.rc" \
+ ! -name "*.png" \
+ -exec file {} \; |
+ grep CRLF |
+ cut -d: -f1 |
+ while read f; do
+ echo -ne "Flipping $f$elcr"
+ flip -ub "$f"
+ done
Property changes on: trunk/qgis/scripts/astyle-all.sh
___________________________________________________________________
Name: svn:executable
+ *
Added: trunk/qgis/scripts/astyle-rollback.sh
===================================================================
--- trunk/qgis/scripts/astyle-rollback.sh (rev 0)
+++ trunk/qgis/scripts/astyle-rollback.sh 2008-08-23 20:17:30 UTC (rev 9137)
@@ -0,0 +1,12 @@
+#!/bin/bash
+
+set -e
+
+find . \( -name "*.astyle" -o -name "*.iostream" \) -exec rm {} \;
+svn revert -R .
+svn update
+patch -p0 --dry-run <qgslogger-before.diff
+patch -p0 <qgslogger-before.diff
+mv qgslogger-before.diff qgslogger-before.diff.orig
+svn diff >qgslogger-before.diff
+diff -u qgslogger-before.diff.orig qgslogger-before.diff
Property changes on: trunk/qgis/scripts/astyle-rollback.sh
___________________________________________________________________
Name: svn:executable
+ *
Added: trunk/qgis/scripts/astyle.sh
===================================================================
--- trunk/qgis/scripts/astyle.sh (rev 0)
+++ trunk/qgis/scripts/astyle.sh 2008-08-23 20:17:30 UTC (rev 9137)
@@ -0,0 +1,38 @@
+#!/bin/bash
+
+if ! qgsloggermig.pl >/dev/null 2>&1; then
+ echo qgsloggermig.pl not found in path >&2
+ exit 1
+fi
+
+set -e
+
+export ARTISTIC_STYLE_OPTIONS="\
+--preserve-date \
+--indent-preprocessor \
+--brackets=break \
+--convert-tabs \
+--indent=spaces=2 \
+--indent-classes \
+--indent-labels \
+--indent-namespaces \
+--indent-switches \
+--one-line=keep-blocks \
+--one-line=keep-statements \
+--max-instatement-indent=40 \
+--min-conditional-indent=-1 \
+--suffix=none"
+
+#--break-blocks \
+
+export ARTISTIC_STYLE_OPTIONS="\
+$ARTISTIC_STYLE_OPTIONS \
+--pad=oper \
+--pad=paren-in \
+--unpad=paren"
+
+for f in "$@"; do
+ flip -ub "$f"
+ qgsloggermig.pl "$f"
+ astyle $ARTISTIC_STYLE_OPTIONS "$f"
+done
Property changes on: trunk/qgis/scripts/astyle.sh
___________________________________________________________________
Name: svn:executable
+ *
Added: trunk/qgis/scripts/qgsloggermig.pl
===================================================================
--- trunk/qgis/scripts/qgsloggermig.pl (rev 0)
+++ trunk/qgis/scripts/qgsloggermig.pl 2008-08-23 20:17:30 UTC (rev 9137)
@@ -0,0 +1,224 @@
+#!/usr/bin/perl
+
+# use QgsDebugMsg instead of iostream for debugging output
+
+# EXAMPLE:
+#
+# #include <iostream>
+#
+# #ifdef QGISDEBUG
+# std::cout << "A " << a << " B " << b << " A " << a << std::endl;
+# // std::cout << "commented out" << std::endl;
+# #endif
+#
+# becomes
+#
+# #include "qgslogger.h"
+#
+# QgsDebugMsg(QString("A %1 B %2 A %1").arg(a).arg(b));
+# QgsDebugMsgLevel("commented out", 3);
+#
+#
+# append // OK to keep it as it is.
+
+use strict;
+use warnings;
+
+for my $file (@ARGV) {
+ my $output;
+ my $F;
+ my @file;
+
+ open $F, $file;
+
+ my $externc = 0;
+ my $ifdef = 0;
+ my $loggerseen=0;
+ my $lastinclude=0;
+ my $modified = 0;
+ my $i=0;
+ my $le;
+ while(<$F>) {
+ $i++;
+
+ ($le) = /([\r\n]+)$/ unless defined $le;
+
+ if(/\s*#\s*include\s*<iostream>/) {
+ next;
+ }
+
+ if(/\s*#\s*include\s*qgslogger\.h/) {
+ $loggerseen=1;
+ }
+
+ $externc=1 if /extern\s+\"C\"\s*{/;
+ $externc=0 if $externc && /^\s*}\s*$/;
+ $ifdef++ if /^\s*#\s*if/;
+ $ifdef-- if /^\s*#\s*endif/;
+
+ if($externc==0 && $ifdef==0 && /\s*#\s*include/) {
+ $lastinclude = scalar(@file)+1;
+ }
+
+ if(/std::(cout|cerr)/) {
+ die "nested? [$file]" if defined $output;
+ $output = "";
+ }
+
+ if(defined $output) {
+ $output .= $_;
+ if(/;/) {
+ ($le) = ($output =~ /([\r\n]+)$/);
+ $output =~ s/$le/\n/g;
+
+ my $level = 0;
+ if($output =~ /^\s*\/\/\s*(std::(cout|cerr))/) {
+ $level = 3;
+ $output =~ s/^\s*\/\///;
+ $output =~ s/\n\s*\/\//\n /g;
+ }
+
+ my @arr = split /\s*<<\s*/, $output;
+ my ($indent) = ($arr[0] =~ /^(\s*)/);
+ $arr[0] =~ s/^\s+//;
+
+ if($arr[0] =~ /^\/\// || $arr[-1] =~ /\/\/ OK$/) {
+ # commented out
+ push @file, "$output\n";
+ undef $output;
+ next;
+ }
+
+ unless( $arr[0] =~ /^std::(cout|cerr)$/ ) {
+ die "std::(cerr|cout) expected [$file]: |" . $arr[0] . "|";
+ }
+
+ $arr[-1] =~ s/\s*;\s*$/;/;
+
+ if( $arr[-1] =~ /\\n";$/) {
+ $arr[-1] =~ s/\\n";/"/;
+ push @arr, "std::endl;";
+ } elsif( $arr[-1] =~ /'\\n';$/) {
+ $arr[-1] = "std::endl;";
+ }
+
+ if( $arr[-1] =~ /^std::flush;$/ &&
+ $arr[-2] =~ /^std::endl$/ ) {
+ pop @arr;
+ pop @arr;
+ $arr[-1] = "std::endl;";
+ }
+
+ unless( $arr[-1] =~ /^std::endl;$/ ) {
+ die "std::endl; expected [$file]: |" . $arr[-1] . "|";
+ }
+
+ shift @arr;
+ pop @arr;
+
+ my $str;
+ my %args;
+ my @args;
+ my $fmt = "";
+ foreach(@arr) {
+ if(/^"(.*)"$/) {
+ $fmt .= $1;
+ } else {
+ if(/^QString::number\s*\(\s*([^,]*)\s*\)$/) {
+ $_ = $1;
+ }
+
+ s/\.toLocal8Bit\(\).data\(\)$//;
+ s/\.toUtf8\(\).data\(\)$//;
+ s/\.ascii\(\)$//;
+
+ if(exists $args{$_}) {
+ my $n = $args{$_};
+ $fmt .= "%$n";
+ } else {
+ push @args, $_;
+ $args{$_} = scalar(@args);
+ $fmt .= "%" . scalar(@args);
+ }
+ }
+ }
+
+ if(@args>0) {
+ if(@args==1 && $fmt eq "%1") {
+ $str = $args[0];
+ } else {
+ $str = "QString(\"$fmt\").arg(" . join(").arg(", @args) . ")";
+ }
+ } else {
+ $str = "\"$fmt\"";
+ }
+
+ if($level == 3) {
+# push @file, $indent . "QgsDebugMsgLevel($str, 3);$le";
+ push @file, $indent . "// QgsDebugMsg($str);$le";
+ } else {
+ push @file, $indent . "QgsDebugMsg($str);$le";
+ }
+
+ $modified=1;
+
+ undef $output;
+ }
+ } else {
+ push @file, $_;
+ }
+ }
+ close $F;
+
+
+ if($modified) {
+ if(!$loggerseen) {
+ die "no includes? [$file]" unless defined $lastinclude;
+ splice @file, $lastinclude, 0, "#include \"qgslogger.h\"$le";
+ }
+
+ #print "MODIFIED: $file\n";
+
+ my @filtered;
+ my @output;
+ my $ifdef_seen=0;
+
+ foreach(@file) {
+ if($ifdef_seen) {
+ if(/^\s*#\s*if/) {
+ die "nested #if? [$file]";
+ } elsif(/^\s*QgsDebugMsg/) {
+ push @output, $_;
+ } elsif(/^\s*#\s*endif/) {
+ push @filtered, $_ foreach @output;
+ undef @output;
+ $ifdef_seen=0;
+ } else {
+ push @filtered, "#ifdef QGISDEBUG$le";
+ push @filtered, $_ foreach @output;
+ push @filtered, $_;
+ undef @output;
+ $ifdef_seen=0;
+ }
+ } elsif(/^\s*#\s*ifdef\s+QGISDEBUG\s*$/) {
+ die "output pending" if @output;
+ $ifdef_seen=1;
+ } else {
+ push @filtered, $_;
+ }
+ }
+
+ die "output pending" if @output;
+
+ link $file, "$file.iostream" unless -f "$file.iostream";
+ unlink $file;
+
+ open $F, ">$file";
+ foreach (@filtered) {
+ print $F $_;
+ }
+ close $F;
+ }
+}
+
+# vim: set ts=8 noet:
Property changes on: trunk/qgis/scripts/qgsloggermig.pl
___________________________________________________________________
Name: svn:executable
+ *
More information about the QGIS-commit
mailing list