class StringSwitch

Declaration

template <typename T, typename R = T>
class StringSwitch { /* full declaration omitted */ };

Description

A switch()-like statement whose cases are string literals. The StringSwitch class is a simple form of a switch() statement that determines whether the given string matches one of the given string literals. The template type parameter \p T is the type of the value that will be returned from the string-switch expression. For example, the following code switches on the name of a color in \c argv[i]:

Declared at: llvm/include/llvm/ADT/StringSwitch.h:44

Templates

T
R = T

Member Variables

private const llvm::StringRef Str
The string we are matching.
private Optional<T> Result
The pointer to the result of this switch statement, once known, null before that.

Method Overview

  • public StringSwitch<T, R> & Case(llvm::StringLiteral S, T Value)
  • public StringSwitch<T, R> & CaseLower(llvm::StringLiteral S, T Value)
  • public StringSwitch<T, R> & Cases(llvm::StringLiteral S0, llvm::StringLiteral S1, llvm::StringLiteral S2, llvm::StringLiteral S3, llvm::StringLiteral S4, llvm::StringLiteral S5, llvm::StringLiteral S6, llvm::StringLiteral S7, llvm::StringLiteral S8, llvm::StringLiteral S9, T Value)
  • public StringSwitch<T, R> & Cases(llvm::StringLiteral S0, llvm::StringLiteral S1, llvm::StringLiteral S2, llvm::StringLiteral S3, llvm::StringLiteral S4, llvm::StringLiteral S5, llvm::StringLiteral S6, llvm::StringLiteral S7, llvm::StringLiteral S8, T Value)
  • public StringSwitch<T, R> & Cases(llvm::StringLiteral S0, llvm::StringLiteral S1, llvm::StringLiteral S2, llvm::StringLiteral S3, llvm::StringLiteral S4, llvm::StringLiteral S5, llvm::StringLiteral S6, llvm::StringLiteral S7, T Value)
  • public StringSwitch<T, R> & Cases(llvm::StringLiteral S0, llvm::StringLiteral S1, T Value)
  • public StringSwitch<T, R> & Cases(llvm::StringLiteral S0, llvm::StringLiteral S1, llvm::StringLiteral S2, T Value)
  • public StringSwitch<T, R> & Cases(llvm::StringLiteral S0, llvm::StringLiteral S1, llvm::StringLiteral S2, llvm::StringLiteral S3, T Value)
  • public StringSwitch<T, R> & Cases(llvm::StringLiteral S0, llvm::StringLiteral S1, llvm::StringLiteral S2, llvm::StringLiteral S3, llvm::StringLiteral S4, T Value)
  • public StringSwitch<T, R> & Cases(llvm::StringLiteral S0, llvm::StringLiteral S1, llvm::StringLiteral S2, llvm::StringLiteral S3, llvm::StringLiteral S4, llvm::StringLiteral S5, T Value)
  • public StringSwitch<T, R> & Cases(llvm::StringLiteral S0, llvm::StringLiteral S1, llvm::StringLiteral S2, llvm::StringLiteral S3, llvm::StringLiteral S4, llvm::StringLiteral S5, llvm::StringLiteral S6, T Value)
  • public StringSwitch<T, R> & CasesLower(llvm::StringLiteral S0, llvm::StringLiteral S1, llvm::StringLiteral S2, T Value)
  • public StringSwitch<T, R> & CasesLower(llvm::StringLiteral S0, llvm::StringLiteral S1, T Value)
  • public StringSwitch<T, R> & CasesLower(llvm::StringLiteral S0, llvm::StringLiteral S1, llvm::StringLiteral S2, llvm::StringLiteral S3, T Value)
  • public StringSwitch<T, R> & CasesLower(llvm::StringLiteral S0, llvm::StringLiteral S1, llvm::StringLiteral S2, llvm::StringLiteral S3, llvm::StringLiteral S4, T Value)
  • public R Default(T Value)
  • public StringSwitch<T, R> & EndsWith(llvm::StringLiteral S, T Value)
  • public StringSwitch<T, R> & EndsWithLower(llvm::StringLiteral S, T Value)
  • public StringSwitch<T, R> & StartsWith(llvm::StringLiteral S, T Value)
  • public StringSwitch<T, R> & StartsWithLower(llvm::StringLiteral S, T Value)
  • public StringSwitch<T, R>(const StringSwitch<T, R> &)
  • public StringSwitch<T, R>(StringSwitch<T, R> && other)
  • public StringSwitch<T, R>(llvm::StringRef S)
  • public R operator type-parameter-0-1()
  • public ~StringSwitch<T, R>()

