1// Copyright 2016 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_SHARED_INTERNAL_H_"|format( 6 module.path|upper|replace("/","_")|replace(".","_")| 7 replace("-", "_")) %} 8 9#ifndef {{header_guard}} 10#define {{header_guard}} 11 12#include <stdint.h> 13 14#include "mojo/public/cpp/bindings/lib/array_internal.h" 15#include "mojo/public/cpp/bindings/lib/bindings_internal.h" 16#include "mojo/public/cpp/bindings/lib/map_data_internal.h" 17#include "mojo/public/cpp/bindings/lib/native_enum_data.h" 18#include "mojo/public/cpp/bindings/lib/native_struct_data.h" 19#include "mojo/public/cpp/bindings/lib/buffer.h" 20 21{%- for import in imports %} 22#include "{{import.module.path}}-shared-internal.h" 23{%- endfor %} 24 25namespace mojo { 26namespace internal { 27class ValidationContext; 28} 29} 30 31{%- for namespace in namespaces_as_array %} 32namespace {{namespace}} { 33{%- endfor %} 34namespace internal { 35 36{#--- Internal forward declarations #} 37{%- for struct in structs %} 38{%- if struct|is_native_only_kind %} 39using {{struct.name}}_Data = mojo::internal::NativeStruct_Data; 40{%- else %} 41class {{struct.name}}_Data; 42{%- endif %} 43{%- endfor %} 44 45{%- for union in unions %} 46class {{union.name}}_Data; 47{%- endfor %} 48 49{#--- Enums #} 50{%- from "enum_macros.tmpl" import enum_data_decl -%} 51{%- for enum in all_enums %} 52{%- if enum|is_native_only_kind %} 53using {{enum|get_name_for_kind(flatten_nested_kind=True)}}_Data = 54 mojo::internal::NativeEnum_Data; 55{%- else %} 56{{enum_data_decl(enum)}} 57{%- endif %} 58{%- endfor %} 59 60#pragma pack(push, 1) 61 62{#--- Unions must be declared first because they can be members of structs #} 63{#--- Union class declarations #} 64{%- for union in unions %} 65{% include "union_declaration.tmpl" %} 66{%- endfor %} 67 68{#--- Struct class declarations #} 69{%- for struct in structs %} 70{%- if not struct|is_native_only_kind %} 71{% include "struct_declaration.tmpl" %} 72{%- endif %} 73{%- endfor %} 74 75{#--- Interface parameter definitions #} 76{%- for interface in interfaces %} 77{%- for method in interface.methods %} 78{%- set method_name = "k%s_%s_Name"|format(interface.name, method.name) %} 79constexpr uint32_t {{method_name}} = {{method.ordinal}}; 80{%- set struct = method.param_struct %} 81{% include "struct_declaration.tmpl" %} 82{%- if method.response_parameters != None %} 83{%- set struct = method.response_param_struct %} 84{% include "struct_declaration.tmpl" %} 85{%- endif %} 86{%- endfor %} 87{%- endfor %} 88 89#pragma pack(pop) 90 91} // namespace internal 92{%- for namespace in namespaces_as_array|reverse %} 93} // namespace {{namespace}} 94{%- endfor %} 95 96#endif // {{header_guard}} 97