annotate src/parallel_execution/generate_stub.pl @ 629:90309637c4c8

Getopt::Std to Getopt::Long
author anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
date Fri, 12 Jun 2020 16:02:01 +0900
parents d02866506b9b
children 0baef27a18f4
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
194
081607dcf893 create generate_stub.pl
mir3636
parents:
diff changeset
1 #!/usr/bin/perl
081607dcf893 create generate_stub.pl
mir3636
parents:
diff changeset
2
250
8a8963ce9858 fix generate_stub
mir3636
parents: 249
diff changeset
3 use strict;
629
90309637c4c8 Getopt::Std to Getopt::Long
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 625
diff changeset
4 use Getopt::Long;
393
99c50356d917 fix generate_stub.pl
mir3636
parents: 391
diff changeset
5 use File::Path qw(make_path);
250
8a8963ce9858 fix generate_stub
mir3636
parents: 249
diff changeset
6
482
5859bed4edff Refactoring spawnTasks method
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 468
diff changeset
7 # interface.h
194
081607dcf893 create generate_stub.pl
mir3636
parents:
diff changeset
8 # typedef struct Worker {
081607dcf893 create generate_stub.pl
mir3636
parents:
diff changeset
9 # int id;
081607dcf893 create generate_stub.pl
mir3636
parents:
diff changeset
10 # struct Context* contexts;
081607dcf893 create generate_stub.pl
mir3636
parents:
diff changeset
11 # enum Code execute;
081607dcf893 create generate_stub.pl
mir3636
parents:
diff changeset
12 # enum Code taskSend;
081607dcf893 create generate_stub.pl
mir3636
parents:
diff changeset
13 # enum Code taskRecive;
081607dcf893 create generate_stub.pl
mir3636
parents:
diff changeset
14 # enum Code shutdown;
081607dcf893 create generate_stub.pl
mir3636
parents:
diff changeset
15 # struct Queue* tasks;
081607dcf893 create generate_stub.pl
mir3636
parents:
diff changeset
16 # } Worker;
081607dcf893 create generate_stub.pl
mir3636
parents:
diff changeset
17
255
79bbe2c63fb0 cmake generate c from cbc
mir3636
parents: 254
diff changeset
18 our($opt_o,$opt_d,$opt_h);
629
90309637c4c8 Getopt::Std to Getopt::Long
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 625
diff changeset
19 GetOptions(
90309637c4c8 Getopt::Std to Getopt::Long
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 625
diff changeset
20 "o=s" => \$opt_o,
90309637c4c8 Getopt::Std to Getopt::Long
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 625
diff changeset
21 "d=s" => \$opt_d,
90309637c4c8 Getopt::Std to Getopt::Long
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 625
diff changeset
22 "h" => \$opt_h,
90309637c4c8 Getopt::Std to Getopt::Long
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 625
diff changeset
23 );
255
79bbe2c63fb0 cmake generate c from cbc
mir3636
parents: 254
diff changeset
24
79bbe2c63fb0 cmake generate c from cbc
mir3636
parents: 254
diff changeset
25 my $dir = ".";
79bbe2c63fb0 cmake generate c from cbc
mir3636
parents: 254
diff changeset
26 if ($opt_d) {
79bbe2c63fb0 cmake generate c from cbc
mir3636
parents: 254
diff changeset
27 $dir = $opt_d;
79bbe2c63fb0 cmake generate c from cbc
mir3636
parents: 254
diff changeset
28 if (! -d $dir) {
393
99c50356d917 fix generate_stub.pl
mir3636
parents: 391
diff changeset
29 make_path $dir;
255
79bbe2c63fb0 cmake generate c from cbc
mir3636
parents: 254
diff changeset
30 }
79bbe2c63fb0 cmake generate c from cbc
mir3636
parents: 254
diff changeset
31 }
254
edb3aff688d0 fix generator CLI
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 253
diff changeset
32
461
6b71cf5b1c22 Change Interface files from cbc to header
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 458
diff changeset
33 for my $fn (@ARGV) {
255
79bbe2c63fb0 cmake generate c from cbc
mir3636
parents: 254
diff changeset
34 next if ($fn !~ /\.cbc$/);
249
afa1e02e4386 fix generate stub
mir3636
parents: 243
diff changeset
35 &getDataGear($fn);
afa1e02e4386 fix generate stub
mir3636
parents: 243
diff changeset
36 &generateDataGear($fn);
194
081607dcf893 create generate_stub.pl
mir3636
parents:
diff changeset
37 }
081607dcf893 create generate_stub.pl
mir3636
parents:
diff changeset
38
250
8a8963ce9858 fix generate_stub
mir3636
parents: 249
diff changeset
39 my %var;
8a8963ce9858 fix generate_stub
mir3636
parents: 249
diff changeset
40 my %code;
8a8963ce9858 fix generate_stub
mir3636
parents: 249
diff changeset
41 my %dataGearVar;
260
6b5444bbea8a generated stub no comiple errors
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 259
diff changeset
42 my %outputVar; # output var initializer
6b5444bbea8a generated stub no comiple errors
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 259
diff changeset
43 my %outputArgs; # continuation's output variables
250
8a8963ce9858 fix generate_stub
mir3636
parents: 249
diff changeset
44 my %dataGear;
8a8963ce9858 fix generate_stub
mir3636
parents: 249
diff changeset
45 my %dataGearName;
384
ee5d2b1685d7 Fix perlscript
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 383
diff changeset
46 my %generic;
ee5d2b1685d7 Fix perlscript
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 383
diff changeset
47 my %dataGearVarType;
396
bba401f93dcd Add handle par goto statement
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 393
diff changeset
48 my %codeGear;
253
ebc13549394c generate stubArgs
mir3636
parents: 252
diff changeset
49 my $implementation;
ebc13549394c generate stubArgs
mir3636
parents: 252
diff changeset
50 my $interface;
250
8a8963ce9858 fix generate_stub
mir3636
parents: 249
diff changeset
51
384
ee5d2b1685d7 Fix perlscript
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 383
diff changeset
52 # interface definision
ee5d2b1685d7 Fix perlscript
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 383
diff changeset
53 #
ee5d2b1685d7 Fix perlscript
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 383
diff changeset
54 # typedef struct Stack<Type, Impl>{
ee5d2b1685d7 Fix perlscript
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 383
diff changeset
55 # Type* stack;
ee5d2b1685d7 Fix perlscript
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 383
diff changeset
56 # Type* data;
ee5d2b1685d7 Fix perlscript
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 383
diff changeset
57 # Type* data1;
ee5d2b1685d7 Fix perlscript
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 383
diff changeset
58 # __code whenEmpty(...);
ee5d2b1685d7 Fix perlscript
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 383
diff changeset
59 # __code clear(Impl* stack,__code next(...));
ee5d2b1685d7 Fix perlscript
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 383
diff changeset
60 # __code push(Impl* stack,Type* data, __code next(...));
ee5d2b1685d7 Fix perlscript
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 383
diff changeset
61 # __code pop(Impl* stack, __code next(Type*, ...));
ee5d2b1685d7 Fix perlscript
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 383
diff changeset
62 # __code pop2(Impl* stack, Type** data, Type** data1, __code next(Type**, Type**, ...));
ee5d2b1685d7 Fix perlscript
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 383
diff changeset
63 # __code isEmpty(Impl* stack, __code next(...), __code whenEmpty(...));
ee5d2b1685d7 Fix perlscript
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 383
diff changeset
64 # __code get(Impl* stack, Type** data, __code next(...));
ee5d2b1685d7 Fix perlscript
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 383
diff changeset
65 # __code get2(Impl* stack,..., __code next(...));
ee5d2b1685d7 Fix perlscript
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 383
diff changeset
66 # __code next(...);
ee5d2b1685d7 Fix perlscript
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 383
diff changeset
67 # } Stack;
ee5d2b1685d7 Fix perlscript
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 383
diff changeset
68 #
ee5d2b1685d7 Fix perlscript
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 383
diff changeset
69 # calling example
ee5d2b1685d7 Fix perlscript
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 383
diff changeset
70 #
ee5d2b1685d7 Fix perlscript
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 383
diff changeset
71 # goto nodeStack->push((union Data*)node, stackTest3);
ee5d2b1685d7 Fix perlscript
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 383
diff changeset
72 #
ee5d2b1685d7 Fix perlscript
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 383
diff changeset
73 # generated meta level code
ee5d2b1685d7 Fix perlscript
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 383
diff changeset
74 #
442
481fce540daf Fix goto implement method of generate_stub
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 424
diff changeset
75 # Gearef(context, Stack)->stack = (union Data*)nodeStack;
384
ee5d2b1685d7 Fix perlscript
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 383
diff changeset
76 # Gearef(context, Stack)->data = (union Data*)node;
ee5d2b1685d7 Fix perlscript
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 383
diff changeset
77 # Gearef(context, Stack)->next = C_stackTest3;
ee5d2b1685d7 Fix perlscript
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 383
diff changeset
78 # goto meta(context, nodeStack->push);
ee5d2b1685d7 Fix perlscript
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 383
diff changeset
79
194
081607dcf893 create generate_stub.pl
mir3636
parents:
diff changeset
80 sub getDataGear {
081607dcf893 create generate_stub.pl
mir3636
parents:
diff changeset
81 my ($filename) = @_;
598
32388e7467bc pull from xv6
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 596
diff changeset
82 my ($codeGearName, $name, $inTypedef,$described_data_gear);
194
081607dcf893 create generate_stub.pl
mir3636
parents:
diff changeset
83 open my $fd,"<",$filename or die("can't open $filename $!");
081607dcf893 create generate_stub.pl
mir3636
parents:
diff changeset
84 while (<$fd>) {
081607dcf893 create generate_stub.pl
mir3636
parents:
diff changeset
85 if (! $inTypedef) {
384
ee5d2b1685d7 Fix perlscript
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 383
diff changeset
86 if (/^typedef struct (\w+)\s*<(.*)>/) {
194
081607dcf893 create generate_stub.pl
mir3636
parents:
diff changeset
87 $inTypedef = 1;
081607dcf893 create generate_stub.pl
mir3636
parents:
diff changeset
88 $name = $1;
081607dcf893 create generate_stub.pl
mir3636
parents:
diff changeset
89 $dataGear{$name} = $_;
259
195518ab62fc fix type gathering pattern match in generate_stub.pl
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 255
diff changeset
90 $var{$name} = {};
195518ab62fc fix type gathering pattern match in generate_stub.pl
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 255
diff changeset
91 $code{$name} = {};
384
ee5d2b1685d7 Fix perlscript
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 383
diff changeset
92 $generic{$name} = \split(/,/,$2);
ee5d2b1685d7 Fix perlscript
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 383
diff changeset
93 } elsif (/^typedef struct (\w+)/) {
ee5d2b1685d7 Fix perlscript
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 383
diff changeset
94 $inTypedef = 1;
ee5d2b1685d7 Fix perlscript
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 383
diff changeset
95 $name = $1;
ee5d2b1685d7 Fix perlscript
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 383
diff changeset
96 $dataGear{$name} = $_;
ee5d2b1685d7 Fix perlscript
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 383
diff changeset
97 $var{$name} = {};
ee5d2b1685d7 Fix perlscript
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 383
diff changeset
98 $code{$name} = {};
ee5d2b1685d7 Fix perlscript
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 383
diff changeset
99 $generic{$name} = [];
269
5170539348ec rename TaskManagerImpl.cbc
mir3636
parents: 268
diff changeset
100 } elsif (/^(\w+)(\*)+ create(\w+)\(/) {
249
afa1e02e4386 fix generate stub
mir3636
parents: 243
diff changeset
101 if (defined $interface) {
461
6b71cf5b1c22 Change Interface files from cbc to header
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 458
diff changeset
102 die "duplicate interface $interface\n";
249
afa1e02e4386 fix generate stub
mir3636
parents: 243
diff changeset
103 }
afa1e02e4386 fix generate stub
mir3636
parents: 243
diff changeset
104 $interface = $1;
269
5170539348ec rename TaskManagerImpl.cbc
mir3636
parents: 268
diff changeset
105 $implementation = $3;
250
8a8963ce9858 fix generate_stub
mir3636
parents: 249
diff changeset
106 if ( -f "$interface.cbc") {
8a8963ce9858 fix generate_stub
mir3636
parents: 249
diff changeset
107 &getDataGear("$interface.cbc");
8a8963ce9858 fix generate_stub
mir3636
parents: 249
diff changeset
108 }
396
bba401f93dcd Add handle par goto statement
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 393
diff changeset
109 } elsif(/^(.*)par goto (\w+)\((.*)\)/) {
bba401f93dcd Add handle par goto statement
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 393
diff changeset
110 my $codeGearName = $2;
bba401f93dcd Add handle par goto statement
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 393
diff changeset
111 if ($filename =~ /^(.*)\/(.*)/) {
bba401f93dcd Add handle par goto statement
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 393
diff changeset
112 $codeGearName = "$1/$codeGearName";
bba401f93dcd Add handle par goto statement
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 393
diff changeset
113 }
bba401f93dcd Add handle par goto statement
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 393
diff changeset
114 if ( -f "$codeGearName.cbc") {
bba401f93dcd Add handle par goto statement
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 393
diff changeset
115 &getCodeGear("$codeGearName.cbc");
bba401f93dcd Add handle par goto statement
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 393
diff changeset
116 }
595
00429c9e0a45 bump PerlSciripts
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 548
diff changeset
117 } elsif(/^#interface "(.*)"/) {
468
ac244346c85d Change used interface syntax from #include to #interface
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 467
diff changeset
118 # use interface
461
6b71cf5b1c22 Change Interface files from cbc to header
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 458
diff changeset
119 my $interfaceHeader = $1;
6b71cf5b1c22 Change Interface files from cbc to header
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 458
diff changeset
120 next if ($interfaceHeader =~ /context.h/);
6b71cf5b1c22 Change Interface files from cbc to header
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 458
diff changeset
121 if (-f $interfaceHeader) {
6b71cf5b1c22 Change Interface files from cbc to header
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 458
diff changeset
122 &getDataGear("$interfaceHeader");
6b71cf5b1c22 Change Interface files from cbc to header
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 458
diff changeset
123 &getCodeGear("$interfaceHeader");
617
fca8f83f1611 automatically detect the path of #interface
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 598
diff changeset
124 } else {
fca8f83f1611 automatically detect the path of #interface
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 598
diff changeset
125 if ($filename =~ /([\w\/]+)\/(.+)$/) {
fca8f83f1611 automatically detect the path of #interface
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 598
diff changeset
126 $interfaceHeader = "$1/$interfaceHeader";
fca8f83f1611 automatically detect the path of #interface
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 598
diff changeset
127 if (-f $interfaceHeader) {
fca8f83f1611 automatically detect the path of #interface
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 598
diff changeset
128 &getDataGear("$interfaceHeader");
fca8f83f1611 automatically detect the path of #interface
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 598
diff changeset
129 &getCodeGear("$interfaceHeader");
fca8f83f1611 automatically detect the path of #interface
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 598
diff changeset
130 }
fca8f83f1611 automatically detect the path of #interface
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 598
diff changeset
131 }
461
6b71cf5b1c22 Change Interface files from cbc to header
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 458
diff changeset
132 }
527
929aa06a12f9 Generate par goto code gear stub
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 521
diff changeset
133 } elsif (/^\_\_code (\w+)\((.*)\)(.*)/) {
929aa06a12f9 Generate par goto code gear stub
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 521
diff changeset
134 my $codeGearName = $1;
929aa06a12f9 Generate par goto code gear stub
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 521
diff changeset
135 if ($filename =~ /^(.*)\/(.*)/) {
929aa06a12f9 Generate par goto code gear stub
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 521
diff changeset
136 $codeGearName = "$1/$codeGearName";
929aa06a12f9 Generate par goto code gear stub
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 521
diff changeset
137 }
929aa06a12f9 Generate par goto code gear stub
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 521
diff changeset
138 if ( -f "$codeGearName.cbc") {
929aa06a12f9 Generate par goto code gear stub
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 521
diff changeset
139 &getCodeGear("$codeGearName.cbc");
929aa06a12f9 Generate par goto code gear stub
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 521
diff changeset
140 }
226
68c03e7057d9 get arg
mir3636
parents: 201
diff changeset
141 }
194
081607dcf893 create generate_stub.pl
mir3636
parents:
diff changeset
142 next;
081607dcf893 create generate_stub.pl
mir3636
parents:
diff changeset
143 }
249
afa1e02e4386 fix generate stub
mir3636
parents: 243
diff changeset
144 # gather type name and type
194
081607dcf893 create generate_stub.pl
mir3636
parents:
diff changeset
145 $dataGear{$name} .= $_;
385
c1512f358c37 add getCodeGear to generate_stub.pl
mir3636
parents: 384
diff changeset
146 if (/^\s*(.*)\s+(\w+);$/ ) {
280
2c2e4e597eb0 generate no compile errors
mir3636
parents: 278
diff changeset
147 my $ttype = $1;
2c2e4e597eb0 generate no compile errors
mir3636
parents: 278
diff changeset
148 my $tname = $2;
625
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 617
diff changeset
149 if ($ttype =~ /^(union|struct|const|enu,)?\s*(\w+)/) {
598
32388e7467bc pull from xv6
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 596
diff changeset
150 if ($1 ne 'const') {
32388e7467bc pull from xv6
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 596
diff changeset
151 $ttype = $2;
32388e7467bc pull from xv6
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 596
diff changeset
152 } else {
625
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 617
diff changeset
153 my $vname = $2;
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 617
diff changeset
154 my $ttype = $1;
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 617
diff changeset
155 if ($ttype =~ /(const|enum)/) {
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 617
diff changeset
156 $ttype = "$1 $vname";
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 617
diff changeset
157 }
598
32388e7467bc pull from xv6
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 596
diff changeset
158 }
280
2c2e4e597eb0 generate no compile errors
mir3636
parents: 278
diff changeset
159 }
598
32388e7467bc pull from xv6
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 596
diff changeset
160 $described_data_gear = 1;
280
2c2e4e597eb0 generate no compile errors
mir3636
parents: 278
diff changeset
161 $var{$name}->{$tname} = $ttype;
250
8a8963ce9858 fix generate_stub
mir3636
parents: 249
diff changeset
162 }
595
00429c9e0a45 bump PerlSciripts
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 548
diff changeset
163 if (/__code (\w+)/) {
598
32388e7467bc pull from xv6
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 596
diff changeset
164 next if $described_data_gear;
595
00429c9e0a45 bump PerlSciripts
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 548
diff changeset
165 my $args = $';
625
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 617
diff changeset
166 while ($args =~ /\s*(struct|union|const|enum)?\s*([\w\[\]_]+)\*?\s*(\w+),?/g) {
595
00429c9e0a45 bump PerlSciripts
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 548
diff changeset
167 #$args eq (Impl* vm, pde_t* pgdir, char* init, uint sz, __code next(...));
00429c9e0a45 bump PerlSciripts
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 548
diff changeset
168 my $const_type = $1;
00429c9e0a45 bump PerlSciripts
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 548
diff changeset
169 my $ttype = $2;
00429c9e0a45 bump PerlSciripts
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 548
diff changeset
170 my $tname = $3;
00429c9e0a45 bump PerlSciripts
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 548
diff changeset
171
598
32388e7467bc pull from xv6
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 596
diff changeset
172 $ttype =~ s/(Impl|Isa|Type)/Data/;
625
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 617
diff changeset
173 if ($const_type =~ /(const|enum)/) {
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 617
diff changeset
174 $ttype = "$1 $ttype";
595
00429c9e0a45 bump PerlSciripts
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 548
diff changeset
175 }
00429c9e0a45 bump PerlSciripts
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 548
diff changeset
176 $var{$name}->{$tname} = $ttype;
00429c9e0a45 bump PerlSciripts
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 548
diff changeset
177 }
00429c9e0a45 bump PerlSciripts
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 548
diff changeset
178 }
194
081607dcf893 create generate_stub.pl
mir3636
parents:
diff changeset
179 if (/^}/) {
081607dcf893 create generate_stub.pl
mir3636
parents:
diff changeset
180 $inTypedef = 0;
081607dcf893 create generate_stub.pl
mir3636
parents:
diff changeset
181 }
081607dcf893 create generate_stub.pl
mir3636
parents:
diff changeset
182 }
461
6b71cf5b1c22 Change Interface files from cbc to header
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 458
diff changeset
183
194
081607dcf893 create generate_stub.pl
mir3636
parents:
diff changeset
184 }
081607dcf893 create generate_stub.pl
mir3636
parents:
diff changeset
185
385
c1512f358c37 add getCodeGear to generate_stub.pl
mir3636
parents: 384
diff changeset
186 sub getCodeGear {
c1512f358c37 add getCodeGear to generate_stub.pl
mir3636
parents: 384
diff changeset
187 my ($filename) = @_;
c1512f358c37 add getCodeGear to generate_stub.pl
mir3636
parents: 384
diff changeset
188 open my $fd,"<",$filename or die("can't open $filename $!");
c1512f358c37 add getCodeGear to generate_stub.pl
mir3636
parents: 384
diff changeset
189 my ($name,$impln);
c1512f358c37 add getCodeGear to generate_stub.pl
mir3636
parents: 384
diff changeset
190 while (<$fd>) {
c1512f358c37 add getCodeGear to generate_stub.pl
mir3636
parents: 384
diff changeset
191 if (/^(\w+)(\*)+ create(\w+)\(/) {
c1512f358c37 add getCodeGear to generate_stub.pl
mir3636
parents: 384
diff changeset
192 $name = $1;
c1512f358c37 add getCodeGear to generate_stub.pl
mir3636
parents: 384
diff changeset
193 $impln = $3;
461
6b71cf5b1c22 Change Interface files from cbc to header
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 458
diff changeset
194 } elsif(/^typedef struct (.*)<.*>\s*{/) {
6b71cf5b1c22 Change Interface files from cbc to header
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 458
diff changeset
195 $name = $1;
385
c1512f358c37 add getCodeGear to generate_stub.pl
mir3636
parents: 384
diff changeset
196 }
c1512f358c37 add getCodeGear to generate_stub.pl
mir3636
parents: 384
diff changeset
197 if (defined $name) {
461
6b71cf5b1c22 Change Interface files from cbc to header
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 458
diff changeset
198 if (/^\s*\_\_code (\w+)\((.*)\);/) {
385
c1512f358c37 add getCodeGear to generate_stub.pl
mir3636
parents: 384
diff changeset
199 my $args = $2;
c1512f358c37 add getCodeGear to generate_stub.pl
mir3636
parents: 384
diff changeset
200 my $method = $1;
c1512f358c37 add getCodeGear to generate_stub.pl
mir3636
parents: 384
diff changeset
201 $code{$name}->{$method} = [];
c1512f358c37 add getCodeGear to generate_stub.pl
mir3636
parents: 384
diff changeset
202 while($args) {
461
6b71cf5b1c22 Change Interface files from cbc to header
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 458
diff changeset
203 # replace comma
6b71cf5b1c22 Change Interface files from cbc to header
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 458
diff changeset
204 $args =~ s/(^\s*,\s*)//;
385
c1512f358c37 add getCodeGear to generate_stub.pl
mir3636
parents: 384
diff changeset
205 # continuation case
c1512f358c37 add getCodeGear to generate_stub.pl
mir3636
parents: 384
diff changeset
206 if ($args =~ s/^(\s)*\_\_code\s+(\w+)\(([^)]*)\)//) {
c1512f358c37 add getCodeGear to generate_stub.pl
mir3636
parents: 384
diff changeset
207 my $next = $2;
c1512f358c37 add getCodeGear to generate_stub.pl
mir3636
parents: 384
diff changeset
208 my @args = split(/,/,$3);
461
6b71cf5b1c22 Change Interface files from cbc to header
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 458
diff changeset
209 push(@{$code{$name}->{$method}},"\_\_code $next");
598
32388e7467bc pull from xv6
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 596
diff changeset
210 } elsif ($args =~ s/^(struct|union|const)?\s*(\w+)(\**)\s+(\w+)//) {
385
c1512f358c37 add getCodeGear to generate_stub.pl
mir3636
parents: 384
diff changeset
211 my $structType = $1;
c1512f358c37 add getCodeGear to generate_stub.pl
mir3636
parents: 384
diff changeset
212 my $typeName = $2;
466
831b7f6fd687 Fix warning pointer type
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 464
diff changeset
213 my $ptrType = $3;
385
c1512f358c37 add getCodeGear to generate_stub.pl
mir3636
parents: 384
diff changeset
214 my $varName = $4;
c1512f358c37 add getCodeGear to generate_stub.pl
mir3636
parents: 384
diff changeset
215 my $typeField = lcfirst($typeName);
598
32388e7467bc pull from xv6
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 596
diff changeset
216 if ($structType =~ /const/) {
32388e7467bc pull from xv6
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 596
diff changeset
217 $typeName = "$structType $typeName";
32388e7467bc pull from xv6
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 596
diff changeset
218 }
466
831b7f6fd687 Fix warning pointer type
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 464
diff changeset
219 push(@{$code{$name}->{$method}},"$typeName$ptrType $varName");
385
c1512f358c37 add getCodeGear to generate_stub.pl
mir3636
parents: 384
diff changeset
220 } elsif ($args =~ s/(.*,)//) {
c1512f358c37 add getCodeGear to generate_stub.pl
mir3636
parents: 384
diff changeset
221 } else {
c1512f358c37 add getCodeGear to generate_stub.pl
mir3636
parents: 384
diff changeset
222 last;
c1512f358c37 add getCodeGear to generate_stub.pl
mir3636
parents: 384
diff changeset
223 }
c1512f358c37 add getCodeGear to generate_stub.pl
mir3636
parents: 384
diff changeset
224 }
c1512f358c37 add getCodeGear to generate_stub.pl
mir3636
parents: 384
diff changeset
225 }
396
bba401f93dcd Add handle par goto statement
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 393
diff changeset
226 } elsif (/^\_\_code (\w+)\((.*)\)(.*)/) {
bba401f93dcd Add handle par goto statement
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 393
diff changeset
227 my $codeGearName = $1;
bba401f93dcd Add handle par goto statement
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 393
diff changeset
228 my $args = $2;
bba401f93dcd Add handle par goto statement
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 393
diff changeset
229 my $inputCount = 0;
bba401f93dcd Add handle par goto statement
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 393
diff changeset
230 my $outputCount = 0;
bba401f93dcd Add handle par goto statement
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 393
diff changeset
231 my $inputIncFlag = 1;
bba401f93dcd Add handle par goto statement
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 393
diff changeset
232 while($args) {
bba401f93dcd Add handle par goto statement
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 393
diff changeset
233 if ($args =~ s/(^\s*,\s*)//) {
bba401f93dcd Add handle par goto statement
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 393
diff changeset
234 }
404
c5cd9888bf2a Fix bitonicSort
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 403
diff changeset
235 if ($args =~ s/^(\s)*\_\_code\s+(\w+)\((.*?)\)//) {
527
929aa06a12f9 Generate par goto code gear stub
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 521
diff changeset
236 $codeGear{$codeGearName}->{"code"}->{$2} = "\_\_code";
396
bba401f93dcd Add handle par goto statement
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 393
diff changeset
237 $inputIncFlag = 0;
527
929aa06a12f9 Generate par goto code gear stub
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 521
diff changeset
238 my @outputs = split(/,/,$3);
929aa06a12f9 Generate par goto code gear stub
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 521
diff changeset
239 for my $output (@outputs) {
598
32388e7467bc pull from xv6
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 596
diff changeset
240 if ($output =~ /\s*(struct|union|const)?\s*(\w+)(\*)?+\s(\w+)/) {
32388e7467bc pull from xv6
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 596
diff changeset
241 my $structType = $1;
527
929aa06a12f9 Generate par goto code gear stub
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 521
diff changeset
242 my $type = $2;
929aa06a12f9 Generate par goto code gear stub
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 521
diff changeset
243 my $varName = $4;
598
32388e7467bc pull from xv6
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 596
diff changeset
244 if ($structType =~ /const/) {
32388e7467bc pull from xv6
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 596
diff changeset
245 $type = "$structType $type";
32388e7467bc pull from xv6
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 596
diff changeset
246 }
527
929aa06a12f9 Generate par goto code gear stub
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 521
diff changeset
247 $codeGear{$codeGearName}->{"var"}->{$varName} = "$type $outputCount";
929aa06a12f9 Generate par goto code gear stub
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 521
diff changeset
248 $outputCount++;
929aa06a12f9 Generate par goto code gear stub
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 521
diff changeset
249 }
396
bba401f93dcd Add handle par goto statement
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 393
diff changeset
250 }
598
32388e7467bc pull from xv6
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 596
diff changeset
251 } elsif ($args =~ s/^(struct|union|const)?\s*(\w+)(\*)?+\s(\w+)// && $inputIncFlag) {
32388e7467bc pull from xv6
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 596
diff changeset
252 my $structType = $1;
527
929aa06a12f9 Generate par goto code gear stub
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 521
diff changeset
253 my $type = $2;
929aa06a12f9 Generate par goto code gear stub
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 521
diff changeset
254 my $varName = $4;
598
32388e7467bc pull from xv6
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 596
diff changeset
255 if ($structType =~ /const/) {
32388e7467bc pull from xv6
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 596
diff changeset
256 $type = "$structType $type";
32388e7467bc pull from xv6
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 596
diff changeset
257 }
527
929aa06a12f9 Generate par goto code gear stub
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 521
diff changeset
258 $codeGear{$codeGearName}->{"var"}->{$varName} = "$type $inputCount";
929aa06a12f9 Generate par goto code gear stub
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 521
diff changeset
259 $inputCount++;
396
bba401f93dcd Add handle par goto statement
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 393
diff changeset
260 } elsif ($args =~ s/(.*,)//) {
bba401f93dcd Add handle par goto statement
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 393
diff changeset
261 } else {
bba401f93dcd Add handle par goto statement
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 393
diff changeset
262 last;
bba401f93dcd Add handle par goto statement
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 393
diff changeset
263 }
bba401f93dcd Add handle par goto statement
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 393
diff changeset
264 }
bba401f93dcd Add handle par goto statement
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 393
diff changeset
265 $codeGear{$codeGearName}->{"input"} = $inputCount;
bba401f93dcd Add handle par goto statement
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 393
diff changeset
266 $codeGear{$codeGearName}->{"output"} = $outputCount;
385
c1512f358c37 add getCodeGear to generate_stub.pl
mir3636
parents: 384
diff changeset
267 }
c1512f358c37 add getCodeGear to generate_stub.pl
mir3636
parents: 384
diff changeset
268 }
c1512f358c37 add getCodeGear to generate_stub.pl
mir3636
parents: 384
diff changeset
269 }
c1512f358c37 add getCodeGear to generate_stub.pl
mir3636
parents: 384
diff changeset
270
250
8a8963ce9858 fix generate_stub
mir3636
parents: 249
diff changeset
271 sub generateStub {
251
0ab52d6e2fd9 fix sub generateStub
mir3636
parents: 250
diff changeset
272 my($fd,$prevCodeGearName,$dataGearName) = @_;
274
d14eb393023d fix generate_stub
mir3636
parents: 269
diff changeset
273 print $fd "__code ", $prevCodeGearName ,"_stub(struct Context* context) {\n";
251
0ab52d6e2fd9 fix sub generateStub
mir3636
parents: 250
diff changeset
274 print $fd $dataGearName;
250
8a8963ce9858 fix generate_stub
mir3636
parents: 249
diff changeset
275 print $fd "\n} \n\n";
251
0ab52d6e2fd9 fix sub generateStub
mir3636
parents: 250
diff changeset
276 return 1;
250
8a8963ce9858 fix generate_stub
mir3636
parents: 249
diff changeset
277 }
8a8963ce9858 fix generate_stub
mir3636
parents: 249
diff changeset
278
253
ebc13549394c generate stubArgs
mir3636
parents: 252
diff changeset
279 sub generateStubArgs {
466
831b7f6fd687 Fix warning pointer type
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 464
diff changeset
280 my($codeGearName, $varName, $typeName, $ptrType, $typeField, $interface,$output) = @_;
461
6b71cf5b1c22 Change Interface files from cbc to header
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 458
diff changeset
281 my $varname1 = $output?"O_$varName":$varName;
260
6b5444bbea8a generated stub no comiple errors
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 259
diff changeset
282 for my $n ( @{$dataGearVar{$codeGearName}} ) {
6b5444bbea8a generated stub no comiple errors
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 259
diff changeset
283 # we already have it
6b5444bbea8a generated stub no comiple errors
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 259
diff changeset
284 return 0 if ( $n eq $varname1);
6b5444bbea8a generated stub no comiple errors
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 259
diff changeset
285 }
6b5444bbea8a generated stub no comiple errors
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 259
diff changeset
286 push @{$dataGearVar{$codeGearName}}, $varname1;
384
ee5d2b1685d7 Fix perlscript
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 383
diff changeset
287 push @{$dataGearVarType{$codeGearName}}, $typeName;
260
6b5444bbea8a generated stub no comiple errors
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 259
diff changeset
288 if ($typeName eq $implementation) {
6b5444bbea8a generated stub no comiple errors
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 259
diff changeset
289 # get implementation
258
4fe19a06d666 generate next args
mir3636
parents: 255
diff changeset
290 $dataGearName{$codeGearName} .= "\t$typeName* $varName = ($typeName*)GearImpl(context, $interface, $varName);\n";
253
ebc13549394c generate stubArgs
mir3636
parents: 252
diff changeset
291 } else {
527
929aa06a12f9 Generate par goto code gear stub
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 521
diff changeset
292 # interface var
259
195518ab62fc fix type gathering pattern match in generate_stub.pl
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 255
diff changeset
293 for my $ivar (keys %{$var{$interface}}) {
461
6b71cf5b1c22 Change Interface files from cbc to header
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 458
diff changeset
294 # input data gear field
253
ebc13549394c generate stubArgs
mir3636
parents: 252
diff changeset
295 if ($varName eq $ivar) {
280
2c2e4e597eb0 generate no compile errors
mir3636
parents: 278
diff changeset
296 if ($typeName eq $var{$interface}->{$ivar}) {
2c2e4e597eb0 generate no compile errors
mir3636
parents: 278
diff changeset
297 if ($output) {
466
831b7f6fd687 Fix warning pointer type
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 464
diff changeset
298 $dataGearName{$codeGearName} .= "\t$typeName$ptrType* O_$varName = &Gearef(context, $interface)->$varName;\n";
598
32388e7467bc pull from xv6
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 596
diff changeset
299 $outputVar{$codeGearName} .= "\t$typeName$ptrType $varName __attribute__((unused)) = *O_$varName;\n";
280
2c2e4e597eb0 generate no compile errors
mir3636
parents: 278
diff changeset
300 return 1;
2c2e4e597eb0 generate no compile errors
mir3636
parents: 278
diff changeset
301 }
466
831b7f6fd687 Fix warning pointer type
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 464
diff changeset
302 $dataGearName{$codeGearName} .= "\t$typeName$ptrType $varName = Gearef(context, $interface)->$varName;\n";
260
6b5444bbea8a generated stub no comiple errors
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 259
diff changeset
303 return 1;
6b5444bbea8a generated stub no comiple errors
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 259
diff changeset
304 }
253
ebc13549394c generate stubArgs
mir3636
parents: 252
diff changeset
305 }
ebc13549394c generate stubArgs
mir3636
parents: 252
diff changeset
306 }
598
32388e7467bc pull from xv6
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 596
diff changeset
307
527
929aa06a12f9 Generate par goto code gear stub
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 521
diff changeset
308 # interface continuation
259
195518ab62fc fix type gathering pattern match in generate_stub.pl
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 255
diff changeset
309 for my $cName (keys %{$code{$interface}}) {
195518ab62fc fix type gathering pattern match in generate_stub.pl
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 255
diff changeset
310 if ($varName eq $cName) {
260
6b5444bbea8a generated stub no comiple errors
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 259
diff changeset
311 # continuation field
259
195518ab62fc fix type gathering pattern match in generate_stub.pl
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 255
diff changeset
312 $dataGearName{$codeGearName} .= "\tenum Code $varName = Gearef(context, $interface)->$varName;\n";
260
6b5444bbea8a generated stub no comiple errors
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 259
diff changeset
313 return 1;
253
ebc13549394c generate stubArgs
mir3636
parents: 252
diff changeset
314 }
ebc13549394c generate stubArgs
mir3636
parents: 252
diff changeset
315 }
527
929aa06a12f9 Generate par goto code gear stub
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 521
diff changeset
316 # par goto var
929aa06a12f9 Generate par goto code gear stub
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 521
diff changeset
317 for my $var (keys %{$codeGear{$codeGearName}->{"var"}}) {
929aa06a12f9 Generate par goto code gear stub
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 521
diff changeset
318 # input data gear field
929aa06a12f9 Generate par goto code gear stub
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 521
diff changeset
319 if ($varName eq $var) {
929aa06a12f9 Generate par goto code gear stub
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 521
diff changeset
320 my ($type, $count) = split(/\s/, $codeGear{$codeGearName}->{"var"}->{$var});
929aa06a12f9 Generate par goto code gear stub
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 521
diff changeset
321 if ($typeName eq $type) {
929aa06a12f9 Generate par goto code gear stub
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 521
diff changeset
322 if ($output) {
929aa06a12f9 Generate par goto code gear stub
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 521
diff changeset
323 $dataGearName{$codeGearName} .= "\t$typeName$ptrType* O_$varName = ($typeName $ptrType*)&context->data[context->odg + $count];\n";
929aa06a12f9 Generate par goto code gear stub
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 521
diff changeset
324 $outputVar{$codeGearName} .= "\t$typeName$ptrType $varName = *O_$varName;\n";
929aa06a12f9 Generate par goto code gear stub
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 521
diff changeset
325 return 1;
929aa06a12f9 Generate par goto code gear stub
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 521
diff changeset
326 }
929aa06a12f9 Generate par goto code gear stub
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 521
diff changeset
327 $dataGearName{$codeGearName} .= "\t$typeName$ptrType $varName = &context->data[context->idg + $count]->$typeName;\n";
929aa06a12f9 Generate par goto code gear stub
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 521
diff changeset
328 return 1;
929aa06a12f9 Generate par goto code gear stub
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 521
diff changeset
329 }
929aa06a12f9 Generate par goto code gear stub
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 521
diff changeset
330 }
929aa06a12f9 Generate par goto code gear stub
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 521
diff changeset
331 }
929aa06a12f9 Generate par goto code gear stub
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 521
diff changeset
332
929aa06a12f9 Generate par goto code gear stub
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 521
diff changeset
333 # par goto continuation
929aa06a12f9 Generate par goto code gear stub
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 521
diff changeset
334 for my $cName (keys %{$codeGear{$codeGearName}->{"code"}}) {
929aa06a12f9 Generate par goto code gear stub
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 521
diff changeset
335 if ($varName eq $cName) {
929aa06a12f9 Generate par goto code gear stub
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 521
diff changeset
336 # continuation field
929aa06a12f9 Generate par goto code gear stub
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 521
diff changeset
337 $dataGearName{$codeGearName} .= "\tenum Code $varName = context->next;\n";
929aa06a12f9 Generate par goto code gear stub
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 521
diff changeset
338 return 1;
929aa06a12f9 Generate par goto code gear stub
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 521
diff changeset
339 }
929aa06a12f9 Generate par goto code gear stub
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 521
diff changeset
340 }
929aa06a12f9 Generate par goto code gear stub
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 521
diff changeset
341
929aa06a12f9 Generate par goto code gear stub
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 521
diff changeset
342 # par goto continuation
389
d9a7620a1106 handle continuation in stub
masataka
parents: 388
diff changeset
343 # global or local variable case
d9a7620a1106 handle continuation in stub
masataka
parents: 388
diff changeset
344 if ($typeName eq "Code") {
466
831b7f6fd687 Fix warning pointer type
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 464
diff changeset
345 $dataGearName{$codeGearName} .= "\tenum $typeName$ptrType $varName = Gearef(context, $interface)->$varName;\n";
389
d9a7620a1106 handle continuation in stub
masataka
parents: 388
diff changeset
346 return 1;
d9a7620a1106 handle continuation in stub
masataka
parents: 388
diff changeset
347 }
466
831b7f6fd687 Fix warning pointer type
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 464
diff changeset
348 $dataGearName{$codeGearName} .= "\t$typeName$ptrType $varName = Gearef(context, $typeName);\n";
260
6b5444bbea8a generated stub no comiple errors
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 259
diff changeset
349 return 1;
253
ebc13549394c generate stubArgs
mir3636
parents: 252
diff changeset
350 }
ebc13549394c generate stubArgs
mir3636
parents: 252
diff changeset
351 }
ebc13549394c generate stubArgs
mir3636
parents: 252
diff changeset
352
194
081607dcf893 create generate_stub.pl
mir3636
parents:
diff changeset
353 sub generateDataGear {
249
afa1e02e4386 fix generate stub
mir3636
parents: 243
diff changeset
354 my ($filename) = @_;
afa1e02e4386 fix generate stub
mir3636
parents: 243
diff changeset
355 open my $in,"<",$filename or die("can't open $filename $!");
254
edb3aff688d0 fix generator CLI
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 253
diff changeset
356
edb3aff688d0 fix generator CLI
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 253
diff changeset
357 my $fn;
edb3aff688d0 fix generator CLI
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 253
diff changeset
358 if ($opt_o) {
396
bba401f93dcd Add handle par goto statement
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 393
diff changeset
359 $fn = $opt_o;
254
edb3aff688d0 fix generator CLI
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 253
diff changeset
360 } else {
edb3aff688d0 fix generator CLI
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 253
diff changeset
361 my $fn1 = $filename;
edb3aff688d0 fix generator CLI
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 253
diff changeset
362 $fn1 =~ s/\.cbc/.c/;
edb3aff688d0 fix generator CLI
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 253
diff changeset
363 my $i = 1;
255
79bbe2c63fb0 cmake generate c from cbc
mir3636
parents: 254
diff changeset
364 $fn = "$dir/$fn1";
254
edb3aff688d0 fix generator CLI
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 253
diff changeset
365 while ( -f $fn) {
255
79bbe2c63fb0 cmake generate c from cbc
mir3636
parents: 254
diff changeset
366 $fn = "$dir/$fn1.$i";
254
edb3aff688d0 fix generator CLI
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 253
diff changeset
367 $i++;
edb3aff688d0 fix generator CLI
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 253
diff changeset
368 }
250
8a8963ce9858 fix generate_stub
mir3636
parents: 249
diff changeset
369 }
259
195518ab62fc fix type gathering pattern match in generate_stub.pl
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 255
diff changeset
370 if ( $fn =~ m=(.*)/[^/]+$= ) {
195518ab62fc fix type gathering pattern match in generate_stub.pl
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 255
diff changeset
371 if (! -d $1) {
393
99c50356d917 fix generate_stub.pl
mir3636
parents: 391
diff changeset
372 make_path $1;
259
195518ab62fc fix type gathering pattern match in generate_stub.pl
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 255
diff changeset
373 }
195518ab62fc fix type gathering pattern match in generate_stub.pl
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 255
diff changeset
374 }
249
afa1e02e4386 fix generate stub
mir3636
parents: 243
diff changeset
375 open my $fd,">",$fn or die("can't write $fn $!");
254
edb3aff688d0 fix generator CLI
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 253
diff changeset
376
249
afa1e02e4386 fix generate stub
mir3636
parents: 243
diff changeset
377 my $prevCodeGearName;
250
8a8963ce9858 fix generate_stub
mir3636
parents: 249
diff changeset
378 my $inTypedef = 0;
278
23767f714f4a fix generate_stub
mir3636
parents: 274
diff changeset
379 my $inStub = 0;
546
d8e87b3b2be0 fix goto parGotoMeta
mir3636
parents: 529
diff changeset
380 my $hasParGoto = 0;
418
a74bec89c198 generate main
mir3636
parents: 415
diff changeset
381 my $inMain = 0 ;
598
32388e7467bc pull from xv6
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 596
diff changeset
382 my $inCode = 0 ;
250
8a8963ce9858 fix generate_stub
mir3636
parents: 249
diff changeset
383 my %stub;
251
0ab52d6e2fd9 fix sub generateStub
mir3636
parents: 250
diff changeset
384 my $codeGearName;
444
0c024ea61601 Using cas interface but occurred warning
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 442
diff changeset
385 my %localVarType;
598
32388e7467bc pull from xv6
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 596
diff changeset
386 my %localCode;
254
edb3aff688d0 fix generator CLI
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 253
diff changeset
387
249
afa1e02e4386 fix generate stub
mir3636
parents: 243
diff changeset
388 while (<$in>) {
418
a74bec89c198 generate main
mir3636
parents: 415
diff changeset
389 if (! $inTypedef && ! $inStub && ! $inMain) {
454
77de0283ac92 Debug RedBlackTree.cbc.
ryokka
parents: 447
diff changeset
390 if (/^typedef struct (\w+) \{/) {
249
afa1e02e4386 fix generate stub
mir3636
parents: 243
diff changeset
391 $inTypedef = 1;
454
77de0283ac92 Debug RedBlackTree.cbc.
ryokka
parents: 447
diff changeset
392 } elsif (/^int main\((.*)\) \{/) {
418
a74bec89c198 generate main
mir3636
parents: 415
diff changeset
393 $inMain = 1;
468
ac244346c85d Change used interface syntax from #include to #interface
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 467
diff changeset
394 } elsif(/^#interface "(.*)"/) {
462
8d7e5d48cad3 Running CPU examples
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 461
diff changeset
395 my $interfaceHeader = $1;
468
ac244346c85d Change used interface syntax from #include to #interface
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 467
diff changeset
396 # #interface not write
462
8d7e5d48cad3 Running CPU examples
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 461
diff changeset
397 next unless ($interfaceHeader =~ /context.h/);
598
32388e7467bc pull from xv6
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 596
diff changeset
398 } elsif (/^\s\s*_\_code (\w+)\((.*)\)(.*)/) {
32388e7467bc pull from xv6
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 596
diff changeset
399 $localCode{$1} = 1;
32388e7467bc pull from xv6
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 596
diff changeset
400 } elsif (/^\s\s*_\_code *\(\s*\*\s*(\w+)\)\((.*)\)(.*)/) {
32388e7467bc pull from xv6
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 596
diff changeset
401 $localCode{$1} = 1;
253
ebc13549394c generate stubArgs
mir3636
parents: 252
diff changeset
402 } elsif (/^\_\_code (\w+)\((.*)\)(.*)/) {
598
32388e7467bc pull from xv6
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 596
diff changeset
403 $inCode = 1;
32388e7467bc pull from xv6
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 596
diff changeset
404 %localCode = {};
444
0c024ea61601 Using cas interface but occurred warning
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 442
diff changeset
405 %localVarType = {};
251
0ab52d6e2fd9 fix sub generateStub
mir3636
parents: 250
diff changeset
406 $codeGearName = $1;
253
ebc13549394c generate stubArgs
mir3636
parents: 252
diff changeset
407 my $args = $2;
ebc13549394c generate stubArgs
mir3636
parents: 252
diff changeset
408 my $tail = $3;
250
8a8963ce9858 fix generate_stub
mir3636
parents: 249
diff changeset
409 if ($codeGearName =~ /_stub$/) {
262
2c56a9536c0d add comments
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 261
diff changeset
410 # don't touch already existing stub
278
23767f714f4a fix generate_stub
mir3636
parents: 274
diff changeset
411 $inStub = 1;
250
8a8963ce9858 fix generate_stub
mir3636
parents: 249
diff changeset
412 $stub{$codeGearName} = 1;
8a8963ce9858 fix generate_stub
mir3636
parents: 249
diff changeset
413 print $fd $_;
8a8963ce9858 fix generate_stub
mir3636
parents: 249
diff changeset
414 next;
8a8963ce9858 fix generate_stub
mir3636
parents: 249
diff changeset
415 }
249
afa1e02e4386 fix generate stub
mir3636
parents: 243
diff changeset
416 if (defined $prevCodeGearName) {
262
2c56a9536c0d add comments
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 261
diff changeset
417 # stub is generated just before next CodeGear
250
8a8963ce9858 fix generate_stub
mir3636
parents: 249
diff changeset
418 if (defined $stub{$prevCodeGearName."_stub"}) {
8a8963ce9858 fix generate_stub
mir3636
parents: 249
diff changeset
419 undef $prevCodeGearName;
278
23767f714f4a fix generate_stub
mir3636
parents: 274
diff changeset
420 } else {
23767f714f4a fix generate_stub
mir3636
parents: 274
diff changeset
421 &generateStub($fd,$prevCodeGearName,$dataGearName{$prevCodeGearName});
23767f714f4a fix generate_stub
mir3636
parents: 274
diff changeset
422 $stub{$prevCodeGearName."_stub"} = 1;
250
8a8963ce9858 fix generate_stub
mir3636
parents: 249
diff changeset
423 }
249
afa1e02e4386 fix generate stub
mir3636
parents: 243
diff changeset
424 }
262
2c56a9536c0d add comments
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 261
diff changeset
425 # analyzing CodeGear argument
2c56a9536c0d add comments
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 261
diff changeset
426 # these arguments are extract from current context's arugment DataGear Interface
2c56a9536c0d add comments
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 261
diff changeset
427 # and passed to the CodeGear
2c56a9536c0d add comments
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 261
diff changeset
428 # struct Implementaion needs special handling
2c56a9536c0d add comments
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 261
diff changeset
429 # __code next(...) ---> enum Code next
253
ebc13549394c generate stubArgs
mir3636
parents: 252
diff changeset
430 $prevCodeGearName = $codeGearName;
ebc13549394c generate stubArgs
mir3636
parents: 252
diff changeset
431 $dataGearVar{$codeGearName} = [];
260
6b5444bbea8a generated stub no comiple errors
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 259
diff changeset
432 $outputVar{$codeGearName} = "";
6b5444bbea8a generated stub no comiple errors
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 259
diff changeset
433 $outputArgs{$codeGearName} = {};
259
195518ab62fc fix type gathering pattern match in generate_stub.pl
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 255
diff changeset
434 my $newArgs = "struct Context *context,";
305
ec0a5b4fba05 CUDAWorker
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 280
diff changeset
435 if ($args=~/^struct Context\s*\*\s*context/) {
ec0a5b4fba05 CUDAWorker
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 280
diff changeset
436 $newArgs = "";
ec0a5b4fba05 CUDAWorker
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 280
diff changeset
437 }
521
393e1d2d06f2 fix about no argument code gear of generate_stub.pl
mir3636
parents: 509
diff changeset
438 if (!$args){
393e1d2d06f2 fix about no argument code gear of generate_stub.pl
mir3636
parents: 509
diff changeset
439 $newArgs = "struct Context *context";
393e1d2d06f2 fix about no argument code gear of generate_stub.pl
mir3636
parents: 509
diff changeset
440 }
253
ebc13549394c generate stubArgs
mir3636
parents: 252
diff changeset
441 while($args) {
ebc13549394c generate stubArgs
mir3636
parents: 252
diff changeset
442 if ($args =~ s/(^\s*,\s*)//) {
ebc13549394c generate stubArgs
mir3636
parents: 252
diff changeset
443 $newArgs .= $1;
ebc13549394c generate stubArgs
mir3636
parents: 252
diff changeset
444 }
262
2c56a9536c0d add comments
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 261
diff changeset
445 # continuation case
280
2c2e4e597eb0 generate no compile errors
mir3636
parents: 278
diff changeset
446 if ($args =~ s/^(\s)*\_\_code\s+(\w+)\(([^)]*)\)//) {
2c2e4e597eb0 generate no compile errors
mir3636
parents: 278
diff changeset
447 my $next = $2;
2c2e4e597eb0 generate no compile errors
mir3636
parents: 278
diff changeset
448 my @args = split(/,/,$3);
466
831b7f6fd687 Fix warning pointer type
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 464
diff changeset
449 if (&generateStubArgs($codeGearName, $next, "Code", "", $next, $interface,0) ) {
260
6b5444bbea8a generated stub no comiple errors
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 259
diff changeset
450 $newArgs .= "enum Code $next";
258
4fe19a06d666 generate next args
mir3636
parents: 255
diff changeset
451 }
262
2c56a9536c0d add comments
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 261
diff changeset
452 # analyze continuation arguments
2c56a9536c0d add comments
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 261
diff changeset
453 # output arguments are defined in the Interface take the pointer of these
2c56a9536c0d add comments
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 261
diff changeset
454 # output arguments are put into the Interface DataGear just before the goto
253
ebc13549394c generate stubArgs
mir3636
parents: 252
diff changeset
455 for my $arg (@args) {
ebc13549394c generate stubArgs
mir3636
parents: 252
diff changeset
456 $arg =~ s/^\s*//;
260
6b5444bbea8a generated stub no comiple errors
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 259
diff changeset
457 last if ($arg =~ /\.\.\./);
625
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 617
diff changeset
458 $arg =~ s/^(struct|union|const|enum)?\s*(\w+)(\**)\s(\w+)//;
253
ebc13549394c generate stubArgs
mir3636
parents: 252
diff changeset
459 my $structType = $1;
ebc13549394c generate stubArgs
mir3636
parents: 252
diff changeset
460 my $typeName = $2;
466
831b7f6fd687 Fix warning pointer type
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 464
diff changeset
461 my $ptrType = $3;
253
ebc13549394c generate stubArgs
mir3636
parents: 252
diff changeset
462 my $varName = $4;
625
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 617
diff changeset
463 if ($structType =~ /(const|enum)/) {
598
32388e7467bc pull from xv6
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 596
diff changeset
464 $typeName = "$structType $typeName";
32388e7467bc pull from xv6
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 596
diff changeset
465 }
253
ebc13549394c generate stubArgs
mir3636
parents: 252
diff changeset
466 my $typeField = lcfirst($typeName);
260
6b5444bbea8a generated stub no comiple errors
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 259
diff changeset
467 push(@{$outputArgs{$codeGearName}->{$next}}, $varName);
466
831b7f6fd687 Fix warning pointer type
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 464
diff changeset
468 if (&generateStubArgs($codeGearName, $varName, $typeName, $ptrType, $typeField, $interface,1)) {
260
6b5444bbea8a generated stub no comiple errors
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 259
diff changeset
469 $newArgs .= ",$structType $typeName **O_$varName";
6b5444bbea8a generated stub no comiple errors
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 259
diff changeset
470 }
253
ebc13549394c generate stubArgs
mir3636
parents: 252
diff changeset
471 }
625
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 617
diff changeset
472 } elsif ($args =~ s/^(struct|union|const|enum)?\s*(\w+)(\**)\s(\w+)//) {
253
ebc13549394c generate stubArgs
mir3636
parents: 252
diff changeset
473 my $structType = $1;
ebc13549394c generate stubArgs
mir3636
parents: 252
diff changeset
474 my $typeName = $2;
466
831b7f6fd687 Fix warning pointer type
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 464
diff changeset
475 my $ptrType = $3;
253
ebc13549394c generate stubArgs
mir3636
parents: 252
diff changeset
476 my $varName = $4;
598
32388e7467bc pull from xv6
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 596
diff changeset
477 $newArgs .= $&; # assuming no duplicate
625
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 617
diff changeset
478 if ($structType =~ /(const|enum)/) {
598
32388e7467bc pull from xv6
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 596
diff changeset
479 $typeName = "$structType $typeName";
32388e7467bc pull from xv6
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 596
diff changeset
480 }
253
ebc13549394c generate stubArgs
mir3636
parents: 252
diff changeset
481 my $typeField = lcfirst($typeName);
466
831b7f6fd687 Fix warning pointer type
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 464
diff changeset
482 &generateStubArgs($codeGearName, $varName, $typeName, $ptrType, $typeField, $interface,0);
255
79bbe2c63fb0 cmake generate c from cbc
mir3636
parents: 254
diff changeset
483 } elsif ($args =~ s/(.*,)//) {
461
6b71cf5b1c22 Change Interface files from cbc to header
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 458
diff changeset
484 $newArgs .= $1;
255
79bbe2c63fb0 cmake generate c from cbc
mir3636
parents: 254
diff changeset
485 } else {
79bbe2c63fb0 cmake generate c from cbc
mir3636
parents: 254
diff changeset
486 $newArgs .= $args;
79bbe2c63fb0 cmake generate c from cbc
mir3636
parents: 254
diff changeset
487 last;
253
ebc13549394c generate stubArgs
mir3636
parents: 252
diff changeset
488 }
ebc13549394c generate stubArgs
mir3636
parents: 252
diff changeset
489 }
262
2c56a9536c0d add comments
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 261
diff changeset
490 # generate goto statement from stub to the CodeGear in the buffer
253
ebc13549394c generate stubArgs
mir3636
parents: 252
diff changeset
491 $dataGearName{$codeGearName} .= "\tgoto $codeGearName(context";
ebc13549394c generate stubArgs
mir3636
parents: 252
diff changeset
492 for my $arg ( @{$dataGearVar{$codeGearName}}) {
ebc13549394c generate stubArgs
mir3636
parents: 252
diff changeset
493 $dataGearName{$codeGearName} .= ", $arg";
ebc13549394c generate stubArgs
mir3636
parents: 252
diff changeset
494 }
ebc13549394c generate stubArgs
mir3636
parents: 252
diff changeset
495 $dataGearName{$codeGearName} .= ");";
262
2c56a9536c0d add comments
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 261
diff changeset
496 # generate CodeGear header with new arguments
253
ebc13549394c generate stubArgs
mir3636
parents: 252
diff changeset
497 print $fd "__code $codeGearName($newArgs)$tail\n";
260
6b5444bbea8a generated stub no comiple errors
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 259
diff changeset
498 if ($outputVar{$codeGearName} ne "") {
324
d9887056ae5b Update Todo and Add comment to perl script
one
parents: 305
diff changeset
499 # output data var can be use before write
d9887056ae5b Update Todo and Add comment to perl script
one
parents: 305
diff changeset
500 # it should be initialze by gearef
260
6b5444bbea8a generated stub no comiple errors
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 259
diff changeset
501 print $fd $outputVar{$codeGearName};
6b5444bbea8a generated stub no comiple errors
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 259
diff changeset
502 }
250
8a8963ce9858 fix generate_stub
mir3636
parents: 249
diff changeset
503 next;
598
32388e7467bc pull from xv6
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 596
diff changeset
504 } elsif (! $inCode) {
32388e7467bc pull from xv6
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 596
diff changeset
505 s/new\s+(\w+)\(\)/\&ALLOCATE(context, \1)->\1/g; # replacing new
32388e7467bc pull from xv6
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 596
diff changeset
506 print $fd $_;
32388e7467bc pull from xv6
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 596
diff changeset
507 next;
384
ee5d2b1685d7 Fix perlscript
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 383
diff changeset
508 } elsif (/^(.*)goto (\w+)\-\>(\w+)\((.*)\);/) {
461
6b71cf5b1c22 Change Interface files from cbc to header
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 458
diff changeset
509 # handling goto statement
384
ee5d2b1685d7 Fix perlscript
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 383
diff changeset
510 # convert it to the meta call form with two arugments, that is context and enum Code
ee5d2b1685d7 Fix perlscript
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 383
diff changeset
511 my $prev = $1;
ee5d2b1685d7 Fix perlscript
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 383
diff changeset
512 my $next = $2;
ee5d2b1685d7 Fix perlscript
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 383
diff changeset
513 my $method = $3;
529
e5e3025f503a Generate twice stub
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 528
diff changeset
514 my $tmpArgs = $4;
548
4fdeb0afc187 tweak GearsExamples, generate_stubs
anatofuz
parents: 547
diff changeset
515 #$tmpArgs =~ s/\(.*\)/\(\)/;
529
e5e3025f503a Generate twice stub
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 528
diff changeset
516 my @args = split(/,/,$tmpArgs);
598
32388e7467bc pull from xv6
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 596
diff changeset
517 if (! defined $dataGearVarType{$codeGearName}) {
32388e7467bc pull from xv6
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 596
diff changeset
518 print $fd $_ ;
32388e7467bc pull from xv6
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 596
diff changeset
519 next ;
32388e7467bc pull from xv6
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 596
diff changeset
520 }
384
ee5d2b1685d7 Fix perlscript
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 383
diff changeset
521 my @types = @{$dataGearVarType{$codeGearName}};
ee5d2b1685d7 Fix perlscript
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 383
diff changeset
522 my $ntype;
415
eec6553a2aa6 fix redblacktree
mir3636
parents: 407
diff changeset
523 my $ftype;
384
ee5d2b1685d7 Fix perlscript
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 383
diff changeset
524 for my $v (@{$dataGearVar{$codeGearName}}) {
ee5d2b1685d7 Fix perlscript
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 383
diff changeset
525 my $t = shift @types;
528
82ff74c2f162 Delete stub for bitonicSort
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 527
diff changeset
526 if ($v eq $next || $v eq "O_$next") {
384
ee5d2b1685d7 Fix perlscript
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 383
diff changeset
527 $ntype = $t;
415
eec6553a2aa6 fix redblacktree
mir3636
parents: 407
diff changeset
528 $ftype = lcfirst($ntype);
384
ee5d2b1685d7 Fix perlscript
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 383
diff changeset
529 }
ee5d2b1685d7 Fix perlscript
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 383
diff changeset
530 }
444
0c024ea61601 Using cas interface but occurred warning
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 442
diff changeset
531 if (!defined $ntype) {
0c024ea61601 Using cas interface but occurred warning
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 442
diff changeset
532 $ntype = $localVarType{$next};
0c024ea61601 Using cas interface but occurred warning
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 442
diff changeset
533 $ftype = lcfirst($ntype);
0c024ea61601 Using cas interface but occurred warning
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 442
diff changeset
534 }
442
481fce540daf Fix goto implement method of generate_stub
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 424
diff changeset
535 print $fd "\tGearef(context, $ntype)->$ftype = (union Data*) $next;\n";
415
eec6553a2aa6 fix redblacktree
mir3636
parents: 407
diff changeset
536 # Put interface argument
384
ee5d2b1685d7 Fix perlscript
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 383
diff changeset
537 my $prot = $code{$ntype}->{$method};
385
c1512f358c37 add getCodeGear to generate_stub.pl
mir3636
parents: 384
diff changeset
538 my $i = 1;
384
ee5d2b1685d7 Fix perlscript
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 383
diff changeset
539 for my $arg (@args) {
415
eec6553a2aa6 fix redblacktree
mir3636
parents: 407
diff changeset
540 my $pType;
eec6553a2aa6 fix redblacktree
mir3636
parents: 407
diff changeset
541 my $pName;
385
c1512f358c37 add getCodeGear to generate_stub.pl
mir3636
parents: 384
diff changeset
542 my $p = @$prot[$i];
457
2b36a1878c6f Refactor TaskManagerImpl
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 447
diff changeset
543 next if ($p eq $arg);
387
590f03af1a2c fix getCodeGear
mir3636
parents: 385
diff changeset
544 $p =~ s/^(.*)\s(\w+)//;
415
eec6553a2aa6 fix redblacktree
mir3636
parents: 407
diff changeset
545 $pType = $1;
eec6553a2aa6 fix redblacktree
mir3636
parents: 407
diff changeset
546 $pName = $2;
387
590f03af1a2c fix getCodeGear
mir3636
parents: 385
diff changeset
547 $arg =~ s/^(\s)*(\w+)/$2/;
590f03af1a2c fix getCodeGear
mir3636
parents: 385
diff changeset
548 if ($pType =~ s/\_\_code$//) {
444
0c024ea61601 Using cas interface but occurred warning
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 442
diff changeset
549 if ($arg =~ /(\w+)\(.*\)/) {
0c024ea61601 Using cas interface but occurred warning
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 442
diff changeset
550 print $fd "\tGearef(context, $ntype)->$pName = $1;\n";
0c024ea61601 Using cas interface but occurred warning
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 442
diff changeset
551 } else {
0c024ea61601 Using cas interface but occurred warning
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 442
diff changeset
552 print $fd "\tGearef(context, $ntype)->$pName = C_$arg;\n";
0c024ea61601 Using cas interface but occurred warning
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 442
diff changeset
553 }
466
831b7f6fd687 Fix warning pointer type
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 464
diff changeset
554 } elsif ($pType =~ /Data\**$/){
831b7f6fd687 Fix warning pointer type
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 464
diff changeset
555 print $fd "\tGearef(context, $ntype)->$pName = (union $pType) $arg;\n";
387
590f03af1a2c fix getCodeGear
mir3636
parents: 385
diff changeset
556 } else {
590f03af1a2c fix getCodeGear
mir3636
parents: 385
diff changeset
557 print $fd "\tGearef(context, $ntype)->$pName = $arg;\n";
590f03af1a2c fix getCodeGear
mir3636
parents: 385
diff changeset
558 }
385
c1512f358c37 add getCodeGear to generate_stub.pl
mir3636
parents: 384
diff changeset
559 $i++;
384
ee5d2b1685d7 Fix perlscript
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 383
diff changeset
560 }
547
8814524d29ae get code gear before continuation
mir3636
parents: 546
diff changeset
561 print $fd "${prev}context->before = C_$codeGearName;\n";
442
481fce540daf Fix goto implement method of generate_stub
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 424
diff changeset
562 print $fd "${prev}goto meta(context, $next->$method);\n";
384
ee5d2b1685d7 Fix perlscript
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 383
diff changeset
563 next;
396
bba401f93dcd Add handle par goto statement
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 393
diff changeset
564 } elsif(/^(.*)par goto (\w+)\((.*)\);/) {
bba401f93dcd Add handle par goto statement
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 393
diff changeset
565 # handling par goto statement
bba401f93dcd Add handle par goto statement
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 393
diff changeset
566 # convert it to the parallel
bba401f93dcd Add handle par goto statement
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 393
diff changeset
567 my $prev = $1;
bba401f93dcd Add handle par goto statement
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 393
diff changeset
568 my $codeGearName = $2;
461
6b71cf5b1c22 Change Interface files from cbc to header
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 458
diff changeset
569 my $args = $3;
401
408b4aab7610 Supported par goto iterate statement for perl script
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 400
diff changeset
570 my $inputCount = $codeGear{$codeGearName}->{'input'};
408b4aab7610 Supported par goto iterate statement for perl script
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 400
diff changeset
571 my $outputCount = $codeGear{$codeGearName}->{'output'};
403
83c9aeb1fe3e Generate MultiDimIterator by perl script
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 402
diff changeset
572 my @iterateCounts;
401
408b4aab7610 Supported par goto iterate statement for perl script
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 400
diff changeset
573 # parse examples 'par goto(.., iterate(10), exit);'
461
6b71cf5b1c22 Change Interface files from cbc to header
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 458
diff changeset
574 if ($args =~ /iterate\((.*)?\),/) {
6b71cf5b1c22 Change Interface files from cbc to header
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 458
diff changeset
575 @iterateCounts = split(/,/,$1);;
6b71cf5b1c22 Change Interface files from cbc to header
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 458
diff changeset
576 $inputCount--;
6b71cf5b1c22 Change Interface files from cbc to header
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 458
diff changeset
577 }
6b71cf5b1c22 Change Interface files from cbc to header
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 458
diff changeset
578 # replace iterate keyword
6b71cf5b1c22 Change Interface files from cbc to header
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 458
diff changeset
579 $args =~ s/iterate\((.*)?\),//;
6b71cf5b1c22 Change Interface files from cbc to header
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 458
diff changeset
580 my @dataGears = split(/,\s*/, $args);
6b71cf5b1c22 Change Interface files from cbc to header
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 458
diff changeset
581 my $nextCodeGear = pop(@dataGears);
546
d8e87b3b2be0 fix goto parGotoMeta
mir3636
parents: 529
diff changeset
582 if (! $hasParGoto) {
d8e87b3b2be0 fix goto parGotoMeta
mir3636
parents: 529
diff changeset
583 $hasParGoto = 1;
461
6b71cf5b1c22 Change Interface files from cbc to header
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 458
diff changeset
584 print $fd "${prev}struct Element* element;\n";
6b71cf5b1c22 Change Interface files from cbc to header
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 458
diff changeset
585 }
6b71cf5b1c22 Change Interface files from cbc to header
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 458
diff changeset
586 my $initTask = << "EOFEOF";
6b71cf5b1c22 Change Interface files from cbc to header
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 458
diff changeset
587 ${prev}context->task = NEW(struct Context);
6b71cf5b1c22 Change Interface files from cbc to header
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 458
diff changeset
588 ${prev}initContext(context->task);
6b71cf5b1c22 Change Interface files from cbc to header
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 458
diff changeset
589 ${prev}context->task->next = C_$codeGearName;
6b71cf5b1c22 Change Interface files from cbc to header
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 458
diff changeset
590 ${prev}context->task->idgCount = $inputCount;
6b71cf5b1c22 Change Interface files from cbc to header
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 458
diff changeset
591 ${prev}context->task->idg = context->task->dataNum;
6b71cf5b1c22 Change Interface files from cbc to header
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 458
diff changeset
592 ${prev}context->task->maxIdg = context->task->idg + $inputCount;
6b71cf5b1c22 Change Interface files from cbc to header
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 458
diff changeset
593 ${prev}context->task->odg = context->task->maxIdg;
6b71cf5b1c22 Change Interface files from cbc to header
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 458
diff changeset
594 ${prev}context->task->maxOdg = context->task->odg + $outputCount;
396
bba401f93dcd Add handle par goto statement
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 393
diff changeset
595 EOFEOF
461
6b71cf5b1c22 Change Interface files from cbc to header
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 458
diff changeset
596 print $fd $initTask;
6b71cf5b1c22 Change Interface files from cbc to header
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 458
diff changeset
597 if (@iterateCounts) {
6b71cf5b1c22 Change Interface files from cbc to header
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 458
diff changeset
598 print $fd "${prev}context->task->iterate = 0;\n";
6b71cf5b1c22 Change Interface files from cbc to header
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 458
diff changeset
599 my $len = @iterateCounts;
6b71cf5b1c22 Change Interface files from cbc to header
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 458
diff changeset
600 if ($len == 1) {
6b71cf5b1c22 Change Interface files from cbc to header
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 458
diff changeset
601 print $fd "${prev}context->task->iterator = createMultiDimIterator(context, $iterateCounts[0], 1, 1);\n";
6b71cf5b1c22 Change Interface files from cbc to header
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 458
diff changeset
602 } elsif ($len == 2) {
6b71cf5b1c22 Change Interface files from cbc to header
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 458
diff changeset
603 print $fd "${prev}context->task->iterator = createMultiDimIterator(context, $iterateCounts[0], $iterateCounts[1], 1);\n";
6b71cf5b1c22 Change Interface files from cbc to header
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 458
diff changeset
604 } elsif ($len == 3) {
6b71cf5b1c22 Change Interface files from cbc to header
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 458
diff changeset
605 print $fd "${prev}context->task->iterator = createMultiDimIterator(context, $iterateCounts[0], $iterateCounts[1], $iterateCounts[2]);\n";
6b71cf5b1c22 Change Interface files from cbc to header
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 458
diff changeset
606 }
6b71cf5b1c22 Change Interface files from cbc to header
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 458
diff changeset
607 }
6b71cf5b1c22 Change Interface files from cbc to header
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 458
diff changeset
608 for my $dataGear (@dataGears) {
6b71cf5b1c22 Change Interface files from cbc to header
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 458
diff changeset
609 print $fd "${prev}GET_META($dataGear)->wait = createSynchronizedQueue(context);\n";
6b71cf5b1c22 Change Interface files from cbc to header
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 458
diff changeset
610 }
6b71cf5b1c22 Change Interface files from cbc to header
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 458
diff changeset
611 for my $i (0..$inputCount-1) {
6b71cf5b1c22 Change Interface files from cbc to header
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 458
diff changeset
612 print $fd "${prev}context->task->data[context->task->idg+$i] = (union Data*)@dataGears[$i];\n";
6b71cf5b1c22 Change Interface files from cbc to header
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 458
diff changeset
613 }
6b71cf5b1c22 Change Interface files from cbc to header
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 458
diff changeset
614 for my $i (0..$outputCount-1) {
6b71cf5b1c22 Change Interface files from cbc to header
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 458
diff changeset
615 print $fd "${prev}context->task->data[context->task->odg+$i] = (union Data*)@dataGears[$inputCount+$i];\n";
6b71cf5b1c22 Change Interface files from cbc to header
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 458
diff changeset
616 }
6b71cf5b1c22 Change Interface files from cbc to header
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 458
diff changeset
617 my $putTask = << "EOFEOF";
6b71cf5b1c22 Change Interface files from cbc to header
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 458
diff changeset
618 ${prev}element = &ALLOCATE(context, Element)->Element;
6b71cf5b1c22 Change Interface files from cbc to header
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 458
diff changeset
619 ${prev}element->data = (union Data*)context->task;
482
5859bed4edff Refactoring spawnTasks method
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 468
diff changeset
620 ${prev}element->next = context->taskList;
5859bed4edff Refactoring spawnTasks method
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 468
diff changeset
621 ${prev}context->taskList = element;
398
fc4fcd441700 Fix spanwTasks
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 397
diff changeset
622 EOFEOF
461
6b71cf5b1c22 Change Interface files from cbc to header
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 458
diff changeset
623 print $fd $putTask;
6b71cf5b1c22 Change Interface files from cbc to header
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 458
diff changeset
624 next;
6b71cf5b1c22 Change Interface files from cbc to header
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 458
diff changeset
625 } elsif (/^(.*)goto (\w+)\((.*)\);/) {
6b71cf5b1c22 Change Interface files from cbc to header
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 458
diff changeset
626 # handling goto statement
6b71cf5b1c22 Change Interface files from cbc to header
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 458
diff changeset
627 # convert it to the meta call form with two arugments, that is context and enum Code
6b71cf5b1c22 Change Interface files from cbc to header
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 458
diff changeset
628 my $prev = $1;
6b71cf5b1c22 Change Interface files from cbc to header
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 458
diff changeset
629 my $next = $2;
527
929aa06a12f9 Generate par goto code gear stub
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 521
diff changeset
630 my @args = split(/,/, $3);
461
6b71cf5b1c22 Change Interface files from cbc to header
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 458
diff changeset
631 my $v = 0;
598
32388e7467bc pull from xv6
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 596
diff changeset
632 if (defined $localCode{$next}) {
32388e7467bc pull from xv6
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 596
diff changeset
633 print $fd $_; next;
32388e7467bc pull from xv6
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 596
diff changeset
634 }
461
6b71cf5b1c22 Change Interface files from cbc to header
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 458
diff changeset
635 for my $n ( @{$dataGearVar{$codeGearName}} ) {
6b71cf5b1c22 Change Interface files from cbc to header
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 458
diff changeset
636 # continuation arguments
6b71cf5b1c22 Change Interface files from cbc to header
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 458
diff changeset
637 $v = 1 if ( $n eq $next);
6b71cf5b1c22 Change Interface files from cbc to header
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 458
diff changeset
638 }
6b71cf5b1c22 Change Interface files from cbc to header
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 458
diff changeset
639 if ($v || defined $code{$interface}->{$next}) {
6b71cf5b1c22 Change Interface files from cbc to header
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 458
diff changeset
640 # write continuation's arguments into the interface arguments
6b71cf5b1c22 Change Interface files from cbc to header
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 458
diff changeset
641 # we may need a commit for a shared DataGear
6b71cf5b1c22 Change Interface files from cbc to header
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 458
diff changeset
642 for my $arg ( @{$outputArgs{$codeGearName}->{$next}} ) {
6b71cf5b1c22 Change Interface files from cbc to header
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 458
diff changeset
643 my $v = shift(@args);
6b71cf5b1c22 Change Interface files from cbc to header
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 458
diff changeset
644 print $fd "\t*O_$arg = $v;\n";
6b71cf5b1c22 Change Interface files from cbc to header
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 458
diff changeset
645 }
546
d8e87b3b2be0 fix goto parGotoMeta
mir3636
parents: 529
diff changeset
646 if ($hasParGoto) {
482
5859bed4edff Refactoring spawnTasks method
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 468
diff changeset
647 print $fd "${prev}Gearef(context, TaskManager)->taskList = context->taskList;\n";
467
4ec61e201c19 Fix segmentation fault for calc.cbc
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 466
diff changeset
648 print $fd "${prev}Gearef(context, TaskManager)->next1 = C_$next;\n";
461
6b71cf5b1c22 Change Interface files from cbc to header
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 458
diff changeset
649 print $fd "${prev}goto meta(context, C_$next);\n";
6b71cf5b1c22 Change Interface files from cbc to header
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 458
diff changeset
650 } else {
547
8814524d29ae get code gear before continuation
mir3636
parents: 546
diff changeset
651 print $fd "${prev}context->before = C_$codeGearName;\n";
461
6b71cf5b1c22 Change Interface files from cbc to header
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 458
diff changeset
652 print $fd "${prev}goto meta(context, $next);\n";
6b71cf5b1c22 Change Interface files from cbc to header
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 458
diff changeset
653 }
6b71cf5b1c22 Change Interface files from cbc to header
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 458
diff changeset
654 next;
6b71cf5b1c22 Change Interface files from cbc to header
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 458
diff changeset
655 }
546
d8e87b3b2be0 fix goto parGotoMeta
mir3636
parents: 529
diff changeset
656 if ($hasParGoto) {
482
5859bed4edff Refactoring spawnTasks method
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 468
diff changeset
657 print $fd "${prev}Gearef(context, TaskManager)->taskList = context->taskList;\n";
467
4ec61e201c19 Fix segmentation fault for calc.cbc
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 466
diff changeset
658 print $fd "${prev}Gearef(context, TaskManager)->next1 = C_$next;\n";
546
d8e87b3b2be0 fix goto parGotoMeta
mir3636
parents: 529
diff changeset
659 print $fd "${prev}goto parGotoMeta(context, C_$next);\n";
461
6b71cf5b1c22 Change Interface files from cbc to header
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 458
diff changeset
660 next;
6b71cf5b1c22 Change Interface files from cbc to header
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 458
diff changeset
661 } elsif ($next eq "meta") {
6b71cf5b1c22 Change Interface files from cbc to header
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 458
diff changeset
662 print $fd $_;
6b71cf5b1c22 Change Interface files from cbc to header
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 458
diff changeset
663 next;
6b71cf5b1c22 Change Interface files from cbc to header
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 458
diff changeset
664 } else {
547
8814524d29ae get code gear before continuation
mir3636
parents: 546
diff changeset
665 print $fd "${prev}context->before = C_$codeGearName;\n";
461
6b71cf5b1c22 Change Interface files from cbc to header
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 458
diff changeset
666 print $fd "${prev}goto meta(context, C_$next);\n";
6b71cf5b1c22 Change Interface files from cbc to header
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 458
diff changeset
667 next;
6b71cf5b1c22 Change Interface files from cbc to header
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 458
diff changeset
668 }
6b71cf5b1c22 Change Interface files from cbc to header
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 458
diff changeset
669 } elsif(/^.*(struct|union)?\s(\w+)\*\s(\w+)\s?[=;]/) {
6b71cf5b1c22 Change Interface files from cbc to header
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 458
diff changeset
670 my $type = $2;
6b71cf5b1c22 Change Interface files from cbc to header
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 458
diff changeset
671 my $varName = $3;
6b71cf5b1c22 Change Interface files from cbc to header
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 458
diff changeset
672 $localVarType{$varName} = $type;
6b71cf5b1c22 Change Interface files from cbc to header
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 458
diff changeset
673 s/new\s+(\w+)\(\)/\&ALLOCATE(context, \1)->\1/g; # replacing new
462
8d7e5d48cad3 Running CPU examples
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 461
diff changeset
674 } elsif(/^}/) {
546
d8e87b3b2be0 fix goto parGotoMeta
mir3636
parents: 529
diff changeset
675 $hasParGoto = 0;
461
6b71cf5b1c22 Change Interface files from cbc to header
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 458
diff changeset
676 } else {
6b71cf5b1c22 Change Interface files from cbc to header
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 458
diff changeset
677 s/new\s+(\w+)\(\)/\&ALLOCATE(context, \1)->\1/g; # replacing new
6b71cf5b1c22 Change Interface files from cbc to header
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 458
diff changeset
678 }
6b71cf5b1c22 Change Interface files from cbc to header
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 458
diff changeset
679 # gather type name and type
6b71cf5b1c22 Change Interface files from cbc to header
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 458
diff changeset
680 } elsif ($inMain) {
6b71cf5b1c22 Change Interface files from cbc to header
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 458
diff changeset
681 if (/^(.*)goto start_code\(main_context\);/) {
6b71cf5b1c22 Change Interface files from cbc to header
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 458
diff changeset
682 print $fd $_;
6b71cf5b1c22 Change Interface files from cbc to header
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 458
diff changeset
683 next;
6b71cf5b1c22 Change Interface files from cbc to header
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 458
diff changeset
684 } elsif (/^(.*)goto (\w+)\((.*)\);/) {
6b71cf5b1c22 Change Interface files from cbc to header
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 458
diff changeset
685 my $prev = $1;
6b71cf5b1c22 Change Interface files from cbc to header
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 458
diff changeset
686 my $next = $2;
6b71cf5b1c22 Change Interface files from cbc to header
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 458
diff changeset
687 print $fd "${prev}struct Context* main_context = NEW(struct Context);\n";
6b71cf5b1c22 Change Interface files from cbc to header
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 458
diff changeset
688 print $fd "${prev}initContext(main_context);\n";
6b71cf5b1c22 Change Interface files from cbc to header
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 458
diff changeset
689 print $fd "${prev}main_context->next = C_$next;\n";
6b71cf5b1c22 Change Interface files from cbc to header
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 458
diff changeset
690 print $fd "${prev}goto start_code(main_context);\n";
6b71cf5b1c22 Change Interface files from cbc to header
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 458
diff changeset
691 next;
6b71cf5b1c22 Change Interface files from cbc to header
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 458
diff changeset
692 }
6b71cf5b1c22 Change Interface files from cbc to header
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 458
diff changeset
693 }
6b71cf5b1c22 Change Interface files from cbc to header
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 458
diff changeset
694 if (/^}/) {
6b71cf5b1c22 Change Interface files from cbc to header
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 458
diff changeset
695 $inStub = 0;
6b71cf5b1c22 Change Interface files from cbc to header
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 458
diff changeset
696 $inTypedef = 0;
6b71cf5b1c22 Change Interface files from cbc to header
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 458
diff changeset
697 $inMain = 0;
598
32388e7467bc pull from xv6
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents: 596
diff changeset
698 $inCode = 0;
461
6b71cf5b1c22 Change Interface files from cbc to header
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 458
diff changeset
699 }
6b71cf5b1c22 Change Interface files from cbc to header
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 458
diff changeset
700 print $fd $_;
6b71cf5b1c22 Change Interface files from cbc to header
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 458
diff changeset
701 }
6b71cf5b1c22 Change Interface files from cbc to header
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 458
diff changeset
702 if (defined $prevCodeGearName) {
6b71cf5b1c22 Change Interface files from cbc to header
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 458
diff changeset
703 if (!defined $stub{$prevCodeGearName."_stub"}) {
6b71cf5b1c22 Change Interface files from cbc to header
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 458
diff changeset
704 $stub{$prevCodeGearName."_stub"} = &generateStub($fd,$prevCodeGearName,$dataGearName{$codeGearName});
6b71cf5b1c22 Change Interface files from cbc to header
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 458
diff changeset
705 }
6b71cf5b1c22 Change Interface files from cbc to header
Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
parents: 458
diff changeset
706 }
194
081607dcf893 create generate_stub.pl
mir3636
parents:
diff changeset
707 }
081607dcf893 create generate_stub.pl
mir3636
parents:
diff changeset
708
081607dcf893 create generate_stub.pl
mir3636
parents:
diff changeset
709 # end