diff options
author | 2017-02-05 00:31:51 +0000 | |
---|---|---|
committer | 2017-02-05 00:31:51 +0000 | |
commit | b8851fcc53cbe24fd20b090f26dd149e353f6174 (patch) | |
tree | 4b7c1695865f00ab7a0da30b5632d514848ea3a2 /gnu/usr.bin/perl/cpan/Math-BigInt/t/Math/BigInt/Subclass.pm | |
parent | Add option PCIVERBOSE. (diff) | |
download | wireguard-openbsd-b8851fcc53cbe24fd20b090f26dd149e353f6174.tar.xz wireguard-openbsd-b8851fcc53cbe24fd20b090f26dd149e353f6174.zip |
Fix merge issues, remove excess files - match perl-5.24.1 dist
Diffstat (limited to 'gnu/usr.bin/perl/cpan/Math-BigInt/t/Math/BigInt/Subclass.pm')
-rw-r--r-- | gnu/usr.bin/perl/cpan/Math-BigInt/t/Math/BigInt/Subclass.pm | 90 |
1 files changed, 90 insertions, 0 deletions
diff --git a/gnu/usr.bin/perl/cpan/Math-BigInt/t/Math/BigInt/Subclass.pm b/gnu/usr.bin/perl/cpan/Math-BigInt/t/Math/BigInt/Subclass.pm new file mode 100644 index 00000000000..8876a83a089 --- /dev/null +++ b/gnu/usr.bin/perl/cpan/Math-BigInt/t/Math/BigInt/Subclass.pm @@ -0,0 +1,90 @@ +#!perl + +package Math::BigInt::Subclass; + +require 5.005_02; + +use strict; +use warnings; + +use Exporter; +use Math::BigInt 1.64; + +# $lib is for the "lib => " test +our $lib; +our ($accuracy, $precision, $round_mode, $div_scale); + +our @ISA = qw(Exporter Math::BigInt); +our @EXPORT_OK = qw(bgcd objectify); + +our $VERSION = "0.05"; + +use overload; # inherit overload from BigInt + +# Globals +$accuracy = $precision = undef; +$round_mode = 'even'; +$div_scale = 40; +$lib = ''; + +sub new { + my $proto = shift; + my $class = ref($proto) || $proto; + + my $value = shift; + my $a = $accuracy; $a = $_[0] if defined $_[0]; + my $p = $precision; $p = $_[1] if defined $_[1]; + my $self = Math::BigInt->new($value, $a, $p, $round_mode); + bless $self, $class; + $self->{'_custom'} = 1; # make sure this never goes away + return $self; +} + +sub bgcd { + Math::BigInt::bgcd(@_); +} + +sub blcm { + Math::BigInt::blcm(@_); +} + +sub as_int { + Math::BigInt->new($_[0]); +} + +BEGIN { + *objectify = \&Math::BigInt::objectify; + + # these are called by AUTOLOAD from BigFloat, so we need at least these. + # We cheat, of course.. + *bneg = \&Math::BigInt::bneg; + *babs = \&Math::BigInt::babs; + *bnan = \&Math::BigInt::bnan; + *binf = \&Math::BigInt::binf; + *bzero = \&Math::BigInt::bzero; + *bone = \&Math::BigInt::bone; +} + +sub import { + my $self = shift; + + my @a; + my $t = 0; + foreach (@_) { + # remove the "lib => foo" parameters and store it + if ($t == 1) { + $lib = $_; + $t = 0; + next; + } + if ($_ eq 'lib') { + $t = 1; + next; + } + push @a, $_; + } + $self->SUPER::import(@a); # need it for subclasses + $self->export_to_level(1, $self, @a); # need this ? +} + +1; |