Typedefs for maps

v1
Brett 2022-12-27 00:51:37 -05:00
parent c0955f0762
commit 7cf07bb5c0
3 changed files with 39 additions and 6 deletions

View File

@ -18,6 +18,15 @@ else()
set(PROFILING_FILES "") set(PROFILING_FILES "")
endif() endif()
if (EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/libraries/parallel-hashmap/CMakeLists.txt)
add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/libraries/parallel-hashmap/)
set(PHMAP_ENABLED ON)
endif()
configure_file(include/blt/config.h.in blt/config.h @ONLY)
# include the config file
include_directories(${CMAKE_CURRENT_BINARY_DIR})
include_directories(include/) include_directories(include/)
message("Standard Files ${STD_FILES}") message("Standard Files ${STD_FILES}")
@ -27,3 +36,4 @@ message("Current Source: ${CMAKE_CURRENT_SOURCE_DIR}")
add_library(BLT ${STD_FILES} ${PROFILING_FILES}) add_library(BLT ${STD_FILES} ${PROFILING_FILES})
target_include_directories(BLT PUBLIC include/) target_include_directories(BLT PUBLIC include/)
target_link_libraries(BLT phmap)

12
include/blt/config.h.in Normal file
View File

@ -0,0 +1,12 @@
/*
* Created by Brett on 27/12/22.
* Licensed under GNU General Public License V3.0
* See LICENSE file for license detail
*/
#ifndef CMAKE_CONFIG
#cmakedefine PHMAP_ENABLED
#define CMAKE_CONFIG
#endif

View File

@ -9,7 +9,13 @@
#include <string> #include <string>
#include <string_view> #include <string_view>
#include <blt/config.h>
#ifdef PHMAP_ENABLED
#include <parallel_hashmap/phmap.h>
#else
#include <unordered_map> #include <unordered_map>
#endif
namespace BLT { namespace BLT {
@ -21,15 +27,20 @@ namespace BLT {
CapturePoint start; CapturePoint start;
CapturePoint end; CapturePoint end;
}; };
#ifdef PHMAP_ENABLED
typedef phmap::parallel_flat_hash_map<std::string_view, CaptureInterval> INTERVAL_MAP;
typedef phmap::parallel_flat_hash_map<std::string_view, CapturePoint> POINT_MAP;
#else
typedef std::unordered_map<std::string_view, CaptureInterval> INTERVAL_MAP;
typedef std::unordered_map<std::string_view, CapturePoint> POINT_MAP;
#endif
class Profiler { class Profiler {
private: private:
std::map<std::string_view, CaptureInterval>* intervals; INTERVAL_MAP intervals;
std::map<std::string_view, CapturePoint>* points; POINT_MAP points;
public: public:
Profiler(std::map<std::string_view, CaptureInterval>* test) { Profiler();
intervals = test;
}
}; };
} }