#ifndef LICE_OPT_HDR #define LICE_OPT_HDR #include typedef enum { STANDARD_LICEC, /* LICE variant (C11 with extensions) */ STANDARD_GNUC, /* GNUC variant */ STANDARD_KANDR, /* K&R C */ STANDARD_C90, /* C90 (ISO/IEC 9899:1990) */ STANDARD_C99, /* C99 (ISO/IEC 9899:1999) */ STANDARD_C11 /* C11 (ISO/IEC 9889:2011) */ } opt_std_t; typedef enum { EXTENSION_DOLLAR = 1 << 1, /* Dollar signs in Identifier Names */ EXTENSION_TYPEOF = 1 << 2, /* Referring to a Type with typeof */ EXTENSION_OMITOPCOND = 1 << 3, /* Conditionals with Omitted Operands */ EXTENSION_STATEMENTEXPRS = 1 << 4, /* Statements and Declarations in Expressions */ EXTENSION_NOMEMBERSTRUCT = 1 << 5, /* Structures with No Members */ EXTENSION_NONCONSTINIT = 1 << 6, /* Non-Constant Initializers */ EXTENSION_CASERANGES = 1 << 7, /* Case Ranges */ EXTENSION_ESCCHAR = 1 << 8, /* The Character in Constants */ EXTENSION_INCOMPLETEENUM = 1 << 9, /* Incomplete enum Types */ EXTENSION_BINARYCONSTANTS = 1 << 10, /* Binary constants using the '0b' prefix */ EXTENSION_ARITHMETICVOID = 1 << 11, /* Arithmetic on void- and Function-Pointers */ EXTENSION_LABELASVALUES = 1 << 12, /* Labels as Values */ EXTENSION_ZEROARRAYS = 1 << 13, /* Arrays of Length Zero */ /* always the last in the list */ EXTENSION_NONSTANDARD = 1 << 14 } opt_extension_t; bool opt_std_test(opt_std_t std); bool opt_extension_test(opt_extension_t ext); void opt_std_set(opt_std_t std); void opt_extension_set(opt_extension_t ext); #endif