Require `stdint.h` & `inttypes.h`
[openjpeg.git] / src / lib / openjp2 / opj_includes.h
index 49aa332271ca9351035628d6724f2001abbe5cff..13613ce521c1034e8f7b2a74f0dfd1f749e01706 100644 (file)
@@ -55,6 +55,8 @@
 #include <ctype.h>
 #include <assert.h>
 #include <limits.h>
+#include <stdint.h>
+#include <inttypes.h>
 
 /*
   Use fseeko() and ftello() if they are available since they use
@@ -187,10 +189,37 @@ static INLINE long opj_lrintf(float f)
 #   pragma intrinsic(__emul)
 #endif
 
+/* Apparently Visual Studio doesn't define __SSE__ / __SSE2__ macros */
+#if defined(_M_X64)
+/* Intel 64bit support SSE and SSE2 */
+#   ifndef __SSE__
+#       define __SSE__ 1
+#   endif
+#   ifndef __SSE2__
+#       define __SSE2__ 1
+#   endif
+#endif
+
+/* For x86, test the value of the _M_IX86_FP macro. */
+/* See https://msdn.microsoft.com/en-us/library/b0084kay.aspx */
+#if defined(_M_IX86_FP)
+#   if _M_IX86_FP >= 1
+#       ifndef __SSE__
+#           define __SSE__ 1
+#       endif
+#   endif
+#   if _M_IX86_FP >= 2
+#       ifndef __SSE2__
+#           define __SSE2__ 1
+#       endif
+#   endif
+#endif
+
 /* Type to use for bit-fields in internal headers */
 typedef unsigned int OPJ_BITFIELD;
 
-#include "opj_inttypes.h"
+#define OPJ_UNUSED(x) (void)x
+
 #include "opj_clock.h"
 #include "opj_malloc.h"
 #include "event.h"
@@ -217,6 +246,7 @@ typedef unsigned int OPJ_BITFIELD;
 #include "t2.h"
 #include "mct.h"
 #include "opj_intmath.h"
+#include "sparse_array.h"
 
 #ifdef USE_JPIP
 #include "cidx_manager.h"