OpenMPKinds.h revision 263508
155714Skris//===--- OpenMPKinds.h - OpenMP enums ---------------------------*- C++ -*-===//
255714Skris//
355714Skris//                     The LLVM Compiler Infrastructure
455714Skris//
555714Skris// This file is distributed under the University of Illinois Open Source
655714Skris// License. See LICENSE.TXT for details.
755714Skris//
8280304Sjkim//===----------------------------------------------------------------------===//
955714Skris///
1055714Skris/// \file
1155714Skris/// \brief Defines some OpenMP-specific enums and functions.
1255714Skris///
1355714Skris//===----------------------------------------------------------------------===//
1455714Skris
15280304Sjkim#ifndef LLVM_CLANG_BASIC_OPENMPKINDS_H
1655714Skris#define LLVM_CLANG_BASIC_OPENMPKINDS_H
1755714Skris
1855714Skris#include "llvm/ADT/StringRef.h"
1955714Skris
2055714Skrisnamespace clang {
2155714Skris
22280304Sjkim/// \brief OpenMP directives.
2355714Skrisenum OpenMPDirectiveKind {
2455714Skris  OMPD_unknown = 0,
2555714Skris#define OPENMP_DIRECTIVE(Name) \
2655714Skris  OMPD_##Name,
2755714Skris#include "clang/Basic/OpenMPKinds.def"
2855714Skris  NUM_OPENMP_DIRECTIVES
2955714Skris};
3055714Skris
3155714Skris/// \brief OpenMP clauses.
3255714Skrisenum OpenMPClauseKind {
3355714Skris  OMPC_unknown = 0,
3455714Skris#define OPENMP_CLAUSE(Name, Class) \
3555714Skris  OMPC_##Name,
3655714Skris#include "clang/Basic/OpenMPKinds.def"
37280304Sjkim  OMPC_threadprivate,
3855714Skris  NUM_OPENMP_CLAUSES
3955714Skris};
40280304Sjkim
4155714Skris/// \brief OpenMP attributes for 'default' clause.
4255714Skrisenum OpenMPDefaultClauseKind {
4355714Skris  OMPC_DEFAULT_unknown = 0,
4455714Skris#define OPENMP_DEFAULT_KIND(Name) \
4555714Skris  OMPC_DEFAULT_##Name,
4655714Skris#include "clang/Basic/OpenMPKinds.def"
4755714Skris  NUM_OPENMP_DEFAULT_KINDS
4855714Skris};
4955714Skris
5055714SkrisOpenMPDirectiveKind getOpenMPDirectiveKind(llvm::StringRef Str);
5155714Skrisconst char *getOpenMPDirectiveName(OpenMPDirectiveKind Kind);
52280304Sjkim
5355714SkrisOpenMPClauseKind getOpenMPClauseKind(llvm::StringRef Str);
5455714Skrisconst char *getOpenMPClauseName(OpenMPClauseKind Kind);
5555714Skris
5655714Skrisunsigned getOpenMPSimpleClauseType(OpenMPClauseKind Kind, llvm::StringRef Str);
5755714Skrisconst char *getOpenMPSimpleClauseTypeName(OpenMPClauseKind Kind, unsigned Type);
5855714Skris
59280304Sjkimbool isAllowedClauseForDirective(OpenMPDirectiveKind DKind,
60280304Sjkim                                 OpenMPClauseKind CKind);
61280304Sjkim
62280304Sjkim}
6355714Skris
64109998Smarkm#endif
65280304Sjkim
6655714Skris