//===- llvm/Support/CodeGenCWrappers.h - CodeGen C Wrappers -----*- C++ -*-===// // // The LLVM Compiler Infrastructure // // This file is distributed under the University of Illinois Open Source // License. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// // // This file defines C bindings wrappers for enums in llvm/Support/CodeGen.h // that need them. The wrappers are separated to avoid adding an indirect // dependency on llvm/Config/Targets.def to CodeGen.h. // //===----------------------------------------------------------------------===// #ifndef LLVM_SUPPORT_CODEGENCWRAPPERS_H #define LLVM_SUPPORT_CODEGENCWRAPPERS_H #include "llvm-c/TargetMachine.h" #include "llvm/Support/CodeGen.h" #include "llvm/Support/ErrorHandling.h" namespace llvm { inline CodeModel::Model unwrap(LLVMCodeModel Model) { switch (Model) { case LLVMCodeModelDefault: return CodeModel::Default; case LLVMCodeModelJITDefault: return CodeModel::JITDefault; case LLVMCodeModelSmall: return CodeModel::Small; case LLVMCodeModelKernel: return CodeModel::Kernel; case LLVMCodeModelMedium: return CodeModel::Medium; case LLVMCodeModelLarge: return CodeModel::Large; } return CodeModel::Default; } inline LLVMCodeModel wrap(CodeModel::Model Model) { switch (Model) { case CodeModel::Default: return LLVMCodeModelDefault; case CodeModel::JITDefault: return LLVMCodeModelJITDefault; case CodeModel::Small: return LLVMCodeModelSmall; case CodeModel::Kernel: return LLVMCodeModelKernel; case CodeModel::Medium: return LLVMCodeModelMedium; case CodeModel::Large: return LLVMCodeModelLarge; } llvm_unreachable("Bad CodeModel!"); } } // end llvm namespace #endif