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