| // Copyright 2013 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. |
| |
| {%- if variant -%} |
| {%- set variant_path = "%s-%s"|format(module.path, variant) -%} |
| {%- else -%} |
| {%- set variant_path = module.path -%} |
| {%- endif -%} |
| |
| {%- set header_guard = "%s_H_"|format( |
| variant_path|upper|replace("/","_")|replace(".","_")| |
| replace("-", "_")) %} |
| |
| {%- macro namespace_begin() %} |
| {%- for namespace in namespaces_as_array %} |
| namespace {{namespace}} { |
| {%- endfor %} |
| {%- if variant %} |
| namespace {{variant}} { |
| {%- endif %} |
| {%- endmacro %} |
| |
| {%- macro namespace_end() %} |
| {%- if variant %} |
| } // namespace {{variant}} |
| {%- endif %} |
| {%- for namespace in namespaces_as_array|reverse %} |
| } // namespace {{namespace}} |
| {%- endfor %} |
| {%- endmacro %} |
| |
| #ifndef {{header_guard}} |
| #define {{header_guard}} |
| |
| #include <stdint.h> |
| |
| #include <limits> |
| #include <type_traits> |
| #include <utility> |
| |
| #include "base/callback.h" |
| #include "base/macros.h" |
| #include "base/optional.h" |
| #include "mojo/public/cpp/bindings/associated_interface_ptr.h" |
| #include "mojo/public/cpp/bindings/associated_interface_ptr_info.h" |
| #include "mojo/public/cpp/bindings/associated_interface_request.h" |
| #include "mojo/public/cpp/bindings/clone_traits.h" |
| #include "mojo/public/cpp/bindings/interface_ptr.h" |
| #include "mojo/public/cpp/bindings/interface_request.h" |
| #include "mojo/public/cpp/bindings/lib/equals_traits.h" |
| #include "mojo/public/cpp/bindings/lib/control_message_handler.h" |
| #include "mojo/public/cpp/bindings/lib/control_message_proxy.h" |
| #include "mojo/public/cpp/bindings/lib/serialization.h" |
| #include "mojo/public/cpp/bindings/lib/union_accessor.h" |
| #include "mojo/public/cpp/bindings/native_struct.h" |
| #include "mojo/public/cpp/bindings/raw_ptr_impl_ref_traits.h" |
| #include "mojo/public/cpp/bindings/struct_ptr.h" |
| #include "mojo/public/cpp/bindings/struct_traits.h" |
| #include "mojo/public/cpp/bindings/thread_safe_interface_ptr.h" |
| #include "mojo/public/cpp/bindings/union_traits.h" |
| #include "{{module.path}}-shared.h" |
| {%- for import in imports %} |
| {%- if variant %} |
| #include "{{"%s-%s.h"|format(import.module.path, variant)}}" |
| {%- else %} |
| #include "{{import.module.path}}.h" |
| {%- endif %} |
| {%- endfor %} |
| {%- if not for_blink %} |
| #include <string> |
| #include <vector> |
| {%- else %} |
| {# hash_util.h includes template specializations that should be present for |
| every use of {Inlined}StructPtr. #} |
| #include "mojo/public/cpp/bindings/lib/wtf_hash_util.h" |
| #include "third_party/WebKit/Source/wtf/HashFunctions.h" |
| #include "third_party/WebKit/Source/wtf/Optional.h" |
| #include "third_party/WebKit/Source/wtf/text/WTFString.h" |
| {%- endif %} |
| |
| {%- for header in extra_public_headers %} |
| #include "{{header}}" |
| {%- endfor %} |
| |
| {%- if export_header %} |
| #include "{{export_header}}" |
| {%- endif %} |
| |
| {#--- WTF enum hashing #} |
| {%- from "enum_macros.tmpl" import enum_hash_blink%} |
| {%- if for_blink %} |
| {%- for enum in all_enums %} |
| {%- if not enum|is_native_only_kind %} |
| {{enum_hash_blink(enum)}} |
| {%- endif %} |
| {%- endfor %} |
| {%- endif %} |
| |
| {{namespace_begin()}} |
| |
| {#--- Enums #} |
| {%- if variant %} |
| {%- for enum in enums %} |
| using {{enum.name}} = {{enum.name}}; // Alias for definition in the parent namespace. |
| {%- endfor %} |
| {%- endif %} |
| |
| {#--- Constants #} |
| {%- for constant in module.constants %} |
| {{constant|format_constant_declaration}}; |
| {%- endfor %} |
| |
| {#--- Interface Forward Declarations -#} |
| {% for interface in interfaces %} |
| class {{interface.name}}; |
| using {{interface.name}}Ptr = mojo::InterfacePtr<{{interface.name}}>; |
| using {{interface.name}}PtrInfo = mojo::InterfacePtrInfo<{{interface.name}}>; |
| using ThreadSafe{{interface.name}}Ptr = |
| mojo::ThreadSafeInterfacePtr<{{interface.name}}>; |
| using {{interface.name}}Request = mojo::InterfaceRequest<{{interface.name}}>; |
| using {{interface.name}}AssociatedPtr = |
| mojo::AssociatedInterfacePtr<{{interface.name}}>; |
| using ThreadSafe{{interface.name}}AssociatedPtr = |
| mojo::ThreadSafeAssociatedInterfacePtr<{{interface.name}}>; |
| using {{interface.name}}AssociatedPtrInfo = |
| mojo::AssociatedInterfacePtrInfo<{{interface.name}}>; |
| using {{interface.name}}AssociatedRequest = |
| mojo::AssociatedInterfaceRequest<{{interface.name}}>; |
| {% endfor %} |
| |
| {#--- Struct Forward Declarations -#} |
| {% for struct in structs %} |
| {%- if struct|is_native_only_kind %} |
| using {{struct.name}} = mojo::NativeStruct; |
| using {{struct.name}}Ptr = mojo::NativeStructPtr; |
| {%- else %} |
| class {{struct.name}}; |
| {%- if struct|should_inline %} |
| using {{struct.name}}Ptr = mojo::InlinedStructPtr<{{struct.name}}>; |
| {%- else %} |
| using {{struct.name}}Ptr = mojo::StructPtr<{{struct.name}}>; |
| {%- endif %} |
| {%- endif %} |
| {% endfor %} |
| |
| {#--- Union Forward Declarations -#} |
| {% for union in unions %} |
| class {{union.name}}; |
| {% if union|should_inline_union %} |
| typedef mojo::InlinedStructPtr<{{union.name}}> {{union.name}}Ptr; |
| {% else %} |
| typedef mojo::StructPtr<{{union.name}}> {{union.name}}Ptr; |
| {% endif %} |
| {%- endfor %} |
| |
| {#--- Interfaces -#} |
| {% for interface in interfaces %} |
| {% include "interface_declaration.tmpl" %} |
| {%- endfor %} |
| |
| {#--- Interface Proxies -#} |
| {% for interface in interfaces %} |
| {% include "interface_proxy_declaration.tmpl" %} |
| {%- endfor %} |
| |
| {#--- Interface Stubs -#} |
| {% for interface in interfaces %} |
| {% include "interface_stub_declaration.tmpl" %} |
| {%- endfor %} |
| |
| {#--- Interface Request Validators -#} |
| {% for interface in interfaces %} |
| {% include "interface_request_validator_declaration.tmpl" %} |
| {%- endfor %} |
| |
| {#--- Interface Response Validators -#} |
| {% for interface in interfaces if interface|has_callbacks %} |
| {% include "interface_response_validator_declaration.tmpl" %} |
| {%- endfor %} |
| |
| {#--- NOTE: Unions and non-inlined structs may have pointers to inlined structs, |
| so we need to fully define inlined structs ahead of the others. #} |
| |
| {#--- Inlined structs #} |
| {% for struct in structs %} |
| {% if struct|should_inline and not struct|is_native_only_kind %} |
| {% include "wrapper_class_declaration.tmpl" %} |
| {% endif %} |
| {%- endfor %} |
| |
| {#--- Unions must be declared before non-inlined structs because they can be |
| members of structs. #} |
| {#--- Unions #} |
| {% for union in unions %} |
| {% include "wrapper_union_class_declaration.tmpl" %} |
| {%- endfor %} |
| |
| {#--- Non-inlined structs #} |
| {% for struct in structs %} |
| {% if not struct|should_inline and not struct|is_native_only_kind %} |
| {% include "wrapper_class_declaration.tmpl" %} |
| {% endif %} |
| {%- endfor %} |
| |
| {%- for union in unions %} |
| {% include "wrapper_union_class_template_definition.tmpl" %} |
| {%- endfor %} |
| |
| {%- for struct in structs %} |
| {%- if not struct|is_native_only_kind %} |
| {% include "wrapper_class_template_definition.tmpl" %} |
| {%- endif %} |
| {%- endfor %} |
| |
| {{namespace_end()}} |
| |
| namespace mojo { |
| |
| {#--- Struct Serialization Helpers -#} |
| {% for struct in structs %} |
| {%- if not struct|is_native_only_kind %} |
| {% include "struct_traits_declaration.tmpl" %} |
| {%- endif %} |
| {%- endfor %} |
| |
| {#--- Union Serialization Helpers -#} |
| {% if unions %} |
| {%- for union in unions %} |
| {% include "union_traits_declaration.tmpl" %} |
| {%- endfor %} |
| {%- endif %} |
| |
| } // namespace mojo |
| |
| #endif // {{header_guard}} |