blob: c10b8a23c269f7209b98bb4ee86234513828dc1a [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.
{% from 'macros.tmpl' import source_files_for_generated_file %}
{{source_files_for_generated_file(template_file, input_files)}}
#ifndef {{header_guard}}
#define {{header_guard}}
#include "third_party/blink/renderer/platform/heap/heap_allocator.h"
{% for include in config["settings"]["includes"] %}
#include "{{include}}"
{% endfor %}
{% set export_symbol = config["settings"]["export_symbol"] %}
{% set sink_class = (name | to_singular) + "Sink" %}
namespace blink {
{% for forward_decl in file.forward_declarations %}
{{forward_decl}}
{% endfor %}
namespace probe {
{% for probe in file.declarations %}
{%- macro params_decl(probe) %}
{%- for param in probe.params %}
{{ param.type }}
{%- if param.default_value %} = {{ param.default_value }}
{%- endif %}
{%- if not loop.last %}, {% endif %}
{%- endfor %}
{%- endmacro -%}
{%- macro params_list(probe) %}
{%- for param in probe.params %}
{{param.type}} {{param.name}}
{%- if not loop.last %}, {% endif -%}
{%- endfor -%}
{%- endmacro %}
{% if probe.is_scoped %}
class {{export_symbol}} {{probe.name}} : public ProbeBase {
STACK_ALLOCATED();
public:
explicit {{probe.name}}({{ params_decl(probe) }});
~{{probe.name}}();
{{sink_class}}* probe_sink = nullptr;
{% for param in probe.params %}
{{param.type}} {{param.name}};
{% endfor %}
};
{%- else %}
{{export_symbol}} void {{probe.name}}Impl({{ params_decl(probe) }});
inline void {{probe.name}}({{params_list(probe)}}) {
if (!{{sink_class}}::HasAgentsGlobal(
{%- for agent in probe.agents %}
{% if not loop.first %} | {% endif -%}
{{sink_class}}::k{{agent}}
{%- endfor %}))
return;
{{probe.name}}Impl(
{%- for param in probe.params %}
{% if not loop.first %}, {% endif %}{{param.name}}
{%- endfor %});
}
{%- endif %}
{%- endfor %}
} // namespace probe
} // namespace blink
#endif // {{header_guard}}