1 /* $Id: electric.h 2798 2015-09-19 20:35:03Z bird $ */ 2 /** @file 3 * A simple electric heap implementation, wrapper header. 4 */ 5 6 /* 7 * Copyright (c) 2007-2010 knut st. osmundsen <bird-kBuild-spamx@anduin.net> 8 * 9 * This file is part of kBuild. 10 * 11 * kBuild is free software; you can redistribute it and/or modify 12 * it under the terms of the GNU General Public License as published by 13 * the Free Software Foundation; either version 3 of the License, or 14 * (at your option) any later version. 15 * 16 * kBuild is distributed in the hope that it will be useful, 17 * but WITHOUT ANY WARRANTY; without even the implied warranty of 18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 19 * GNU General Public License for more details. 20 * 21 * You should have received a copy of the GNU General Public License 22 * along with kBuild. If not, see <http://www.gnu.org/licenses/> 23 * 24 */ 25 26 #ifdef ELECTRIC_HEAP 27 28 #include <stdlib.h> 29 #ifdef WINDOWS32 30 # include <malloc.h> 31 #endif 32 #include <string.h> /* strdup */ 33 34 void xfree (void *); 35 void *xcalloc (unsigned int); 36 void *xmalloc (unsigned int); 37 void *xrealloc (void *, unsigned int); 38 char *xstrdup (const char *); 39 #ifdef __GNUC__ 40 void *xmalloc_size_t (size_t size); 41 void *xcalloc_size_t (size_t size, size_t items); 42 void *xrealloc_size_t (void *ptr, size_t size); 43 #endif 44 45 46 #undef free 47 #define free(a) xfree(a) 48 #undef strdup 49 #define strdup(a) xstrdup(a) 50 51 #undef calloc 52 #undef malloc 53 #undef realloc 54 #ifdef __GNUC__ 55 # define calloc(a,b) xcalloc_size_t(a,b) 56 # define malloc(a) xmalloc_size_t(a) 57 # define realloc(a,b) xrealloc_size_t(a,b) 58 #else 59 # define calloc(a,b) xcalloc((a) * (b)) 60 # define malloc(a) xmalloc(a) 61 # define realloc(a,b) xrealloc((a),(b)) 62 #endif 63 64 #endif 65 66