Mercurial > hg > GearsTemplate
changeset 557:1eb2a22ec1e3
tweak
author | anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Mon, 18 Nov 2019 21:22:34 +0900 |
parents | a0b7eb5e58c0 |
children | 8a825fc15817 |
files | src/parallel_execution/lib/Gears/Util.pm src/parallel_execution/trans_impl.pl |
diffstat | 2 files changed, 33 insertions(+), 59 deletions(-) [+] |
line wrap: on
line diff
--- a/src/parallel_execution/lib/Gears/Util.pm Mon Nov 18 21:00:11 2019 +0900 +++ b/src/parallel_execution/lib/Gears/Util.pm Mon Nov 18 21:22:34 2019 +0900 @@ -2,6 +2,7 @@ use strict; use warnings; use Carp qw/croak/; +use File::Find; sub parse { my ($class, $file_name) = @_; @@ -77,4 +78,28 @@ } } +sub slup { + my ($class,$file) = @_; + open my $fh, '<', $file; + local $/; + my $f = <$fh>; + return $f; +} + +sub find_interface { + my ($class, $interface) = @_; + my $result = ''; + find( + { + wanted => sub { + if ($_ =~ /\/$interface\.h/) { + $result = $_; + } + }, + no_chdir => 1, + }, + "."); + return $result; +} + 1;
--- a/src/parallel_execution/trans_impl.pl Mon Nov 18 21:00:11 2019 +0900 +++ b/src/parallel_execution/trans_impl.pl Mon Nov 18 21:22:34 2019 +0900 @@ -1,65 +1,14 @@ #!/usr/bin/env perl use strict; use warnings; -use DDP { deparse => 1}; -use CbC::Util; -#my $impl_file = shift or die 'require impl file'; -#my $impl = parse_impl($impl_file); - -my $hoge = CbC::Util->parse_impl(shift); -p $hoge; - -sub slup { - my $file = shift; - open my $fh, '<', $file; - local $/; - my $f = <$fh>; - return $f; -} - - -sub parse_impl { - my $file = shift; - - unless (-f $file) { - die "invlid file path: $file\n"; - } +use FindBin; +use lib "$FindBin::Bin/lib"; +use Gears::Util; - open my $fh, '<', $file; - my $impl = { - impl => undef, - isa => undef, - codes => [], - deta => [], - }; - - while (my $line = <$fh>) { - if ($line =~ m|^/\*|) { - while ( $line !~ m|\*/|) { - $line = <$fh>; - next; - } - next; - } +use DDP { deparse => 1}; - if ($line =~ m|typedef struct ([\w]+)\s*<Type,\s*Isa>\s*impl\s*([\w+]+)\s*{|) { - $impl->{impl} = $1; - $impl->{isa} = $2; - next; - } - - next if ($line =~ /^\s+$/); - next if ($line =~ m[//|}]); - - if ($line =~ /__code (\w+)\(.*/) { - push(@{$impl->{codes}},$1); - next; - } - - $line =~ s/\s*([\w\s\*]+);\s*/$1/; - push(@{$impl->{deta}},$1); - } - return $impl; -} - +my $impl_file = shift or die 'require impl file'; +my $ir = Gears::Util->parse_impl($impl_file); +my $hoge = Gears::Util->find_interface($ir->{isa}); +my $foo = Gears::Util->slup($hoge);