Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(392)

Side by Side Diff: mojo/public/tools/bindings/generators/cpp_templates/module-internal.h.tmpl

Issue 2247083003: Mojo C++ bindings: extract code shared by different variants. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: . Created 4 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright 2013 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 {%- if variant -%}
6 {%- set variant_path = "%s-%s"|format(module.path, variant) -%}
7 {%- else -%}
8 {%- set variant_path = module.path -%}
9 {%- endif -%}
10
11 {%- set header_guard = "%s_INTERNAL_H_"|format(
12 variant_path|upper|replace("/","_")|replace(".","_")|
13 replace("-", "_")) %}
14
15 #ifndef {{header_guard}}
16 #define {{header_guard}}
17
18 #include "mojo/public/cpp/bindings/lib/bindings_internal.h"
19 #include "mojo/public/cpp/bindings/lib/buffer.h"
20 #include "mojo/public/cpp/bindings/lib/serialization.h"
21 #include "mojo/public/cpp/bindings/lib/union_accessor.h"
22 #include "mojo/public/cpp/bindings/struct_ptr.h"
23
24 {%- for import in imports %}
25 {%- if variant %}
26 #include "{{"%s-%s-internal.h"|format(import.module.path, variant)}}"
27 {%- else %}
28 #include "{{import.module.path}}-internal.h"
29 {%- endif %}
30 {%- endfor %}
31
32 {%- if export_header %}
33 #include "{{export_header}}"
34 {%- endif %}
35
36 namespace mojo {
37 namespace internal {
38 class ValidationContext;
39 }
40 }
41
42 {%- for namespace in namespaces_as_array %}
43 namespace {{namespace}} {
44 {%- endfor %}
45 {%- if variant %}
46 namespace {{variant}} {
47 {%- endif %}
48
49 {#--- Wrapper forward declarations #}
50 {% for struct in structs %}
51 {%- if struct|is_native_only_kind %}
52 using {{struct.name}} = mojo::NativeStruct;
53 {%- else %}
54 class {{struct.name}};
55 {%- endif %}
56 {%- endfor %}
57
58 {#--- Wrapper forward declarations for unions #}
59 {% for union in unions %}
60 class {{union.name}};
61 {%- endfor %}
62
63 namespace internal {
64
65 {#--- Internal forward declarations #}
66 {% for struct in structs %}
67 {%- if struct|is_native_only_kind %}
68 using {{struct.name}}_Data = mojo::internal::NativeStruct_Data;
69 {%- else %}
70 class {{struct.name}}_Data;
71 {%- endif %}
72 {%- endfor %}
73
74 {% for union in unions %}
75 class {{union.name}}_Data;
76 {%- endfor %}
77
78 {#--- Enums #}
79 {% from "enum_macros.tmpl" import enum_data_decl -%}
80 {%- for enum in enums %}
81 {%- if enum|is_native_only_kind %}
82 using {{enum.name}}_Data = mojo::internal::NativeEnum_Data;
83 {%- else %}
84 {{enum_data_decl(enum)}}
85 {%- endif %}
86 {%- endfor %}
87
88 #pragma pack(push, 1)
89
90 {#--- Unions must be declared first because they can be members of structs #}
91 {#--- Union class declarations #}
92 {% for union in unions %}
93 {% include "union_declaration.tmpl" %}
94 {%- endfor %}
95
96 {#--- Struct class declarations #}
97 {% for struct in structs %}
98 {%- if not struct|is_native_only_kind %}
99 {% include "struct_declaration.tmpl" %}
100 {%- endif %}
101 {%- endfor %}
102
103 {#--- Interface class declarations. They are needed only when they contain
104 enums. #}
105 {%- for interface in interfaces %}
106 {%- if interface.enums %}
107 class {{interface.name}}_Data {
108 public:
109 {%- for enum in interface.enums %}
110 {%- if enum|is_native_only_kind %}
111 using {{enum.name}}_Data = mojo::internal::NativeEnum_Data;
112 {%- else %}
113 {{enum_data_decl(enum)|indent(2)}}
114 {%- endif %}
115 {%- endfor %}
116 };
117 {%- endif %}
118 {%- endfor %}
119
120 #pragma pack(pop)
121
122 } // namespace internal
123 {%- if variant %}
124 } // namespace {{variant}}
125 {%- endif %}
126 {%- for namespace in namespaces_as_array|reverse %}
127 } // namespace {{namespace}}
128 {%- endfor %}
129
130 #endif // {{header_guard}}
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698