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