LangStandards.cpp revision f51ac1b3d0fd39853ba6c04e81149acbca6eead4
1f51ac1b3d0fd39853ba6c04e81149acbca6eead4Daniel Dunbar//===--- LangStandards.cpp - Language Standard Definitions ----------------===// 2f51ac1b3d0fd39853ba6c04e81149acbca6eead4Daniel Dunbar// 3f51ac1b3d0fd39853ba6c04e81149acbca6eead4Daniel Dunbar// The LLVM Compiler Infrastructure 4f51ac1b3d0fd39853ba6c04e81149acbca6eead4Daniel Dunbar// 5f51ac1b3d0fd39853ba6c04e81149acbca6eead4Daniel Dunbar// This file is distributed under the University of Illinois Open Source 6f51ac1b3d0fd39853ba6c04e81149acbca6eead4Daniel Dunbar// License. See LICENSE.TXT for details. 7f51ac1b3d0fd39853ba6c04e81149acbca6eead4Daniel Dunbar// 8f51ac1b3d0fd39853ba6c04e81149acbca6eead4Daniel Dunbar//===----------------------------------------------------------------------===// 9f51ac1b3d0fd39853ba6c04e81149acbca6eead4Daniel Dunbar 10f51ac1b3d0fd39853ba6c04e81149acbca6eead4Daniel Dunbar#include "clang/Frontend/LangStandard.h" 11f51ac1b3d0fd39853ba6c04e81149acbca6eead4Daniel Dunbar#include "llvm/ADT/StringSwitch.h" 12f51ac1b3d0fd39853ba6c04e81149acbca6eead4Daniel Dunbar#include "llvm/Support/ErrorHandling.h" 13f51ac1b3d0fd39853ba6c04e81149acbca6eead4Daniel Dunbarusing namespace clang; 14f51ac1b3d0fd39853ba6c04e81149acbca6eead4Daniel Dunbarusing namespace clang::frontend; 15f51ac1b3d0fd39853ba6c04e81149acbca6eead4Daniel Dunbar 16f51ac1b3d0fd39853ba6c04e81149acbca6eead4Daniel Dunbar#define LANGSTANDARD(id, name, desc, features) \ 17f51ac1b3d0fd39853ba6c04e81149acbca6eead4Daniel Dunbar static LangStandard Lang_##id = { name, desc, features }; 18f51ac1b3d0fd39853ba6c04e81149acbca6eead4Daniel Dunbar#include "clang/Frontend/LangStandards.def" 19f51ac1b3d0fd39853ba6c04e81149acbca6eead4Daniel Dunbar 20f51ac1b3d0fd39853ba6c04e81149acbca6eead4Daniel Dunbarconst LangStandard &LangStandard::getLangStandardForKind(Kind K) { 21f51ac1b3d0fd39853ba6c04e81149acbca6eead4Daniel Dunbar switch (K) { 22f51ac1b3d0fd39853ba6c04e81149acbca6eead4Daniel Dunbar default: 23f51ac1b3d0fd39853ba6c04e81149acbca6eead4Daniel Dunbar llvm::llvm_unreachable("Invalid language kind!"); 24f51ac1b3d0fd39853ba6c04e81149acbca6eead4Daniel Dunbar case lang_unspecified: 25f51ac1b3d0fd39853ba6c04e81149acbca6eead4Daniel Dunbar llvm::llvm_report_error("getLangStandardForKind() on unspecified kind"); 26f51ac1b3d0fd39853ba6c04e81149acbca6eead4Daniel Dunbar#define LANGSTANDARD(id, name, desc, features) \ 27f51ac1b3d0fd39853ba6c04e81149acbca6eead4Daniel Dunbar case lang_##id: return Lang_##id; 28f51ac1b3d0fd39853ba6c04e81149acbca6eead4Daniel Dunbar#include "clang/Frontend/LangStandards.def" 29f51ac1b3d0fd39853ba6c04e81149acbca6eead4Daniel Dunbar } 30f51ac1b3d0fd39853ba6c04e81149acbca6eead4Daniel Dunbar} 31f51ac1b3d0fd39853ba6c04e81149acbca6eead4Daniel Dunbar 32f51ac1b3d0fd39853ba6c04e81149acbca6eead4Daniel Dunbarconst LangStandard *LangStandard::getLangStandardForName(llvm::StringRef Name) { 33f51ac1b3d0fd39853ba6c04e81149acbca6eead4Daniel Dunbar Kind K = llvm::StringSwitch<Kind>(Name) 34f51ac1b3d0fd39853ba6c04e81149acbca6eead4Daniel Dunbar#define LANGSTANDARD(id, name, desc, features) \ 35f51ac1b3d0fd39853ba6c04e81149acbca6eead4Daniel Dunbar .Case(name, lang_##id) 36f51ac1b3d0fd39853ba6c04e81149acbca6eead4Daniel Dunbar#include "clang/Frontend/LangStandards.def" 37f51ac1b3d0fd39853ba6c04e81149acbca6eead4Daniel Dunbar .Default(lang_unspecified); 38f51ac1b3d0fd39853ba6c04e81149acbca6eead4Daniel Dunbar if (K == lang_unspecified) 39f51ac1b3d0fd39853ba6c04e81149acbca6eead4Daniel Dunbar return 0; 40f51ac1b3d0fd39853ba6c04e81149acbca6eead4Daniel Dunbar 41f51ac1b3d0fd39853ba6c04e81149acbca6eead4Daniel Dunbar return &getLangStandardForKind(K); 42f51ac1b3d0fd39853ba6c04e81149acbca6eead4Daniel Dunbar} 43f51ac1b3d0fd39853ba6c04e81149acbca6eead4Daniel Dunbar 44f51ac1b3d0fd39853ba6c04e81149acbca6eead4Daniel Dunbar 45