Home | History | Annotate | Download | only in cpp_templates
      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