mirror of
https://github.com/zeek/zeek.git
synced 2025-10-09 10:08:20 +00:00
Remove BroValUnion by hoisting underlying Val subclass values into subclasses
This commit is contained in:
parent
49ca8e2163
commit
7f92a573d2
29 changed files with 632 additions and 512 deletions
|
@ -87,7 +87,7 @@ FuncPtr id::find_func(std::string_view name)
|
|||
reporter->InternalError("Expected variable '%s' to be a function",
|
||||
std::string(name).data());
|
||||
|
||||
return v->AsFuncPtr();
|
||||
return dynamic_cast<FuncVal*>(v.get())->AsFuncPtr();
|
||||
}
|
||||
|
||||
void id::detail::init_types()
|
||||
|
@ -162,17 +162,18 @@ void ID::SetVal(ValPtr v)
|
|||
type->AsFuncType()->Flavor() == FUNC_FLAVOR_EVENT )
|
||||
{
|
||||
EventHandler* handler = event_registry->Lookup(name);
|
||||
auto func = dynamic_cast<FuncVal*>(val.get())->AsFuncPtr();
|
||||
if ( ! handler )
|
||||
{
|
||||
handler = new EventHandler(name);
|
||||
handler->SetFunc(val->AsFuncPtr());
|
||||
handler->SetFunc(func);
|
||||
event_registry->Register(handler);
|
||||
}
|
||||
else
|
||||
{
|
||||
// Otherwise, internally defined events cannot
|
||||
// have local handler.
|
||||
handler->SetFunc(val->AsFuncPtr());
|
||||
handler->SetFunc(func);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue