patch@32274 t/op/taint.t not cleaning up properly on VMS.
[p5sagit/p5-mst-13.2.git] / lib / Math / BigFloat / Trace.pm
1 #!/usr/bin/perl -w
2
3 package Math::BigFloat::Trace;
4
5 require 5.005_02;
6 use strict;
7
8 use Exporter;
9 use Math::BigFloat;
10 use vars qw($VERSION @ISA $PACKAGE @EXPORT_OK
11             $accuracy $precision $round_mode $div_scale);
12
13 @ISA = qw(Exporter Math::BigFloat);
14
15 $VERSION = 0.01;
16
17 use overload;   # inherit overload from BigFloat
18
19 # Globals
20 $accuracy = $precision = undef;
21 $round_mode = 'even';
22 $div_scale = 40;
23
24 sub new
25 {
26         my $proto  = shift;
27         my $class  = ref($proto) || $proto;
28
29         my $value       = shift;
30         my $a = $accuracy; $a = $_[0] if defined $_[0];
31         my $p = $precision; $p = $_[1] if defined $_[1];
32         my $self = Math::BigFloat->new($value,$a,$p,$round_mode);
33
34 #       remember, downgrading may return a BigInt, so don't meddle with class   
35 #       bless $self,$class;
36
37         print "MBF new '$value' => '$self' (",ref($self),")";
38         return $self;
39 }
40
41 sub import
42   {
43   print "MBF import ",join(' ',@_);
44   my $self = shift;
45
46   # we catch the constants, the rest goes go BigFloat
47   my @a = ();
48   foreach (@_)
49     {
50     push @a, $_ if $_ ne ':constant';
51     }
52   overload::constant float => sub { $self->new(shift); }; 
53
54   Math::BigFloat->import(@a);           # need it for subclasses
55 #  $self->export_to_level(1,$self,@_);          # need this ?
56   }
57
58 1;