| // Copyright 2016 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. |
| |
| {%- set header_guard = "%s_SHARED_INTERNAL_H_"|format( |
| module.path|upper|replace("/","_")|replace(".","_")| |
| replace("-", "_")) %} |
| |
| #ifndef {{header_guard}} |
| #define {{header_guard}} |
| |
| #include <stdint.h> |
| |
| #include "mojo/public/cpp/bindings/lib/array_internal.h" |
| #include "mojo/public/cpp/bindings/lib/bindings_internal.h" |
| #include "mojo/public/cpp/bindings/lib/map_data_internal.h" |
| #include "mojo/public/cpp/bindings/lib/native_enum_data.h" |
| #include "mojo/public/cpp/bindings/lib/native_struct_data.h" |
| #include "mojo/public/cpp/bindings/lib/buffer.h" |
| |
| {%- for import in imports %} |
| #include "{{import.module.path}}-shared-internal.h" |
| {%- endfor %} |
| |
| namespace mojo { |
| namespace internal { |
| class ValidationContext; |
| } |
| } |
| |
| {%- for namespace in namespaces_as_array %} |
| namespace {{namespace}} { |
| {%- endfor %} |
| namespace internal { |
| |
| {#--- Internal forward declarations #} |
| {%- for struct in structs %} |
| {%- if struct|is_native_only_kind %} |
| using {{struct.name}}_Data = mojo::internal::NativeStruct_Data; |
| {%- else %} |
| class {{struct.name}}_Data; |
| {%- endif %} |
| {%- endfor %} |
| |
| {%- for union in unions %} |
| class {{union.name}}_Data; |
| {%- endfor %} |
| |
| {#--- Enums #} |
| {%- from "enum_macros.tmpl" import enum_data_decl -%} |
| {%- for enum in all_enums %} |
| {%- if enum|is_native_only_kind %} |
| using {{enum|get_name_for_kind(flatten_nested_kind=True)}}_Data = |
| mojo::internal::NativeEnum_Data; |
| {%- else %} |
| {{enum_data_decl(enum)}} |
| {%- endif %} |
| {%- endfor %} |
| |
| #pragma pack(push, 1) |
| |
| {#--- Unions must be declared first because they can be members of structs #} |
| {#--- Union class declarations #} |
| {%- for union in unions %} |
| {% include "union_declaration.tmpl" %} |
| {%- endfor %} |
| |
| {#--- Struct class declarations #} |
| {%- for struct in structs %} |
| {%- if not struct|is_native_only_kind %} |
| {% include "struct_declaration.tmpl" %} |
| {%- endif %} |
| {%- endfor %} |
| |
| {#--- Interface parameter definitions #} |
| {%- for interface in interfaces %} |
| {%- for method in interface.methods %} |
| {%- set method_name = "k%s_%s_Name"|format(interface.name, method.name) %} |
| constexpr uint32_t {{method_name}} = {{method.ordinal}}; |
| {%- set struct = method.param_struct %} |
| {% include "struct_declaration.tmpl" %} |
| {%- if method.response_parameters != None %} |
| {%- set struct = method.response_param_struct %} |
| {% include "struct_declaration.tmpl" %} |
| {%- endif %} |
| {%- endfor %} |
| {%- endfor %} |
| |
| #pragma pack(pop) |
| |
| } // namespace internal |
| {%- for namespace in namespaces_as_array|reverse %} |
| } // namespace {{namespace}} |
| {%- endfor %} |
| |
| #endif // {{header_guard}} |