Upstream version 7.36.149.0
[platform/framework/web/crosswalk.git] / src / mojo / public / tools / bindings / generators / cpp_templates / struct_declaration.tmpl
1 {%- import "struct_macros.tmpl" as struct_macros %}
2 {%- set class_name = struct.name ~ "_Data" -%}
3
4 class {{class_name}} {
5  public:
6   typedef {{struct.name}} Wrapper;
7
8   static {{class_name}}* New(mojo::Buffer* buf, mojo::Buffer::Destructor dtor = NULL);
9
10 {#--- Setters -#}
11 {{ struct_macros.setters(struct) }}
12
13 {#--- Getters -#}
14 {{ struct_macros.getters(struct) }}
15
16   size_t ComputeSize() const;
17   {{class_name}}* Clone(mojo::Buffer* buf) const;
18   void CloseHandles();
19   void EncodePointersAndHandles(std::vector<mojo::Handle>* handles);
20   bool DecodePointersAndHandles(mojo::Message* message);
21
22  private:
23   {{class_name}}();
24   ~{{class_name}}();  // NOT IMPLEMENTED
25
26   mojo::internal::StructHeader _header_;
27 {{ struct_macros.fields(struct) }}
28 };
29 MOJO_COMPILE_ASSERT(sizeof({{class_name}}) == {{struct.packed|struct_size}},
30                     bad_sizeof_{{class_name}});