File Coverage

blib/lib/P5NCI/Library.pm
Criterion Covered Total %
statement 29 37 78.3
branch 10 10 100.0
condition 0 2 0.0
subroutine 8 10 80.0
pod 4 4 100.0
total 51 63 80.9


line stmt bran cond sub pod time code
1             package P5NCI::Library;
2              
3 3     3   1757 use strict;
  3         5  
  3         148  
4 3     3   18 use warnings;
  3         5  
  3         2985  
5              
6 3     3   1780 use P5NCI;
  3         12  
  3         96  
7              
8 3     3   19 use vars '$VERSION';
  3         7  
  3         136  
9             $VERSION = '0.31';
10              
11 3     3   14 use Carp 'croak';
  3         5  
  3         1024  
12              
13             sub new
14             {
15 5     5 1 4615 my ($self, %args) = @_;
16              
17 5 100       27 P5NCI::add_path( $args{path} ) if $args{path};
18              
19 5 100       39 croak "No library given\n" unless $args{library};
20 4         8012 my $libpath = P5NCI::find_lib( $args{library} );
21              
22 4 100       46 croak "No library found\n" unless $libpath;
23              
24 3         428 my $library = P5NCI::load_lib( $libpath );
25 3         109 bless { %args, lib => $library }, $self;
26             }
27              
28             sub package
29             {
30 0     0 1 0 my $self = shift;
31 0   0     0 $self->{package} ||= 'main';
32             }
33              
34             sub load_function
35             {
36 6     6 1 6197 my ($self, $function, $signature) = @_;
37              
38 6 100       44 croak "No function given\n" unless $function;
39 5 100       27 croak "No signature given\n" unless $signature;
40              
41 4         27 return P5NCI::load_func( $self->{lib}, $function, $signature );
42             }
43              
44             sub install_function
45             {
46 0     0 1   my ($self, $name, $sig) = @_;
47 0           my $function = $self->load_function( $name, $sig);
48 0           my $package = $self->package();
49              
50 3     3   20 no strict 'refs';
  3         5  
  3         199  
51 0           *{ $package . '::' . $name } = $function;
  0            
52 0           return $function;
53              
54             }
55              
56             1;
57             __END__