// Copyright 2014 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef TRACE_TEMPLATED_SUPER_H_ #define TRACE_TEMPLATED_SUPER_H_ #include "heap/stubs.h" namespace blink { class HeapObject; class Mixin : public GarbageCollectedMixin { public: virtual void Trace(Visitor*) override { } }; template class Super : public GarbageCollected >, public Mixin { USING_GARBAGE_COLLECTED_MIXIN(Super); public: virtual void Trace(Visitor*) override; void clearWeakMembers(Visitor*); private: Member m_obj; WeakMember m_weak; }; template class Sub : public Super { public: virtual void Trace(Visitor* visitor) override; private: Member m_obj; }; class HeapObject : public Sub { public: virtual void Trace(Visitor*) override; private: Member m_obj; }; } #endif