194
|
1 #!/usr/bin/perl
|
|
2
|
|
3 # interface.cbc
|
|
4 # typedef struct Worker {
|
|
5 # int id;
|
|
6 # struct Context* contexts;
|
|
7 # enum Code execute;
|
|
8 # enum Code taskSend;
|
|
9 # enum Code taskRecive;
|
|
10 # enum Code shutdown;
|
|
11 # struct Queue* tasks;
|
|
12 # } Worker;
|
|
13
|
|
14 system "rm -rf d";
|
|
15 system "mkdir d";
|
|
16
|
|
17 while (<*.cbc>) {
|
|
18 &getDataGear($_);
|
|
19 }
|
|
20
|
|
21 &generateDataGear();
|
|
22
|
|
23 sub getDataGear {
|
|
24 my ($filename) = @_;
|
|
25 open my $fd,"<",$filename or die("can't open $filename $!");
|
|
26 while (<$fd>) {
|
|
27 if (! $inTypedef) {
|
|
28 if (/^typedef struct (\w+) {/) {
|
|
29 $inTypedef = 1;
|
|
30 $name = $1;
|
|
31 $dataGear{$name} = $_;
|
|
32 }
|
|
33 next;
|
|
34 }
|
|
35 $dataGear{$name} .= $_;
|
|
36 if (/^}/) {
|
|
37 $inTypedef = 0;
|
|
38 }
|
|
39 }
|
|
40 }
|
|
41
|
|
42 sub generateDataGear {
|
|
43 open my $fd,">","d/extern.h" or die("can't open d/extern.h $!");
|
|
44 for my $name ( sort keys %dataGear ) {
|
|
45 print $fd $dataGear{$name},"\n";
|
|
46 }
|
|
47 print $fd "\n";
|
|
48 }
|
|
49
|
|
50 # end
|