File Coverage

blib/lib/ExtUtils/Typemaps/TimeSpec.pm
Criterion Covered Total %
statement 9 13 69.2
branch n/a
condition n/a
subroutine 3 4 75.0
pod 1 1 100.0
total 13 18 72.2


line stmt bran cond sub pod time code
1             package ExtUtils::Typemaps::TimeSpec;
2             $ExtUtils::Typemaps::TimeSpec::VERSION = '0.009';
3 2     2   209906 use strict;
  2         4  
  2         113  
4 2     2   14 use warnings;
  2         5  
  2         153  
5              
6 2     2   19 use parent 'ExtUtils::Typemaps';
  2         4  
  2         16  
7              
8             sub new {
9 0     0 1   my $class = shift;
10 0           my $self = $class->SUPER::new(@_);
11              
12 0           $self->add_string(string => <<'END');
13             TYPEMAP
14             struct timespec T_TIMESPEC
15              
16             INPUT
17             T_TIMESPEC
18             if (SvROK($arg) && sv_derived_from($arg, \"Time::Spec\")) {
19             $var = *(struct timespec*)SvPV_nolen(SvRV($arg));
20             } else {
21             NV input = SvNV($arg);
22             $var.tv_sec = (time_t) floor(input);
23             $var.tv_nsec = (long) ((input - $var.tv_sec) * 1000000000);
24             }
25              
26             OUTPUT
27             T_TIMESPEC
28             sv_setnv($arg, $var.tv_sec + $var.tv_nsec / 1000000000.0);
29             END
30              
31 0           return $self;
32             }
33              
34             1;
35              
36             #ABSTRACT: A typemap for dealing with struct timespec
37              
38             __END__