1249261Sdim//===--- OpenMPKinds.cpp - Token Kinds Support ----------------------------===// 2249261Sdim// 3249261Sdim// The LLVM Compiler Infrastructure 4249261Sdim// 5249261Sdim// This file is distributed under the University of Illinois Open Source 6249261Sdim// License. See LICENSE.TXT for details. 7249261Sdim// 8249261Sdim//===----------------------------------------------------------------------===// 9249261Sdim/// \file 10249261Sdim/// \brief This file implements the OpenMP enum and support functions. 11249261Sdim/// 12249261Sdim//===----------------------------------------------------------------------===// 13249261Sdim 14249261Sdim#include "clang/Basic/OpenMPKinds.h" 15249261Sdim#include "clang/Basic/IdentifierTable.h" 16249261Sdim#include "llvm/ADT/StringRef.h" 17249261Sdim#include "llvm/ADT/StringSwitch.h" 18249261Sdim#include "llvm/Support/ErrorHandling.h" 19249261Sdim#include <cassert> 20249261Sdim 21249261Sdimusing namespace clang; 22249261Sdim 23249261SdimOpenMPDirectiveKind clang::getOpenMPDirectiveKind(StringRef Str) { 24249261Sdim return llvm::StringSwitch<OpenMPDirectiveKind>(Str) 25249261Sdim#define OPENMP_DIRECTIVE(Name) \ 26249261Sdim .Case(#Name, OMPD_##Name) 27249261Sdim#include "clang/Basic/OpenMPKinds.def" 28249261Sdim .Default(OMPD_unknown); 29249261Sdim} 30249261Sdim 31249261Sdimconst char *clang::getOpenMPDirectiveName(OpenMPDirectiveKind Kind) { 32249261Sdim assert(Kind < NUM_OPENMP_DIRECTIVES); 33249261Sdim switch (Kind) { 34249261Sdim case OMPD_unknown: 35249261Sdim return ("unknown"); 36249261Sdim#define OPENMP_DIRECTIVE(Name) \ 37249261Sdim case OMPD_##Name : return #Name; 38249261Sdim#include "clang/Basic/OpenMPKinds.def" 39249261Sdim default: 40249261Sdim break; 41249261Sdim } 42249261Sdim llvm_unreachable("Invalid OpenMP directive kind"); 43249261Sdim} 44