1 /*** 2 * libccd 3 * --------------------------------- 4 * Copyright (c)2010 Daniel Fiser <danfis@danfis.cz> 5 * 6 * 7 * This file is part of libccd. 8 * 9 * Distributed under the OSI-approved BSD License (the "License"); 10 * see accompanying file BDS-LICENSE for details or see 11 * <http://www.opensource.org/licenses/bsd-license.php>. 12 * 13 * This software is distributed WITHOUT ANY WARRANTY; without even the 14 * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 15 * See the License for more information. 16 */ 17 18 #ifndef __CCD_ALLOC_H__ 19 #define __CCD_ALLOC_H__ 20 21 #include <stdlib.h> 22 23 #ifdef __cplusplus 24 extern "C" { 25 #endif /* __cplusplus */ 26 27 /** 28 * Functions and macros required for memory allocation. 29 */ 30 31 /* Memory allocation: */ 32 #define __CCD_ALLOC_MEMORY(type, ptr_old, size) \ 33 (type *)realloc((void *)ptr_old, (size)) 34 35 /** Allocate memory for one element of type. */ 36 #define CCD_ALLOC(type) \ 37 __CCD_ALLOC_MEMORY(type, NULL, sizeof(type)) 38 39 /** Allocate memory for array of elements of type type. */ 40 #define CCD_ALLOC_ARR(type, num_elements) \ 41 __CCD_ALLOC_MEMORY(type, NULL, sizeof(type) * (num_elements)) 42 43 #define CCD_REALLOC_ARR(ptr, type, num_elements) \ 44 __CCD_ALLOC_MEMORY(type, ptr, sizeof(type) * (num_elements)) 45 46 #ifdef __cplusplus 47 } /* extern "C" */ 48 #endif /* __cplusplus */ 49 50 #endif /* __CCD_ALLOC_H__ */ 51