view src/parallel_execution/generate_stub.pl @ 194:081607dcf893

create generate_stub.pl
author mir3636
date Fri, 16 Dec 2016 19:40:42 +0900
parents
children bd96dffaa76a
line wrap: on
line source

#!/usr/bin/perl

# interface.cbc
# typedef struct Worker {
#         int id;
#         struct Context* contexts;
#         enum Code execute;
#         enum Code taskSend;
#         enum Code taskRecive;
#         enum Code shutdown;
#         struct Queue* tasks;
#     } Worker;

system "rm -rf d";
system "mkdir d";

while (<*.cbc>) {
    &getDataGear($_);
}

&generateDataGear();

sub getDataGear {
    my ($filename) = @_;
    open my $fd,"<",$filename or die("can't open $filename $!");
    while (<$fd>) {
        if (! $inTypedef) {
            if (/^typedef struct (\w+) {/) {
                $inTypedef = 1;
                $name = $1;
                $dataGear{$name} = $_;
            }
            next;
        }
        $dataGear{$name} .= $_;
        if (/^}/) {
            $inTypedef = 0;
        }
    }
}

sub generateDataGear {
    open my $fd,">","d/extern.h" or die("can't open d/extern.h $!");
    for my $name ( sort keys %dataGear ) {
        print $fd $dataGear{$name},"\n";
    }
    print $fd "\n";
}

# end