Mercurial > hg > Gears > Gears
changeset 661:b6a3e1638f3a
Search headerfile first at generate_stub.pl
author | anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Tue, 18 Aug 2020 16:23:22 +0900 |
parents | 29df99369746 |
children | 7bb657ce6399 |
files | src/parallel_execution/generate_stub.pl src/parallel_execution/tools/static_gen_header.pl |
diffstat | 2 files changed, 31 insertions(+), 12 deletions(-) [+] |
line wrap: on
line diff
--- a/src/parallel_execution/generate_stub.pl Tue Aug 18 08:29:54 2020 +0900 +++ b/src/parallel_execution/generate_stub.pl Tue Aug 18 16:23:22 2020 +0900 @@ -3,9 +3,12 @@ use strict; use Getopt::Long; use File::Path qw(make_path); + use FindBin; use lib "$FindBin::Bin/lib"; +use Gears::Util; + # interface.h # typedef struct Worker { @@ -48,6 +51,8 @@ $context_name = $projects{$opt_project}->{context}; } + + for my $fn (@ARGV) { next if ($fn !~ /\.cbc$/); getDataGear($fn); @@ -66,6 +71,8 @@ my %codeGear; my $implementation; my $interface; +my %call_interfaces; +my $interface_name_to_header_paths = create_interface_name_to_header_path(); # interface definision # @@ -137,17 +144,12 @@ # use interface my $interfaceHeader = $1; next if ($interfaceHeader =~ /context.h/); - if (-f $interfaceHeader) { - &getDataGear("$interfaceHeader"); - &getCodeGear("$interfaceHeader"); - } else { - if ($filename =~ /([\w\/]+)\/(.+)$/) { - $interfaceHeader = "$1/$interfaceHeader"; - if (-f $interfaceHeader) { - &getDataGear("$interfaceHeader"); - &getCodeGear("$interfaceHeader"); - } - } + $interfaceHeader =~ m|(\w+)\.\w+$|; #remove filename extention + my $interfaceName = $1; + $call_interfaces{$filename}->{$interfaceName} = 1; + if (exists $interface_name_to_header_paths->{$interfaceName}) { + &getDataGear($interface_name_to_header_paths->{$interfaceName}); + &getCodeGear($interface_name_to_header_paths->{$interfaceName}); } } elsif (/^\_\_code (\w+)\((.*)\)(.*)/) { my $codeGearName = $1; @@ -160,6 +162,8 @@ } next; } + + #this scope does parsing of header files # gather type name and type $dataGear{$name} .= $_; if (/^\s*(.*)\s+(\w+);$/ ) { @@ -722,6 +726,21 @@ } } +sub create_interface_name_to_header_path { + my $files = Gears::Util->find_headers_from_path("$FindBin::Bin"); + my $interface_name2headerpath = {}; + + for my $file (@{$files}) { + if ($file =~ m|/(\w+)\.\w+$|) { + my $file_name = $1; + $interface_name2headerpath->{$file_name} = $file; + } + } + + return $interface_name2headerpath; +} + + # end
--- a/src/parallel_execution/tools/static_gen_header.pl Tue Aug 18 08:29:54 2020 +0900 +++ b/src/parallel_execution/tools/static_gen_header.pl Tue Aug 18 16:23:22 2020 +0900 @@ -5,7 +5,7 @@ use Getopt::Long qw/:config posix_default no_ignore_case bundling auto_help/; use Pod::Usage qw/pod2usage/; use Cwd qw/getcwd/; -use File::Path qw/make_path/; +use File::Path qw/make_path/; =head1 DESCRIPTION