Move CERES_HASH_NAMESPACE macros to collections_port.h Now that we have a clearer understanding of the naming rules there is no need for these macro definitions to be done in the cmake file. This cleans up the compilation command line. Change-Id: Idc8fc7a7c9376e021dc4790af66e599105351917
diff --git a/CMakeLists.txt b/CMakeLists.txt index 7519f48..41db59a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt
@@ -411,14 +411,10 @@ CHECK_INCLUDE_FILE_CXX(unordered_map UNORDERED_MAP_IN_STD_NAMESPACE) If (UNORDERED_MAP_IN_STD_NAMESPACE) ADD_DEFINITIONS(-DCERES_STD_UNORDERED_MAP) - ADD_DEFINITIONS("\"-DCERES_HASH_NAMESPACE_START=namespace std {\"") - ADD_DEFINITIONS("\"-DCERES_HASH_NAMESPACE_END=}\"") ELSE (UNORDERED_MAP_IN_STD_NAMESPACE) CHECK_INCLUDE_FILE_CXX("tr1/unordered_map" UNORDERED_MAP_IN_TR1_NAMESPACE) IF (UNORDERED_MAP_IN_TR1_NAMESPACE) ADD_DEFINITIONS(-DCERES_TR1_UNORDERED_MAP) - ADD_DEFINITIONS("\"-DCERES_HASH_NAMESPACE_START=namespace std { namespace tr1 {\"") - ADD_DEFINITIONS("\"-DCERES_HASH_NAMESPACE_END=}}\"") ELSE (UNORDERED_MAP_IN_TR1_NAMESPACE) MESSAGE("-- Unable to find <unordered_map> or <tr1/unordered_map>. ") MESSAGE("-- Replacing unordered_map/set with map/set (warning: slower!)")
diff --git a/internal/ceres/collections_port.h b/internal/ceres/collections_port.h index ae71e54..8f345d4 100644 --- a/internal/ceres/collections_port.h +++ b/internal/ceres/collections_port.h
@@ -41,13 +41,20 @@ #if defined(CERES_TR1_UNORDERED_MAP) # include <tr1/unordered_map> # include <tr1/unordered_set> +# define CERES_HASH_NAMESPACE_START namespace std { namespace tr1 { +# define CERES_HASH_NAMESPACE_END } } #endif #if defined(CERES_STD_UNORDERED_MAP) # include <unordered_map> # include <unordered_set> +# define CERES_HASH_NAMESPACE_START namespace std { +# define CERES_HASH_NAMESPACE_END } #endif +#if !defined(CERES_NO_UNORDERED_MAP) && !defined(CERES_TR1_UNORDERED_MAP) && !defined(CERES_STD_UNORDERED_MAP) +#error One of: CERES_NO_UNORDERED_MAP, CERES_TR1_UNORDERED_MAP, CERES_STD_UNORDERED_MAP must be defined! +#endif #include <utility> #include "ceres/integral_types.h" @@ -55,7 +62,7 @@ // Some systems don't have access to unordered_map/unordered_set. In // that case, substitute the hash map/set with normal map/set. The -// price to pay is slightly slower speed for some operations. +// price to pay is slower speed for some operations. #if defined(CERES_NO_UNORDERED_MAP) namespace ceres {