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