#ifndef TOOLS_JSON_SCHEMA_COMPILER_UTIL_H_
#define TOOLS_JSON_SCHEMA_COMPILER_UTIL_H_
#include <memory>
#include <string>
#include <utility>
#include <vector>
#include "base/format_macros.h"
#include "base/strings/stringprintf.h"
#include "base/strings/utf_string_conversions.h"
#include "base/values.h"
namespace json_schema_compiler {
namespace util {
bool PopulateItem(const base::Value& from, base::Value& out);
bool PopulateItem(const base::Value& from, int& out);
bool PopulateItem(const base::Value& from, int& out, std::u16string& error);
bool PopulateItem(const base::Value& from, bool& out);
bool PopulateItem(const base::Value& from, bool& out, std::u16string& error);
bool PopulateItem(const base::Value& from, double& out);
bool PopulateItem(const base::Value& from, double& out, std::u16string& error);
bool PopulateItem(const base::Value& from, std::string& out);
bool PopulateItem(const base::Value& from,
std::string& out,
std::u16string& error);
bool PopulateItem(const base::Value& from, std::vector<uint8_t>& out);
bool PopulateItem(const base::Value& from,
std::vector<uint8_t>& out,
std::u16string& error);
bool PopulateItem(const base::Value& from,
base::Value& out,
std::u16string& error);
template <class T>
bool PopulateItem(const base::Value& from, T& out) { … }
template <class T>
bool PopulateItem(const base::Value& from, T& out, std::u16string& error) { … }
template <class T>
bool PopulateArrayFromList(const base::Value::List& list, std::vector<T>& out) { … }
template <class T>
bool PopulateArrayFromList(const base::Value::List& list,
std::vector<T>& out,
std::u16string& error) { … }
template <class T>
bool PopulateOptionalArrayFromList(const base::Value::List& list,
std::optional<std::vector<T>>& out) { … }
template <class T>
bool PopulateOptionalArrayFromList(const base::Value::List& list,
std::optional<std::vector<T>>& out,
std::u16string& error) { … }
void AddItemToList(const int from, base::Value::List& out);
void AddItemToList(const bool from, base::Value::List& out);
void AddItemToList(const double from, base::Value::List& out);
void AddItemToList(const std::string& from, base::Value::List& out);
void AddItemToList(const std::vector<uint8_t>& from, base::Value::List& out);
void AddItemToList(const base::Value& from, base::Value::List& out);
void AddItemToList(const base::Value::Dict& from, base::Value::List& out);
template <class T>
void AddItemToList(const std::unique_ptr<T>& from, base::Value::List& out) { … }
template <class T>
void AddItemToList(const T& from, base::Value::List& out) { … }
template <class T>
base::Value::List CreateValueFromArray(const std::vector<T>& from) { … }
template <class T>
void AppendToContainer(base::Value::List& container, T&& value) { … }
template <class C, class T>
void AppendToContainer(std::vector<C>& container, T&& value) { … }
}
}
#endif