changeset 563:928d01b70e62

fix
author anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
date Thu, 21 Nov 2019 21:25:36 +0900
parents b7db5cb2e2c1
children 9cca20bcb558
files src/parallel_execution/trans_impl.pl
diffstat 1 files changed, 20 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- 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}}) {