aboutsummaryrefslogtreecommitdiff
path: root/include/openvic-dataloader/detail/SymbolIntern.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'include/openvic-dataloader/detail/SymbolIntern.hpp')
-rw-r--r--include/openvic-dataloader/detail/SymbolIntern.hpp13
1 files changed, 13 insertions, 0 deletions
diff --git a/include/openvic-dataloader/detail/SymbolIntern.hpp b/include/openvic-dataloader/detail/SymbolIntern.hpp
index d72a0ba..56576c5 100644
--- a/include/openvic-dataloader/detail/SymbolIntern.hpp
+++ b/include/openvic-dataloader/detail/SymbolIntern.hpp
@@ -173,6 +173,19 @@ namespace ovdl {
return success;
}
+ symbol find_intern(const CharT* str, std::size_t length) {
+ auto entry = _map.lookup_entry(typename traits::string_view { str, length }, traits { &_buffer });
+ if (entry)
+ return symbol(_buffer.c_str(entry.get()));
+
+ return symbol();
+ }
+ template<std::size_t N>
+ symbol find_intern(const CharT (&literal)[N]) {
+ DRYAD_PRECONDITION(literal[N - 1] == CharT(0));
+ return find_intern(literal, N - 1);
+ }
+
symbol intern(const CharT* str, std::size_t length) {
if (_map.should_rehash())
_map.rehash(_resource, traits { &_buffer });