Mercurial > hg > GearsTemplate
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 |