File Coverage

blib/lib/Devel/Monitor/Scalar.pm
Criterion Covered Total %
statement 24 36 66.6
branch 5 10 50.0
condition n/a
subroutine 6 8 75.0
pod 0 1 0.0
total 35 55 63.6


line stmt bran cond sub pod time code
1             package Devel::Monitor::Scalar;
2 1     1   6 use strict;
  1         2  
  1         34  
3 1     1   5 use warnings;
  1         2  
  1         55  
4            
5 1     1   4 use Devel::Monitor::Common qw(:all);
  1         2  
  1         545  
6            
7             our $id = 0;
8            
9             sub TIESCALAR {
10 4     4   6 my ($class, $varRef, $id, $isCode) = @_;
11 4         6 my $self = {};
12 4         9 bless($self => $class);
13 4         14 $self->{Devel::Monitor::Common::F_VAR()} = $$varRef;
14 4 50       11 if ($id) {
15 4         21 $self->{Devel::Monitor::Common::F_ID()} = $id;
16             } else {
17 0         0 $self->{Devel::Monitor::Common::F_ID()} = 'scalar_'.++$id;
18             }
19 4         7 $self->{Devel::Monitor::Common::F_IS_CODE()} = $isCode;
20 4 100       8 if ($isCode) {
21 3         15 Devel::Monitor::Common::printMsg("MONITOR CODE SCALAR : ".$self->{Devel::Monitor::Common::F_ID()}."\n");
22             } else {
23 1         9 Devel::Monitor::Common::printMsg("MONITOR SCALAR : ".$self->{Devel::Monitor::Common::F_ID()}."\n");
24             }
25 4         16 return $self;
26             }
27            
28             sub DESTROY {
29 1     1   31 my $self = shift;
30 1 50       4 if ($self->{Devel::Monitor::Common::F_IS_CODE()}) {
31 0 0       0 Devel::Monitor::Common::printMsg("DESTROY CODE SCALAR : ".$self->{Devel::Monitor::Common::F_ID()}."\n") unless $self->{Devel::Monitor::Common::F_UNMONITORED()};
32             } else {
33 1 50       9 Devel::Monitor::Common::printMsg("DESTROY SCALAR : ".$self->{Devel::Monitor::Common::F_ID()}."\n") unless $self->{Devel::Monitor::Common::F_UNMONITORED()};
34             }
35             }
36            
37             sub unmonitor {
38 0     0 0 0 my ($varRef) = @_;
39 0         0 my $scalarRef;
40             {
41 0         0 my $self = tied $$varRef;
  0         0  
42 0         0 $scalarRef = $self->{Devel::Monitor::Common::F_VAR()};
43 0         0 $self->{Devel::Monitor::Common::F_UNMONITORED()} = 1;
44 0         0 Devel::Monitor::Common::printMsg("UNMONITOR SCALAR : ".$self->{Devel::Monitor::Common::F_ID()}."\n");
45             }
46 0         0 untie $$varRef;
47 0         0 $$varRef = $$scalarRef;
48             }
49            
50             #Copy/Pasted from Tie::StdScalar into Tie::Scalar.pm
51             #Added "->{Devel::Monitor::Common::F_VAR()}"
52 3     3   11 sub FETCH { return $_[0]->{Devel::Monitor::Common::F_VAR()}; }
53             sub STORE {
54 0     0     $_[0]->{Devel::Monitor::Common::F_VAR()} = $_[1];
55             # Should we do this ?
56             # if ($_[1] =~ /HASH/) {
57             # Devel::Monitor::monitor($_[0]->{Devel::Monitor::Common::F_ID()}.'::hash' => \$_[1]);
58             # }
59             # elsif ($_[1] =~ /ARRAY/) {
60             # Devel::Monitor::monitor($_[0]->{Devel::Monitor::Common::F_ID()}.'::array' => \$_[1]);
61             # }
62             }
63            
64             1;