xref: /openbsd-src/gnu/usr.bin/perl/cpan/Math-BigInt/t/Math/BigFloat/Subclass.pm (revision 3d61058aa5c692477b6d18acfbbdb653a9930ff9)
1eac174f2Safresh1# -*- mode: perl; -*-
2b8851fccSafresh1
3*3d61058aSafresh1# test subclassing Math::BigFloat
4b8851fccSafresh1
5b8851fccSafresh1package Math::BigFloat::Subclass;
6b8851fccSafresh1
7b8851fccSafresh1use strict;
8b8851fccSafresh1use warnings;
9b8851fccSafresh1
10eac174f2Safresh1use Math::BigFloat;
11b8851fccSafresh1
12*3d61058aSafresh1our @ISA = qw(Math::BigFloat);
13b8851fccSafresh1
14*3d61058aSafresh1our $VERSION = "0.09";
15b8851fccSafresh1
16*3d61058aSafresh1use overload;                   # inherit overload
17b8851fccSafresh1
18*3d61058aSafresh1# Global variables. The values can be specified explicitly or obtained from the
19*3d61058aSafresh1# superclass.
20*3d61058aSafresh1
21*3d61058aSafresh1our $accuracy   = undef;        # or Math::BigFloat::Subclass -> accuracy();
22*3d61058aSafresh1our $precision  = undef;        # or Math::BigFloat::Subclass -> precision();
23*3d61058aSafresh1our $round_mode = "even";       # or Math::BigFloat::Subclass -> round_mode();
24*3d61058aSafresh1our $div_scale  = 40;           # or Math::BigFloat::Subclass -> div_scale();
25*3d61058aSafresh1
26*3d61058aSafresh1BEGIN {
27*3d61058aSafresh1    *objectify = \&Math::BigInt::objectify;
28*3d61058aSafresh1}
29*3d61058aSafresh1
30*3d61058aSafresh1# We override new()
31b8851fccSafresh1
32b8851fccSafresh1sub new {
33b8851fccSafresh1    my $proto = shift;
34b8851fccSafresh1    my $class = ref($proto) || $proto;
35b8851fccSafresh1
36*3d61058aSafresh1    my $self = $class -> SUPER::new(@_);
37*3d61058aSafresh1    $self->{'_custom'} = 1;     # attribute specific to this subclass
38b8851fccSafresh1    bless $self, $class;
39b8851fccSafresh1}
40b8851fccSafresh1
41*3d61058aSafresh1# Any other methods to override can go here:
42*3d61058aSafresh1
43*3d61058aSafresh1# sub method {
44*3d61058aSafresh1#     ...
45*3d61058aSafresh1# }
46b8851fccSafresh1
47b8851fccSafresh11;
48