| void Config::record_to_inspect(inspect::Inspector* inspector) { |
| inspect::Node inspect_config = inspector->GetRoot().CreateChild("config"); |
| {{#each fields}} |
| {{#if (is_string_vector type_)}} |
| auto {{ident}} = inspect_config.CreateStringArray("{{ident}}", this->{{ident}}().size()); |
| for (size_t i = 0; i < this->{{ident}}().size(); i++) { |
| auto ref = std::string_view(this->{{ident}}()[i].data()); |
| {{ident}}.Set(i, ref); |
| } |
| inspector->emplace(std::move({{ident}})); |
| {{else}} |
| {{#if (is_vector type_)}} |
| auto {{ident}} = |
| inspect_config.Create{{(inspect_type type_)}}Array("{{ident}}", this->{{ident}}().size()); |
| for (size_t i = 0; i < this->{{ident}}().size(); i++) { |
| {{ident}}.Set(i, this->{{ident}}()[i]); |
| } |
| inspector->emplace(std::move({{ident}})); |
| {{else}} |
| inspect_config.Create{{(inspect_type type_)}}("{{ident}}", this->{{ident}}(), inspector); |
| {{/if}} |
| {{/if}} |
| |
| {{/each}} |
| inspector->emplace(std::move(inspect_config)); |
| } |
| |
| std::ostream& operator<<(std::ostream& os, const Config& c) { |
| {{#each fields}} |
| {{#if (is_vector type_)}} |
| os << " {{ident}}: [" << std::endl; |
| for (auto value : c.{{ident}}()) { |
| os << " " << value << "," << std::endl; |
| } |
| os << "]" << std::endl; |
| {{else}} |
| os << " {{ident}}: " << c.{{ident}}() << std::endl; |
| {{/if}} |
| {{~/each~}} |
| return os; |
| } |
| |
| template <class T> |
| std::vector<T> from_vector_view(fidl::VectorView<T> v) { |
| size_t count = v.count(); |
| std::vector<T> data(count); |
| for (size_t i = 0; i < count; i++) { |
| data[i] = v[i]; |
| } |
| return data; |
| } |
| |
| std::vector<std::string> from_vector_string_view(fidl::VectorView<fidl::StringView> v) { |
| size_t count = v.count(); |
| std::vector<std::string> data(count); |
| for (size_t i = 0; i < count; i++) { |
| data[i] = std::string(v[i].get()); |
| } |
| return data; |
| } |