xref: /netbsd-src/external/apache2/llvm/dist/clang/lib/Basic/ExpressionTraits.cpp (revision e038c9c4676b0f19b1b7dd08a940c6ed64a6d5ae)
1*e038c9c4Sjoerg //===--- ExpressionTraits.cpp - Expression Traits Support -----------------===//
2*e038c9c4Sjoerg //
3*e038c9c4Sjoerg // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4*e038c9c4Sjoerg // See https://llvm.org/LICENSE.txt for license information.
5*e038c9c4Sjoerg // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6*e038c9c4Sjoerg //
7*e038c9c4Sjoerg //===----------------------------------------------------------------------===//
8*e038c9c4Sjoerg //
9*e038c9c4Sjoerg //  This file implements the expression traits support functions.
10*e038c9c4Sjoerg //
11*e038c9c4Sjoerg //===----------------------------------------------------------------------===//
12*e038c9c4Sjoerg 
13*e038c9c4Sjoerg #include "clang/Basic/ExpressionTraits.h"
14*e038c9c4Sjoerg #include "llvm/Support/ErrorHandling.h"
15*e038c9c4Sjoerg #include <cassert>
16*e038c9c4Sjoerg using namespace clang;
17*e038c9c4Sjoerg 
18*e038c9c4Sjoerg static constexpr const char *ExpressionTraitNames[] = {
19*e038c9c4Sjoerg #define EXPRESSION_TRAIT(Spelling, Name, Key) #Name,
20*e038c9c4Sjoerg #include "clang/Basic/TokenKinds.def"
21*e038c9c4Sjoerg };
22*e038c9c4Sjoerg 
23*e038c9c4Sjoerg static constexpr const char *ExpressionTraitSpellings[] = {
24*e038c9c4Sjoerg #define EXPRESSION_TRAIT(Spelling, Name, Key) #Spelling,
25*e038c9c4Sjoerg #include "clang/Basic/TokenKinds.def"
26*e038c9c4Sjoerg };
27*e038c9c4Sjoerg 
getTraitName(ExpressionTrait T)28*e038c9c4Sjoerg const char *clang::getTraitName(ExpressionTrait T) {
29*e038c9c4Sjoerg   assert(T <= ET_Last && "invalid enum value!");
30*e038c9c4Sjoerg   return ExpressionTraitNames[T];
31*e038c9c4Sjoerg }
32*e038c9c4Sjoerg 
getTraitSpelling(ExpressionTrait T)33*e038c9c4Sjoerg const char *clang::getTraitSpelling(ExpressionTrait T) {
34*e038c9c4Sjoerg   assert(T <= ET_Last && "invalid enum value!");
35*e038c9c4Sjoerg   return ExpressionTraitSpellings[T];
36*e038c9c4Sjoerg }
37