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

@ -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);
}
}
}