//===-- LangStandards.def - Language Standard Data --------------*- C++ -*-===//
//
//                     The LLVM Compiler Infrastructure
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//

#ifndef LANGSTANDARD
#error "LANGSTANDARD must be defined before including this file"
#endif

/// LANGSTANDARD(IDENT, NAME, DESC, FEATURES)
///
/// \param IDENT - The name of the standard as a C++ identifier.
/// \param NAME - The name of the standard.
/// \param DESC - A short description of the standard.
/// \param FEATURES - The standard features as flags, these are enums from the
/// clang::frontend namespace, which is assumed to be be available.

// C89-ish modes.
LANGSTANDARD(c89, "c89",
             "ISO C 1990",
             C89 | ImplicitInt)
LANGSTANDARD(c90, "c90",
             "ISO C 1990",
             C89 | ImplicitInt)
LANGSTANDARD(iso9899_1990, "iso9899:1990",
             "ISO C 1990",
             C89 | ImplicitInt)

LANGSTANDARD(c94, "iso9899:199409",
             "ISO C 1990 with amendment 1",
             C89 | Digraphs | ImplicitInt)

LANGSTANDARD(gnu89, "gnu89",
             "ISO C 1990 with GNU extensions",
             LineComment | C89 | Digraphs | GNUMode | ImplicitInt)
LANGSTANDARD(gnu90, "gnu90",
             "ISO C 1990 with GNU extensions",
             LineComment | C89 | Digraphs | GNUMode | ImplicitInt)

// C99-ish modes
LANGSTANDARD(c99, "c99",
             "ISO C 1999",
             LineComment | C99 | Digraphs | HexFloat)
LANGSTANDARD(c9x, "c9x",
             "ISO C 1999",
             LineComment | C99 | Digraphs | HexFloat)
LANGSTANDARD(iso9899_1999,
             "iso9899:1999", "ISO C 1999",
             LineComment | C99 | Digraphs | HexFloat)
LANGSTANDARD(iso9899_199x,
             "iso9899:199x", "ISO C 1999",
             LineComment | C99 | Digraphs | HexFloat)

LANGSTANDARD(gnu99, "gnu99",
             "ISO C 1999 with GNU extensions",
             LineComment | C99 | Digraphs | GNUMode | HexFloat)
LANGSTANDARD(gnu9x, "gnu9x",
             "ISO C 1999 with GNU extensions",
             LineComment | C99 | Digraphs | GNUMode | HexFloat)

// C11 modes
LANGSTANDARD(c11, "c11",
             "ISO C 2011",
             LineComment | C99 | C11 | Digraphs | HexFloat)
LANGSTANDARD(c1x, "c1x",
             "ISO C 2011",
             LineComment | C99 | C11 | Digraphs | HexFloat)
LANGSTANDARD(iso9899_2011,
             "iso9899:2011", "ISO C 2011",
             LineComment | C99 | C11 | Digraphs | HexFloat)
LANGSTANDARD(iso9899_201x,
             "iso9899:2011", "ISO C 2011",
             LineComment | C99 | C11 | Digraphs | HexFloat)

LANGSTANDARD(gnu11, "gnu11",
             "ISO C 2011 with GNU extensions",
             LineComment | C99 | C11 | Digraphs | GNUMode | HexFloat)
LANGSTANDARD(gnu1x, "gnu1x",
             "ISO C 2011 with GNU extensions",
             LineComment | C99 | C11 | Digraphs | GNUMode | HexFloat)

// C++ modes
LANGSTANDARD(cxx98, "c++98",
             "ISO C++ 1998 with amendments",
             LineComment | CPlusPlus | Digraphs)
LANGSTANDARD(cxx03, "c++03",
             "ISO C++ 1998 with amendments",
             LineComment | CPlusPlus | Digraphs)
LANGSTANDARD(gnucxx98, "gnu++98",
             "ISO C++ 1998 with amendments and GNU extensions",
             LineComment | CPlusPlus | Digraphs | GNUMode)

LANGSTANDARD(cxx0x, "c++0x",
             "ISO C++ 2011 with amendments",
             LineComment | CPlusPlus | CPlusPlus11 | Digraphs)
LANGSTANDARD(cxx11, "c++11",
             "ISO C++ 2011 with amendments",
             LineComment | CPlusPlus | CPlusPlus11 | Digraphs)
LANGSTANDARD(gnucxx0x, "gnu++0x",
             "ISO C++ 2011 with amendments and GNU extensions",
             LineComment | CPlusPlus | CPlusPlus11 | Digraphs | GNUMode)
LANGSTANDARD(gnucxx11, "gnu++11",
             "ISO C++ 2011 with amendments and GNU extensions",
             LineComment | CPlusPlus | CPlusPlus11 | Digraphs | GNUMode)

LANGSTANDARD(cxx1y, "c++1y",
             "ISO C++ 2014 with amendments",
             LineComment | CPlusPlus | CPlusPlus11 | CPlusPlus14 | Digraphs)
LANGSTANDARD(cxx14, "c++14",
             "ISO C++ 2014 with amendments",
             LineComment | CPlusPlus | CPlusPlus11 | CPlusPlus14 | Digraphs)
LANGSTANDARD(gnucxx1y, "gnu++1y",
             "ISO C++ 2014 with amendments and GNU extensions",
             LineComment | CPlusPlus | CPlusPlus11 | CPlusPlus14 | Digraphs |
             GNUMode)
LANGSTANDARD(gnucxx14, "gnu++14",
             "ISO C++ 2014 with amendments and GNU extensions",
             LineComment | CPlusPlus | CPlusPlus11 | CPlusPlus14 | Digraphs |
             GNUMode)

LANGSTANDARD(cxx1z, "c++1z",
             "Working draft for ISO C++ 2017",
             LineComment | CPlusPlus | CPlusPlus11 | CPlusPlus14 | CPlusPlus1z |
             Digraphs)
LANGSTANDARD(gnucxx1z, "gnu++1z",
             "Working draft for ISO C++ 2017 with GNU extensions",
             LineComment | CPlusPlus | CPlusPlus11 | CPlusPlus14 | CPlusPlus1z |
             Digraphs | GNUMode)

// OpenCL
LANGSTANDARD(opencl, "cl",
             "OpenCL 1.0",
             LineComment | C99 | Digraphs | HexFloat)
LANGSTANDARD(opencl11, "CL1.1",
             "OpenCL 1.1",
             LineComment | C99 | Digraphs | HexFloat)
LANGSTANDARD(opencl12, "CL1.2",
             "OpenCL 1.2",
             LineComment | C99 | Digraphs | HexFloat)
LANGSTANDARD(opencl20, "CL2.0",
             "OpenCL 2.0",
             LineComment | C99 | Digraphs | HexFloat)

// CUDA
LANGSTANDARD(cuda, "cuda",
             "NVIDIA CUDA(tm)",
             LineComment | CPlusPlus | Digraphs)

#undef LANGSTANDARD
