annotate src/zlib-1.2.7/zlib2ansi @ 23:619f715526df sv_v2.1

Update Vamp plugin SDK to 2.5
author Chris Cannam
date Thu, 09 May 2013 10:52:46 +0100
parents e13257ea84a4
children
rev   line source
Chris@4 1 #!/usr/bin/perl
Chris@4 2
Chris@4 3 # Transform K&R C function definitions into ANSI equivalent.
Chris@4 4 #
Chris@4 5 # Author: Paul Marquess
Chris@4 6 # Version: 1.0
Chris@4 7 # Date: 3 October 2006
Chris@4 8
Chris@4 9 # TODO
Chris@4 10 #
Chris@4 11 # Asumes no function pointer parameters. unless they are typedefed.
Chris@4 12 # Assumes no literal strings that look like function definitions
Chris@4 13 # Assumes functions start at the beginning of a line
Chris@4 14
Chris@4 15 use strict;
Chris@4 16 use warnings;
Chris@4 17
Chris@4 18 local $/;
Chris@4 19 $_ = <>;
Chris@4 20
Chris@4 21 my $sp = qr{ \s* (?: /\* .*? \*/ )? \s* }x; # assume no nested comments
Chris@4 22
Chris@4 23 my $d1 = qr{ $sp (?: [\w\*\s]+ $sp)* $sp \w+ $sp [\[\]\s]* $sp }x ;
Chris@4 24 my $decl = qr{ $sp (?: \w+ $sp )+ $d1 }xo ;
Chris@4 25 my $dList = qr{ $sp $decl (?: $sp , $d1 )* $sp ; $sp }xo ;
Chris@4 26
Chris@4 27
Chris@4 28 while (s/^
Chris@4 29 ( # Start $1
Chris@4 30 ( # Start $2
Chris@4 31 .*? # Minimal eat content
Chris@4 32 ( ^ \w [\w\s\*]+ ) # $3 -- function name
Chris@4 33 \s* # optional whitespace
Chris@4 34 ) # $2 - Matched up to before parameter list
Chris@4 35
Chris@4 36 \( \s* # Literal "(" + optional whitespace
Chris@4 37 ( [^\)]+ ) # $4 - one or more anythings except ")"
Chris@4 38 \s* \) # optional whitespace surrounding a Literal ")"
Chris@4 39
Chris@4 40 ( (?: $dList )+ ) # $5
Chris@4 41
Chris@4 42 $sp ^ { # literal "{" at start of line
Chris@4 43 ) # Remember to $1
Chris@4 44 //xsom
Chris@4 45 )
Chris@4 46 {
Chris@4 47 my $all = $1 ;
Chris@4 48 my $prefix = $2;
Chris@4 49 my $param_list = $4 ;
Chris@4 50 my $params = $5;
Chris@4 51
Chris@4 52 StripComments($params);
Chris@4 53 StripComments($param_list);
Chris@4 54 $param_list =~ s/^\s+//;
Chris@4 55 $param_list =~ s/\s+$//;
Chris@4 56
Chris@4 57 my $i = 0 ;
Chris@4 58 my %pList = map { $_ => $i++ }
Chris@4 59 split /\s*,\s*/, $param_list;
Chris@4 60 my $pMatch = '(\b' . join('|', keys %pList) . '\b)\W*$' ;
Chris@4 61
Chris@4 62 my @params = split /\s*;\s*/, $params;
Chris@4 63 my @outParams = ();
Chris@4 64 foreach my $p (@params)
Chris@4 65 {
Chris@4 66 if ($p =~ /,/)
Chris@4 67 {
Chris@4 68 my @bits = split /\s*,\s*/, $p;
Chris@4 69 my $first = shift @bits;
Chris@4 70 $first =~ s/^\s*//;
Chris@4 71 push @outParams, $first;
Chris@4 72 $first =~ /^(\w+\s*)/;
Chris@4 73 my $type = $1 ;
Chris@4 74 push @outParams, map { $type . $_ } @bits;
Chris@4 75 }
Chris@4 76 else
Chris@4 77 {
Chris@4 78 $p =~ s/^\s+//;
Chris@4 79 push @outParams, $p;
Chris@4 80 }
Chris@4 81 }
Chris@4 82
Chris@4 83
Chris@4 84 my %tmp = map { /$pMatch/; $_ => $pList{$1} }
Chris@4 85 @outParams ;
Chris@4 86
Chris@4 87 @outParams = map { " $_" }
Chris@4 88 sort { $tmp{$a} <=> $tmp{$b} }
Chris@4 89 @outParams ;
Chris@4 90
Chris@4 91 print $prefix ;
Chris@4 92 print "(\n" . join(",\n", @outParams) . ")\n";
Chris@4 93 print "{" ;
Chris@4 94
Chris@4 95 }
Chris@4 96
Chris@4 97 # Output any trailing code.
Chris@4 98 print ;
Chris@4 99 exit 0;
Chris@4 100
Chris@4 101
Chris@4 102 sub StripComments
Chris@4 103 {
Chris@4 104
Chris@4 105 no warnings;
Chris@4 106
Chris@4 107 # Strip C & C++ coments
Chris@4 108 # From the perlfaq
Chris@4 109 $_[0] =~
Chris@4 110
Chris@4 111 s{
Chris@4 112 /\* ## Start of /* ... */ comment
Chris@4 113 [^*]*\*+ ## Non-* followed by 1-or-more *'s
Chris@4 114 (
Chris@4 115 [^/*][^*]*\*+
Chris@4 116 )* ## 0-or-more things which don't start with /
Chris@4 117 ## but do end with '*'
Chris@4 118 / ## End of /* ... */ comment
Chris@4 119
Chris@4 120 | ## OR C++ Comment
Chris@4 121 // ## Start of C++ comment //
Chris@4 122 [^\n]* ## followed by 0-or-more non end of line characters
Chris@4 123
Chris@4 124 | ## OR various things which aren't comments:
Chris@4 125
Chris@4 126 (
Chris@4 127 " ## Start of " ... " string
Chris@4 128 (
Chris@4 129 \\. ## Escaped char
Chris@4 130 | ## OR
Chris@4 131 [^"\\] ## Non "\
Chris@4 132 )*
Chris@4 133 " ## End of " ... " string
Chris@4 134
Chris@4 135 | ## OR
Chris@4 136
Chris@4 137 ' ## Start of ' ... ' string
Chris@4 138 (
Chris@4 139 \\. ## Escaped char
Chris@4 140 | ## OR
Chris@4 141 [^'\\] ## Non '\
Chris@4 142 )*
Chris@4 143 ' ## End of ' ... ' string
Chris@4 144
Chris@4 145 | ## OR
Chris@4 146
Chris@4 147 . ## Anything other char
Chris@4 148 [^/"'\\]* ## Chars which doesn't start a comment, string or escape
Chris@4 149 )
Chris@4 150 }{$2}gxs;
Chris@4 151
Chris@4 152 }