LLVM  14.0.0git
Public Types | Public Member Functions | List of all members
llvm::TypeSwitch< T, void > Class Template Reference

Specialization of TypeSwitch for void returning callables. More...

#include "llvm/ADT/TypeSwitch.h"

Inheritance diagram for llvm::TypeSwitch< T, void >:
Inheritance graph
[legend]
Collaboration diagram for llvm::TypeSwitch< T, void >:
Collaboration graph
[legend]

Public Types

using BaseT = detail::TypeSwitchBase< TypeSwitch< T, void >, T >
 

Public Member Functions

 TypeSwitch (TypeSwitch &&other)=default
 
template<typename CaseT , typename CallableT >
TypeSwitch< T, void > & Case (CallableT &&caseFn)
 Add a case on the given type. More...
 
template<typename CallableT >
void Default (CallableT &&defaultFn)
 As a default, invoke the given callable within the root value. More...
 
- Public Member Functions inherited from llvm::detail::TypeSwitchBase< TypeSwitch< T, void >, T >
 TypeSwitchBase (const T &value)
 
 TypeSwitchBase (TypeSwitchBase &&other)
 
 TypeSwitchBase (const TypeSwitchBase &)=delete
 TypeSwitchBase is not copyable. More...
 
 ~TypeSwitchBase ()=default
 
void operator= (const TypeSwitchBase &)=delete
 
void operator= (TypeSwitchBase &&other)=delete
 
LLVM_ATTRIBUTE_ALWAYS_INLINE LLVM_ATTRIBUTE_NODEBUG TypeSwitch< T, void > & Case (CallableT &&caseFn)
 Invoke a case on the derived class with multiple case types. More...
 
TypeSwitch< T, void > & Case (CallableT &&caseFn)
 Invoke a case on the derived class, inferring the type of the Case from the first input of the given callable. More...
 

Additional Inherited Members

- Protected Types inherited from llvm::detail::TypeSwitchBase< TypeSwitch< T, void >, T >
using has_dyn_cast_t = decltype(std::declval< ValueT & >().template dyn_cast< CastT >())
 Trait to check whether ValueT provides a 'dyn_cast' method with type CastT. More...
 
- Static Protected Member Functions inherited from llvm::detail::TypeSwitchBase< TypeSwitch< T, void >, T >
static auto castValue (ValueT value, typename std::enable_if_t< is_detected< has_dyn_cast_t, ValueT, CastT >::value > *=nullptr)
 Attempt to dyn_cast the given value to CastT. More...
 
static auto castValue (ValueT value, typename std::enable_if_t< !is_detected< has_dyn_cast_t, ValueT, CastT >::value > *=nullptr)
 Attempt to dyn_cast the given value to CastT. More...
 
- Protected Attributes inherited from llvm::detail::TypeSwitchBase< TypeSwitch< T, void >, T >
const T value
 The root value we are switching on. More...
 

Detailed Description

template<typename T>
class llvm::TypeSwitch< T, void >

Specialization of TypeSwitch for void returning callables.

Definition at line 153 of file TypeSwitch.h.

Member Typedef Documentation

◆ BaseT

template<typename T >
using llvm::TypeSwitch< T, void >::BaseT = detail::TypeSwitchBase<TypeSwitch<T, void>, T>

Definition at line 156 of file TypeSwitch.h.

Constructor & Destructor Documentation

◆ TypeSwitch()

template<typename T >
llvm::TypeSwitch< T, void >::TypeSwitch ( TypeSwitch< T, void > &&  other)
default

Member Function Documentation

◆ Case()

template<typename T >
template<typename CaseT , typename CallableT >
TypeSwitch<T, void>& llvm::TypeSwitch< T, void >::Case ( CallableT &&  caseFn)
inline

Add a case on the given type.

Definition at line 163 of file TypeSwitch.h.

References llvm::detail::TypeSwitchBase< TypeSwitch< T, void >, T >::value.

◆ Default()

template<typename T >
template<typename CallableT >
void llvm::TypeSwitch< T, void >::Default ( CallableT &&  defaultFn)
inline

As a default, invoke the given callable within the root value.

Definition at line 176 of file TypeSwitch.h.

References llvm::detail::TypeSwitchBase< TypeSwitch< T, void >, T >::value.


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