Methods

StringSwitch<T, R>& Case(llvm::StringLiteral S,
                         T Value)

Declared at: llvm/include/llvm/ADT/StringSwitch.h:69

Parameters

llvm::StringLiteral S
T Value

StringSwitch<T, R>& CaseLower(
    llvm::StringLiteral S,
    T Value)

Declared at: llvm/include/llvm/ADT/StringSwitch.h:142

Parameters

llvm::StringLiteral S
T Value

StringSwitch<T, R>& Cases(llvm::StringLiteral S0,
                          llvm::StringLiteral S1,
                          llvm::StringLiteral S2,
                          llvm::StringLiteral S3,
                          llvm::StringLiteral S4,
                          llvm::StringLiteral S5,
                          llvm::StringLiteral S6,
                          llvm::StringLiteral S7,
                          llvm::StringLiteral S8,
                          llvm::StringLiteral S9,
                          T Value)

Declared at: llvm/include/llvm/ADT/StringSwitch.h:134

Parameters

llvm::StringLiteral S0
llvm::StringLiteral S1
llvm::StringLiteral S2
llvm::StringLiteral S3
llvm::StringLiteral S4
llvm::StringLiteral S5
llvm::StringLiteral S6
llvm::StringLiteral S7
llvm::StringLiteral S8
llvm::StringLiteral S9
T Value

StringSwitch<T, R>& Cases(llvm::StringLiteral S0,
                          llvm::StringLiteral S1,
                          llvm::StringLiteral S2,
                          llvm::StringLiteral S3,
                          llvm::StringLiteral S4,
                          llvm::StringLiteral S5,
                          llvm::StringLiteral S6,
                          llvm::StringLiteral S7,
                          llvm::StringLiteral S8,
                          T Value)

Declared at: llvm/include/llvm/ADT/StringSwitch.h:127

Parameters

llvm::StringLiteral S0
llvm::StringLiteral S1
llvm::StringLiteral S2
llvm::StringLiteral S3
llvm::StringLiteral S4
llvm::StringLiteral S5
llvm::StringLiteral S6
llvm::StringLiteral S7
llvm::StringLiteral S8
T Value

StringSwitch<T, R>& Cases(llvm::StringLiteral S0,
                          llvm::StringLiteral S1,
                          llvm::StringLiteral S2,
                          llvm::StringLiteral S3,
                          llvm::StringLiteral S4,
                          llvm::StringLiteral S5,
                          llvm::StringLiteral S6,
                          llvm::StringLiteral S7,
                          T Value)

Declared at: llvm/include/llvm/ADT/StringSwitch.h:121

Parameters

llvm::StringLiteral S0
llvm::StringLiteral S1
llvm::StringLiteral S2
llvm::StringLiteral S3
llvm::StringLiteral S4
llvm::StringLiteral S5
llvm::StringLiteral S6
llvm::StringLiteral S7
T Value

StringSwitch<T, R>& Cases(llvm::StringLiteral S0,
                          llvm::StringLiteral S1,
                          T Value)

Declared at: llvm/include/llvm/ADT/StringSwitch.h:90

Parameters

llvm::StringLiteral S0
llvm::StringLiteral S1
T Value

StringSwitch<T, R>& Cases(llvm::StringLiteral S0,
                          llvm::StringLiteral S1,
                          llvm::StringLiteral S2,
                          T Value)

Declared at: llvm/include/llvm/ADT/StringSwitch.h:94

Parameters

llvm::StringLiteral S0
llvm::StringLiteral S1
llvm::StringLiteral S2
T Value

StringSwitch<T, R>& Cases(llvm::StringLiteral S0,
                          llvm::StringLiteral S1,
                          llvm::StringLiteral S2,
                          llvm::StringLiteral S3,
                          T Value)

Declared at: llvm/include/llvm/ADT/StringSwitch.h:99

Parameters

llvm::StringLiteral S0
llvm::StringLiteral S1
llvm::StringLiteral S2
llvm::StringLiteral S3
T Value

StringSwitch<T, R>& Cases(llvm::StringLiteral S0,
                          llvm::StringLiteral S1,
                          llvm::StringLiteral S2,
                          llvm::StringLiteral S3,
                          llvm::StringLiteral S4,
                          T Value)

Declared at: llvm/include/llvm/ADT/StringSwitch.h:104

Parameters

llvm::StringLiteral S0
llvm::StringLiteral S1
llvm::StringLiteral S2
llvm::StringLiteral S3
llvm::StringLiteral S4
T Value

