# HG changeset patch # User anatofuz # Date 1574339136 -32400 # Node ID 928d01b70e62cba7dd29737860d4e6dc2cbcb75b # Parent b7db5cb2e2c19aeefdc2959184fcf676c00b1b93 fix diff -r b7db5cb2e2c1 -r 928d01b70e62 src/parallel_execution/trans_impl.pl --- a/src/parallel_execution/trans_impl.pl Tue Nov 19 15:21:22 2019 +0900 +++ b/src/parallel_execution/trans_impl.pl Thu Nov 21 21:25:36 2019 +0900 @@ -53,12 +53,16 @@ sub emit_constracutor { my ($out, $impl_ir, $inter_ir) = @_; - my @inter_data = @{$inter_ir->{data}}; + my @inter_data = @{$inter_ir->{data}}; + my @impl_data = @{$impl_ir->{data}}; my $instance_inter = shift @inter_data; + if ($instance_inter =~ /union\s*Data\*\s*(\w+)/) { $instance_inter = $1; } - my $instance_impl = lcfirst $impl_ir->{name}; + + my $instance_impl = lcfirst $impl_ir->{name}; + $instance_impl =~ s/([A-Z])/_\l$1/g; print $out <<"EOF"; $impl_ir->{isa}* create$impl_ir->{name}(struct Context* context) { @@ -67,13 +71,23 @@ $instance_inter->$instance_inter = (union Data*)$instance_impl; EOF - for my $datum (@inter_data) { + for my $datum (@impl_data) { if ($datum =~ /\w+ \w+\* (\w+)/) { - print $out " ${instance_impl}->$1 = NULL;\n"; + print $out " ${impl_inter}->$1 = NULL;\n"; next; } if ($datum =~ /\w+ \w+ (\w+)/) { - print $out " ${instance_impl}->$1 = 0;\n"; + print $out " ${impl_inter}->$1 = 0;\n"; + } + } + + for my $datum (@inter_data) { + if ($datum =~ /\w+ \w+\* (\w+)/) { + print $out " ${instance_inter}->$1 = NULL;\n"; + next; + } + if ($datum =~ /\w+ \w+ (\w+)/) { + print $out " ${instance_inter}->$1 = 0;\n"; } } @@ -97,6 +111,7 @@ $instance_inter = $1; } my $instance_impl = lcfirst $impl_ir->{name}; + $instance_impl =~ s/([A-Z])/_\l$1/g; my $data_gear_types = {}; for my $code_ir (@{$inter_ir->{codes}}) {