5#ifndef INCLUDE_CPPGC_TRACE_TRAIT_H_
6#define INCLUDE_CPPGC_TRACE_TRAIT_H_
10#include "cppgc/type-traits.h"
21using TraceRootCallback =
void (*)(RootVisitor&,
const void* object);
26 bool = IsGarbageCollectedMixinTypeV<std::remove_const_t<T>>>
32
33
34
35
36
37using TraceCallback =
void (*)(
Visitor* visitor,
const void* object);
40
41
42
45
46
47
50
51
56
57
58
59
60
70
71
72
73
74
77 static_assert(
internal::IsTraceableV<T>,
"T must have a Trace() method");
80
81
82
83
84
86 return internal::TraceTraitImpl<T>::GetTraceDescriptor(
87 static_cast<
const T*>(self));
91
92
93
94
95
97 static_cast<
const T*>(self)->Trace(visitor);
109struct TraceTraitImpl<T,
false> {
110 static_assert(IsGarbageCollectedTypeV<T>,
111 "T must be of type GarbageCollected or GarbageCollectedMixin");
118struct TraceTraitImpl<T,
true> {
const void * base_object_payload
static void Trace(Visitor *visitor, const void *self)
static TraceDescriptor GetTraceDescriptor(const void *self)
static TraceDescriptor GetTraceDescriptor(const void *address)
static TraceDescriptor GetTraceDescriptor(const void *self)
static TraceDescriptor GetTraceDescriptor(const void *self)