# GMP module external subroutine type mappings. # Copyright 2001 Free Software Foundation, Inc. # # This file is part of the GNU MP Library. # # The GNU MP Library is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published # by the Free Software Foundation; either version 2.1 of the License, or (at # your option) any later version. # # The GNU MP Library is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY # or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public # License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with the GNU MP Library; see the file COPYING.LIB. If not, write to # the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, # MA 02111-1307, USA. TYPEMAP const_string T_PV const_string_assume CONST_STRING_ASSUME mpz MPZ mpq MPQ mpf MPF mpz_assume MPZ_ASSUME mpq_assume MPQ_ASSUME mpf_assume MPF_ASSUME mpz_coerce MPZ_COERCE mpq_coerce MPQ_COERCE mpf_coerce_st0 MPF_COERCE_ST0 mpf_coerce_def MPF_COERCE_DEF mpz_mutate MPZ_MUTATE randstate RANDSTATE ulong_coerce ULONG_COERCE malloced_string MALLOCED_STRING order_noswap ORDER_NOSWAP dummy DUMMY INPUT MPZ class_or_croak ($arg, mpz_class); $var = SvMPZ($arg); MPQ class_or_croak ($arg, mpq_class); $var = SvMPQ($arg); MPF class_or_croak ($arg, mpf_class); $var = SvMPF($arg); MPZ_ASSUME MPZ_ASSUME ($var, $arg) MPQ_ASSUME MPQ_ASSUME ($var, $arg) MPF_ASSUME MPF_ASSUME ($var, $arg) MPZ_COERCE $var = coerce_mpz (tmp_mpz_${(my $stnum=$arg)=~s/[^0-9]//g;\$stnum}, $arg) MPQ_COERCE $var = coerce_mpq (tmp_mpq_${(my $stnum=$arg)=~s/[^0-9]//g;\$stnum}, $arg) MPF_COERCE_ST0 /* precision follows ST(0) */ assert (sv_derived_from (ST(0), mpf_class)); $var = coerce_mpf (tmp_mpf_${(my $stnum=$arg)=~s/[^0-9]//g;\$stnum}, $arg, mpf_get_prec (SvMPF(ST(0)))) MPF_COERCE_DEF /* default precision used */ $var = coerce_mpf (tmp_mpf_${(my $stnum=$arg)=~s/[^0-9]//g;\$stnum}, $arg, mpf_get_default_prec()) MPZ_MUTATE $var = mutate_mpz ($arg) RANDSTATE class_or_croak ($arg, rand_class); $var = SvRANDSTATE($arg); ULONG_COERCE $var = coerce_ulong ($arg) ORDER_NOSWAP assert ($arg != &PL_sv_yes); DUMMY /* dummy $var */ CONST_STRING_ASSUME /* No need to check for SvPOKp and use SvPV, this mapping is only used for overload_constant, which always gets literal strings. */ assert (SvPOK ($arg)); $var = SvPVX ($arg); OUTPUT MPZ sv_setref_pv ($arg, mpz_class, $var); MPQ sv_setref_pv ($arg, mpq_class, $var); MPF sv_setref_pv ($arg, mpf_class, $var); MPZ_ASSUME sv_setref_pv ($arg, mpz_class, $var); MPQ_ASSUME sv_setref_pv ($arg, mpq_class, $var); MPF_ASSUME sv_setref_pv ($arg, mpf_class, $var); RANDSTATE sv_setref_pv ($arg, rand_class, $var); MALLOCED_STRING sv_usepvn_mg ($arg, $var, strlen($var));