• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright 2014 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 #ifndef TRACE_TEMPLATED_SUPER_H_
6 #define TRACE_TEMPLATED_SUPER_H_
7 
8 #include "heap/stubs.h"
9 
10 namespace blink {
11 
12 class HeapObject;
13 
14 class Mixin : public GarbageCollectedMixin {
15 public:
Trace(Visitor *)16     virtual void Trace(Visitor*) override { }
17 };
18 
19 template<typename T>
20 class Super : public GarbageCollected<Super<T> >, public Mixin {
21     USING_GARBAGE_COLLECTED_MIXIN(Super);
22 public:
23     virtual void Trace(Visitor*) override;
24     void clearWeakMembers(Visitor*);
25 private:
26     Member<HeapObject> m_obj;
27     WeakMember<HeapObject> m_weak;
28 };
29 
30 template<typename T>
31 class Sub : public Super<T> {
32 public:
33     virtual void Trace(Visitor* visitor) override;
34 private:
35     Member<HeapObject> m_obj;
36 };
37 
38 class HeapObject : public Sub<HeapObject> {
39 public:
40     virtual void Trace(Visitor*) override;
41 private:
42     Member<HeapObject> m_obj;
43 };
44 
45 }
46 
47 #endif
48