mirror of
https://github.com/zeek/zeek.git
synced 2025-10-02 06:38:20 +00:00
Change RecordVal::GetFieldAs() to use std::vector::operator[]
Since the method claims it's up to the user to ensure the field exists before calling, the extra bounds-checking done by std::vector::at() isn't needed.
This commit is contained in:
parent
2855df63ce
commit
7047eb92d8
1 changed files with 15 additions and 15 deletions
30
src/Val.h
30
src/Val.h
|
@ -1301,33 +1301,33 @@ public:
|
|||
if constexpr ( std::is_same_v<T, BoolVal> ||
|
||||
std::is_same_v<T, IntVal> ||
|
||||
std::is_same_v<T, EnumVal> )
|
||||
return record_val->at(field).int_val;
|
||||
return record_val->operator[](field).int_val;
|
||||
else if constexpr ( std::is_same_v<T, CountVal> )
|
||||
return record_val->at(field).uint_val;
|
||||
return record_val->operator[](field).uint_val;
|
||||
else if constexpr ( std::is_same_v<T, DoubleVal> ||
|
||||
std::is_same_v<T, TimeVal> ||
|
||||
std::is_same_v<T, IntervalVal> )
|
||||
return record_val->at(field).double_val;
|
||||
return record_val->operator[](field).double_val;
|
||||
else if constexpr ( std::is_same_v<T, PortVal> )
|
||||
return val_mgr->Port(record_val->at(field).uint_val);
|
||||
else if constexpr ( std::is_same_v<T, StringVal> )
|
||||
return record_val->at(field).string_val->Get();
|
||||
return record_val->operator[](field).string_val->Get();
|
||||
else if constexpr ( std::is_same_v<T, AddrVal> )
|
||||
return record_val->at(field).addr_val->Get();
|
||||
return record_val->operator[](field).addr_val->Get();
|
||||
else if constexpr ( std::is_same_v<T, SubNetVal> )
|
||||
return record_val->at(field).subnet_val->Get();
|
||||
return record_val->operator[](field).subnet_val->Get();
|
||||
else if constexpr ( std::is_same_v<T, File> )
|
||||
return *(record_val->at(field).file_val);
|
||||
return *(record_val->operator[](field).file_val);
|
||||
else if constexpr ( std::is_same_v<T, Func> )
|
||||
return *(record_val->at(field).func_val);
|
||||
return *(record_val->operator[](field).func_val);
|
||||
else if constexpr ( std::is_same_v<T, PatternVal> )
|
||||
return record_val->at(field).re_val->Get();
|
||||
return record_val->operator[](field).re_val->Get();
|
||||
else if constexpr ( std::is_same_v<T, RecordVal> )
|
||||
return record_val->at(field).record_val;
|
||||
return record_val->operator[](field).record_val;
|
||||
else if constexpr ( std::is_same_v<T, VectorVal> )
|
||||
return record_val->at(field).vector_val;
|
||||
return record_val->operator[](field).vector_val;
|
||||
else if constexpr ( std::is_same_v<T, TableVal> )
|
||||
return record_val->at(field).table_val->Get();
|
||||
return record_val->operator[](field).table_val->Get();
|
||||
else
|
||||
{
|
||||
// It's an error to reach here, although because of
|
||||
|
@ -1342,12 +1342,12 @@ public:
|
|||
T GetFieldAs(int field) const
|
||||
{
|
||||
if constexpr ( std::is_integral_v<T> && std::is_signed_v<T> )
|
||||
return record_val->at(field).int_val;
|
||||
return record_val->operator[](field).int_val;
|
||||
else if constexpr ( std::is_integral_v<T> &&
|
||||
std::is_unsigned_v<T> )
|
||||
return record_val->at(field).uint_val;
|
||||
return record_val->operator[](field).uint_val;
|
||||
else if constexpr ( std::is_floating_point_v<T> )
|
||||
return record_val->at(field).double_val;
|
||||
return record_val->operator[](field).double_val;
|
||||
|
||||
// Note: we could add other types here using type traits,
|
||||
// such as is_same_v<T, std::string>, etc.
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue