1249261Sdim//===--- OpenMPKinds.h - OpenMP enums ---------------------------*- C++ -*-===//
2249261Sdim//
3249261Sdim//                     The LLVM Compiler Infrastructure
4249261Sdim//
5249261Sdim// This file is distributed under the University of Illinois Open Source
6249261Sdim// License. See LICENSE.TXT for details.
7249261Sdim//
8249261Sdim//===----------------------------------------------------------------------===//
9249261Sdim///
10249261Sdim/// \file
11249261Sdim/// \brief Defines some OpenMP-specific enums and functions.
12249261Sdim///
13249261Sdim//===----------------------------------------------------------------------===//
14249261Sdim
15249261Sdim#ifndef LLVM_CLANG_BASIC_OPENMPKINDS_H
16249261Sdim#define LLVM_CLANG_BASIC_OPENMPKINDS_H
17249261Sdim
18249261Sdim#include "llvm/ADT/StringRef.h"
19249261Sdim
20249261Sdimnamespace clang {
21249261Sdim
22249261Sdim/// \brief OpenMP directives.
23249261Sdimenum OpenMPDirectiveKind {
24249261Sdim  OMPD_unknown = 0,
25249261Sdim#define OPENMP_DIRECTIVE(Name) \
26249261Sdim  OMPD_##Name,
27249261Sdim#include "clang/Basic/OpenMPKinds.def"
28249261Sdim  NUM_OPENMP_DIRECTIVES
29249261Sdim};
30249261Sdim
31263508Sdim/// \brief OpenMP clauses.
32263508Sdimenum OpenMPClauseKind {
33263508Sdim  OMPC_unknown = 0,
34263508Sdim#define OPENMP_CLAUSE(Name, Class) \
35263508Sdim  OMPC_##Name,
36263508Sdim#include "clang/Basic/OpenMPKinds.def"
37263508Sdim  OMPC_threadprivate,
38263508Sdim  NUM_OPENMP_CLAUSES
39263508Sdim};
40263508Sdim
41263508Sdim/// \brief OpenMP attributes for 'default' clause.
42263508Sdimenum OpenMPDefaultClauseKind {
43263508Sdim  OMPC_DEFAULT_unknown = 0,
44263508Sdim#define OPENMP_DEFAULT_KIND(Name) \
45263508Sdim  OMPC_DEFAULT_##Name,
46263508Sdim#include "clang/Basic/OpenMPKinds.def"
47263508Sdim  NUM_OPENMP_DEFAULT_KINDS
48263508Sdim};
49263508Sdim
50249261SdimOpenMPDirectiveKind getOpenMPDirectiveKind(llvm::StringRef Str);
51249261Sdimconst char *getOpenMPDirectiveName(OpenMPDirectiveKind Kind);
52249261Sdim
53263508SdimOpenMPClauseKind getOpenMPClauseKind(llvm::StringRef Str);
54263508Sdimconst char *getOpenMPClauseName(OpenMPClauseKind Kind);
55263508Sdim
56263508Sdimunsigned getOpenMPSimpleClauseType(OpenMPClauseKind Kind, llvm::StringRef Str);
57263508Sdimconst char *getOpenMPSimpleClauseTypeName(OpenMPClauseKind Kind, unsigned Type);
58263508Sdim
59263508Sdimbool isAllowedClauseForDirective(OpenMPDirectiveKind DKind,
60263508Sdim                                 OpenMPClauseKind CKind);
61263508Sdim
62249261Sdim}
63249261Sdim
64249261Sdim#endif
65249261Sdim
66