X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=lang_features.h;h=6419e822095745a640f19e13984bbb081b6ba95e;hb=ef3b0164cbb6c9d616c3fdad92fb8da669e4b5d7;hp=e3871783ffdf37c0176cff4ed0ebcc1c49f3539e;hpb=d4a27091c638acf4f67f8a4f1faf3aac911c7fce;p=cparser diff --git a/lang_features.h b/lang_features.h index e387178..6419e82 100644 --- a/lang_features.h +++ b/lang_features.h @@ -1,47 +1,43 @@ /* * This file is part of cparser. - * Copyright (C) 2007-2008 Matthias Braun - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA - * 02111-1307, USA. + * Copyright (C) 2012 Matthias Braun */ #ifndef LANG_FEATURES_H #define LANG_FEATURES_H -enum lang_features { - _C89 = 1, - _ANSI = 2, - _C99 = 4, - _GNUC = 8, - _MS = 16, +#include + +#define BITS_PER_BYTE 8 + +typedef enum lang_features_t { + _C89 = 1U << 0, + _C99 = 1U << 1, + _C11 = 1U << 2, + _CXX = 1U << 3, + _GNUC = 1U << 4, + _MS = 1U << 5, _ALL = 0xFF -}; +} lang_features_t; -/* the current C mode/dialect */ +/** the current C mode/dialect */ extern unsigned int c_mode; -/* the 'machine size', 16, 32 or 64 bit */ -extern unsigned int machine_size; +/** + * whether architecture shift instructions usually perform modulo bit_size + * on the shift amount, if yes this equals to the machine_size. + */ +extern unsigned int architecture_modulo_shift; -/* true if the char type is signed */ -extern bool char_is_signed; +/** byte-order: true = big-endian, false = little-endian */ +extern bool byte_order_big_endian; -/* true for strict language checking. */ +/** true for strict language checking. */ extern bool strict_mode; -/* true if wchar_t is equal to unsigned short. */ -extern bool opt_short_wchar_t; +/** a hack that adds a call to __main into the main function, necessary on + * mingw */ +extern bool enable_main_collect2_hack; + +extern bool freestanding; #endif