Index: mojo/public/tools/bindings/generators/cpp_templates/union_declaration.tmpl |
diff --git a/mojo/public/tools/bindings/generators/cpp_templates/union_declaration.tmpl b/mojo/public/tools/bindings/generators/cpp_templates/union_declaration.tmpl |
index 6e6fe95a74c1dc207af7f5d252494a1936fd7e14..bc77c112dd0f010dbd0d4f817d648c4e0031c4f4 100644 |
--- a/mojo/public/tools/bindings/generators/cpp_templates/union_declaration.tmpl |
+++ b/mojo/public/tools/bindings/generators/cpp_templates/union_declaration.tmpl |
@@ -4,10 +4,22 @@ |
class {{class_name}} { |
public: |
+ // Used to identify Mojom Union Data Classes. |
+ typedef void MojomUnionDataType; |
static {{class_name}}* New(mojo::internal::Buffer* buf); |
+ {{class_name}}(); |
+ // Do nothing in the destructor since it won't be called. |
+ ~{{class_name}}() {} |
static bool Validate(const void* data, |
- mojo::internal::BoundsChecker* bounds_checker); |
+ mojo::internal::BoundsChecker* bounds_checker, |
+ bool inlined); |
+ |
+ bool is_null() const { |
+ return size == 0; |
+ } |
+ |
+ void set_null(); |
enum class {{enum_name}} : uint32_t { |
{% for field in union.fields %} |
@@ -33,16 +45,12 @@ class {{class_name}} { |
uint64_t unknown; |
}; |
- uint32_t reserved; |
+ uint32_t size; |
{{enum_name}} tag; |
Union_ data; |
void EncodePointersAndHandles(std::vector<mojo::Handle>* handles); |
void DecodePointersAndHandles(std::vector<mojo::Handle>* handles); |
- |
- private: |
- {{class_name}}(); |
- ~{{class_name}}() = delete; |
}; |
static_assert(sizeof({{class_name}}) == 16, |
"Bad sizeof({{class_name}})"); |