Add templated As() method to Val, use in various places we were using dynamic_cast

This commit is contained in:
Tim Wojtulewicz 2020-12-03 14:25:18 -07:00
parent a7b5915b1a
commit a94fcad957
7 changed files with 28 additions and 14 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 dynamic_cast<FuncVal*>(v.get())->AsFuncPtr();
return v.get()->As<FuncVal*>()->AsFuncPtr();
}
void id::detail::init_types()
@ -162,7 +162,7 @@ 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();
auto func = val.get()->As<FuncVal*>()->AsFuncPtr();
if ( ! handler )
{
handler = new EventHandler(name);