diff --git a/library/CMakeLists.txt b/library/CMakeLists.txt index 3a35fa28ac..55c2ff15b7 100644 --- a/library/CMakeLists.txt +++ b/library/CMakeLists.txt @@ -77,6 +77,7 @@ set(MAIN_HEADERS include/RemoteTools.h include/Signal.hpp include/TileTypes.h + include/TransHash.h include/Types.h include/VersionInfo.h include/VersionInfoFactory.h diff --git a/library/include/DataDefs.h b/library/include/DataDefs.h index c802b7ab09..47bcc1a1c0 100644 --- a/library/include/DataDefs.h +++ b/library/include/DataDefs.h @@ -37,6 +37,7 @@ distribution. #include "BitArray.h" #include "Export.h" #include "Format.h" +#include "TransHash.h" struct lua_State; @@ -364,30 +365,6 @@ namespace DFHack virtual void build_metatable(lua_State *state) const; }; - namespace - { - template - struct overload : Bases ... - { - using is_transparent = void; - using Bases::operator() ...; - }; - - struct char_pointer_hash - { - auto operator()(const char* ptr) const noexcept - { - return std::hash{}(ptr); - } - }; - - using transparent_string_hash = overload< - std::hash, - std::hash, - char_pointer_hash - >; - } - #ifdef _MSC_VER using virtual_ptr = void*; #else diff --git a/library/include/TransHash.h b/library/include/TransHash.h new file mode 100644 index 0000000000..c370e71306 --- /dev/null +++ b/library/include/TransHash.h @@ -0,0 +1,28 @@ +#ifndef TRANS_HASH_H +#define TRANS_HASH_H + +namespace +{ + template + struct overload : Bases ... + { + using is_transparent = void; + using Bases::operator() ...; + }; + + struct char_pointer_hash + { + auto operator()(const char* ptr) const noexcept + { + return std::hash{}(ptr); + } + }; + + using transparent_string_hash = overload< + std::hash, + std::hash, + char_pointer_hash + >; +} + +#endif