/*\r
- * Copyright (c) 2005, Herv� Drolon, FreeImage Team\r
+ * Copyright (c) 2005, Herve Drolon, FreeImage Team\r
* Copyright (c) 2007, Callum Lerwick <seg@haxxed.com>\r
* All rights reserved.\r
*\r
@param size Bytes to allocate\r
@return Returns a void pointer to the allocated space, or NULL if there is insufficient memory available\r
*/\r
+#ifdef ALLOC_PERF_OPT\r
+void * OPJ_CALLCONV opj_malloc(size_t size);\r
+#else\r
#define opj_malloc(size) malloc(size)\r
+#endif\r
\r
/**\r
Allocate a memory block with elements initialized to 0\r
@param size Bytes per block to allocate\r
@return Returns a void pointer to the allocated space, or NULL if there is insufficient memory available\r
*/\r
+#ifdef ALLOC_PERF_OPT\r
+void * OPJ_CALLCONV opj_calloc(size_t _NumOfElements, size_t _SizeOfElements);\r
+#else\r
#define opj_calloc(num, size) calloc(num, size)\r
+#endif\r
\r
/**\r
Allocate memory aligned to a 16 byte boundry\r
@return Returns a void pointer to the allocated space, or NULL if there is insufficient memory available\r
*/\r
/* FIXME: These should be set with cmake tests, but we're currently not requiring use of cmake */\r
-#ifdef WIN32\r
+#ifdef _WIN32\r
/* Someone should tell the mingw people that their malloc.h ought to provide _mm_malloc() */\r
#ifdef __GNUC__\r
#include <mm_malloc.h>\r
#define HAVE_MM_MALLOC\r
#endif\r
#endif\r
-#else /* Not WIN32 */\r
+#else /* Not _WIN32 */\r
#if defined(__sun)\r
- #define HAVE_MEMALIGN\r
- #elif defined(__GNUC__)\r
- #ifndef __APPLE__\r
- #define HAVE_MEMALIGN\r
- #include <malloc.h>\r
- #endif\r
- /* Linux x86_64 and OSX always align allocations to 16 bytes */\r
- #elif !defined(__amd64__) && !defined(__APPLE__) \r
- /* FIXME: Yes, this is a big assumption */\r
- #define HAVE_POSIX_MEMALIGN\r
+ #define HAVE_MEMALIGN\r
+ /* Linux x86_64 and OSX always align allocations to 16 bytes */\r
+ #elif !defined(__amd64__) && !defined(__APPLE__) \r
+ #define HAVE_MEMALIGN\r
+ #include <malloc.h> \r
#endif\r
#endif\r
\r
-\r
-\r
#define opj_aligned_malloc(size) malloc(size)\r
#define opj_aligned_free(m) free(m)\r
\r
#define opj_aligned_free(m) free(m)\r
#endif\r
\r
+#ifdef ALLOC_PERF_OPT\r
+ #undef opj_aligned_malloc\r
+ #define opj_aligned_malloc(size) opj_malloc(size)\r
+ #undef opj_aligned_free\r
+ #define opj_aligned_free(m) opj_free(m)\r
+#endif\r
+\r
/**\r
Reallocate memory blocks.\r
-@param memblock Pointer to previously allocated memory block\r
-@param size New size in bytes\r
+@param m Pointer to previously allocated memory block\r
+@param s New size in bytes\r
@return Returns a void pointer to the reallocated (and possibly moved) memory block\r
*/\r
+#ifdef ALLOC_PERF_OPT\r
+void * OPJ_CALLCONV opj_realloc(void * m, size_t s);\r
+#else\r
#define opj_realloc(m, s) realloc(m, s)\r
+#endif\r
\r
/**\r
Deallocates or frees a memory block.\r
-@param memblock Previously allocated memory block to be freed\r
+@param m Previously allocated memory block to be freed\r
*/\r
+#ifdef ALLOC_PERF_OPT\r
+void OPJ_CALLCONV opj_free(void * m);\r
+#else\r
#define opj_free(m) free(m)\r
+#endif\r
\r
#ifdef __GNUC__\r
#pragma GCC poison malloc calloc realloc free\r