LLVM 22.0.0git
llvm::detail::PointerSumTypeHelper< TagT, MemberTs > Struct Template Reference

A helper template for implementing PointerSumType. More...

#include "llvm/ADT/PointerSumType.h"

Inheritance diagram for llvm::detail::PointerSumTypeHelper< TagT, MemberTs >:
[legend]

Classes

struct  Lookup

Public Types

enum  : uint64_t { PointerMask = static_cast<uint64_t>(-1) << NumTagBits , TagMask = ~PointerMask }

Static Public Member Functions

template<TagT N, typename PointerT, typename TraitsT>
static PointerSumTypeMember< N, PointerT, TraitsTLookupOverload (PointerSumTypeMember< N, PointerT, TraitsT > *)
template<TagT N>
static void LookupOverload (...)

Static Public Attributes

static constexpr int NumTagBits
static constexpr TagT MinTag

Detailed Description

template<typename TagT, typename... MemberTs>
struct llvm::detail::PointerSumTypeHelper< TagT, MemberTs >

A helper template for implementing PointerSumType.

It provides fast compile-time lookup of the member from a particular tag value, along with useful constants and compile time checking infrastructure..

Definition at line 207 of file PointerSumType.h.

Member Enumeration Documentation

◆ anonymous enum

template<typename TagT, typename... MemberTs>
anonymous enum : uint64_t
Enumerator
PointerMask 
TagMask 

Definition at line 237 of file PointerSumType.h.

Member Function Documentation

◆ LookupOverload() [1/2]

template<typename TagT, typename... MemberTs>
template<TagT N>
void llvm::detail::PointerSumTypeHelper< TagT, MemberTs >::LookupOverload ( ...)
static

◆ LookupOverload() [2/2]

template<typename TagT, typename... MemberTs>
template<TagT N, typename PointerT, typename TraitsT>
PointerSumTypeMember< N, PointerT, TraitsT > llvm::detail::PointerSumTypeHelper< TagT, MemberTs >::LookupOverload ( PointerSumTypeMember< N, PointerT, TraitsT > * )
static

Member Data Documentation

◆ MinTag

template<typename TagT, typename... MemberTs>
TagT llvm::detail::PointerSumTypeHelper< TagT, MemberTs >::MinTag
staticconstexpr
Initial value:
=
static_cast<TagT>(std::min({static_cast<TagT>(MemberTs::Tag)...}))

Definition at line 235 of file PointerSumType.h.

◆ NumTagBits

template<typename TagT, typename... MemberTs>
int llvm::detail::PointerSumTypeHelper< TagT, MemberTs >::NumTagBits
staticconstexpr
Initial value:
=
std::min({MemberTs::TraitsT::NumLowBitsAvailable...})

Definition at line 231 of file PointerSumType.h.


The documentation for this struct was generated from the following file: