comparison src/parallel_execution/generate_stub.pl @ 251:0ab52d6e2fd9

fix sub generateStub
author mir3636
date Thu, 26 Jan 2017 09:38:09 +0900
parents 8a8963ce9858
children 682b1195e604
comparison
equal deleted inserted replaced
250:8a8963ce9858 251:0ab52d6e2fd9
94 } 94 }
95 } 95 }
96 } 96 }
97 97
98 sub generateStub { 98 sub generateStub {
99 my($fd,$prevCodeGearName) = @_; 99 my($fd,$prevCodeGearName,$dataGearName) = @_;
100 print $fd "__code ", $prevCodeGearName ,"_stub (struct Context* context) {\n"; 100 print $fd "__code ", $prevCodeGearName ,"_stub (struct Context* context) {\n";
101 print $fd $dataGearName{$codeGearName}; 101 print $fd $dataGearName;
102 print $fd "\n} \n\n"; 102 print $fd "\n} \n\n";
103 $stub{$prevCodeGearName."_stub"} = 1; 103 return 1;
104 } 104 }
105 105
106 sub generateDataGear { 106 sub generateDataGear {
107 my ($filename) = @_; 107 my ($filename) = @_;
108 my $fn1 = $filename; 108 my $fn1 = $filename;
116 } 116 }
117 open my $fd,">",$fn or die("can't write $fn $!"); 117 open my $fd,">",$fn or die("can't write $fn $!");
118 my $prevCodeGearName; 118 my $prevCodeGearName;
119 my $inTypedef = 0; 119 my $inTypedef = 0;
120 my %stub; 120 my %stub;
121 my $codeGearName;
121 while (<$in>) { 122 while (<$in>) {
122 if (! $inTypedef) { 123 if (! $inTypedef) {
123 if (/^typedef struct (\w+) {/) { 124 if (/^typedef struct (\w+) {/) {
124 $inTypedef = 1; 125 $inTypedef = 1;
125 } elsif (/^\_\_code (\w+)/) { 126 } elsif (/^\_\_code (\w+)/) {
126 my $codeGearName = $1; 127 $codeGearName = $1;
127 if ($codeGearName =~ /_stub$/) { 128 if ($codeGearName =~ /_stub$/) {
128 $stub{$codeGearName} = 1; 129 $stub{$codeGearName} = 1;
129 print $fd $_; 130 print $fd $_;
130 next; 131 next;
131 } 132 }
133 if (defined $stub{$prevCodeGearName."_stub"}) { 134 if (defined $stub{$prevCodeGearName."_stub"}) {
134 undef $prevCodeGearName; 135 undef $prevCodeGearName;
135 print $fd $_; 136 print $fd $_;
136 next; 137 next;
137 } 138 }
138 &generateStub; 139 $stub{$prevCodeGearName."_stub"} = &generateStub($fd,$prevCodeGearName,$dataGearName{$codeGearName});
139 } 140 }
140 $prevCodeGearName = $codeGearName; 141 $prevCodeGearName = $codeGearName;
141 } elsif (/^(.*)goto next\(\.\.\.(.*)\);/) { 142 } elsif (/^(.*)goto next\(\.\.\.(.*)\);/) {
142 my $prev = $1; 143 my $prev = $1;
143 my $args = $2; 144 my $args = $2;
153 } 154 }
154 print $fd $_; 155 print $fd $_;
155 } 156 }
156 if (defined $prevCodeGearName) { 157 if (defined $prevCodeGearName) {
157 if (!defined $stub{$prevCodeGearName."_stub"}) { 158 if (!defined $stub{$prevCodeGearName."_stub"}) {
158 &generateStub; 159 $stub{$prevCodeGearName."_stub"} = &generateStub($fd,$prevCodeGearName,$dataGearName{$codeGearName});
159 } 160 }
160 } 161 }
161 } 162 }
162 163
163 # end 164 # end