Shell: Store ListValue's values in a NonnullRefPtrVector<Value>

A ListValue never stores null Values, so it makes sense to restrict it.
This also propagates use of NonnullRefPtr to the create() helpers.
There's a small bit of awkwardness around the use of initializer_list,
since we cannot directly construct a NonnullRefPtrVector from one.
This commit is contained in:
Andreas Kling 2020-08-07 09:33:05 +02:00
commit 420e809fee
Notes: sideshowbarker 2024-07-19 04:10:30 +09:00
3 changed files with 16 additions and 16 deletions

View file

@ -238,16 +238,16 @@ public:
virtual bool is_list() const override { return true; }
virtual bool is_list_without_resolution() const override { return true; }
ListValue(Vector<String> values);
ListValue(Vector<RefPtr<Value>> values)
: m_contained_values(move(values))
ListValue(Vector<NonnullRefPtr<Value>> values)
: m_contained_values(move(static_cast<NonnullRefPtrVector<Value>&>(values)))
{
}
const Vector<RefPtr<Value>>& values() const { return m_contained_values; }
Vector<RefPtr<Value>>& values() { return m_contained_values; }
const NonnullRefPtrVector<Value>& values() const { return m_contained_values; }
NonnullRefPtrVector<Value>& values() { return m_contained_values; }
private:
Vector<RefPtr<Value>> m_contained_values;
NonnullRefPtrVector<Value> m_contained_values;
};
class StringValue final : public Value {