diff --git a/src/Type.h b/src/Type.h index 8e30e705cb..b0b114401a 100644 --- a/src/Type.h +++ b/src/Type.h @@ -547,7 +547,13 @@ public: const IntrusivePtr& GetType() const { return type; } + template + IntrusivePtr GetType() const + { return cast_intrusive(type); } + + [[deprecated("Remove in v4.1. Use GetType().")]] BroType* Type() { return type.get(); } + [[deprecated("Remove in v4.1. Use GetType().")]] const BroType* Type() const { return type.get(); } protected: diff --git a/src/Val.cc b/src/Val.cc index 6251326ef9..9dfa57235c 100644 --- a/src/Val.cc +++ b/src/Val.cc @@ -347,7 +347,7 @@ void Val::ValDescribe(ODesc* d) const else if ( type->Tag() == TYPE_FILE ) AsFile()->Describe(d); else if ( type->Tag() == TYPE_TYPE ) - d->Add(type->AsTypeType()->Type()->GetName()); + d->Add(type->AsTypeType()->GetType()->GetName()); else d->Add(""); break; @@ -440,7 +440,7 @@ IntrusivePtr Val::GetRecordFields() } else { - t = t->AsTypeType()->Type(); + t = t->AsTypeType()->GetType().get(); if ( t->Tag() != TYPE_RECORD ) { @@ -1375,7 +1375,7 @@ static void find_nested_record_types(BroType* t, std::set* found) find_nested_record_types(t->AsVectorType()->Yield().get(), found); return; case TYPE_TYPE: - find_nested_record_types(t->AsTypeType()->Type(), found); + find_nested_record_types(t->AsTypeType()->GetType().get(), found); return; default: return; diff --git a/src/input/Manager.cc b/src/input/Manager.cc index 06931636c8..d24dd960b3 100644 --- a/src/input/Manager.cc +++ b/src/input/Manager.cc @@ -314,7 +314,7 @@ bool Manager::CreateEventStream(RecordVal* fval) string stream_name = fval->GetFieldOrDefault("name")->AsString()->CheckString(); auto fields_val = fval->GetFieldOrDefault("fields"); - RecordType* fields = fields_val->AsType()->AsTypeType()->Type()->AsRecordType(); + RecordType* fields = fields_val->AsType()->AsTypeType()->GetType()->AsRecordType(); auto want_record = fval->GetFieldOrDefault("want_record"); @@ -469,13 +469,13 @@ bool Manager::CreateTableStream(RecordVal* fval) auto pred = fval->GetFieldOrDefault("pred"); auto idx_val = fval->GetFieldOrDefault("idx"); - RecordType* idx = idx_val->AsType()->AsTypeType()->Type()->AsRecordType(); + RecordType* idx = idx_val->AsType()->AsTypeType()->GetType()->AsRecordType(); IntrusivePtr val; auto val_val = fval->GetFieldOrDefault("val"); if ( val_val ) - val = {NewRef{}, val_val->AsType()->AsTypeType()->Type()->AsRecordType()}; + val = val_val->AsType()->AsTypeType()->GetType(); auto dst = fval->GetFieldOrDefault("destination"); diff --git a/src/logging/Manager.cc b/src/logging/Manager.cc index fa86027ed2..e585aea078 100644 --- a/src/logging/Manager.cc +++ b/src/logging/Manager.cc @@ -236,7 +236,7 @@ bool Manager::CreateStream(EnumVal* id, RecordVal* sval) } RecordType* columns = sval->GetField("columns") - ->AsType()->AsTypeType()->Type()->AsRecordType(); + ->AsType()->AsTypeType()->GetType()->AsRecordType(); bool log_attr_present = false; diff --git a/src/parse.y b/src/parse.y index fc00faa925..6930c7e5e9 100644 --- a/src/parse.y +++ b/src/parse.y @@ -237,7 +237,7 @@ static bool expr_is_table_type_name(const Expr* expr) return true; if ( type->Tag() == TYPE_TYPE ) - return type->AsTypeType()->Type()->IsTable(); + return type->AsTypeType()->GetType()->IsTable(); return false; }