LibRegex: Make Match::capture_group_name an index into the string table

This removes another Match member that required destruction. The "API"
for accessing the strings is definitely a bit awkward. We'll think of
something nicer eventually.
This commit is contained in:
Andreas Kling 2025-04-13 18:24:31 +02:00 committed by Andreas Kling
commit 54edf29f1b
Notes: github-actions[bot] 2025-04-14 15:41:26 +00:00
5 changed files with 11 additions and 10 deletions

View file

@ -409,7 +409,7 @@ ALWAYS_INLINE ExecutionResult OpCode_SaveRightNamedCaptureGroup::execute(MatchIn
auto view = input.view.substring_view(start_position, length);
match = { view, name(), input.line, start_position, input.global_offset + start_position };
match = { view, name_string_table_index(), input.line, start_position, input.global_offset + start_position };
return ExecutionResult::Continue;
}

View file

@ -839,7 +839,8 @@ public:
ExecutionResult execute(MatchInput const& input, MatchState& state) const override;
ALWAYS_INLINE OpCodeId opcode_id() const override { return OpCodeId::SaveRightNamedCaptureGroup; }
ALWAYS_INLINE size_t size() const override { return 3; }
ALWAYS_INLINE FlyString name() const { return m_bytecode->get_string(argument(0)); }
ALWAYS_INLINE FlyString name() const { return m_bytecode->get_string(name_string_table_index()); }
ALWAYS_INLINE size_t name_string_table_index() const { return argument(0); }
ALWAYS_INLINE size_t length() const { return name().bytes_as_string_view().length(); }
ALWAYS_INLINE size_t id() const { return argument(1); }
ByteString arguments_string() const override

View file

@ -489,9 +489,9 @@ public:
{
}
Match(RegexStringView const view_, StringView capture_group_name_, size_t const line_, size_t const column_, size_t const global_offset_)
Match(RegexStringView const view_, size_t capture_group_name_, size_t const line_, size_t const column_, size_t const global_offset_)
: view(view_)
, capture_group_name(MUST(FlyString::from_utf8(capture_group_name_)))
, capture_group_name(capture_group_name_)
, line(line_)
, column(column_)
, global_offset(global_offset_)
@ -510,7 +510,7 @@ public:
}
RegexStringView view {};
Optional<FlyString> capture_group_name {};
Optional<size_t> capture_group_name {}; // This is a string table index.
size_t line { 0 };
size_t column { 0 };
size_t global_offset { 0 };