StringSwitch<T, R>& Cases(llvm::StringLiteral S0,
                          llvm::StringLiteral S1,
                          llvm::StringLiteral S2,
                          llvm::StringLiteral S3,
                          llvm::StringLiteral S4,
                          llvm::StringLiteral S5,
                          T Value)

Declared at: llvm/include/llvm/ADT/StringSwitch.h:109

Parameters

llvm::StringLiteral S0
llvm::StringLiteral S1
llvm::StringLiteral S2
llvm::StringLiteral S3
llvm::StringLiteral S4
llvm::StringLiteral S5
T Value

StringSwitch<T, R>& Cases(llvm::StringLiteral S0,
                          llvm::StringLiteral S1,
                          llvm::StringLiteral S2,
                          llvm::StringLiteral S3,
                          llvm::StringLiteral S4,
                          llvm::StringLiteral S5,
                          llvm::StringLiteral S6,
                          T Value)

Declared at: llvm/include/llvm/ADT/StringSwitch.h:115

Parameters

llvm::StringLiteral S0
llvm::StringLiteral S1
llvm::StringLiteral S2
llvm::StringLiteral S3
llvm::StringLiteral S4
llvm::StringLiteral S5
llvm::StringLiteral S6
T Value

StringSwitch<T, R>& CasesLower(
    llvm::StringLiteral S0,
    llvm::StringLiteral S1,
    llvm::StringLiteral S2,
    T Value)

Declared at: llvm/include/llvm/ADT/StringSwitch.h:167

Parameters

llvm::StringLiteral S0
llvm::StringLiteral S1
llvm::StringLiteral S2
T Value

StringSwitch<T, R>& CasesLower(
    llvm::StringLiteral S0,
    llvm::StringLiteral S1,
    T Value)

Declared at: llvm/include/llvm/ADT/StringSwitch.h:163

Parameters

llvm::StringLiteral S0
llvm::StringLiteral S1
T Value

StringSwitch<T, R>& CasesLower(
    llvm::StringLiteral S0,
    llvm::StringLiteral S1,
    llvm::StringLiteral S2,
    llvm::StringLiteral S3,
    T Value)

Declared at: llvm/include/llvm/ADT/StringSwitch.h:172

Parameters

llvm::StringLiteral S0
llvm::StringLiteral S1
llvm::StringLiteral S2
llvm::StringLiteral S3
T Value

StringSwitch<T, R>& CasesLower(
    llvm::StringLiteral S0,
    llvm::StringLiteral S1,
    llvm::StringLiteral S2,
    llvm::StringLiteral S3,
    llvm::StringLiteral S4,
    T Value)

Declared at: llvm/include/llvm/ADT/StringSwitch.h:177

Parameters

llvm::StringLiteral S0
llvm::StringLiteral S1
llvm::StringLiteral S2
llvm::StringLiteral S3
llvm::StringLiteral S4
T Value

R Default(T Value)

Declared at: llvm/include/llvm/ADT/StringSwitch.h:183

Parameters

T Value

StringSwitch<T, R>& EndsWith(
    llvm::StringLiteral S,
    T Value)

Declared at: llvm/include/llvm/ADT/StringSwitch.h:76

Parameters

llvm::StringLiteral S
T Value

StringSwitch<T, R>& EndsWithLower(
    llvm::StringLiteral S,
    T Value)

Declared at: llvm/include/llvm/ADT/StringSwitch.h:149

Parameters

llvm::StringLiteral S
T Value

StringSwitch<T, R>& StartsWith(
    llvm::StringLiteral S,
    T Value)

Declared at: llvm/include/llvm/ADT/StringSwitch.h:83

Parameters

llvm::StringLiteral S
T Value

StringSwitch<T, R>& StartsWithLower(
    llvm::StringLiteral S,
    T Value)

Declared at: llvm/include/llvm/ADT/StringSwitch.h:156

Parameters

llvm::StringLiteral S
T Value

StringSwitch<T, R>(const StringSwitch<T, R>&)

Declared at: llvm/include/llvm/ADT/StringSwitch.h:57

Parameters

const StringSwitch<T, R>&

StringSwitch<T, R>(StringSwitch<T, R>&& other)

Declared at: llvm/include/llvm/ADT/StringSwitch.h:63

Parameters

StringSwitch<T, R>&& other

StringSwitch<T, R>(llvm::StringRef S)

Declared at: llvm/include/llvm/ADT/StringSwitch.h:53

Parameters

llvm::StringRef S

R operator type - parameter - 0 - 1()

Declared at: llvm/include/llvm/ADT/StringSwitch.h:190

~StringSwitch<T, R>()

Declared at: llvm/include/llvm/ADT/StringSwitch.h:66