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