aboutsummaryrefslogtreecommitdiff
path: root/include/openvic-dataloader
diff options
context:
space:
mode:
Diffstat (limited to 'include/openvic-dataloader')
-rw-r--r--include/openvic-dataloader/detail/SymbolIntern.hpp13
-rw-r--r--include/openvic-dataloader/v2script/Parser.hpp1
2 files changed, 14 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 });
diff --git a/include/openvic-dataloader/v2script/Parser.hpp b/include/openvic-dataloader/v2script/Parser.hpp
index 2518e61..c5f37be 100644
--- a/include/openvic-dataloader/v2script/Parser.hpp
+++ b/include/openvic-dataloader/v2script/Parser.hpp
@@ -51,6 +51,7 @@ namespace ovdl::v2script {
const FileTree* get_file_node() const;
std::string_view value(const ovdl::v2script::ast::FlatValue* node) const;
+ ovdl::symbol<char> find_intern(std::string_view string) const;
std::string make_native_string() const;
std::string make_list_string() const;