1 1.1 mrg /* clear_parameters -- Deallocate memory for function parameters. 2 1.1 mrg 3 1.1 mrg Copyright (C) 2012, 2013, 2014 INRIA 4 1.1 mrg 5 1.1 mrg This file is part of GNU MPC. 6 1.1 mrg 7 1.1 mrg GNU MPC is free software; you can redistribute it and/or modify it under 8 1.1 mrg the terms of the GNU Lesser General Public License as published by the 9 1.1 mrg Free Software Foundation; either version 3 of the License, or (at your 10 1.1 mrg option) any later version. 11 1.1 mrg 12 1.1 mrg GNU MPC is distributed in the hope that it will be useful, but WITHOUT ANY 13 1.1 mrg WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS 14 1.1 mrg FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for 15 1.1 mrg more details. 16 1.1 mrg 17 1.1 mrg You should have received a copy of the GNU Lesser General Public License 18 1.1 mrg along with this program. If not, see http://www.gnu.org/licenses/ . 19 1.1 mrg */ 20 1.1 mrg 21 1.1 mrg #include "mpc-tests.h" 22 1.1 mrg 23 1.1 mrg static void 24 1.1 mrg clear_param (mpc_operand_t* p, mpc_param_t t) 25 1.1 mrg { 26 1.1 mrg switch (t) 27 1.1 mrg { 28 1.1 mrg case NATIVE_INT: 29 1.1 mrg case NATIVE_UL: 30 1.1 mrg case NATIVE_L: 31 1.1 mrg case NATIVE_D: 32 1.1 mrg break; 33 1.1 mrg 34 1.1 mrg case GMP_Z: 35 1.1 mrg mpz_clear (p->mpz); 36 1.1 mrg break; 37 1.1 mrg case GMP_Q: 38 1.1 mrg mpq_clear (p->mpq); 39 1.1 mrg break; 40 1.1 mrg case GMP_F: 41 1.1 mrg mpf_clear (p->mpf); 42 1.1 mrg break; 43 1.1 mrg 44 1.1 mrg case MPFR_INEX: 45 1.1 mrg break; 46 1.1 mrg case MPFR: 47 1.1 mrg mpfr_clear (p->mpfr); 48 1.1 mrg break; 49 1.1 mrg 50 1.1 mrg case MPC_INEX: 51 1.1 mrg case MPCC_INEX: 52 1.1 mrg break; 53 1.1 mrg case MPC: 54 1.1 mrg mpc_clear (p->mpc); 55 1.1 mrg break; 56 1.1 mrg 57 1.1 mrg case MPFR_RND: 58 1.1 mrg case MPC_RND: 59 1.1 mrg break; 60 1.1 mrg 61 1.1 mrg default: 62 1.1 mrg fprintf (stderr, "clear_parameters: unsupported type.\n"); 63 1.1 mrg exit (1); 64 1.1 mrg } 65 1.1 mrg } 66 1.1 mrg 67 1.1 mrg void 68 1.1 mrg clear_parameters (mpc_fun_param_t *params) 69 1.1 mrg { 70 1.1 mrg int in, out; 71 1.1 mrg int total = params->nbout + params->nbin; 72 1.1 mrg 73 1.1 mrg free (params->name); 74 1.1 mrg for (out = 0; out < params->nbout; out++) 75 1.1 mrg { 76 1.1 mrg clear_param (&(params->P[out]), params->T[out]); 77 1.1 mrg clear_param (&(params->P[total + out]), params->T[out]); 78 1.1 mrg } 79 1.1 mrg 80 1.1 mrg for (in = params->nbout; in < total; in++) 81 1.1 mrg { 82 1.1 mrg clear_param (&(params->P[in]), params->T[in]); 83 1.1 mrg } 84 1.1 mrg } 85