class_requires_finalization_mixin.h revision a1401311d1ab56c4ed0a474bd38c108f75cb0cd9
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_FINALIZATION_MIXIN_H_
6#define CLASS_REQUIRES_FINALIZATION_MIXIN_H_
7
8#include "heap/stubs.h"
9
10namespace WebCore {
11
12class OffHeap : public RefCounted<OffHeap> { };
13class OnHeap : public GarbageCollected<OnHeap> { };
14
15class Mixin : public GarbageCollectedMixin {
16public:
17    void trace(Visitor*);
18private:
19    RefPtr<OffHeap> m_offHeap; // Requires finalization
20    Member<OnHeap> m_onHeap;
21};
22
23class NeedsFinalizer : public GarbageCollected<NeedsFinalizer>, public Mixin {
24    USING_GARBAGE_COLLECTED_MIXIN(NeedsFinalizer);
25public:
26    void trace(Visitor*);
27private:
28    Member<OnHeap> m_obj;
29};
30
31class HasFinalizer : public GarbageCollectedFinalized<HasFinalizer>,
32                     public Mixin {
33    USING_GARBAGE_COLLECTED_MIXIN(HasFinalizer);
34public:
35    void trace(Visitor*);
36private:
37    Member<OnHeap> m_obj;
38};
39
40}
41
42#endif
43