The argument of golden_ratio_hash() is as an integer of the same size as
a void* pointer. Unfortunately ISO C++ 98 does not provide suitable typedef.
Hence
* use <stdint.h> if available and define p_int to uintptr_t. Note: AC_PROG_CC
already checks for this header, so no extra checks are necessary.
* as a fallback define p_int to be unsigned long, this works on most systems
I know of (the only exception is woe64).
While at it, stop including "config.h" unconditionally.
#ifndef __GINAC_UTILS_H__
#define __GINAC_UTILS_H__
+#ifdef HAVE_CONFIG_H
#include "config.h"
+#endif
#include <string>
#include <functional>
+#ifdef HAVE_STDINT_H
+#include <stdint.h> // for uintptr_t
+#endif
#include "assertion.h"
return 0;
}
-#if SIZEOF_VOID_P == SIZEOF_INT
-typedef unsigned int p_int;
-#elif SIZEOF_VOID_P == SIZEOF_LONG
-typedef unsigned long p_int;
-#elif SIZEOF_VOID_P == SIZEOF_LONG_LONG
-typedef unsigned long long p_int;
+#ifdef HAVE_STDINT_H
+typedef uintptr_t p_int;
#else
typedef unsigned long p_int;
#endif