1199990Srdivacky//===-- LangStandards.def - Language Standard Data --------------*- C++ -*-===//
2199990Srdivacky//
3199990Srdivacky//                     The LLVM Compiler Infrastructure
4199990Srdivacky//
5199990Srdivacky// This file is distributed under the University of Illinois Open Source
6199990Srdivacky// License. See LICENSE.TXT for details.
7199990Srdivacky//
8199990Srdivacky//===----------------------------------------------------------------------===//
9199990Srdivacky
10199990Srdivacky#ifndef LANGSTANDARD
11199990Srdivacky#error "LANGSTANDARD must be defined before including this file"
12199990Srdivacky#endif
13199990Srdivacky
14199990Srdivacky/// LANGSTANDARD(IDENT, NAME, DESC, FEATURES)
15199990Srdivacky///
16199990Srdivacky/// \param IDENT - The name of the standard as a C++ identifier.
17199990Srdivacky/// \param NAME - The name of the standard.
18199990Srdivacky/// \param DESC - A short description of the standard.
19199990Srdivacky/// \param FEATURES - The standard features as flags, these are enums from the
20199990Srdivacky/// clang::frontend namespace, which is assumed to be be available.
21199990Srdivacky
22199990Srdivacky// C89-ish modes.
23199990SrdivackyLANGSTANDARD(c89, "c89",
24199990Srdivacky             "ISO C 1990",
25223017Sdim             C89 | ImplicitInt)
26199990SrdivackyLANGSTANDARD(c90, "c90",
27199990Srdivacky             "ISO C 1990",
28223017Sdim             C89 | ImplicitInt)
29199990SrdivackyLANGSTANDARD(iso9899_1990, "iso9899:1990",
30199990Srdivacky             "ISO C 1990",
31223017Sdim             C89 | ImplicitInt)
32199990Srdivacky
33199990SrdivackyLANGSTANDARD(c94, "iso9899:199409",
34199990Srdivacky             "ISO C 1990 with amendment 1",
35223017Sdim             C89 | Digraphs | ImplicitInt)
36199990Srdivacky
37199990SrdivackyLANGSTANDARD(gnu89, "gnu89",
38199990Srdivacky             "ISO C 1990 with GNU extensions",
39243830Sdim             LineComment | C89 | Digraphs | GNUMode | ImplicitInt)
40226633SdimLANGSTANDARD(gnu90, "gnu90",
41226633Sdim             "ISO C 1990 with GNU extensions",
42243830Sdim             LineComment | C89 | Digraphs | GNUMode | ImplicitInt)
43199990Srdivacky
44199990Srdivacky// C99-ish modes
45199990SrdivackyLANGSTANDARD(c99, "c99",
46199990Srdivacky             "ISO C 1999",
47243830Sdim             LineComment | C99 | Digraphs | HexFloat)
48199990SrdivackyLANGSTANDARD(c9x, "c9x",
49199990Srdivacky             "ISO C 1999",
50243830Sdim             LineComment | C99 | Digraphs | HexFloat)
51199990SrdivackyLANGSTANDARD(iso9899_1999,
52199990Srdivacky             "iso9899:1999", "ISO C 1999",
53243830Sdim             LineComment | C99 | Digraphs | HexFloat)
54199990SrdivackyLANGSTANDARD(iso9899_199x,
55199990Srdivacky             "iso9899:199x", "ISO C 1999",
56243830Sdim             LineComment | C99 | Digraphs | HexFloat)
57199990Srdivacky
58199990SrdivackyLANGSTANDARD(gnu99, "gnu99",
59199990Srdivacky             "ISO C 1999 with GNU extensions",
60243830Sdim             LineComment | C99 | Digraphs | GNUMode | HexFloat)
61199990SrdivackyLANGSTANDARD(gnu9x, "gnu9x",
62199990Srdivacky             "ISO C 1999 with GNU extensions",
63243830Sdim             LineComment | C99 | Digraphs | GNUMode | HexFloat)
64199990Srdivacky
65234353Sdim// C11 modes
66234353SdimLANGSTANDARD(c11, "c11",
67234353Sdim             "ISO C 2011",
68243830Sdim             LineComment | C99 | C11 | Digraphs | HexFloat)
69221345SdimLANGSTANDARD(c1x, "c1x",
70234353Sdim             "ISO C 2011",
71243830Sdim             LineComment | C99 | C11 | Digraphs | HexFloat)
72234353SdimLANGSTANDARD(iso9899_2011,
73234353Sdim             "iso9899:2011", "ISO C 2011",
74243830Sdim             LineComment | C99 | C11 | Digraphs | HexFloat)
75221345SdimLANGSTANDARD(iso9899_201x,
76234353Sdim             "iso9899:2011", "ISO C 2011",
77243830Sdim             LineComment | C99 | C11 | Digraphs | HexFloat)
78221345Sdim
79234353SdimLANGSTANDARD(gnu11, "gnu11",
80234353Sdim             "ISO C 2011 with GNU extensions",
81243830Sdim             LineComment | C99 | C11 | Digraphs | GNUMode | HexFloat)
82221345SdimLANGSTANDARD(gnu1x, "gnu1x",
83234353Sdim             "ISO C 2011 with GNU extensions",
84243830Sdim             LineComment | C99 | C11 | Digraphs | GNUMode | HexFloat)
85221345Sdim
86199990Srdivacky// C++ modes
87199990SrdivackyLANGSTANDARD(cxx98, "c++98",
88199990Srdivacky             "ISO C++ 1998 with amendments",
89243830Sdim             LineComment | CPlusPlus | Digraphs)
90226633SdimLANGSTANDARD(cxx03, "c++03",
91226633Sdim             "ISO C++ 1998 with amendments",
92243830Sdim             LineComment | CPlusPlus | Digraphs)
93199990SrdivackyLANGSTANDARD(gnucxx98, "gnu++98",
94226633Sdim             "ISO C++ 1998 with amendments and GNU extensions",
95243830Sdim             LineComment | CPlusPlus | Digraphs | GNUMode)
96199990Srdivacky
97199990SrdivackyLANGSTANDARD(cxx0x, "c++0x",
98226633Sdim             "ISO C++ 2011 with amendments",
99249423Sdim             LineComment | CPlusPlus | CPlusPlus11 | Digraphs)
100226633SdimLANGSTANDARD(cxx11, "c++11",
101226633Sdim             "ISO C++ 2011 with amendments",
102249423Sdim             LineComment | CPlusPlus | CPlusPlus11 | Digraphs)
103199990SrdivackyLANGSTANDARD(gnucxx0x, "gnu++0x",
104226633Sdim             "ISO C++ 2011 with amendments and GNU extensions",
105249423Sdim             LineComment | CPlusPlus | CPlusPlus11 | Digraphs | GNUMode)
106226633SdimLANGSTANDARD(gnucxx11, "gnu++11",
107226633Sdim             "ISO C++ 2011 with amendments and GNU extensions",
108249423Sdim             LineComment | CPlusPlus | CPlusPlus11 | Digraphs | GNUMode)
109199990Srdivacky
110243830SdimLANGSTANDARD(cxx1y, "c++1y",
111243830Sdim             "Working draft for ISO C++ 2014",
112249423Sdim             LineComment | CPlusPlus | CPlusPlus11 | CPlusPlus1y | Digraphs)
113243830SdimLANGSTANDARD(gnucxx1y, "gnu++1y",
114243830Sdim             "Working draft for ISO C++ 2014 with GNU extensions",
115249423Sdim             LineComment | CPlusPlus | CPlusPlus11 | CPlusPlus1y | Digraphs |
116243830Sdim             GNUMode)
117243830Sdim
118199990Srdivacky// OpenCL
119199990SrdivackyLANGSTANDARD(opencl, "cl",
120199990Srdivacky             "OpenCL 1.0",
121243830Sdim             LineComment | C99 | Digraphs | HexFloat)
122239462SdimLANGSTANDARD(opencl11, "CL1.1",
123239462Sdim             "OpenCL 1.1",
124243830Sdim             LineComment | C99 | Digraphs | HexFloat)
125239462SdimLANGSTANDARD(opencl12, "CL1.2",
126239462Sdim             "OpenCL 1.2",
127243830Sdim             LineComment | C99 | Digraphs | HexFloat)
128199990Srdivacky
129218893Sdim// CUDA
130218893SdimLANGSTANDARD(cuda, "cuda",
131218893Sdim             "NVIDIA CUDA(tm)",
132243830Sdim             LineComment | CPlusPlus | Digraphs)
133218893Sdim
134199990Srdivacky#undef LANGSTANDARD
135