changeset 181:f9df567f7f2d

tweak_gen_context.pl
author anatofuz
date Mon, 20 Jan 2020 16:44:55 +0900
parents 2842d9e65751
children f431400da994
files src/gearsTools/generate_context.pl src/gearsTools/lib/Gears/Context.pm
diffstat 2 files changed, 16 insertions(+), 25 deletions(-) [+]
line wrap: on
line diff
--- a/src/gearsTools/generate_context.pl	Mon Jan 20 11:24:39 2020 +0900
+++ b/src/gearsTools/generate_context.pl	Mon Jan 20 16:44:55 2020 +0900
@@ -77,13 +77,13 @@
 
   my $output     = $opt_w ? "context.h" : "stdout";
 
+  use Data::Dumper;
   my @cbc_files;
   map { push(@cbc_files,File::Spec->rel2abs($_)); }  @ARGV;
   my $gears      = Gears::Context->new(compile_sources => \@cbc_files, find_root => "$FindBin::Bin/../", output => $output);
   my $data_gears = $gears->extraction_dg_compile_sources();
-  my $g          = $gears->set_data_gear_header_path();
+  my $g          = $gears->set_data_gear_header_path(keys %{$data_gears->{impl}},keys %{$data_gears->{interfaces}});
 
-  #use DDP {deparse =>1};
   my $dg2path    = $gears->update_dg_each_header_path($data_gears,$g);
   my $tree = $gears->createImplTree_from_header($dg2path);
   $gears->tree2create_context_h($tree);
--- a/src/gearsTools/lib/Gears/Context.pm	Mon Jan 20 11:24:39 2020 +0900
+++ b/src/gearsTools/lib/Gears/Context.pm	Mon Jan 20 16:44:55 2020 +0900
@@ -31,13 +31,11 @@
     open my $fh , '<', $cbc_file;
     while (my $line = <$fh>) {
         if ($line =~ m|//\s*:skip|) {
-         print "ddddddddd\n";
          next;
         }
 
        if ($line =~ /#interface\s*"(.*)\.h"/ || $line =~ /^\/\/\s*data_gear\s*"(.*)\.(?:h|dg)?"/) {
-          push(@{$counter{interfaces}->{$1}},$.);
-          push(@{$self->{data_gears_with_count}->{$1}->{caller}->{$cbc_file}},$.);
+          push(@{$counter{interfaces}->{$1}->{$cbc_file}},$.);
           next;
        }
 
@@ -59,37 +57,32 @@
 
        if ($line =~ /Gearef\(context,\s*(\w+)\)/) {
           my $implementation = $1;
-          push(@{$counter{impl}->{$implementation}},$.);
-          push(@{$self->{data_gears_with_count}->{$implementation}->{caller}->{$cbc_file}},$.);
+          push(@{$counter{impl}->{$implementation}->{$cbc_file}},$.);
           next;
        }
 
     #Element* element = &ALLOCATE(cbc_context, Element)->Element;
        if ($line =~ /ALLOCATE\w*\((?:cbc_)?context,\s*(\w+)\)/) {
           my $implementation = $1;
-          push(@{$counter{impl}->{$implementation}},$.);
-          push(@{$self->{data_gears_with_count}->{$implementation}->{caller}->{$cbc_file}},$.);
+          push(@{$counter{impl}->{$implementation}->{$cbc_file}},$.);
           next;
        }
 
        if ($line =~ /ALLOCATE_(?:PTR_)?ARRAY\((?:cbc_)?context,\s*(\w+),[\s\w]+\)/) {
           my $implementation = $1;
-          push(@{$counter{impl}->{$implementation}},$.);
-          push(@{$self->{data_gears_with_count}->{$implementation}->{caller}->{$cbc_file}},$.);
+          push(@{$counter{impl}->{$implementation}->{$cbc_file}},$.);
           next;
        }
 
        if ($line =~ /new\s+(\w+?)\([\w\s]*\);/) {
           my $implementation = $1;
-          push(@{$counter{impl}->{$implementation}},$.);
-          push(@{$self->{data_gears_with_count}->{$implementation}->{caller}->{$cbc_file}},$.);
+          push(@{$counter{impl}->{$implementation}->{$cbc_file}},$.);
           next;
        }
 
        if ($line =~ /ALLOCATE_DATA_GEAR\((\w+),\s*(\w+)\)/) {
           my $implementation = $2;
-          push(@{$counter{impl}->{$implementation}},$.);
-          push(@{$self->{data_gears_with_count}->{$implementation}->{caller}->{$cbc_file}},$.);
+          push(@{$counter{impl}->{$implementation}->{$cbc_file}},$.);
           next;
        }
 
@@ -97,18 +90,16 @@
        if ($line =~ /\((\w+)\*\)GearImpl\(context,\s*(\w+),\s*(\w+)\)/) {
           my $interface = $2;
           my $implementation = $1;
-          push(@{$counter{impl}->{$implementation}},$.);
-          push(@{$counter{interfaces}->{$interface}},$.);
-          push(@{$self->{data_gears_with_count}->{$interface}->{caller}->{$cbc_file}},$.);
+          push(@{$counter{impl}->{$implementation}->{$cbc_file}},$.);
+          push(@{$counter{interfaces}->{$interface}->{$cbc_file}},$.);
           next;
        }
 
        if ($line =~ /^__code/) {
          while ($line =~ /struct (\w+)\s*\*/g) {
            next if $1 eq "Context";
-           push(@{$self->{data_gears_with_count}->{$1}->{caller}->{$cbc_file}},$.);
            next if (exists $counter{interfaces}->{$1});
-           $counter{impl}->{$1}++;
+           push(@{$counter{impl}->{$1}->{$cbc_file}},$.);
          }
        }
     }
@@ -118,17 +109,17 @@
   $counter{interfaces}->{TaskManager}++;
   $self->{data_gears_with_count}->{Meta}++;
   $self->{data_gears_with_count}->{TaskManager}++;
+  use Data::Dumper;
+  print "-----------\n";
+  print Dumper \%counter;
+  print "-----------\n";
   return \%counter;
 }
 
 sub set_data_gear_header_path {
   my $self = shift;
   my @data_gears_name;
-  if (@_) {
-    @data_gears_name = @_;
-  } else {
-    map { push (@data_gears_name,$_) if $_ ne "Context" } keys %{$self->{data_gears_with_count}};
-  }
+  map { push (@data_gears_name,$_) if $_ ne "Context" } @_;
   return _find_headers($self->{find_root},\@data_gears_name);
 }