Home | History | Annotate | Line # | Download | only in tests
      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