view src/parallel_execution/lib/Gears/Context.pm @ 572:3c35bcb82f08

mv Gears.pm to Gears/Context.pm
author anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
date Sun, 24 Nov 2019 22:59:13 +0900
parents src/parallel_execution/lib/Gears.pm@840597c5d242
children 5f4b7ff18a34
line wrap: on
line source

package Gears::Context;

use strict;
use warnings;

use Gears::Util;
use DDP {deparse => 1};

sub new {
  my ($class, %args) = @_;
  p %args;

  my $self = {
    interfaces => [],
    data_gears_with_count => {},
  };

  if ($args{compile_sources}) {
    $self->{compile_sources} = $args{compile_sources};
    map { Gears::Util->file_checking($_); } @{$self->{compile_sources}};
  }
  return bless $self, $class;
}

sub extraction_dg_compile_sources {
  my $self = shift;
  map { $self->extraction_data_gears($_) } @{$self->{compile_sources}};
}

sub extraction_data_gears {
  my ($self, $cbc_file)  = @_;
  open my $fh , '<', $cbc_file;
  while (my $line = <$fh>) {
     if ($line =~ /#interface\s*"(.*)\.h"/) {
        $self->{data_gears_with_count}->{$1}->{caller}->{$cbc_file}++;
        push(@{$self->{interfaces}}, "$1.h");
        next;
     }

     if ($line =~ /__code/) {
       while ($line =~ /struct (\w+)*/g) {
         $self->{data_gears_with_count}->{$1}->{caller}->{$cbc_file}++;
       }
     }
  }
  close $fh;
}

sub search_data_gears {
  my $self = shift;
  my @data_gears_name;
  if (@_) {
    @data_gears_name = @_;
  } else {
    @data_gears_name = keys %{$self->{data_gears_with_count}};
  }
  #my @data_gears_name =  keys %{$self->{data_gears_with_count}};
  p @data_gears_name;
}


1;