F´ Flight Software - C/C++ Documentation
A framework for building embedded system applications to NASA flight quality standards.
CAssert.h
Go to the documentation of this file.
1 /*
2  * FwCAssert.hpp
3  *
4  * Created on: Jun 8, 2014
5  * Author: tcanham
6  */
7 
8 #ifndef FWCASSERT_HPP_
9 #define FWCASSERT_HPP_
10 
11 #include <Fw/FPrimeBasicTypes.h>
12 
13 #ifdef __cplusplus
14 extern "C" {
15 #endif
16 
17 #if FW_ASSERT_LEVEL == FW_NO_ASSERT
18 
19 #define FW_CASSERT(...)
20 #define FW_CASSERT_1(cond, arg1)
21 #define FW_CASSERT_2(cond, arg1, arg2)
22 #define FW_CASSERT_3(cond, arg1, arg2, arg3)
23 #define FW_CASSERT_4(cond, arg1, arg2, arg3, arg4)
24 #define FW_CASSERT_5(cond, arg1, arg2, arg3, arg4, arg5)
25 #define FW_CASSERT_6(cond, arg1, arg2, arg3, arg4, arg5, arg6)
26 
27 #else // ASSERT is defined
28 
29 #if FW_ASSERT_LEVEL == FW_FILEID_ASSERT
30 #define FILE_NAME_ARG U32
31 #ifdef ASSERT_FILE_ID
32 #define FW_CASSERT_FILE_ID ASSERT_FILE_ID
33 #else
34 #define FW_CASSERT_FILE_ID ((U32)0)
35 #endif
36 
37 #define FW_CASSERT(cond) ((void)((cond) ? (0) : (CAssert0(FW_CASSERT_FILE_ID, __LINE__))))
38 
39 #define FW_CASSERT_1(cond, arg1) \
40  ((void)((cond) ? (0) : (CAssert1(FW_CASSERT_FILE_ID, (FwAssertArgType)(arg1), __LINE__))))
41 
42 #define FW_CASSERT_2(cond, arg1, arg2) \
43  ((void)((cond) ? (0) : (CAssert2(FW_CASSERT_FILE_ID, (FwAssertArgType)(arg1), (FwAssertArgType)(arg2), __LINE__))))
44 
45 #define FW_CASSERT_3(cond, arg1, arg2, arg3) \
46  ((void)((cond) ? (0) \
47  : (CAssert3(FW_CASSERT_FILE_ID, (FwAssertArgType)(arg1), (FwAssertArgType)(arg2), \
48  (FwAssertArgType)(arg3), __LINE__))))
49 
50 #define FW_CASSERT_4(cond, arg1, arg2, arg3, arg4) \
51  ((void)((cond) ? (0) \
52  : (CAssert4(FW_CASSERT_FILE_ID, (FwAssertArgType)(arg1), (FwAssertArgType)(arg2), \
53  (FwAssertArgType)(arg3), (FwAssertArgType)(arg4), __LINE__))))
54 
55 #define FW_CASSERT_5(cond, arg1, arg2, arg3, arg4, arg5) \
56  ((void)((cond) ? (0) \
57  : (CAssert5(FW_CASSERT_FILE_ID, (FwAssertArgType)(arg1), (FwAssertArgType)(arg2), \
58  (FwAssertArgType)(arg3), (FwAssertArgType)(arg4), (FwAssertArgType)(arg5), __LINE__))))
59 
60 #define FW_CASSERT_6(cond, arg1, arg2, arg3, arg4, arg5, arg6) \
61  ((void)((cond) ? (0) \
62  : (CAssert6(FW_CASSERT_FILE_ID, (FwAssertArgType)(arg1), (FwAssertArgType)(arg2), \
63  (FwAssertArgType)(arg3), (FwAssertArgType)(arg4), (FwAssertArgType)(arg5), \
64  (FwAssertArgType)(arg6), __LINE__))))
65 
66 #else // FW_ASSERT_LEVEL != FW_FILEID_ASSERT
67 #define FILE_NAME_ARG const CHAR*
68 
69 #define FW_CASSERT(cond) ((void)((cond) ? (0) : (CAssert0((FILE_NAME_ARG)(__FILE__), __LINE__))))
70 
71 #define FW_CASSERT_1(cond, arg1) \
72  ((void)((cond) ? (0) : (CAssert1((FILE_NAME_ARG)(__FILE__), (FwAssertArgType)(arg1), __LINE__))))
73 
74 #define FW_CASSERT_2(cond, arg1, arg2) \
75  ((void)((cond) \
76  ? (0) \
77  : (CAssert2((FILE_NAME_ARG)(__FILE__), (FwAssertArgType)(arg1), (FwAssertArgType)(arg2), __LINE__))))
78 
79 #define FW_CASSERT_3(cond, arg1, arg2, arg3) \
80  ((void)((cond) ? (0) \
81  : (CAssert3((FILE_NAME_ARG)(__FILE__), (FwAssertArgType)(arg1), (FwAssertArgType)(arg2), \
82  (FwAssertArgType)(arg3), __LINE__))))
83 
84 #define FW_CASSERT_4(cond, arg1, arg2, arg3, arg4) \
85  ((void)((cond) ? (0) \
86  : (CAssert4((FILE_NAME_ARG)(__FILE__), (FwAssertArgType)(arg1), (FwAssertArgType)(arg2), \
87  (FwAssertArgType)(arg3), (FwAssertArgType)(arg4), __LINE__))))
88 
89 #define FW_CASSERT_5(cond, arg1, arg2, arg3, arg4, arg5) \
90  ((void)((cond) ? (0) \
91  : (CAssert5((FILE_NAME_ARG)(__FILE__), (FwAssertArgType)(arg1), (FwAssertArgType)(arg2), \
92  (FwAssertArgType)(arg3), (FwAssertArgType)(arg4), (FwAssertArgType)(arg5), __LINE__))))
93 
94 #define FW_CASSERT_6(cond, arg1, arg2, arg3, arg4, arg5, arg6) \
95  ((void)((cond) ? (0) \
96  : (CAssert6((FILE_NAME_ARG)(__FILE__), (FwAssertArgType)(arg1), (FwAssertArgType)(arg2), \
97  (FwAssertArgType)(arg3), (FwAssertArgType)(arg4), (FwAssertArgType)(arg5), \
98  (FwAssertArgType)(arg6), __LINE__))))
99 
100 #endif // FW_ASSERT_LEVEL == FW_FILEID_ASSERT
101 
102 I8 CAssert0(FILE_NAME_ARG file, FwSizeType lineNo);
103 I8 CAssert1(FILE_NAME_ARG file, FwAssertArgType arg1, FwSizeType lineNo);
110  FwAssertArgType arg1,
111  FwAssertArgType arg2,
112  FwAssertArgType arg3,
113  FwAssertArgType arg4,
114  FwSizeType lineNo);
117  FwAssertArgType arg1,
118  FwAssertArgType arg2,
119  FwAssertArgType arg3,
120  FwAssertArgType arg4,
121  FwAssertArgType arg5,
122  FwSizeType lineNo);
125  FwAssertArgType arg1,
126  FwAssertArgType arg2,
127  FwAssertArgType arg3,
128  FwAssertArgType arg4,
129  FwAssertArgType arg5,
130  FwAssertArgType arg6,
131  FwSizeType lineNo);
132 
133 #endif // ASSERT is defined
134 
135 #ifdef __cplusplus
136 }
137 #endif
138 
139 #endif /* FWCASSERT_HPP_ */
I8 CAssert1(FILE_NAME_ARG file, FwAssertArgType arg1, FwSizeType lineNo)
Definition: Assert.cpp:229
PlatformSizeType FwSizeType
I8 CAssert2(FILE_NAME_ARG file, FwAssertArgType arg1, FwAssertArgType arg2, FwSizeType lineNo)
Definition: Assert.cpp:244
int8_t I8
8-bit signed integer
Definition: BasicTypes.h:51
#define FILE_NAME_ARG
Definition: Assert.hpp:16
I8 CAssert3(FILE_NAME_ARG file, FwAssertArgType arg1, FwAssertArgType arg2, FwAssertArgType arg3, FwSizeType lineNo)
Definition: Assert.cpp:259
I8 CAssert6(FILE_NAME_ARG file, FwAssertArgType arg1, FwAssertArgType arg2, FwAssertArgType arg3, FwAssertArgType arg4, FwAssertArgType arg5, FwAssertArgType arg6, FwSizeType lineNo)
Definition: Assert.cpp:315
I8 CAssert0(FILE_NAME_ARG file, FwSizeType lineNo)
Definition: Assert.cpp:214
I8 CAssert5(FILE_NAME_ARG file, FwAssertArgType arg1, FwAssertArgType arg2, FwAssertArgType arg3, FwAssertArgType arg4, FwAssertArgType arg5, FwSizeType lineNo)
Definition: Assert.cpp:294
I8 CAssert4(FILE_NAME_ARG file, FwAssertArgType arg1, FwAssertArgType arg2, FwAssertArgType arg3, FwAssertArgType arg4, FwSizeType lineNo)
Definition: Assert.cpp:274
PlatformAssertArgType FwAssertArgType
The type of arguments to assert functions.