Annotation of OpenXM_contrib/gmp/demos/perl/GMP/Mpq.pm, Revision 1.1.1.1
1.1 ohara 1: # GMP mpq module.
2:
3: # Copyright 2001 Free Software Foundation, Inc.
4: #
5: # This file is part of the GNU MP Library.
6: #
7: # The GNU MP Library is free software; you can redistribute it and/or modify
8: # it under the terms of the GNU Lesser General Public License as published
9: # by the Free Software Foundation; either version 2.1 of the License, or (at
10: # your option) any later version.
11: #
12: # The GNU MP Library is distributed in the hope that it will be useful, but
13: # WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
14: # or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
15: # License for more details.
16: #
17: # You should have received a copy of the GNU Lesser General Public License
18: # along with the GNU MP Library; see the file COPYING.LIB. If not, write to
19: # the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
20: # MA 02111-1307, USA.
21:
22:
23: package GMP::Mpq;
24:
25: require GMP;
26: require Exporter;
27: @ISA = qw(GMP Exporter);
28: @EXPORT = qw();
29: @EXPORT_OK = qw();
30: %EXPORT_TAGS = ('all' => [qw(canonicalize den inv mpq num)],
31: 'constants' => [@EXPORT],
32: 'noconstants' => [@EXPORT] );
33: Exporter::export_ok_tags('all');
34:
35: use overload
36: '+' => \&overload_add, '+=' => \&overload_addeq,
37: '-' => \&overload_sub, '-=' => \&overload_subeq,
38: '*' => \&overload_mul, '*=' => \&overload_muleq,
39: '/' => \&overload_div, '/=' => \&overload_diveq,
40: '**' => \&overload_pow, '**=' => \&overload_poweq,
41: '<<' => \&overload_lshift, '<<=' => \&overload_lshifteq,
42: '>>' => \&overload_rshift, '>>=' => \&overload_rshifteq,
43:
44: 'bool' => \&overload_bool,
45: 'not' => \&overload_not,
46: '!' => \&overload_not,
47: '==' => \&overload_eq,
48: '!=' => \&overload_ne,
49: '<=>' => \&overload_spaceship,
50: '++' => \&overload_inc,
51: '--' => \&overload_dec,
52: 'abs' => \&overload_abs,
53: 'neg' => \&overload_neg,
54: '=' => \&overload_copy,
55: '""' => \&overload_string;
56:
57: my $constants = { };
58:
59: sub import {
60: foreach (@_) {
61: if ($_ eq ':constants') {
62: overload::constant ('integer' => \&overload_constant,
63: 'binary' => \&overload_constant,
64: 'float' => \&overload_constant);
65: } elsif ($_ eq ':noconstants') {
66: overload::remove_constant ('integer' => \&overload_constant,
67: 'binary' => \&overload_constant,
68: 'float' => \&overload_constant);
69: }
70: }
71: goto &Exporter::import;
72: }
73:
74: 1;
75: __END__
76:
77:
78: # Local variables:
79: # perl-indent-level: 2
80: # End:
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>