blob: 7a2dfcc28217c418381b991f22c0745660dc0581 [file] [log] [blame] [edit]
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;
}