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