// Copyright 2016 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef VALUES_H_ #define VALUES_H_ #include <memory> #include <string> #include <vector> namespace base { class Value { public: using ListStorage = std::vector<Value>; ListStorage& GetList(); const ListStorage& GetList() const; protected: ListStorage list_; }; class ListValue : public Value { public: void Clear(); size_t GetSize() const; bool empty() const; void Reserve(size_t); void AppendBoolean(bool); void AppendInteger(int); void AppendDouble(double); void AppendString(std::string); void Append(std::unique_ptr<Value> in_value); void AppendStrings(const std::vector<std::string>& in_values); bool AppendIfNotPresent(std::unique_ptr<Value> in_value); }; } // namespace base #endif // VALUES_H_