|
Packit |
5c3484 |
# GMP module external subroutine type mappings.
|
|
Packit |
5c3484 |
|
|
Packit |
5c3484 |
# Copyright 2001, 2003 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 |
TYPEMAP
|
|
Packit |
5c3484 |
const_string T_PV
|
|
Packit |
5c3484 |
const_string_assume CONST_STRING_ASSUME
|
|
Packit |
5c3484 |
mpz MPZ
|
|
Packit |
5c3484 |
mpq MPQ
|
|
Packit |
5c3484 |
mpf MPF
|
|
Packit |
5c3484 |
mpz_assume MPZ_ASSUME
|
|
Packit |
5c3484 |
mpq_assume MPQ_ASSUME
|
|
Packit |
5c3484 |
mpf_assume MPF_ASSUME
|
|
Packit |
5c3484 |
mpz_coerce MPZ_COERCE
|
|
Packit |
5c3484 |
mpq_coerce MPQ_COERCE
|
|
Packit |
5c3484 |
mpf_coerce_st0 MPF_COERCE_ST0
|
|
Packit |
5c3484 |
mpf_coerce_def MPF_COERCE_DEF
|
|
Packit |
5c3484 |
randstate RANDSTATE
|
|
Packit |
5c3484 |
ulong_coerce ULONG_COERCE
|
|
Packit |
5c3484 |
malloced_string MALLOCED_STRING
|
|
Packit |
5c3484 |
order_noswap ORDER_NOSWAP
|
|
Packit |
5c3484 |
dummy DUMMY
|
|
Packit |
5c3484 |
# perl 5.005 doesn't have UV in its standard typemap, so use this instead
|
|
Packit |
5c3484 |
gmp_UV GMP_UV
|
|
Packit |
5c3484 |
|
|
Packit |
5c3484 |
|
|
Packit |
5c3484 |
INPUT
|
|
Packit |
5c3484 |
MPZ
|
|
Packit |
5c3484 |
class_or_croak ($arg, mpz_class); $var = SvMPZ($arg);
|
|
Packit |
5c3484 |
MPQ
|
|
Packit |
5c3484 |
class_or_croak ($arg, mpq_class); $var = SvMPQ($arg);
|
|
Packit |
5c3484 |
MPF
|
|
Packit |
5c3484 |
class_or_croak ($arg, mpf_class); $var = SvMPF($arg);
|
|
Packit |
5c3484 |
MPZ_ASSUME
|
|
Packit |
5c3484 |
MPZ_ASSUME ($var, $arg)
|
|
Packit |
5c3484 |
MPQ_ASSUME
|
|
Packit |
5c3484 |
MPQ_ASSUME ($var, $arg)
|
|
Packit |
5c3484 |
MPF_ASSUME
|
|
Packit |
5c3484 |
MPF_ASSUME ($var, $arg)
|
|
Packit |
5c3484 |
MPZ_COERCE
|
|
Packit |
5c3484 |
$var = coerce_mpz (tmp_mpz_${(my $stnum=$arg)=~s/[^0-9]//g;\$stnum}, $arg)
|
|
Packit |
5c3484 |
MPQ_COERCE
|
|
Packit |
5c3484 |
$var = coerce_mpq (tmp_mpq_${(my $stnum=$arg)=~s/[^0-9]//g;\$stnum}, $arg)
|
|
Packit |
5c3484 |
MPF_COERCE_ST0
|
|
Packit |
5c3484 |
/* precision follows ST(0) */
|
|
Packit |
5c3484 |
assert (sv_derived_from (ST(0), mpf_class));
|
|
Packit |
5c3484 |
$var = coerce_mpf (tmp_mpf_${(my $stnum=$arg)=~s/[^0-9]//g;\$stnum},
|
|
Packit |
5c3484 |
$arg, mpf_get_prec (SvMPF(ST(0))))
|
|
Packit |
5c3484 |
MPF_COERCE_DEF
|
|
Packit |
5c3484 |
/* default precision used */
|
|
Packit |
5c3484 |
$var = coerce_mpf (tmp_mpf_${(my $stnum=$arg)=~s/[^0-9]//g;\$stnum},
|
|
Packit |
5c3484 |
$arg, mpf_get_default_prec())
|
|
Packit |
5c3484 |
RANDSTATE
|
|
Packit |
5c3484 |
class_or_croak ($arg, rand_class); $var = SvRANDSTATE($arg);
|
|
Packit |
5c3484 |
ULONG_COERCE
|
|
Packit |
5c3484 |
$var = coerce_ulong ($arg)
|
|
Packit |
5c3484 |
ORDER_NOSWAP
|
|
Packit |
5c3484 |
assert ($arg != &PL_sv_yes);
|
|
Packit |
5c3484 |
DUMMY
|
|
Packit |
5c3484 |
/* dummy $var */
|
|
Packit |
5c3484 |
CONST_STRING_ASSUME
|
|
Packit |
5c3484 |
/* No need to check for SvPOKp and use SvPV, this mapping is
|
|
Packit |
5c3484 |
only used for overload_constant, which always gets literal
|
|
Packit |
5c3484 |
strings. */
|
|
Packit |
5c3484 |
assert (SvPOK ($arg));
|
|
Packit |
5c3484 |
$var = SvPVX ($arg);
|
|
Packit |
5c3484 |
|
|
Packit |
5c3484 |
|
|
Packit |
5c3484 |
OUTPUT
|
|
Packit |
5c3484 |
MPZ
|
|
Packit |
5c3484 |
sv_bless (sv_setref_pv ($arg, NULL, $var), mpz_class_hv);
|
|
Packit |
5c3484 |
MPQ
|
|
Packit |
5c3484 |
sv_bless (sv_setref_pv ($arg, NULL, $var), mpq_class_hv);
|
|
Packit |
5c3484 |
MPF
|
|
Packit |
5c3484 |
sv_bless (sv_setref_pv ($arg, NULL, $var), mpf_class_hv);
|
|
Packit |
5c3484 |
RANDSTATE
|
|
Packit |
5c3484 |
sv_setref_pv ($arg, rand_class, $var);
|
|
Packit |
5c3484 |
MALLOCED_STRING
|
|
Packit |
5c3484 |
sv_usepvn_mg ($arg, $var, strlen($var));
|
|
Packit |
5c3484 |
GMP_UV
|
|
Packit |
5c3484 |
sv_setuv ($arg, (UV) ($var));
|