LangStandards.cpp revision 225736
11405Smalenkov//===--- LangStandards.cpp - Language Standard Definitions ----------------===// 29330Slana// 31405Smalenkov// The LLVM Compiler Infrastructure 41405Smalenkov// 51405Smalenkov// This file is distributed under the University of Illinois Open Source 61405Smalenkov// License. See LICENSE.TXT for details. 71405Smalenkov// 81405Smalenkov//===----------------------------------------------------------------------===// 91405Smalenkov 101405Smalenkov#include "clang/Frontend/LangStandard.h" 111405Smalenkov#include "llvm/ADT/StringSwitch.h" 121405Smalenkov#include "llvm/Support/ErrorHandling.h" 131405Smalenkovusing namespace clang; 141405Smalenkovusing namespace clang::frontend; 151405Smalenkov 161405Smalenkov#define LANGSTANDARD(id, name, desc, features) \ 171405Smalenkov static const LangStandard Lang_##id = { name, desc, features }; 181405Smalenkov#include "clang/Frontend/LangStandards.def" 192362Sohair 202362Sohairconst LangStandard &LangStandard::getLangStandardForKind(Kind K) { 212362Sohair switch (K) { 221405Smalenkov default: 231405Smalenkov llvm_unreachable("Invalid language kind!"); 241405Smalenkov case lang_unspecified: 251405Smalenkov llvm::report_fatal_error("getLangStandardForKind() on unspecified kind"); 261405Smalenkov#define LANGSTANDARD(id, name, desc, features) \ 271405Smalenkov case lang_##id: return Lang_##id; 2816177Salanb#include "clang/Frontend/LangStandards.def" 291405Smalenkov } 301405Smalenkov} 311405Smalenkov 321405Smalenkovconst LangStandard *LangStandard::getLangStandardForName(llvm::StringRef Name) { 331405Smalenkov Kind K = llvm::StringSwitch<Kind>(Name) 341405Smalenkov#define LANGSTANDARD(id, name, desc, features) \ 351405Smalenkov .Case(name, lang_##id) 361405Smalenkov#include "clang/Frontend/LangStandards.def" 371405Smalenkov .Default(lang_unspecified); 381405Smalenkov if (K == lang_unspecified) 391405Smalenkov return 0; 401405Smalenkov 411405Smalenkov return &getLangStandardForKind(K); 425791Smalenkov} 431405Smalenkov 441405Smalenkov 451405Smalenkov