From: Richard Kreckel Date: Sun, 31 Jan 2016 09:15:50 +0000 (+0100) Subject: Remove extra cases for missing . X-Git-Tag: release_1-7-0~7^2~13 X-Git-Url: https://www.ginac.de/ginac.git//ginac.git?p=ginac.git;a=commitdiff_plain;h=227c0507d513360c31cd16484e08215e1a506363 Remove extra cases for missing . Use unconditionally -- it's been standardized in C++11. --- diff --git a/CMakeLists.txt b/CMakeLists.txt index 122d94ca..1c532668 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -29,7 +29,6 @@ find_package(CLN 1.2.2 REQUIRED) include_directories(${CLN_INCLUDE_DIR}) include(CheckIncludeFile) -check_include_file("stdint.h" HAVE_STDINT_H) check_include_file("unistd.h" HAVE_UNISTD_H) include_directories(${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_BINARY_DIR}/ginac) diff --git a/acinclude.m4 b/acinclude.m4 index c66f3dda..5471a53c 100644 --- a/acinclude.m4 +++ b/acinclude.m4 @@ -32,6 +32,7 @@ AC_CACHE_CHECK([for standard C++ header files], [ginac_cv_std_cxx_headers], [ #include #include #include + #include #include #include #include diff --git a/config.cmake.in b/config.cmake.in index b2589ee5..cef416b8 100644 --- a/config.cmake.in +++ b/config.cmake.in @@ -1,4 +1,3 @@ -#cmakedefine HAVE_STDINT_H #cmakedefine HAVE_UNISTD_H #cmakedefine HAVE_LIBREADLINE #cmakedefine HAVE_READLINE_READLINE_H diff --git a/ginac/constant.cpp b/ginac/constant.cpp index 44acf4cc..3b1f289c 100644 --- a/ginac/constant.cpp +++ b/ginac/constant.cpp @@ -216,7 +216,7 @@ bool constant::is_equal_same_type(const basic & other) const unsigned constant::calchash() const { const void* typeid_this = (const void*)typeid(*this).name(); - hashvalue = golden_ratio_hash((p_int)typeid_this ^ serial); + hashvalue = golden_ratio_hash((uintptr_t)typeid_this ^ serial); setflag(status_flags::hash_calculated); diff --git a/ginac/hash_seed.h b/ginac/hash_seed.h index c0fb4b89..9b163cf8 100644 --- a/ginac/hash_seed.h +++ b/ginac/hash_seed.h @@ -38,7 +38,7 @@ static inline unsigned make_hash_seed(const std::type_info& tinfo) // This pointer is the same for all objects of the same type. // Hence we can use it. const void* mangled_name_ptr = (const void*)tinfo.name(); - unsigned v = golden_ratio_hash((p_int)mangled_name_ptr); + unsigned v = golden_ratio_hash((uintptr_t)mangled_name_ptr); return v; } #else diff --git a/ginac/parser/default_reader.cpp b/ginac/parser/default_reader.cpp index 20996f97..53826ac1 100644 --- a/ginac/parser/default_reader.cpp +++ b/ginac/parser/default_reader.cpp @@ -26,13 +26,8 @@ #include "lst.h" #include "operators.h" #include "inifcns.h" -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif -#ifdef HAVE_STDINT_H -#include // for uintptr_t -#endif +#include // for uintptr_t namespace GiNaC { diff --git a/ginac/parser/parser.cpp b/ginac/parser/parser.cpp index 9e231d8e..fe4e1747 100644 --- a/ginac/parser/parser.cpp +++ b/ginac/parser/parser.cpp @@ -27,13 +27,8 @@ #include "mul.h" #include "constant.h" #include "function.h" -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif -#ifdef HAVE_STDINT_H -#include // for uintptr_t -#endif +#include // for uintptr_t #include #include diff --git a/ginac/utils.h b/ginac/utils.h index 61d35000..25af815c 100644 --- a/ginac/utils.h +++ b/ginac/utils.h @@ -25,14 +25,9 @@ #define GINAC_UTILS_H #include "assertion.h" -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif #include -#ifdef HAVE_STDINT_H -#include // for uintptr_t -#endif +#include // for uintptr_t #include namespace GiNaC { @@ -69,37 +64,10 @@ inline int compare_pointers(const T * a, const T * b) return 0; } -#ifdef HAVE_STDINT_H -typedef uintptr_t p_int; -#else -typedef unsigned long p_int; -#endif - /** Truncated multiplication with golden ratio, for computing hash values. */ -inline unsigned golden_ratio_hash(p_int n) +inline unsigned golden_ratio_hash(uintptr_t n) { - // This function works much better when fast arithmetic with at - // least 64 significant bits is available. - if (sizeof(long) >= 8) { - // So 'long' has 64 bits. Excellent! We prefer it because it might be - // more efficient than 'long long'. - unsigned long l = n * 0x4f1bbcddUL; - return (unsigned)l; - } -#ifdef HAVE_LONG_LONG - else if (sizeof(long long) >= 8) { - // This requires 'long long' (or an equivalent 64 bit type)---which is, - // unfortunately, not ANSI-C++-compliant. - // (Yet C99 demands it, which is reason for hope.) - unsigned long long l = n * 0x4f1bbcddULL; - return (unsigned)l; - } -#endif - // Without a type with 64 significant bits do the multiplication manually - // by splitting n up into the lower and upper two bytes. - const unsigned n0 = (n & 0x0000ffffU); - const unsigned n1 = (n & 0xffff0000U) >> 16; - return (n0 * 0x0000bcddU) + ((n1 * 0x0000bcddU + n0 * 0x00004f1bU) << 16); + return n * UINT64_C(0x4f1bbcdd); } /* Compute the sign of a permutation of a container, with and without an