" special keywords
syntax keyword cType     uint8  sint8  uint16  sint16  uint32  sint32  uint64  sint64
syntax keyword cType    tuint8 tsint8 tuint16 tsint16 tuint32 tsint32 tuint64 tsint64
syntax keyword cType    DfpType SfpType SfpErrorType LWrd LInt
syntax keyword cType    TickType
syntax keyword Special  ATOMIC BEGIN_ATOMIC END_ATOMIC
"syntax match   cTodo     "!\s*IST_LIEBL.*[^*/]"
syntax match   cTodo    "\(!\s*IST_LIEBL.*\>\)\ze\s*\*/"
syntax match   cTodo    "\(debug\)"
syntax keyword cConstant TRUE FALSE

syntax region myFold start="{" end="}" transparent fold
syntax region if0Fold start="^\s*#\s*if\s\+0\+\>" end="^\s*#\s*endif" fold containedin=cPreCondit
let c_no_if0 = 1
syntax sync fromstart
set foldmethod=syntax
set nofoldenable

" Folds for #ifdef
command! -nargs=0 FoldDefine call FoldDefine(<args>)
function! FoldDefine ()
    execute 'normal mx'
    let startline = line('.')
"    execute 'normal %k'
    execute 'normal 0%'
    if match(GetLine(), 'endif') < 0
        execute 'normal k'
    endif
    let endline = line('.')
"    echo 'start: ' . startline . ' end: ' . endline
    let foldname = 'FoldDefine' . startline
    let start='"\%' . startline . 'l.*"'
    let end='"\%' . endline . 'l.*"'
    let command = 'syntax region ' . foldname . ' start=' . start . ' end=' . end . ' fold containedin=cPreCondit'
"    echo command
    execute command
    execute 'highlight def link ' . foldname . ' Comment'
    syntax sync fromstart
    set foldmethod=syntax
    execute 'normal `x'
endfunction

command! -nargs=0 UnFoldDefine call UnFoldDefine(<args>)
function! UnFoldDefine ()
    let foldname = 'FoldDefine' . line('.')
    execute "syntax clear " . foldname
endfunction