Arene Base
Fundamental Utilities For Safety Critical C++
Loading...
Searching...
No Matches
exceptions_enabled.hpp
Go to the documentation of this file.
1
// Copyright 2024, Toyota Motor Corporation
2
//
3
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
4
5
#
ifndef
INCLUDE_GUARD_ARENE_BASE_ARENE_BASE_COMPILER_SUPPORT_PLATFORM_QUERIES_EXCEPTIONS_ENABLED_HPP_
6
#
define
INCLUDE_GUARD_ARENE_BASE_ARENE_BASE_COMPILER_SUPPORT_PLATFORM_QUERIES_EXCEPTIONS_ENABLED_HPP_
7
8
// IWYU pragma: private, include "arene/base/compiler_support/platform_queries.hpp"
9
// IWYU pragma: friend "arene/base/compiler_support/platform_queries/.*"
10
11
// parasoft-begin-suppress AUTOSAR-A16_2_2-a-2 "Arene Base aggregate headers permitted by A16-2-2 Permit #1"
12
#
include
"arene/base/compiler_support/platform_queries/has_feature.hpp"
13
#
include
"arene/base/compiler_support/preprocessor.hpp"
14
// parasoft-end-suppress AUTOSAR-A16_2_2-a-2
15
16
// NOLINTBEGIN(cppcoreguidelines-macro-usage) Explicitly providing compiler support macro functions
17
// parasoft-begin-suppress AUTOSAR-A16_0_1-d-2 "Conditional defines permitted by A16-0-1 Permit #2"
18
// parasoft-begin-suppress AUTOSAR-A16_0_1-a-2 "Conditional defines permitted by A16-0-1 Permit #2"
19
20
/// @def ARENE_EXCEPTIONS_ENABLED
21
/// @brief A compile-time configuration flag for testing if exceptions are enabled
22
///
23
/// Usage:
24
/// @code{c++}
25
/// #if ARENE_IS_ON(ARENE_EXCEPTIONS_ENABLED)
26
/// @endcode
27
///
28
/// The value of this query is determined as follows, in order of precedence:
29
/// 1. If @c ARENE_EXCEPTIONS_ENABLED has been explicitly defined via a @c -D flag to the compiler or similar:
30
/// * @c ARENE_ON if it is truthy
31
/// * @c ARENE_OFF if it is not truthy.
32
/// 1. If @c __cpp_exceptions is defined, it is @c ARENE_ON_BY_DEFAULT
33
/// 1. If @c __EXCEPTIONS is defined, it is @c ARENE_ON_BY_DEFAULT
34
/// 1. Otherwise, it is @c ARENE_OFF_BY_DEFAULT
35
36
#
if
defined
(
ARENE_EXCEPTIONS_ENABLED
)
37
#
if
(
ARENE_EXCEPTIONS_ENABLED
!=
0
)
38
#
define
ARENE_EXCEPTIONS_ENABLED_I_
ARENE_ON
39
#
else
40
#
define
ARENE_EXCEPTIONS_ENABLED_I_
ARENE_OFF
41
#
endif
42
// parasoft-begin-suppress AUTOSAR-M16_0_7-a-2 "False positive: not used as a macro"
43
#
elif
ARENE_HAS_FEATURE
(
cxx_exceptions
)
44
// parasoft-end-suppress AUTOSAR-M16_0_7-a-2
45
#
define
ARENE_EXCEPTIONS_ENABLED_I_
ARENE_ON_BY_DEFAULT
46
#
elif
defined
(
__cpp_exceptions
)
47
#
define
ARENE_EXCEPTIONS_ENABLED_I_
ARENE_ON_BY_DEFAULT
48
#
elif
defined
(
__EXCEPTIONS
)
49
#
define
ARENE_EXCEPTIONS_ENABLED_I_
ARENE_ON_BY_DEFAULT
50
#
else
51
#
define
ARENE_EXCEPTIONS_ENABLED_I_
ARENE_OFF_BY_DEFAULT
52
#
endif
53
54
#
ifdef
ARENE_DOC_GENERATION_RUNNING
// make this appear when running doxygen, as it won't otherwise.
55
#
ifndef
ARENE_EXCEPTIONS_ENABLED
56
#
define
ARENE_EXCEPTIONS_ENABLED
57
#
endif
58
#
endif
59
60
// NOLINTEND(cppcoreguidelines-macro-usage) Explicitly providing compiler support macro functions
61
// parasoft-end-suppress AUTOSAR-A16_0_1-d-2
62
// parasoft-end-suppress AUTOSAR-A16_0_1-a-2
63
64
#
endif
// INCLUDE_GUARD_ARENE_BASE_ARENE_BASE_COMPILER_SUPPORT_PLATFORM_QUERIES_EXCEPTIONS_ENABLED_HPP_
arene
base
compiler_support
platform_queries
exceptions_enabled.hpp
Generated by
1.13.2