changeset 819:27ea7f1f5452

use hash
author anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
date Sun, 17 Jan 2021 22:47:15 +0900
parents bbbf8b18ab4d
children e8172cfeae20
files src/parallel_execution/generate_context.pl
diffstat 1 files changed, 11 insertions(+), 18 deletions(-) [+]
line wrap: on
line diff
--- a/src/parallel_execution/generate_context.pl	Sun Jan 17 22:34:44 2021 +0900
+++ b/src/parallel_execution/generate_context.pl	Sun Jan 17 22:47:15 2021 +0900
@@ -357,7 +357,7 @@
         $entry->{interface} = $interface_name;
       }
 
-      push(@$generics, $entry);
+      $generics->{$name} = $entry;
     }
     if (defined $entry->{typed_variable}) {
       my $entry  = { name => $name, typed_variable => $entry->{typed_variable}};
@@ -365,42 +365,35 @@
         $entry->{interface} = $interface_name;
       }
 
-      push(@$typed_variables, $entry);
+      $typed_variables->{$name} = $entry;
     }
 }
 
 sub parsed_generics_from_tree {
     my ($tree) = shift;
-    my @generics;
-    my @typed_variables;
+    my %generics;
+    my %typed_variables;
 
 
     for my $interface (keys %$tree) {
       my $entry = $tree->{$interface};
       my $interface_entry = $entry->{elem};
-      find_generics_each_item($interface, $interface_entry, \@generics, \@typed_variables, undef);
+      find_generics_each_item($interface, $interface_entry, \%generics, \%typed_variables, undef);
 
       for my $impl (keys %{$entry->{impl}}) {
         my $impl_entry = $entry->{impl}->{$impl};
-        find_generics_each_item($impl, $impl_entry, \@generics, \@typed_variables, $interface);
+        find_generics_each_item($impl, $impl_entry, \%generics, \%typed_variables, $interface);
       }
     }
 
-    #p $tree;
-    #
+
     my %generics_info = ();
 
-    for my $item (@generics) {
+    for my $typeName (keys %typed_variables) {
+      my $item = $typed_variables{$typeName};
       my $caller = $item->{name};
-      if (defined $item->{interface}) {
-        print STDERR "interface at $item->{interface}!!!!\n";
-      }
-      for my $gene (@{$item->{generics}}) {
-        my $field    = $gene->{vname};
-        my $generics = $gene->{type};
-        my $impl     = $gene->{generics};
-
-        push(@{$generics_info{$generics}->{$impl}}, {caller => $caller, field => $field} );
+      #p $item;
+      if (defined $item->{interface}) { #impl case
       }
     }