blob: 30d20d8993e601f078e81340bba453341494eb4c [file] [log] [blame]
{%- import "interface_macros.tmpl" as interface_macros %}
class {{interface.name}}Proxy;
class {{interface.name}}Stub;
class {{interface.name}}RequestValidator;
{%- if interface|has_callbacks %}
class {{interface.name}}ResponseValidator;
{%- endif %}
{% if interface.client %}
class {{interface.client}};
{% endif %}
class {{interface.name}} {
public:
static const char* Name_;
typedef {{interface.name}}Proxy Proxy_;
typedef {{interface.name}}Stub Stub_;
typedef {{interface.name}}RequestValidator RequestValidator_;
{%- if interface|has_callbacks %}
typedef {{interface.name}}ResponseValidator ResponseValidator_;
{%- else %}
typedef mojo::PassThroughFilter ResponseValidator_;
{%- endif %}
{% if interface.client %}
typedef {{interface.client}} Client;
{% else %}
typedef mojo::NoInterface Client;
{% endif %}
{#--- Constants #}
{%- for constant in interface.constants %}
static const {{constant.kind|cpp_pod_type}} {{constant.name}};
{%- endfor %}
{#--- Enums #}
{%- for enum in interface.enums %}
{% macro enum_def() %}{% include "enum_declaration.tmpl" %}{% endmacro %}
{{enum_def()|indent(2)}}
{%- endfor %}
{#--- Methods #}
virtual ~{{interface.name}}() {}
{%- for method in interface.methods %}
virtual void {{method.name}}({{interface_macros.declare_request_params("", method)}}) = 0;
{%- endfor %}
};