blob: f905080e8e231ee9d4a099c6a53bd3651386576c [file] [log] [blame]
// Copyright 2017 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.
// This is a generated file. Please see the "catalog_cpp_source" template in
// src/services/catalog/public/tools/catalog.gni for more details.
#include "{{path}}.h"
#include "base/memory/ptr_util.h"
#include "base/values.h"
namespace {
template <typename T>
std::unique_ptr<base::Value> GenerateValue(T generator) { return generator(); }
} // namespace
{%- macro generate_value(source) -%}
{%- if source|is_dict -%}
GenerateValue([]() {
auto dict = base::MakeUnique<base::DictionaryValue>();
{%- for key, value in source.iteritems() %}
dict->Set("{{key}}", {{generate_value(value)|indent(2)}});
{%- endfor %}
return dict;
})
{%- elif source|is_list -%}
GenerateValue([]() {
auto list = base::MakeUnique<base::ListValue>();
{%- for value in source %}
list->Append({{generate_value(value)|indent(2)}});
{%- endfor %}
return list;
})
{%- elif source|is_number -%}
base::MakeUnique<base::Value>({{source}})
{%- elif source|is_bool -%}
base::MakeUnique<base::Value>({{source|lower}})
{%- elif source|is_string or source|is_unicode -%}
base::MakeUnique<base::Value>("{{source|make_ascii}}")
{%- else %}
{{raise("Unknown value type: %s" % source, source)}}
{%- endif %}
{%- endmacro -%}
{% for namespace in namespaces %}
namespace {{namespace}} {
{%- endfor %}
std::unique_ptr<base::Value> {{function_name}}() {
return {{generate_value(catalog)|indent(2)}};
}
{%- for namespace in namespaces|reverse %}
} // namespace {{namespace}}
{%- endfor %}