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 ) if ( ! l )
return empty_addr_set(); return empty_addr_set();
return {AdoptRef{}, l->ConvertToSet()}; return l->ToSetVal();
} }
IntrusivePtr<StringVal> DNS_Mapping::Host() 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); KeyedHash::StaticHash128(name, strlen(name), &hash);
auto hv = make_intrusive<ListVal>(TYPE_ADDR); auto hv = make_intrusive<ListVal>(TYPE_ADDR);
hv->Append(new AddrVal(reinterpret_cast<const uint32_t*>(&hash))); 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) 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 ) if ( ! e )
return; return;
mgr.Enqueue(e, mgr.Enqueue(e, BuildMappingVal(dm), l1->ToSetVal(), l2->ToSetVal());
BuildMappingVal(dm),
IntrusivePtr{AdoptRef{}, l1->ConvertToSet()},
IntrusivePtr{AdoptRef{}, l2->ConvertToSet()}
);
} }
void DNS_Mgr::Event(EventHandlerPtr e, DNS_Mapping* old_dm, DNS_Mapping* new_dm) 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()}); type->AsTypeList()->Append({NewRef{}, v->Type()});
} }
TableVal* ListVal::ConvertToSet() const IntrusivePtr<TableVal> ListVal::ToSetVal() const
{ {
if ( tag == TYPE_ANY ) if ( tag == TYPE_ANY )
Internal("conversion of heterogeneous list to set"); Internal("conversion of heterogeneous list to set");
@ -1235,7 +1235,7 @@ TableVal* ListVal::ConvertToSet() const
IntrusivePtr{NewRef{}, type->AsTypeList()->PureType()}); IntrusivePtr{NewRef{}, type->AsTypeList()->PureType()});
set_index->Append(base_type(tag)); set_index->Append(base_type(tag));
auto s = make_intrusive<SetType>(std::move(set_index), nullptr); 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 ) for ( const auto& val : vals )
t->Assign(val, nullptr); t->Assign(val, nullptr);
@ -1243,6 +1243,11 @@ TableVal* ListVal::ConvertToSet() const
return t; return t;
} }
TableVal* ListVal::ConvertToSet() const
{
return ToSetVal().release();
}
void ListVal::Describe(ODesc* d) const void ListVal::Describe(ODesc* d) const
{ {
if ( d->IsBinary() || d->IsPortable() ) if ( d->IsBinary() || d->IsPortable() )

View file

@ -644,6 +644,9 @@ public:
void Append(Val* v); void Append(Val* v);
// Returns a Set representation of the list (which must be homogeneous). // 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; TableVal* ConvertToSet() const;
const val_list* Vals() const { return &vals; } const val_list* Vals() const { return &vals; }

View file

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