1// Copyright 2013 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5{%- set header_guard = "%s_H_"| 6 format(module.path|upper|replace("/","_")|replace(".","_")) %} 7 8#ifndef {{header_guard}} 9#define {{header_guard}} 10 11#include "mojo/public/cpp/bindings/array.h" 12#include "mojo/public/cpp/bindings/callback.h" 13#include "mojo/public/cpp/bindings/interface_impl.h" 14#include "mojo/public/cpp/bindings/interface_ptr.h" 15#include "mojo/public/cpp/bindings/interface_request.h" 16#include "mojo/public/cpp/bindings/message_filter.h" 17#include "mojo/public/cpp/bindings/no_interface.h" 18#include "mojo/public/cpp/bindings/string.h" 19#include "mojo/public/cpp/bindings/struct_ptr.h" 20#include "{{module.path}}-internal.h" 21{%- for import in imports %} 22#include "{{import.module.path}}.h" 23{%- endfor %} 24 25{%- for namespace in namespaces_as_array %} 26namespace {{namespace}} { 27{%- endfor %} 28 29{#--- Constants #} 30{% for constant in module.constants %} 31extern const {{constant.kind|cpp_pod_type}} {{constant.name}}; 32{%- endfor %} 33 34{#--- Enums #} 35{% for enum in enums %} 36{% include "enum_declaration.tmpl" %} 37{%- endfor %} 38 39{#--- Interface Forward Declarations -#} 40{% for interface in interfaces %} 41class {{interface.name}}; 42typedef mojo::InterfacePtr<{{interface.name}}> {{interface.name}}Ptr; 43{% endfor %} 44 45{#--- Struct Forward Declarations -#} 46{% for struct in structs %} 47class {{struct.name}}; 48{% if struct|should_inline %} 49typedef mojo::InlinedStructPtr<{{struct.name}}> {{struct.name}}Ptr; 50{% else %} 51typedef mojo::StructPtr<{{struct.name}}> {{struct.name}}Ptr; 52{% endif %} 53{% endfor %} 54 55{#--- NOTE: Non-inlined structs may have pointers to inlined structs, so we #} 56{#--- need to fully define inlined structs ahead of the others. #} 57 58{#--- Inlined structs #} 59{% for struct in structs %} 60{% if struct|should_inline %} 61{% include "wrapper_class_declaration.tmpl" %} 62{% endif %} 63{%- endfor %} 64 65{#--- Non-inlined structs #} 66{% for struct in structs %} 67{% if not struct|should_inline %} 68{% include "wrapper_class_declaration.tmpl" %} 69{% endif %} 70{%- endfor %} 71 72{#--- Interfaces -#} 73{% for interface in interfaces %} 74{% include "interface_declaration.tmpl" %} 75{%- endfor %} 76 77{#--- Interface Proxies -#} 78{% for interface in interfaces %} 79{% include "interface_proxy_declaration.tmpl" %} 80{%- endfor %} 81 82{#--- Interface Stubs -#} 83{% for interface in interfaces %} 84{% include "interface_stub_declaration.tmpl" %} 85{%- endfor %} 86 87{#--- Interface Request Validators -#} 88{% for interface in interfaces %} 89{% include "interface_request_validator_declaration.tmpl" %} 90{%- endfor %} 91 92{#--- Interface Response Validators -#} 93{% for interface in interfaces if interface|has_callbacks %} 94{% include "interface_response_validator_declaration.tmpl" %} 95{%- endfor %} 96 97{#--- Struct Serialization Helpers -#} 98{% if structs %} 99{% for struct in structs %} 100{% include "struct_serialization_declaration.tmpl" %} 101{%- endfor %} 102{%- endif %} 103 104{%- for namespace in namespaces_as_array|reverse %} 105} // namespace {{namespace}} 106{%- endfor %} 107 108#endif // {{header_guard}} 109