v8 11.3.244 (node 20.3.0)
V8 is Google's open source JavaScript engine
Loading...
Searching...
No Matches
sentinel-pointer.h
Go to the documentation of this file.
1// Copyright 2021 the V8 project 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 INCLUDE_CPPGC_SENTINEL_POINTER_H_
6#define INCLUDE_CPPGC_SENTINEL_POINTER_H_
7
8#include <cstdint>
9
10namespace cppgc {
11namespace internal {
12
13// Special tag type used to denote some sentinel member. The semantics of the
14// sentinel is defined by the embedder.
16 static constexpr intptr_t kSentinelValue = 0b10;
17 template <typename T>
18 operator T*() const {
19 return reinterpret_cast<T*>(kSentinelValue);
20 }
21 // Hidden friends.
22 friend bool operator==(SentinelPointer, SentinelPointer) { return true; }
23 friend bool operator!=(SentinelPointer, SentinelPointer) { return false; }
24};
25
26} // namespace internal
27
29
30} // namespace cppgc
31
32#endif // INCLUDE_CPPGC_SENTINEL_POINTER_H_
constexpr internal::SentinelPointer kSentinelPointer
friend bool operator==(SentinelPointer, SentinelPointer)
static constexpr intptr_t kSentinelValue
friend bool operator!=(SentinelPointer, SentinelPointer)