Home | History | Annotate | Download | only in legacy_naming
      1 // Copyright 2015 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 REGISTER_WEAK_MEMBERS_TEMPLATE_H_
      6 #define REGISTER_WEAK_MEMBERS_TEMPLATE_H_
      7 
      8 #include "heap/stubs.h"
      9 
     10 namespace blink {
     11 
     12 class X : public GarbageCollected<X> {
     13  public:
     14   void trace(Visitor* visitor) { traceImpl(visitor); }
     15   void trace(InlinedGlobalMarkingVisitor visitor) { traceImpl(visitor); }
     16 
     17  private:
     18   template <typename VisitorDispatcher>
     19   void traceImpl(VisitorDispatcher visitor) {}
     20 };
     21 
     22 class HasUntracedWeakMembers : public GarbageCollected<HasUntracedWeakMembers> {
     23  public:
     24   void trace(Visitor* visitor) { traceImpl(visitor); }
     25   void trace(InlinedGlobalMarkingVisitor visitor) { traceImpl(visitor); }
     26 
     27   // Don't have to be defined for the purpose of this test.
     28   void clearWeakMembers(Visitor* visitor);
     29 
     30  private:
     31   template <typename VisitorDispatcher>
     32   void traceImpl(VisitorDispatcher visitor) {
     33     visitor->template registerWeakMembers<
     34         HasUntracedWeakMembers,
     35         &HasUntracedWeakMembers::clearWeakMembers>(this);
     36   }
     37 
     38   WeakMember<X> x_;
     39 };
     40 
     41 }
     42 
     43 #endif  // REGISTER_WEAK_MEMBERS_TEMPLATE_H_
     44