1//===--- OpenMPKinds.h - OpenMP enums ---------------------------*- C++ -*-===// 2// 3// The LLVM Compiler Infrastructure 4// 5// This file is distributed under the University of Illinois Open Source 6// License. See LICENSE.TXT for details. 7// 8//===----------------------------------------------------------------------===// 9/// 10/// \file 11/// \brief Defines some OpenMP-specific enums and functions. 12/// 13//===----------------------------------------------------------------------===// 14 15#ifndef LLVM_CLANG_BASIC_OPENMPKINDS_H 16#define LLVM_CLANG_BASIC_OPENMPKINDS_H 17 18#include "llvm/ADT/StringRef.h" 19 20namespace clang { 21 22/// \brief OpenMP directives. 23enum OpenMPDirectiveKind { 24 OMPD_unknown = 0, 25#define OPENMP_DIRECTIVE(Name) \ 26 OMPD_##Name, 27#include "clang/Basic/OpenMPKinds.def" 28 NUM_OPENMP_DIRECTIVES 29}; 30 31/// \brief OpenMP clauses. 32enum OpenMPClauseKind { 33 OMPC_unknown = 0, 34#define OPENMP_CLAUSE(Name, Class) \ 35 OMPC_##Name, 36#include "clang/Basic/OpenMPKinds.def" 37 OMPC_threadprivate, 38 NUM_OPENMP_CLAUSES 39}; 40 41/// \brief OpenMP attributes for 'default' clause. 42enum OpenMPDefaultClauseKind { 43 OMPC_DEFAULT_unknown = 0, 44#define OPENMP_DEFAULT_KIND(Name) \ 45 OMPC_DEFAULT_##Name, 46#include "clang/Basic/OpenMPKinds.def" 47 NUM_OPENMP_DEFAULT_KINDS 48}; 49 50OpenMPDirectiveKind getOpenMPDirectiveKind(llvm::StringRef Str); 51const char *getOpenMPDirectiveName(OpenMPDirectiveKind Kind); 52 53OpenMPClauseKind getOpenMPClauseKind(llvm::StringRef Str); 54const char *getOpenMPClauseName(OpenMPClauseKind Kind); 55 56unsigned getOpenMPSimpleClauseType(OpenMPClauseKind Kind, llvm::StringRef Str); 57const char *getOpenMPSimpleClauseTypeName(OpenMPClauseKind Kind, unsigned Type); 58 59bool isAllowedClauseForDirective(OpenMPDirectiveKind DKind, 60 OpenMPClauseKind CKind); 61 62} 63 64#endif 65 66