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