summaryrefslogtreecommitdiffstats
path: root/gnu/usr.bin/perl/cpan/Math-BigInt/t/Math/BigInt/Subclass.pm
diff options
context:
space:
mode:
authorafresh1 <afresh1@openbsd.org>2017-02-05 00:31:51 +0000
committerafresh1 <afresh1@openbsd.org>2017-02-05 00:31:51 +0000
commitb8851fcc53cbe24fd20b090f26dd149e353f6174 (patch)
tree4b7c1695865f00ab7a0da30b5632d514848ea3a2 /gnu/usr.bin/perl/cpan/Math-BigInt/t/Math/BigInt/Subclass.pm
parentAdd option PCIVERBOSE. (diff)
downloadwireguard-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.pm90
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;