OLD | NEW |
---|---|
1 {% filter format_blink_cpp_source_code %} | 1 {% filter format_blink_cpp_source_code %} |
2 | 2 |
3 {% include 'copyright_block.txt' %} | 3 {% include 'copyright_block.txt' %} |
4 | 4 |
5 #ifndef {{cpp_class}}_h | 5 #ifndef {{cpp_class}}_h |
6 #define {{cpp_class}}_h | 6 #define {{cpp_class}}_h |
7 | 7 |
8 {% for filename in header_includes %} | 8 {% for filename in header_includes %} |
9 #include "{{filename}}" | 9 #include "{{filename}}" |
10 {% endfor %} | 10 {% endfor %} |
11 | 11 |
12 namespace blink { | 12 namespace blink { |
13 | 13 |
14 class ScriptState; | 14 class ScriptState; |
15 {% for forward_declaration in forward_declarations %} | 15 {% for forward_declaration in forward_declarations %} |
16 class {{forward_declaration}}; | 16 class {{forward_declaration}}; |
17 {% endfor %} | 17 {% endfor %} |
18 | 18 |
19 class {{exported}}{{cpp_class}} final : public GarbageCollectedFinalized<{{cpp_c lass}}> { | 19 class {{exported}}{{cpp_class}} final : public GarbageCollectedFinalized<{{cpp_c lass}}>, |
20 public TraceWrapperBase { | |
Michael Lippautz
2016/10/19 12:20:21
If you think that the extra vtable ptr is too much
haraken
2016/10/19 12:32:38
I don't think sizeof(callback function) really mat
Michael Lippautz
2016/10/19 13:13:14
Sure; ElementRareData and similar classes are part
Marcel Hlopko
2016/10/19 15:08:17
To reiterate what Michael is saying, if a class is
haraken
2016/10/19 15:31:43
Thanks for the clarification -- yes, TraceWrappers
Michael Lippautz
2016/10/19 15:44:35
Acknowledged.
| |
20 | 21 |
21 public: | 22 public: |
22 static {{cpp_class}}* create(v8::Isolate* isolate, v8::Local<v8::Function> c allback) | 23 static {{cpp_class}}* create(v8::Isolate* isolate, v8::Local<v8::Function> c allback) |
23 { | 24 { |
24 return new {{cpp_class}}(isolate, callback); | 25 return new {{cpp_class}}(isolate, callback); |
25 } | 26 } |
26 | 27 |
27 ~{{cpp_class}}() = default; | 28 ~{{cpp_class}}() = default; |
28 | 29 |
29 DECLARE_TRACE(); | 30 DECLARE_TRACE(); |
31 DECLARE_TRACE_WRAPPERS(); | |
30 | 32 |
31 bool call({{argument_declarations | join(', ')}}); | 33 bool call({{argument_declarations | join(', ')}}); |
32 | 34 |
33 v8::Local<v8::Function> v8Value(v8::Isolate* isolate) | 35 v8::Local<v8::Function> v8Value(v8::Isolate* isolate) |
34 { | 36 { |
35 return m_callback.newLocal(isolate); | 37 return m_callback.newLocal(isolate); |
36 } | 38 } |
37 | 39 |
38 void setWrapperReference(v8::Isolate* isolate, const v8::Persistent<v8::Obje ct>& wrapper) | 40 void setWrapperReference(v8::Isolate* isolate, const v8::Persistent<v8::Obje ct>& wrapper) |
39 { | 41 { |
40 DCHECK(!m_callback.isEmpty()); | 42 DCHECK(!m_callback.isEmpty()); |
41 m_callback.setReference(wrapper, isolate); | 43 m_callback.setReference(wrapper, isolate); |
42 } | 44 } |
43 | 45 |
44 private: | 46 private: |
45 {{cpp_class}}(v8::Isolate* isolate, v8::Local<v8::Function>); | 47 {{cpp_class}}(v8::Isolate* isolate, v8::Local<v8::Function>); |
46 ScopedPersistent<v8::Function> m_callback; | 48 ScopedPersistent<v8::Function> m_callback; |
47 }; | 49 }; |
48 | 50 |
49 } // namespace blink | 51 } // namespace blink |
50 | 52 |
51 #endif // {{cpp_class}}_h | 53 #endif // {{cpp_class}}_h |
52 | 54 |
53 {% endfilter %}{# format_blink_cpp_source_code #} | 55 {% endfilter %}{# format_blink_cpp_source_code #} |
OLD | NEW |