%The \unless\ifdefined is so that this file can be input at the end of the hilighting file,
% where it feels more natural. Otherwise, if the highlighting file (re-)defines some of these,
% it can only be input at the beginning.

\def\defifnot#1#2{\unless\ifcsname Format\TcodeLang#1\endcsname\TcodeDefineSubcategory{#1}{#2}\fi}
%Results in, e.g., \protected\def\FormatCQualifier{\FormatCKeyword}. Or \FormatQualifier \FormatKeyword, depending on \TcodeLang

\defifnot{TypeSpec}{Keyword}
%
\defifnot{FuncSpec}{Keyword}
\defifnot{AlignSpec}{Keyword}
\defifnot{StorageClass}{Keyword}
\defifnot{Qualifier}{Keyword}
%
\defifnot{Operator}{Keyword}
\defifnot{CodeSelection}{Keyword}
\defifnot{Statement}{Keyword}
\defifnot{SwitchLabel}{Keyword}
\defifnot{Loop}{Keyword}
\defifnot{Jump}{Keyword}
\defifnot{NamedConstant}{Keyword}

\defifnot{MacroAlias}{Macro}
\defifnot{MacroPredef}{Macro}
\defifnot{MacroVersion}{Macro} %Version numbers

%These are not subcategories, but other categories that must be formatted the same way. E.g., int`N_t
\TcodeDefineSubcategory{SpecFamily}{TypeSpec}
\TcodeDefineSubcategory{TypeFamily}{Typedef}
\TcodeDefineSubcategory{MacroFamily}{Macro}
\TcodeDefineSubcategory{FuncFamily}{Function} %Each identifier one of these represent is a function. E.g., stdc_load8_leu`N
