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