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