/*
* Copyright (C) 2022 Daniel Dietsch (dietsch@informatik.uni-freiburg.de)
* Copyright (C) 2022 University of Freiburg
*
* This file is part of the ULTIMATE CDTParser plug-in.
*
* The ULTIMATE CDTParser plug-in is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published
* by the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* The ULTIMATE CDTParser plug-in 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 Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with the ULTIMATE CDTParser plug-in. If not, see .
*
* Additional permission under GNU GPL version 3 section 7:
* If you modify the ULTIMATE CDTParser plug-in, or any covered work, by linking
* or combining it with Eclipse RCP (or a modified version of Eclipse RCP),
* containing parts covered by the terms of the Eclipse Public License, the
* licensors of the ULTIMATE CDTParser plug-in grant you additional permission
* to convey the resulting work.
*/
package de.uni_freiburg.informatik.ultimate.cdt.parser;
import java.util.Arrays;
import java.util.List;
import org.eclipse.cdt.core.language.settings.providers.ILanguageSettingsProvider;
import org.eclipse.cdt.core.language.settings.providers.LanguageSettingsStorage;
import org.eclipse.cdt.core.settings.model.CMacroEntry;
import org.eclipse.cdt.core.settings.model.ICConfigurationDescription;
import org.eclipse.cdt.core.settings.model.ICLanguageSettingEntry;
import org.eclipse.cdt.core.settings.model.ICSettingEntry;
import org.eclipse.core.resources.IResource;
/**
* A {@link ILanguageSettingsProvider} that provides the builtin results detected by
* org.eclipse.cdt.managedbuilder.core.GCCBuiltinSpecsDetector from a GCC 8.3.0.
*
* @author Daniel Dietsch (dietsch@informatik.uni-freiburg.de)
*/
public class GccStaticLanguageSettingsProvider implements ILanguageSettingsProvider {
private final List mSettings;
public GccStaticLanguageSettingsProvider() {
final ICLanguageSettingEntry[] entries = { createEntry("WIN64", "1"), createEntry("WINNT", "1"),
createEntry("_INTEGRAL_MAX_BITS", "64"), createEntry("_REENTRANT", "1"), createEntry("_WIN32", "1"),
createEntry("_WIN64", "1"), createEntry("__ATOMIC_ACQUIRE", "2"), createEntry("__ATOMIC_ACQ_REL", "4"),
createEntry("__ATOMIC_CONSUME", "1"), createEntry("__ATOMIC_HLE_ACQUIRE", "65536"),
createEntry("__ATOMIC_HLE_RELEASE", "131072"), createEntry("__ATOMIC_RELAXED", "0"),
createEntry("__ATOMIC_RELEASE", "3"), createEntry("__ATOMIC_SEQ_CST", "5"),
createEntry("__BIGGEST_ALIGNMENT__", "16"), createEntry("__BYTE_ORDER__", "__ORDER_LITTLE_ENDIAN__"),
createEntry("__CHAR16_TYPE__", "short unsigned int"), createEntry("__CHAR32_TYPE__", "unsigned int"),
createEntry("__CHAR_BIT__", "8"), createEntry("__DBL_DECIMAL_DIG__", "17"),
createEntry("__DBL_DENORM_MIN__", "((double)4.94065645841246544176568792868221372e-324L)"),
createEntry("__DBL_DIG__", "15"),
createEntry("__DBL_EPSILON__", "((double)2.22044604925031308084726333618164062e-16L)"),
createEntry("__DBL_HAS_DENORM__", "1"), createEntry("__DBL_HAS_INFINITY__", "1"),
createEntry("__DBL_HAS_QUIET_NAN__", "1"), createEntry("__DBL_MANT_DIG__", "53"),
createEntry("__DBL_MAX_10_EXP__", "308"), createEntry("__DBL_MAX_EXP__", "1024"),
createEntry("__DBL_MAX__", "((double)1.79769313486231570814527423731704357e+308L)"),
createEntry("__DBL_MIN_10_EXP__", "(-307)"), createEntry("__DBL_MIN_EXP__", "(-1021)"),
createEntry("__DBL_MIN__", "((double)2.22507385850720138309023271733240406e-308L)"),
createEntry("__DEC128_EPSILON__", "1E-33DL"), createEntry("__DEC128_MANT_DIG__", "34"),
createEntry("__DEC128_MAX_EXP__", "6145"),
createEntry("__DEC128_MAX__", "9.999999999999999999999999999999999E6144DL"),
createEntry("__DEC128_MIN_EXP__", "(-6142)"), createEntry("__DEC128_MIN__", "1E-6143DL"),
createEntry("__DEC128_SUBNORMAL_MIN__", "0.000000000000000000000000000000001E-6143DL"),
createEntry("__DEC32_EPSILON__", "1E-6DF"), createEntry("__DEC32_MANT_DIG__", "7"),
createEntry("__DEC32_MAX_EXP__", "97"), createEntry("__DEC32_MAX__", "9.999999E96DF"),
createEntry("__DEC32_MIN_EXP__", "(-94)"), createEntry("__DEC32_MIN__", "1E-95DF"),
createEntry("__DEC32_SUBNORMAL_MIN__", "0.000001E-95DF"), createEntry("__DEC64_EPSILON__", "1E-15DD"),
createEntry("__DEC64_MANT_DIG__", "16"), createEntry("__DEC64_MAX_EXP__", "385"),
createEntry("__DEC64_MAX__", "9.999999999999999E384DD"), createEntry("__DEC64_MIN_EXP__", "(-382)"),
createEntry("__DEC64_MIN__", "1E-383DD"),
createEntry("__DEC64_SUBNORMAL_MIN__", "0.000000000000001E-383DD"),
createEntry("__DECIMAL_BID_FORMAT__", "1"), createEntry("__DECIMAL_DIG__", "21"),
createEntry("__DEC_EVAL_METHOD__", "2"), createEntry("__FINITE_MATH_ONLY__", "0"),
createEntry("__FLOAT_WORD_ORDER__", "__ORDER_LITTLE_ENDIAN__"),
createEntry("__FLT128_DECIMAL_DIG__", "36"),
createEntry("__FLT128_DENORM_MIN__", "6.47517511943802511092443895822764655e-4966F128"),
createEntry("__FLT128_DIG__", "33"),
createEntry("__FLT128_EPSILON__", "1.92592994438723585305597794258492732e-34F128"),
createEntry("__FLT128_HAS_DENORM__", "1"), createEntry("__FLT128_HAS_INFINITY__", "1"),
createEntry("__FLT128_HAS_QUIET_NAN__", "1"), createEntry("__FLT128_MANT_DIG__", "113"),
createEntry("__FLT128_MAX_10_EXP__", "4932"), createEntry("__FLT128_MAX_EXP__", "16384"),
createEntry("__FLT128_MAX__", "1.18973149535723176508575932662800702e+4932F128"),
createEntry("__FLT128_MIN_10_EXP__", "(-4931)"), createEntry("__FLT128_MIN_EXP__", "(-16381)"),
createEntry("__FLT128_MIN__", "3.36210314311209350626267781732175260e-4932F128"),
createEntry("__FLT32X_DECIMAL_DIG__", "17"),
createEntry("__FLT32X_DENORM_MIN__", "4.94065645841246544176568792868221372e-324F32x"),
createEntry("__FLT32X_DIG__", "15"),
createEntry("__FLT32X_EPSILON__", "2.22044604925031308084726333618164062e-16F32x"),
createEntry("__FLT32X_HAS_DENORM__", "1"), createEntry("__FLT32X_HAS_INFINITY__", "1"),
createEntry("__FLT32X_HAS_QUIET_NAN__", "1"), createEntry("__FLT32X_MANT_DIG__", "53"),
createEntry("__FLT32X_MAX_10_EXP__", "308"), createEntry("__FLT32X_MAX_EXP__", "1024"),
createEntry("__FLT32X_MAX__", "1.79769313486231570814527423731704357e+308F32x"),
createEntry("__FLT32X_MIN_10_EXP__", "(-307)"), createEntry("__FLT32X_MIN_EXP__", "(-1021)"),
createEntry("__FLT32X_MIN__", "2.22507385850720138309023271733240406e-308F32x"),
createEntry("__FLT32_DECIMAL_DIG__", "9"),
createEntry("__FLT32_DENORM_MIN__", "1.40129846432481707092372958328991613e-45F32"),
createEntry("__FLT32_DIG__", "6"),
createEntry("__FLT32_EPSILON__", "1.19209289550781250000000000000000000e-7F32"),
createEntry("__FLT32_HAS_DENORM__", "1"), createEntry("__FLT32_HAS_INFINITY__", "1"),
createEntry("__FLT32_HAS_QUIET_NAN__", "1"), createEntry("__FLT32_MANT_DIG__", "24"),
createEntry("__FLT32_MAX_10_EXP__", "38"), createEntry("__FLT32_MAX_EXP__", "128"),
createEntry("__FLT32_MAX__", "3.40282346638528859811704183484516925e+38F32"),
createEntry("__FLT32_MIN_10_EXP__", "(-37)"), createEntry("__FLT32_MIN_EXP__", "(-125)"),
createEntry("__FLT32_MIN__", "1.17549435082228750796873653722224568e-38F32"),
createEntry("__FLT64X_DECIMAL_DIG__", "21"),
createEntry("__FLT64X_DENORM_MIN__", "3.64519953188247460252840593361941982e-4951F64x"),
createEntry("__FLT64X_DIG__", "18"),
createEntry("__FLT64X_EPSILON__", "1.08420217248550443400745280086994171e-19F64x"),
createEntry("__FLT64X_HAS_DENORM__", "1"), createEntry("__FLT64X_HAS_INFINITY__", "1"),
createEntry("__FLT64X_HAS_QUIET_NAN__", "1"), createEntry("__FLT64X_MANT_DIG__", "64"),
createEntry("__FLT64X_MAX_10_EXP__", "4932"), createEntry("__FLT64X_MAX_EXP__", "16384"),
createEntry("__FLT64X_MAX__", "1.18973149535723176502126385303097021e+4932F64x"),
createEntry("__FLT64X_MIN_10_EXP__", "(-4931)"), createEntry("__FLT64X_MIN_EXP__", "(-16381)"),
createEntry("__FLT64X_MIN__", "3.36210314311209350626267781732175260e-4932F64x"),
createEntry("__FLT64_DECIMAL_DIG__", "17"),
createEntry("__FLT64_DENORM_MIN__", "4.94065645841246544176568792868221372e-324F64"),
createEntry("__FLT64_DIG__", "15"),
createEntry("__FLT64_EPSILON__", "2.22044604925031308084726333618164062e-16F64"),
createEntry("__FLT64_HAS_DENORM__", "1"), createEntry("__FLT64_HAS_INFINITY__", "1"),
createEntry("__FLT64_HAS_QUIET_NAN__", "1"), createEntry("__FLT64_MANT_DIG__", "53"),
createEntry("__FLT64_MAX_10_EXP__", "308"), createEntry("__FLT64_MAX_EXP__", "1024"),
createEntry("__FLT64_MAX__", "1.79769313486231570814527423731704357e+308F64"),
createEntry("__FLT64_MIN_10_EXP__", "(-307)"), createEntry("__FLT64_MIN_EXP__", "(-1021)"),
createEntry("__FLT64_MIN__", "2.22507385850720138309023271733240406e-308F64"),
createEntry("__FLT_DECIMAL_DIG__", "9"),
createEntry("__FLT_DENORM_MIN__", "1.40129846432481707092372958328991613e-45F"),
createEntry("__FLT_DIG__", "6"),
createEntry("__FLT_EPSILON__", "1.19209289550781250000000000000000000e-7F"),
createEntry("__FLT_EVAL_METHOD_TS_18661_3__", "0"), createEntry("__FLT_EVAL_METHOD__", "0"),
createEntry("__FLT_HAS_DENORM__", "1"), createEntry("__FLT_HAS_INFINITY__", "1"),
createEntry("__FLT_HAS_QUIET_NAN__", "1"), createEntry("__FLT_MANT_DIG__", "24"),
createEntry("__FLT_MAX_10_EXP__", "38"), createEntry("__FLT_MAX_EXP__", "128"),
createEntry("__FLT_MAX__", "3.40282346638528859811704183484516925e+38F"),
createEntry("__FLT_MIN_10_EXP__", "(-37)"), createEntry("__FLT_MIN_EXP__", "(-125)"),
createEntry("__FLT_MIN__", "1.17549435082228750796873653722224568e-38F"),
createEntry("__FLT_RADIX__", "2"), createEntry("__FXSR__", "1"),
createEntry("__GCC_ASM_FLAG_OUTPUTS__", "1"), createEntry("__GCC_ATOMIC_BOOL_LOCK_FREE", "2"),
createEntry("__GCC_ATOMIC_CHAR16_T_LOCK_FREE", "2"),
createEntry("__GCC_ATOMIC_CHAR32_T_LOCK_FREE", "2"), createEntry("__GCC_ATOMIC_CHAR_LOCK_FREE", "2"),
createEntry("__GCC_ATOMIC_INT_LOCK_FREE", "2"), createEntry("__GCC_ATOMIC_LLONG_LOCK_FREE", "2"),
createEntry("__GCC_ATOMIC_LONG_LOCK_FREE", "2"), createEntry("__GCC_ATOMIC_POINTER_LOCK_FREE", "2"),
createEntry("__GCC_ATOMIC_SHORT_LOCK_FREE", "2"), createEntry("__GCC_ATOMIC_TEST_AND_SET_TRUEVAL", "1"),
createEntry("__GCC_ATOMIC_WCHAR_T_LOCK_FREE", "2"),
createEntry("__GCC_HAVE_SYNC_COMPARE_AND_SWAP_1", "1"),
createEntry("__GCC_HAVE_SYNC_COMPARE_AND_SWAP_16", "1"),
createEntry("__GCC_HAVE_SYNC_COMPARE_AND_SWAP_2", "1"),
createEntry("__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4", "1"),
createEntry("__GCC_HAVE_SYNC_COMPARE_AND_SWAP_8", "1"), createEntry("__GCC_IEC_559", "2"),
createEntry("__GCC_IEC_559_COMPLEX", "2"), createEntry("__GNUC_MINOR__", "3"),
createEntry("__GNUC_PATCHLEVEL__", "0"), createEntry("__GNUC_STDC_INLINE__", "1"),
createEntry("__GNUC__", "8"), createEntry("__GXX_ABI_VERSION", "1013"),
createEntry("__GXX_MERGED_TYPEINFO_NAMES", "0"), createEntry("__GXX_TYPEINFO_EQUALITY_INLINE", "0"),
createEntry("__INT16_C(c)", "c"), createEntry("__INT16_MAX__", "0x7fff"),
createEntry("__INT16_TYPE__", "short int"), createEntry("__INT32_C(c)", "c"),
createEntry("__INT32_MAX__", "0x7fffffff"), createEntry("__INT32_TYPE__", "int"),
createEntry("__INT64_C(c)", "c ## LL"), createEntry("__INT64_MAX__", "0x7fffffffffffffffLL"),
createEntry("__INT64_TYPE__", "long long int"), createEntry("__INT8_C(c)", "c"),
createEntry("__INT8_MAX__", "0x7f"), createEntry("__INT8_TYPE__", "signed char"),
createEntry("__INTMAX_C(c)", "c ## LL"), createEntry("__INTMAX_MAX__", "0x7fffffffffffffffLL"),
createEntry("__INTMAX_TYPE__", "long long int"), createEntry("__INTMAX_WIDTH__", "64"),
createEntry("__INTPTR_MAX__", "0x7fffffffffffffffLL"), createEntry("__INTPTR_TYPE__", "long long int"),
createEntry("__INTPTR_WIDTH__", "64"), createEntry("__INT_FAST16_MAX__", "0x7fff"),
createEntry("__INT_FAST16_TYPE__", "short int"), createEntry("__INT_FAST16_WIDTH__", "16"),
createEntry("__INT_FAST32_MAX__", "0x7fffffff"), createEntry("__INT_FAST32_TYPE__", "int"),
createEntry("__INT_FAST32_WIDTH__", "32"), createEntry("__INT_FAST64_MAX__", "0x7fffffffffffffffLL"),
createEntry("__INT_FAST64_TYPE__", "long long int"), createEntry("__INT_FAST64_WIDTH__", "64"),
createEntry("__INT_FAST8_MAX__", "0x7f"), createEntry("__INT_FAST8_TYPE__", "signed char"),
createEntry("__INT_FAST8_WIDTH__", "8"), createEntry("__INT_LEAST16_MAX__", "0x7fff"),
createEntry("__INT_LEAST16_TYPE__", "short int"), createEntry("__INT_LEAST16_WIDTH__", "16"),
createEntry("__INT_LEAST32_MAX__", "0x7fffffff"), createEntry("__INT_LEAST32_TYPE__", "int"),
createEntry("__INT_LEAST32_WIDTH__", "32"), createEntry("__INT_LEAST64_MAX__", "0x7fffffffffffffffLL"),
createEntry("__INT_LEAST64_TYPE__", "long long int"), createEntry("__INT_LEAST64_WIDTH__", "64"),
createEntry("__INT_LEAST8_MAX__", "0x7f"), createEntry("__INT_LEAST8_TYPE__", "signed char"),
createEntry("__INT_LEAST8_WIDTH__", "8"), createEntry("__INT_MAX__", "0x7fffffff"),
createEntry("__INT_WIDTH__", "32"), createEntry("__LDBL_DECIMAL_DIG__", "21"),
createEntry("__LDBL_DENORM_MIN__", "3.64519953188247460252840593361941982e-4951L"),
createEntry("__LDBL_DIG__", "18"),
createEntry("__LDBL_EPSILON__", "1.08420217248550443400745280086994171e-19L"),
createEntry("__LDBL_HAS_DENORM__", "1"), createEntry("__LDBL_HAS_INFINITY__", "1"),
createEntry("__LDBL_HAS_QUIET_NAN__", "1"), createEntry("__LDBL_MANT_DIG__", "64"),
createEntry("__LDBL_MAX_10_EXP__", "4932"), createEntry("__LDBL_MAX_EXP__", "16384"),
createEntry("__LDBL_MAX__", "1.18973149535723176502126385303097021e+4932L"),
createEntry("__LDBL_MIN_10_EXP__", "(-4931)"), createEntry("__LDBL_MIN_EXP__", "(-16381)"),
createEntry("__LDBL_MIN__", "3.36210314311209350626267781732175260e-4932L"),
createEntry("__LONG_LONG_MAX__", "0x7fffffffffffffffLL"), createEntry("__LONG_LONG_WIDTH__", "64"),
createEntry("__LONG_MAX__", "0x7fffffffL"), createEntry("__LONG_WIDTH__", "32"),
createEntry("__MINGW32__", "1"), createEntry("__MINGW64__", "1"), createEntry("__MMX__", "1"),
createEntry("__MSVCRT__", "1"), createEntry("__NO_INLINE__", "1"),
createEntry("__ORDER_BIG_ENDIAN__", "4321"), createEntry("__ORDER_LITTLE_ENDIAN__", "1234"),
createEntry("__ORDER_PDP_ENDIAN__", "3412"), createEntry("__PIC__", "1"),
createEntry("__PRAGMA_REDEFINE_EXTNAME", "1"), createEntry("__PTRDIFF_MAX__", "0x7fffffffffffffffLL"),
createEntry("__PTRDIFF_TYPE__", "long long int"), createEntry("__PTRDIFF_WIDTH__", "64"),
createEntry("__REGISTER_PREFIX__", ""), createEntry("__SCHAR_MAX__", "0x7f"),
createEntry("__SCHAR_WIDTH__", "8"), createEntry("__SEG_FS", "1"), createEntry("__SEG_GS", "1"),
createEntry("__SEH__", "1"), createEntry("__SHRT_MAX__", "0x7fff"), createEntry("__SHRT_WIDTH__", "16"),
createEntry("__SIG_ATOMIC_MAX__", "0x7fffffff"),
createEntry("__SIG_ATOMIC_MIN__", "(-__SIG_ATOMIC_MAX__ - 1)"),
createEntry("__SIG_ATOMIC_TYPE__", "int"), createEntry("__SIG_ATOMIC_WIDTH__", "32"),
createEntry("__SIZEOF_DOUBLE__", "8"), createEntry("__SIZEOF_FLOAT128__", "16"),
createEntry("__SIZEOF_FLOAT80__", "16"), createEntry("__SIZEOF_FLOAT__", "4"),
createEntry("__SIZEOF_INT128__", "16"), createEntry("__SIZEOF_INT__", "4"),
createEntry("__SIZEOF_LONG_DOUBLE__", "16"), createEntry("__SIZEOF_LONG_LONG__", "8"),
createEntry("__SIZEOF_LONG__", "4"), createEntry("__SIZEOF_POINTER__", "8"),
createEntry("__SIZEOF_PTRDIFF_T__", "8"), createEntry("__SIZEOF_SHORT__", "2"),
createEntry("__SIZEOF_SIZE_T__", "8"), createEntry("__SIZEOF_WCHAR_T__", "2"),
createEntry("__SIZEOF_WINT_T__", "2"), createEntry("__SIZE_MAX__", "0xffffffffffffffffULL"),
createEntry("__SIZE_TYPE__", "long long unsigned int"), createEntry("__SIZE_WIDTH__", "64"),
createEntry("__SSE2_MATH__", "1"), createEntry("__SSE2__", "1"), createEntry("__SSE3__", "1"),
createEntry("__SSE_MATH__", "1"), createEntry("__SSE__", "1"), createEntry("__STDC_HOSTED__", "1"),
createEntry("__STDC_UTF_16__", "1"), createEntry("__STDC_UTF_32__", "1"),
createEntry("__STDC_VERSION__", "201710L"), createEntry("__STDC__", "1"),
createEntry("__UINT16_C(c)", "c"), createEntry("__UINT16_MAX__", "0xffff"),
createEntry("__UINT16_TYPE__", "short unsigned int"), createEntry("__UINT32_C(c)", "c ## U"),
createEntry("__UINT32_MAX__", "0xffffffffU"), createEntry("__UINT32_TYPE__", "unsigned int"),
createEntry("__UINT64_C(c)", "c ## ULL"), createEntry("__UINT64_MAX__", "0xffffffffffffffffULL"),
createEntry("__UINT64_TYPE__", "long long unsigned int"), createEntry("__UINT8_C(c)", "c"),
createEntry("__UINT8_MAX__", "0xff"), createEntry("__UINT8_TYPE__", "unsigned char"),
createEntry("__UINTMAX_C(c)", "c ## ULL"), createEntry("__UINTMAX_MAX__", "0xffffffffffffffffULL"),
createEntry("__UINTMAX_TYPE__", "long long unsigned int"),
createEntry("__UINTPTR_MAX__", "0xffffffffffffffffULL"),
createEntry("__UINTPTR_TYPE__", "long long unsigned int"), createEntry("__UINT_FAST16_MAX__", "0xffff"),
createEntry("__UINT_FAST16_TYPE__", "short unsigned int"),
createEntry("__UINT_FAST32_MAX__", "0xffffffffU"), createEntry("__UINT_FAST32_TYPE__", "unsigned int"),
createEntry("__UINT_FAST64_MAX__", "0xffffffffffffffffULL"),
createEntry("__UINT_FAST64_TYPE__", "long long unsigned int"),
createEntry("__UINT_FAST8_MAX__", "0xff"), createEntry("__UINT_FAST8_TYPE__", "unsigned char"),
createEntry("__UINT_LEAST16_MAX__", "0xffff"),
createEntry("__UINT_LEAST16_TYPE__", "short unsigned int"),
createEntry("__UINT_LEAST32_MAX__", "0xffffffffU"),
createEntry("__UINT_LEAST32_TYPE__", "unsigned int"),
createEntry("__UINT_LEAST64_MAX__", "0xffffffffffffffffULL"),
createEntry("__UINT_LEAST64_TYPE__", "long long unsigned int"),
createEntry("__UINT_LEAST8_MAX__", "0xff"), createEntry("__UINT_LEAST8_TYPE__", "unsigned char"),
createEntry("__USER_LABEL_PREFIX__", ""), createEntry("__WCHAR_MAX__", "0xffff"),
createEntry("__WCHAR_MIN__", "0"), createEntry("__WCHAR_TYPE__", "short unsigned int"),
createEntry("__WCHAR_WIDTH__", "16"), createEntry("__WIN32", "1"), createEntry("__WIN32__", "1"),
createEntry("__WIN64", "1"), createEntry("__WIN64__", "1"), createEntry("__WINNT", "1"),
createEntry("__WINNT__", "1"), createEntry("__WINT_MAX__", "0xffff"), createEntry("__WINT_MIN__", "0"),
createEntry("__WINT_TYPE__", "short unsigned int"), createEntry("__WINT_WIDTH__", "16"),
createEntry("__amd64", "1"), createEntry("__amd64__", "1"),
createEntry("__cdecl", "__attribute__((__cdecl__))"), createEntry("__code_model_medium__", "1"),
createEntry("__declspec(x)", "__attribute__((x))"),
createEntry("__fastcall", "__attribute__((__fastcall__))"),
createEntry("__has_include(STR)", "__has_include__(STR)"),
createEntry("__has_include_next(STR)", "__has_include_next__(STR)"), createEntry("__nocona", "1"),
createEntry("__nocona__", "1"), createEntry("__pic__", "1"),
createEntry("__stdcall", "__attribute__((__stdcall__))"),
createEntry("__thiscall", "__attribute__((__thiscall__))"), createEntry("__tune_core2__", "1"),
createEntry("__x86_64", "1"), createEntry("__x86_64__", "1"),
createEntry("_cdecl", "__attribute__((__cdecl__))"),
createEntry("_fastcall", "__attribute__((__fastcall__))"),
createEntry("_stdcall", "__attribute__((__stdcall__))"),
createEntry("_thiscall", "__attribute__((__thiscall__))"),
createEntry("__builtin_va_arg(ap,type)", "*((typeof(type) *)((ap += sizeof(type)) - sizeof(type)))"),
createEntry("__thread", "__attribute__((thread))"),
createEntry("thread_local", "__attribute__((thread))"),
createEntry("_Atomic", "__attribute__((atomic))") };
mSettings = LanguageSettingsStorage.getPooledList(Arrays.asList(entries));
}
@Override
public String getId() {
return GccStaticLanguageSettingsProvider.class.getName();
}
@Override
public String getName() {
return GccStaticLanguageSettingsProvider.class.getSimpleName();
}
private static ICLanguageSettingEntry createEntry(final String name, final String value) {
return new CMacroEntry(name, value, ICSettingEntry.BUILTIN | ICSettingEntry.READONLY);
}
@Override
public List getSettingEntries(final ICConfigurationDescription cfgDescription,
final IResource rc, final String languageId) {
return mSettings;
}
}