• 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 CLASS_REQUIRES_TRACE_METHOD_H_
6 #define CLASS_REQUIRES_TRACE_METHOD_H_
7 
8 #include "heap/stubs.h"
9 
10 namespace blink {
11 
12 class HeapObject;
13 
14 class PartObject {
15     DISALLOW_NEW();
16 private:
17     Member<HeapObject> m_obj;
18 };
19 
20 class HeapObject : public GarbageCollected<HeapObject> {
21 private:
22     PartObject m_part;
23 };
24 
25 class Mixin : public GarbageCollectedMixin {
26 public:
27   virtual void trace(Visitor*) override;
28   Member<Mixin> m_self;
29 };
30 
31 class HeapObjectMixin : public GarbageCollected<HeapObjectMixin>, public Mixin {
32   USING_GARBAGE_COLLECTED_MIXIN(HeapObjectMixin);
33 };
34 
35 class Mixin2 : public Mixin {
36 public:
37   virtual void trace(Visitor*) override;
38 };
39 
40 class HeapObjectMixin2
41     : public GarbageCollected<HeapObjectMixin2>, public Mixin2 {
42   USING_GARBAGE_COLLECTED_MIXIN(HeapObjectMixin2);
43 };
44 
45 class Mixin3 : public Mixin {
46 public:
47   virtual void trace(Visitor*) override;
48 };
49 
50 class HeapObjectMixin3
51     : public GarbageCollected<HeapObjectMixin3>, public Mixin {
52   USING_GARBAGE_COLLECTED_MIXIN(HeapObjectMixin2);
53 public:
54   virtual void trace(Visitor*) override;
55 };
56 
57 }
58 
59 #endif
60