| Chris@10 | 1 /* | 
| Chris@10 | 2  * Copyright (c) 2003, 2007-11 Matteo Frigo | 
| Chris@10 | 3  * Copyright (c) 2003, 2007-11 Massachusetts Institute of Technology | 
| Chris@10 | 4  * | 
| Chris@10 | 5  * This program is free software; you can redistribute it and/or modify | 
| Chris@10 | 6  * it under the terms of the GNU General Public License as published by | 
| Chris@10 | 7  * the Free Software Foundation; either version 2 of the License, or | 
| Chris@10 | 8  * (at your option) any later version. | 
| Chris@10 | 9  * | 
| Chris@10 | 10  * This program is distributed in the hope that it will be useful, | 
| Chris@10 | 11  * but WITHOUT ANY WARRANTY; without even the implied warranty of | 
| Chris@10 | 12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | 
| Chris@10 | 13  * GNU General Public License for more details. | 
| Chris@10 | 14  * | 
| Chris@10 | 15  * You should have received a copy of the GNU General Public License | 
| Chris@10 | 16  * along with this program; if not, write to the Free Software | 
| Chris@10 | 17  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA | 
| Chris@10 | 18  * | 
| Chris@10 | 19  */ | 
| Chris@10 | 20 | 
| Chris@10 | 21 #include "api.h" | 
| Chris@10 | 22 | 
| Chris@10 | 23 | 
| Chris@10 | 24 void *X(malloc)(size_t n) | 
| Chris@10 | 25 { | 
| Chris@10 | 26      return X(kernel_malloc)(n); | 
| Chris@10 | 27 } | 
| Chris@10 | 28 | 
| Chris@10 | 29 void X(free)(void *p) | 
| Chris@10 | 30 { | 
| Chris@10 | 31      X(kernel_free)(p); | 
| Chris@10 | 32 } | 
| Chris@10 | 33 | 
| Chris@10 | 34 /* The following two routines are mainly for the convenience of | 
| Chris@10 | 35    the Fortran 2003 API, although C users may find them convienent | 
| Chris@10 | 36    as well.  The problem is that, although Fortran 2003 has a | 
| Chris@10 | 37    c_sizeof intrinsic that is equivalent to sizeof, it is broken | 
| Chris@10 | 38    in some gfortran versions, and in any case is a bit unnatural | 
| Chris@10 | 39    in a Fortran context.  So we provide routines to allocate real | 
| Chris@10 | 40    and complex arrays, which are all that are really needed by FFTW. */ | 
| Chris@10 | 41 | 
| Chris@10 | 42 R *X(alloc_real)(size_t n) | 
| Chris@10 | 43 { | 
| Chris@10 | 44      return (R *) X(malloc)(sizeof(R) * n); | 
| Chris@10 | 45 } | 
| Chris@10 | 46 | 
| Chris@10 | 47 C *X(alloc_complex)(size_t n) | 
| Chris@10 | 48 { | 
| Chris@10 | 49      return (C *) X(malloc)(sizeof(C) * n); | 
| Chris@10 | 50 } |