#n # Checks for key bits in English declarations. This file is itself parsed # to determine the things checked for: lines containing "=yes" are assumed # to be variables to be tested, and must be followed by a # and a comment # stating the feature being tested. # # Copyright © 2012 Nick Bowler # # License WTFPL2: Do What The Fuck You Want To Public License, version 2. # This is free software: you are free to do what the fuck you want to. # There is NO WARRANTY, to the extent permitted by law. 10000q /^declare/i\ declaration=yes # declaration of an identifier /^type/i\ abstract=yes # type name /inline/i\ inline=yes # inline function /inline inline/i\ redundant_funcspec=yes # redundant function specifiers /function ([[:alnum:]_]* as/i\ named_parameter=yes # named function parameter /function (void)/i\ empty_prototype=yes # empty prototype declaration /function returning/i\ non_prototype=yes # non-prototype function declaration. /\.\.\.)/i\ variadic=yes # variadic function /const/i\ const=yes # const qualifier /volatile/i\ volatile=yes # volatile qualifier /restrict/i\ restrict=yes # restrict qualifier /const const/i\ redundant_qualifier=yes # redundant type qualifiers /variable-length array/i\ vla=yes # variable-length array /static/i\ static=yes # static storage-class specifier /extern/i\ extern=yes # extern storage-class specifier /typedef/i\ typedef=yes # typedef storage-class specifier /auto/i\ auto=yes # auto storage-class specifier /register/i\ register=yes # register storage-class specifier /void/i\ void=yes # void type specifier /char/i\ char=yes # char type specifier /short/i\ short=yes # short type specifier /int/i\ int=yes # int type specifier /long/i\ long=yes # long type specifier /float/i\ float=yes # float type specifier /double/i\ double=yes # double type specifier /signed/i\ signed=yes # signed type specifier /unsigned/i\ unsigned=yes # unsigned type specifier /_Bool/i\ bool=yes # _Bool type specifier /_Complex/i\ complex=yes # _Complex type specifier /_Imaginary/i\ imaginary=yes # _Imaginary type specifier /struct/i\ struct=yes # struct type specifier /union/i\ union=yes # union type specifier /enum/i\ enum=yes # enum type specifier /pointer to array/i\ pointer_to_array=yes # pointer to an array /pointer to function/i\ pointer_to_function=yes # pointer to a function