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