blob: 0b7cb2ebe6606979c06b12fb16026dbeb8869f3c [file] [log] [blame]
{% import "struct_macros.tmpl" as struct_macros -%}
{% import "interface_macros.tmpl" as interface_macros -%}
{%- set header_guard = "%s_SYNC_H_"|
format(module.path|upper|replace("/","_")|replace(".","_")) -%}
// NOTE: This file was generated by the Mojo bindings generator.
#ifndef {{header_guard}}
#define {{header_guard}}
#include <stdint.h>
#include "mojo/public/cpp/bindings/array.h"
#include "mojo/public/cpp/bindings/callback.h"
#include "mojo/public/cpp/bindings/interface_handle.h"
#include "mojo/public/cpp/bindings/interface_request.h"
#include "mojo/public/cpp/bindings/map.h"
#include "mojo/public/cpp/bindings/message_validator.h"
#include "mojo/public/cpp/bindings/string.h"
#include "mojo/public/cpp/bindings/struct_ptr.h"
#include "mojo/public/cpp/bindings/lib/synchronous_connector.h"
#include "{{module.path}}-internal.h"
#include "{{module.path}}-common.h"
{%- for import in imports %}
#include "{{import.module.path}}.h"
{%- endfor %}
{% for namespace in namespaces_as_array %}
namespace {{namespace}} {
{%- endfor %}
// --- Synchronous interface declaration ---
{% for interface in interfaces %}
class {{interface.name}}_SynchronousProxy;
class {{interface.name}}_Synchronous
: public internal::{{interface.name}}_Base {
public:
virtual ~{{interface.name}}_Synchronous() override {}
using Proxy_ = {{interface.name}}_SynchronousProxy;
{%- for method in interface.methods %}
virtual bool {{method.name}}(
{{interface_macros.declare_sync_request_params(method)}})
{%- if method.response_parameters == None -%} const {%- endif -%}
= 0;
{%- endfor %}
};
class {{interface.name}}_SynchronousProxy
: public {{interface.name}}_Synchronous {
public:
explicit {{interface.name}}_SynchronousProxy(
mojo::internal::SynchronousConnector* connector,
mojo::internal::MessageValidatorList&& validators);
{%- for method in interface.methods %}
bool {{method.name}}({{interface_macros.declare_sync_request_params(method)}})
{%- if method.response_parameters == None %} const {% endif %} override;
{%- endfor %}
private:
// |connector_| is passed to us, and is not owned by us.
mojo::internal::SynchronousConnector* const connector_;
mojo::internal::MessageValidatorList const validators_;
};
{% endfor %}
{%- for namespace in namespaces_as_array|reverse %}
} // namespace {{namespace}}
{%- endfor %}
#endif // {{header_guard}}