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