//===-- 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",
             ImplicitInt)
LANGSTANDARD(c90, "c90",
             "ISO C 1990",
             ImplicitInt)
LANGSTANDARD(iso9899_1990, "iso9899:1990",
             "ISO C 1990",
             ImplicitInt)

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

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

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

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

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

LANGSTANDARD(cxx0x, "c++0x",
             "Upcoming ISO C++ 200x with amendments",
             BCPLComment | CPlusPlus | CPlusPlus0x | Digraphs)
LANGSTANDARD(gnucxx0x, "gnu++0x",
             "Upcoming ISO C++ 200x with amendments and GNU extensions",
             BCPLComment | CPlusPlus | CPlusPlus0x | Digraphs | GNUMode)

// OpenCL

LANGSTANDARD(opencl, "cl",
             "OpenCL 1.0",
             BCPLComment | C99 | Digraphs | HexFloat)

#undef LANGSTANDARD
