# C and C++ language definition file
#
# Author: Andre Simon
#   Mail: andre.simon1@gmx.de
#   Date: 24.7.2002
#         updated 12.01.04 to add more types (ansi c, iso 99)
#         updated 22.03.10 to add C++0x keywords, R"", "\uxxxx" 
# ------------------------------------------
# This file is a part of highlight, a free source code converter released under the GPL.
#
# The file is used to describe keywords and special symbols of programming languages.
# See README in the highlight directory for details.
#
# New definition files for future releases of highlight are always appreciated ;)
#
# ----------
# andre.simon1@gmx.de
# http:/www.andre-simon.de/

$DESCRIPTION=C and C++

$KEYWORDS(kwa)=goto break return continue asm case default if else switch while for do sizeof
typeof  stdcall cdecl const_cast delete dynamic_cast   goto  namespace new  pascal
reinterpret_cast  static_cast  this throw try catch using true false bitand and bitor or xor
compl and_eq or_eq xor_eq not not_eq  assert static_assert

$KEYWORDS(kwb)=int long short char void signed unsigned float double size_t wchar_t
ptrdiff_t  sig_atomic_t fpos_t clock_t time_t va_list jmp_buf FILE DIR div_t ldiv_t static
const bool struct union enum size_t wchar_t ptrdiff_t sig_atomic_t fpos_t clock_t time_t
va_list jmp_buf FILE DIR div_t ldiv_t mbstate_t wctrans_t wint_t wctype_t bool complex
int8_t int16_t int32_t int64_t uint8_t uint16_t uint32_t uint64_t int_least8_t int_least16_t
int_least32_t int_least64_t uint_least8_t uint_least16_t uint_least32_t uint_least64_t
int_fast8_t int_fast16_t int_fast32_t int_fast64_t uint_fast8_t uint_fast16_t uint_fast32_t
uint_fast64_t intptr_t uintptr_t intmax_t uintmax_t 

$KEYWORDS(kwc)=typedef inline auto class explicit extern friend inline mutable operator
register template private protected public typeid virtual volatile constexpr nullptr decltype
 
$KEYWORDS(kwd)=regex((\w+)\s*\()

$STRINGDELIMITERS=" '

$SL_COMMENT=//

$ML_COMMENT=/* */

$ALLOWNESTEDCOMMENTS=false

$IGNORECASE=false

$DIRECTIVE=#

$ESCCHAR=regex(\\u\p{XDigit}{4}|\\\d{3}|\\x\p{XDigit}{2}|\\[ntvbrfa\\\?'"])

$SYMBOLS= ( ) [ ] { } , ; . : & | < > !  = / *  %  + - ~

$CONTINUATIONSYMBOL=\

$REFORMATTING=true

$RAWSTRINGPREFIX=R
