Deprecate ListVal::ConvertToSet(), add ListVal::ToSetVal()

This commit is contained in:
Jon Siwek 2020-05-05 10:40:55 -07:00
parent 2cfbbd8cdb
commit df65d1e829
4 changed files with 15 additions and 12 deletions

View file

@ -297,7 +297,7 @@ IntrusivePtr<TableVal> DNS_Mapping::AddrsSet() {
if ( ! l )
return empty_addr_set();
return {AdoptRef{}, l->ConvertToSet()};
return l->ToSetVal();
}
IntrusivePtr<StringVal> DNS_Mapping::Host()
@ -479,7 +479,7 @@ static IntrusivePtr<TableVal> fake_name_lookup_result(const char* name)
KeyedHash::StaticHash128(name, strlen(name), &hash);
auto hv = make_intrusive<ListVal>(TYPE_ADDR);
hv->Append(new AddrVal(reinterpret_cast<const uint32_t*>(&hash)));
return {AdoptRef{}, hv->ConvertToSet()};
return hv->ToSetVal();
}
static const char* fake_text_lookup_result(const char* name)
@ -715,11 +715,7 @@ void DNS_Mgr::Event(EventHandlerPtr e, DNS_Mapping* dm,
if ( ! e )
return;
mgr.Enqueue(e,
BuildMappingVal(dm),
IntrusivePtr{AdoptRef{}, l1->ConvertToSet()},
IntrusivePtr{AdoptRef{}, l2->ConvertToSet()}
);
mgr.Enqueue(e, BuildMappingVal(dm), l1->ToSetVal(), l2->ToSetVal());
}
void DNS_Mgr::Event(EventHandlerPtr e, DNS_Mapping* old_dm, DNS_Mapping* new_dm)

View file

@ -1226,7 +1226,7 @@ void ListVal::Append(Val* v)
type->AsTypeList()->Append({NewRef{}, v->Type()});
}
TableVal* ListVal::ConvertToSet() const
IntrusivePtr<TableVal> ListVal::ToSetVal() const
{
if ( tag == TYPE_ANY )
Internal("conversion of heterogeneous list to set");
@ -1235,7 +1235,7 @@ TableVal* ListVal::ConvertToSet() const
IntrusivePtr{NewRef{}, type->AsTypeList()->PureType()});
set_index->Append(base_type(tag));
auto s = make_intrusive<SetType>(std::move(set_index), nullptr);
TableVal* t = new TableVal(std::move(s));
auto t = make_intrusive<TableVal>(std::move(s));
for ( const auto& val : vals )
t->Assign(val, nullptr);
@ -1243,6 +1243,11 @@ TableVal* ListVal::ConvertToSet() const
return t;
}
TableVal* ListVal::ConvertToSet() const
{
return ToSetVal().release();
}
void ListVal::Describe(ODesc* d) const
{
if ( d->IsBinary() || d->IsPortable() )

View file

@ -644,6 +644,9 @@ public:
void Append(Val* v);
// Returns a Set representation of the list (which must be homogeneous).
IntrusivePtr<TableVal> ToSetVal() const;
[[deprecated("Remove in v4.1. Use ToSetVal() instead.")]]
TableVal* ConvertToSet() const;
const val_list* Vals() const { return &vals; }

View file

@ -3525,9 +3525,8 @@ public:
{
ListVal* lv = new ListVal(TYPE_ADDR);
lv->Append(new AddrVal("0.0.0.0"));
Val* result = lv->ConvertToSet();
trigger->Cache(call, result);
Unref(result);
auto result = lv->ToSetVal();
trigger->Cache(call, result.get());
Unref(lv);
}