Skip to content
Snippets Groups Projects
Select Git revision
  • next default protected
  • better-distance-math
  • master protected
  • movie
  • softcode-info
  • acs
  • spriteinfo-refactor
  • clipmidtex
  • custom-map-names
  • nogravity-trampolines
  • 2214-pre4
  • 2214-pre3
  • just-in-case
  • fix-opengl-parameter-crash
  • 2214-pre2
  • 2214-pre1
  • delfile2
  • cleanupmusic
  • gametype-refactor-1
  • extra-textures
  • SRB2_release_2.2.15
  • SRB2_release_2.2.13
  • SRB2_release_2.2.12
  • SRB2_release_2.2.11
  • SRB2_release_2.2.10
  • SRB2_release_2.2.9
  • SRB2_release_2.2.8
  • SRB2_release_2.2.7
  • SRB2_release_2.2.6
  • SRB2_release_2.2.5
  • SRB2_release_2.2.4
  • SRB2_release_2.2.3
  • SRB2_release_2.2.2
  • SRB2_release_2.2.1
  • SRB2_release_2.2.0
  • SRB2_release_2.1.25
  • SRB2_release_2.1.24
  • SRB2_release_2.1.23
  • SRB2_release_2.1.22
  • SRB2_release_2.1.21
40 results

zlib2ansi

Blame
  • Alam Ed Arias's avatar
    Alam Ed Arias authored and Alam Arias committed
    b93cb1b6
    History
    zlib2ansi 3.80 KiB
    #!/usr/bin/perl
    
    # Transform K&R C function definitions into ANSI equivalent.
    #
    # Author: Paul Marquess
    # Version: 1.0
    # Date: 3 October 2006
    
    # TODO
    #
    # Asumes no function pointer parameters. unless they are typedefed.
    # Assumes no literal strings that look like function definitions
    # Assumes functions start at the beginning of a line
    
    use strict;
    use warnings;
    
    local $/;
    $_ = <>;
    
    my $sp = qr{ \s* (?: /\* .*? \*/ )? \s* }x; # assume no nested comments
    
    my $d1    = qr{ $sp (?: [\w\*\s]+ $sp)* $sp \w+ $sp [\[\]\s]* $sp }x ;
    my $decl  = qr{ $sp (?: \w+ $sp )+ $d1 }xo ;
    my $dList = qr{ $sp $decl (?: $sp , $d1 )* $sp ; $sp }xo ;
    
    
    while (s/^
                (                  # Start $1
                    (              #   Start $2
                        .*?        #     Minimal eat content
                        ( ^ \w [\w\s\*]+ )    #     $3 -- function name
                        \s*        #     optional whitespace
                    )              # $2 - Matched up to before parameter list
    
                    \( \s*         # Literal "(" + optional whitespace
                    ( [^\)]+ )     # $4 - one or more anythings except ")"
                    \s* \)         # optional whitespace surrounding a Literal ")"
    
                    ( (?: $dList )+ ) # $5
    
                    $sp ^ {        # literal "{" at start of line
                )                  # Remember to $1
            //xsom
          )
    {
        my $all = $1 ;
        my $prefix = $2;
        my $param_list = $4 ;
        my $params = $5;
    
        StripComments($params);
        StripComments($param_list);
        $param_list =~ s/^\s+//;
        $param_list =~ s/\s+$//;
    
        my $i = 0 ;
        my %pList = map { $_ => $i++ }
                    split /\s*,\s*/, $param_list;
        my $pMatch = '(\b' . join('|', keys %pList) . '\b)\W*$' ;
    
        my @params = split /\s*;\s*/, $params;
        my @outParams = ();
        foreach my $p (@params)
        {
            if ($p =~ /,/)
            {
                my @bits = split /\s*,\s*/, $p;
                my $first = shift @bits;
                $first =~ s/^\s*//;