Mercurial > hg > Gears > Gears
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 } }