Remove BroValUnion by hoisting underlying Val subclass values into subclasses

This commit is contained in:
Vern Paxson 2020-11-10 15:18:54 -08:00 committed by Tim Wojtulewicz
parent 49ca8e2163
commit 7f92a573d2
29 changed files with 632 additions and 512 deletions

View file

@ -684,8 +684,8 @@ function string_to_ascii_hex%(s: string%): string
function str_smith_waterman%(s1: string, s2: string, params: sw_params%) : sw_substring_vec
%{
zeek::detail::SWParams sw_params(
params->AsRecordVal()->GetField(0)->AsCount(),
zeek::detail::SWVariant(params->AsRecordVal()->GetField(1)->AsCount()));
params->AsRecordVal()->GetCountField(0),
zeek::detail::SWVariant(params->AsRecordVal()->GetCountField(1)));
auto* subseq = zeek::detail::smith_waterman(s1->AsString(), s2->AsString(), sw_params);
auto result = zeek::VectorValPtr{zeek::AdoptRef{}, zeek::detail::Substring::VecToPolicy(subseq)};
@ -707,12 +707,13 @@ function str_smith_waterman%(s1: string, s2: string, params: sw_params%) : sw_su
## .. zeek:see:: split_string split_string1 split_string_all split_string_n
function str_split%(s: string, idx: index_vec%): string_vec &deprecated="Remove in v4.1. Use str_split_indices."
%{
auto idx_v = idx->AsVector();
zeek::String::IdxVec indices(idx_v->size());
auto idx_v = dynamic_cast<VectorVal*>(idx);
auto n = idx_v->Size();
zeek::String::IdxVec indices(n);
unsigned int i;
for ( i = 0; i < idx_v->size(); i++ )
indices[i] = (*idx_v)[i]->AsCount();
for ( i = 0; i < n; i++ )
indices[i] = idx_v->CountAt(i);
zeek::String::Vec* result = s->AsString()->Split(indices);
auto result_v = zeek::make_intrusive<zeek::VectorVal>(zeek::id::string_vec);
@ -745,12 +746,13 @@ function str_split%(s: string, idx: index_vec%): string_vec &deprecated="Remove
## .. zeek:see:: split_string split_string1 split_string_all split_string_n
function str_split_indices%(s: string, idx: index_vec%): string_vec
%{
auto idx_v = idx->AsVector();
zeek::String::IdxVec indices(idx_v->size());
auto idx_v = dynamic_cast<VectorVal*>(idx);
auto n = idx_v->Size();
zeek::String::IdxVec indices(n);
unsigned int i;
for ( i = 0; i < idx_v->size(); i++ )
indices[i] = (*idx_v)[i]->AsCount();
for ( i = 0; i < n; i++ )
indices[i] = idx_v->CountAt(i);
zeek::String::Vec* result = s->AsString()->Split(indices);
auto result_v = zeek::make_intrusive<zeek::VectorVal>(zeek::id::string_vec);