LLVM  6.0.0svn
Classes | Public Types | Static Public Member Functions | List of all members
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 >:
Inheritance graph
[legend]
Collaboration diagram for llvm::detail::PointerSumTypeHelper< TagT, MemberTs >:
Collaboration graph
[legend]

Classes

struct  Checker
 
struct  Checker< MemberT >
 
struct  Lookup
 
struct  Min
 
struct  Min< V >
 

Public Types

enum  { NumTagBits = Min<MemberTs::TraitsT::NumLowBitsAvailable...>::value }
 
enum  : uint64_t { MinTag = Min<MemberTs::Tag...>::value, 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 (...)
 

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 35 of file PointerSumType.h.

Member Enumeration Documentation

◆ anonymous enum

template<typename TagT , typename... MemberTs>
anonymous enum
Enumerator
NumTagBits 

Definition at line 151 of file PointerSumType.h.

◆ anonymous enum

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

Definition at line 154 of file PointerSumType.h.

Member Function Documentation

◆ LookupOverload() [1/2]

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

◆ LookupOverload() [2/2]

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

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