| void Config::RecordInspect(inspect::Node* node) { |
| {{#each fields}} |
| {{#if (is_string_vector type_)}} |
| auto {{ident}}_array_ = node->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}}_array_.Set(i, ref); |
| } |
| node->Record(std::move({{ident}}_array_)); |
| {{else}} |
| {{#if (is_vector type_)}} |
| auto {{ident}}_array_ = |
| node->Create{{(inspect_type type_)}}Array("{{ident}}", this->{{ident}}().size()); |
| for (size_t i = 0; i < this->{{ident}}().size(); i++) { |
| {{ident}}_array_.Set(i, this->{{ident}}()[i]); |
| } |
| node->Record(std::move({{ident}}_array_)); |
| {{else}} |
| node->Record{{(inspect_type type_)}}("{{ident}}", this->{{ident}}()); |
| {{/if}} |
| {{/if}} |
| {{/each}} |
| } |
| |
| 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; |
| } |