diff --git a/metagraph/src/common/serialization.cpp b/metagraph/src/common/serialization.cpp index bc1a1ea718..97030731bb 100644 --- a/metagraph/src/common/serialization.cpp +++ b/metagraph/src/common/serialization.cpp @@ -326,6 +326,9 @@ void serialize_number_number_map(std::ostream &out, template void serialize_number_number_map(std::ostream &out, const std::unordered_map &map); +template +void serialize_number_number_map(std::ostream &out, + const tsl::hopscotch_map &map); template bool load_number_number_map(std::istream &in, Map *map) { @@ -374,7 +377,9 @@ bool load_number_number_map(std::istream &in, template bool load_number_number_map(std::istream &in, std::unordered_map *map); - +template +bool load_number_number_map(std::istream &in, + tsl::hopscotch_map *map); template void serialize_string_number_map(std::ostream &out, const Map &map) { diff --git a/metagraph/src/common/utils/string_utils.cpp b/metagraph/src/common/utils/string_utils.cpp index 32c2d3ab91..8e801baf78 100644 --- a/metagraph/src/common/utils/string_utils.cpp +++ b/metagraph/src/common/utils/string_utils.cpp @@ -7,6 +7,13 @@ namespace utils { +bool starts_with(const std::string &str, const std::string &prefix) { + if (prefix.size() > str.size()) { + return false; + } + return prefix == std::string_view(str).substr(0, prefix.size()); +} + bool ends_with(const std::string &str, const std::string &suffix) { auto actual_suffix = str.substr( std::max(0, static_cast(str.size()) diff --git a/metagraph/src/common/utils/string_utils.hpp b/metagraph/src/common/utils/string_utils.hpp index cae2debe96..3336280741 100644 --- a/metagraph/src/common/utils/string_utils.hpp +++ b/metagraph/src/common/utils/string_utils.hpp @@ -8,6 +8,8 @@ namespace utils { +bool starts_with(const std::string &str, const std::string &prefix); + bool ends_with(const std::string &str, const std::string &suffix); std::string remove_suffix(const std::string &str, const std::string &suffix);