chromium/mojo/public/tools/bindings/generators/cpp_templates/interface_proxy_declaration.tmpl

{%- import "interface_macros.tmpl" as interface_macros %}

{%- set interface_prefix = "%s.%s"|format(module_prefix, interface.name) %}

{{ kythe_annotation(interface_prefix) }}
class {{export_attribute}} {{interface.name}}Proxy
    : public {{interface.name}} {
 public:
  using InterfaceType = {{interface.name}};

  explicit {{interface.name}}Proxy(mojo::MessageReceiverWithResponder* receiver);

{%- for method in interface.methods %}
{%-   if method.sync %}
  {{ kythe_annotation("%s.%s"|format(interface_prefix, method.name)) }}
  bool {{method.name}}({{interface_macros.declare_sync_method_params("", method)}}) final;
{%-   endif %}
  {{ kythe_annotation("%s.%s"|format(interface_prefix, method.name)) }}
  void {{method.name}}({{interface_macros.declare_request_params("", method)}}) final;
{%- endfor %}

 private:
  mojo::MessageReceiverWithResponder* receiver_;

{%- if interface|has_estimate_size_methods %}
  mojo::internal::MessageSizeEstimator size_estimator_;
{%- endif %}
};