#ifndef INCLUDE_CPPGC_INTERNAL_POINTER_POLICIES_H_
#define INCLUDE_CPPGC_INTERNAL_POINTER_POLICIES_H_
#include <cstdint>
#include <type_traits>
#include "cppgc/internal/member-storage.h"
#include "cppgc/internal/write-barrier.h"
#include "cppgc/sentinel-pointer.h"
#include "cppgc/source-location.h"
#include "cppgc/type-traits.h"
#include "v8config.h"
namespace cppgc {
namespace internal {
class HeapBase;
class PersistentRegion;
class CrossThreadPersistentRegion;
class StrongMemberTag;
class WeakMemberTag;
class UntracedMemberTag;
struct DijkstraWriteBarrierPolicy { … };
struct NoWriteBarrierPolicy { … };
class V8_EXPORT SameThreadEnabledCheckingPolicyBase { … };
template <bool kCheckOffHeapAssignments>
class V8_EXPORT SameThreadEnabledCheckingPolicy
: private SameThreadEnabledCheckingPolicyBase { … };
class DisabledCheckingPolicy { … };
#ifdef DEBUG
using DefaultMemberCheckingPolicy =
SameThreadEnabledCheckingPolicy<false >;
using DefaultPersistentCheckingPolicy =
SameThreadEnabledCheckingPolicy<true >;
#else
DefaultMemberCheckingPolicy;
DefaultPersistentCheckingPolicy;
#endif
DefaultCrossThreadPersistentCheckingPolicy;
class KeepLocationPolicy { … };
class IgnoreLocationPolicy { … };
#if CPPGC_SUPPORTS_OBJECT_NAMES
using DefaultLocationPolicy = KeepLocationPolicy;
#else
DefaultLocationPolicy;
#endif
struct StrongPersistentPolicy { … };
struct WeakPersistentPolicy { … };
struct StrongCrossThreadPersistentPolicy { … };
struct WeakCrossThreadPersistentPolicy { … };
template <typename T, typename WeaknessPolicy,
typename LocationPolicy = DefaultLocationPolicy,
typename CheckingPolicy = DefaultCrossThreadPersistentCheckingPolicy>
class BasicCrossThreadPersistent;
template <typename T, typename WeaknessPolicy,
typename LocationPolicy = DefaultLocationPolicy,
typename CheckingPolicy = DefaultPersistentCheckingPolicy>
class BasicPersistent;
template <typename T, typename WeaknessTag, typename WriteBarrierPolicy,
typename CheckingPolicy = DefaultMemberCheckingPolicy,
typename StorageType = DefaultMemberStorage>
class BasicMember;
}
}
#endif