17#ifndef LLVM_CLANG_AST_DECLACCESSPAIR_H
18#define LLVM_CLANG_AST_DECLACCESSPAIR_H
21#include "llvm/Support/DataTypes.h"
22#include "llvm/Support/Endian.h"
35 llvm::support::detail::packed_endian_specific_integral<
36 uint64_t, llvm::endianness::native,
alignof(
void *)>
39 enum { ASMask = 0x3, Mask = 0x7 };
41 bool isDeclID()
const {
return (Ptr >> 2) & 0x1; }
52 p.Ptr = (
ID << 3) | (0x1 << 2) | uint64_t(AS);
58 return (~Mask & Ptr) >> 3;
63 return reinterpret_cast<NamedDecl*
>(~Mask & Ptr);
74 Ptr = uint64_t(AS) |
reinterpret_cast<uint64_t
>(
D);
82static_assert(
alignof(DeclAccessPair) ==
alignof(
void *));
84static_assert(std::is_standard_layout_v<DeclAccessPair> &&
85 std::is_trivial_v<DeclAccessPair>);
Defines various enumerations that describe declaration and type specifiers.
A POD class for pairing a NamedDecl* with an access specifier.
uint64_t getDeclID() const
static DeclAccessPair make(NamedDecl *D, AccessSpecifier AS)
void setDecl(NamedDecl *D)
static DeclAccessPair makeLazy(uint64_t ID, AccessSpecifier AS)
NamedDecl * getDecl() const
void set(NamedDecl *D, AccessSpecifier AS)
NamedDecl * operator->() const
void setAccess(AccessSpecifier AS)
AccessSpecifier getAccess() const
This represents a decl that may have a name.
The JSON file list parser is used to communicate input to InstallAPI.
AccessSpecifier
A C++ access specifier (public, private, protected), plus the special value "none" which means differ...