Blame demos/perl/GMP/Mpq.pm

Packit 5c3484
# GMP mpq module.
Packit 5c3484
Packit 5c3484
# Copyright 2001 Free Software Foundation, Inc.
Packit 5c3484
#
Packit 5c3484
#  This file is part of the GNU MP Library.
Packit 5c3484
#
Packit 5c3484
#  The GNU MP Library is free software; you can redistribute it and/or modify
Packit 5c3484
#  it under the terms of either:
Packit 5c3484
#
Packit 5c3484
#    * the GNU Lesser General Public License as published by the Free
Packit 5c3484
#      Software Foundation; either version 3 of the License, or (at your
Packit 5c3484
#      option) any later version.
Packit 5c3484
#
Packit 5c3484
#  or
Packit 5c3484
#
Packit 5c3484
#    * the GNU General Public License as published by the Free Software
Packit 5c3484
#      Foundation; either version 2 of the License, or (at your option) any
Packit 5c3484
#      later version.
Packit 5c3484
#
Packit 5c3484
#  or both in parallel, as here.
Packit 5c3484
#
Packit 5c3484
#  The GNU MP Library is distributed in the hope that it will be useful, but
Packit 5c3484
#  WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
Packit 5c3484
#  or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
Packit 5c3484
#  for more details.
Packit 5c3484
#
Packit 5c3484
#  You should have received copies of the GNU General Public License and the
Packit 5c3484
#  GNU Lesser General Public License along with the GNU MP Library.  If not,
Packit 5c3484
#  see https://www.gnu.org/licenses/.
Packit 5c3484
Packit 5c3484
Packit 5c3484
package GMP::Mpq;
Packit 5c3484
Packit 5c3484
require GMP;
Packit 5c3484
require Exporter;
Packit 5c3484
@ISA = qw(GMP Exporter);
Packit 5c3484
@EXPORT = qw();
Packit 5c3484
@EXPORT_OK = qw();
Packit 5c3484
%EXPORT_TAGS = ('all' => [qw(canonicalize den inv mpq num)],
Packit 5c3484
		'constants'   => [@EXPORT],
Packit 5c3484
		'noconstants' => [@EXPORT] );
Packit 5c3484
Exporter::export_ok_tags('all');
Packit 5c3484
Packit 5c3484
use overload
Packit 5c3484
    '+'   => \&overload_add,     '+='  => \&overload_addeq,
Packit 5c3484
    '-'   => \&overload_sub,     '-='  => \&overload_subeq,
Packit 5c3484
    '*'   => \&overload_mul,     '*='  => \&overload_muleq,
Packit 5c3484
    '/'   => \&overload_div,     '/='  => \&overload_diveq,
Packit 5c3484
    '**'  => \&overload_pow,     '**=' => \&overload_poweq,
Packit 5c3484
    '<<'  => \&overload_lshift,  '<<=' => \&overload_lshifteq,
Packit 5c3484
    '>>'  => \&overload_rshift,  '>>=' => \&overload_rshifteq,
Packit 5c3484
Packit 5c3484
    'bool' => \&overload_bool,
Packit 5c3484
    'not'  => \&overload_not,
Packit 5c3484
    '!'    => \&overload_not,
Packit 5c3484
    '=='   => \&overload_eq,
Packit 5c3484
    '!='   => \&overload_ne,
Packit 5c3484
    '<=>'  => \&overload_spaceship,
Packit 5c3484
    '++'   => \&overload_inc,
Packit 5c3484
    '--'   => \&overload_dec,
Packit 5c3484
    'abs'  => \&overload_abs,
Packit 5c3484
    'neg'  => \&overload_neg,
Packit 5c3484
    '='    => \&overload_copy,
Packit 5c3484
    '""'   => \&overload_string;
Packit 5c3484
Packit 5c3484
my $constants = { };
Packit 5c3484
Packit 5c3484
sub import {
Packit 5c3484
  foreach (@_) {
Packit 5c3484
    if ($_ eq ':constants') {
Packit 5c3484
      overload::constant ('integer' => \&overload_constant,
Packit 5c3484
			  'binary'  => \&overload_constant,
Packit 5c3484
			  'float'   => \&overload_constant);
Packit 5c3484
    } elsif ($_ eq ':noconstants') {
Packit 5c3484
      overload::remove_constant ('integer' => \&overload_constant,
Packit 5c3484
				 'binary'  => \&overload_constant,
Packit 5c3484
				 'float'   => \&overload_constant);
Packit 5c3484
    }
Packit 5c3484
  }
Packit 5c3484
  goto &Exporter::import;
Packit 5c3484
}
Packit 5c3484
Packit 5c3484
1;
Packit 5c3484
__END__
Packit 5c3484
Packit 5c3484
Packit 5c3484
# Local variables:
Packit 5c3484
# perl-indent-level: 2
Packit 5c3484
# End: