[trunk] WIP: enhance j2k_to_image with new get_decoded_tile functionality
[openjpeg.git] / libopenjpeg / opj_malloc.h
index 1f117b6a5c85c4f18abf6e138a5171ac7ccb8892..0b1d4fc17fc774c99c71e3861f42980a957758c6 100644 (file)
@@ -1,5 +1,5 @@
 /*\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
@@ -45,7 +45,11 @@ Allocate an uninitialized memory block
 @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
@@ -53,7 +57,11 @@ Allocate a memory block with elements initialized to 0
 @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
@@ -61,7 +69,7 @@ Allocate memory aligned to a 16 byte boundry
 @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
@@ -72,23 +80,16 @@ Allocate memory aligned to a 16 byte boundry
                        #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
@@ -120,19 +121,34 @@ Allocate memory aligned to a 16 byte boundry
        #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