~ubuntu-branches/ubuntu/quantal/gclcvs/quantal

« back to all changes in this revision

Viewing changes to gmp3/demos/perl/GMP/Mpq.pm

  • Committer: Bazaar Package Importer
  • Author(s): Camm Maguire
  • Date: 2004-06-24 15:13:46 UTC
  • Revision ID: james.westby@ubuntu.com-20040624151346-xh0xaaktyyp7aorc
Tags: 2.7.0-26
C_GC_OFFSET is 2 on m68k-linux

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
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: