//===--- OpenMPKinds.h - OpenMP enums ---------------------------*- C++ -*-===// // // The LLVM Compiler Infrastructure // // This file is distributed under the University of Illinois Open Source // License. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// /// /// \file /// \brief Defines some OpenMP-specific enums and functions. /// //===----------------------------------------------------------------------===// #ifndef LLVM_CLANG_BASIC_OPENMPKINDS_H #define LLVM_CLANG_BASIC_OPENMPKINDS_H #include "llvm/ADT/StringRef.h" namespace clang { /// \brief OpenMP directives. enum OpenMPDirectiveKind { OMPD_unknown = 0, #define OPENMP_DIRECTIVE(Name) \ OMPD_##Name, #include "clang/Basic/OpenMPKinds.def" NUM_OPENMP_DIRECTIVES }; /// \brief OpenMP clauses. enum OpenMPClauseKind { OMPC_unknown = 0, #define OPENMP_CLAUSE(Name, Class) \ OMPC_##Name, #include "clang/Basic/OpenMPKinds.def" OMPC_threadprivate, NUM_OPENMP_CLAUSES }; /// \brief OpenMP attributes for 'default' clause. enum OpenMPDefaultClauseKind { OMPC_DEFAULT_unknown = 0, #define OPENMP_DEFAULT_KIND(Name) \ OMPC_DEFAULT_##Name, #include "clang/Basic/OpenMPKinds.def" NUM_OPENMP_DEFAULT_KINDS }; OpenMPDirectiveKind getOpenMPDirectiveKind(llvm::StringRef Str); const char *getOpenMPDirectiveName(OpenMPDirectiveKind Kind); OpenMPClauseKind getOpenMPClauseKind(llvm::StringRef Str); const char *getOpenMPClauseName(OpenMPClauseKind Kind); unsigned getOpenMPSimpleClauseType(OpenMPClauseKind Kind, llvm::StringRef Str); const char *getOpenMPSimpleClauseTypeName(OpenMPClauseKind Kind, unsigned Type); bool isAllowedClauseForDirective(OpenMPDirectiveKind DKind, OpenMPClauseKind CKind); } #endif