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 
32 #define FW_CASSERT(cond) ((void)((cond) ? (0) : (CAssert0(ASSERT_FILE_ID, __LINE__))))
33 
34 #define FW_CASSERT_1(cond, arg1) ((void)((cond) ? (0) : (CAssert1(ASSERT_FILE_ID, (FwAssertArgType)(arg1), __LINE__))))
35 
36 #define FW_CASSERT_2(cond, arg1, arg2) \
37  ((void)((cond) ? (0) : (CAssert2(ASSERT_FILE_ID, (FwAssertArgType)(arg1), (FwAssertArgType)(arg2), __LINE__))))
38 
39 #define FW_CASSERT_3(cond, arg1, arg2, arg3) \
40  ((void)((cond) ? (0) \
41  : (CAssert3(ASSERT_FILE_ID, (FwAssertArgType)(arg1), (FwAssertArgType)(arg2), \
42  (FwAssertArgType)(arg3), __LINE__))))
43 
44 #define FW_CASSERT_4(cond, arg1, arg2, arg3, arg4) \
45  ((void)((cond) ? (0) \
46  : (CAssert4(ASSERT_FILE_ID, (FwAssertArgType)(arg1), (FwAssertArgType)(arg2), \
47  (FwAssertArgType)(arg3), (FwAssertArgType)(arg4), __LINE__))))
48 
49 #define FW_CASSERT_5(cond, arg1, arg2, arg3, arg4, arg5) \
50  ((void)((cond) ? (0) \
51  : (CAssert5(ASSERT_FILE_ID, (FwAssertArgType)(arg1), (FwAssertArgType)(arg2), \
52  (FwAssertArgType)(arg3), (FwAssertArgType)(arg4), (FwAssertArgType)(arg5), __LINE__))))
53 
54 #define FW_CASSERT_6(cond, arg1, arg2, arg3, arg4, arg5, arg6) \
55  ((void)((cond) \
56  ? (0) \
57  : (CAssert6(ASSERT_FILE_ID, (FwAssertArgType)(arg1), (FwAssertArgType)(arg2), (FwAssertArgType)(arg3), \
58  (FwAssertArgType)(arg4), (FwAssertArgType)(arg5), (FwAssertArgType)(arg6), __LINE__))))
59 
60 #else // FW_ASSERT_LEVEL != FW_FILEID_ASSERT
61 #define FILE_NAME_ARG const CHAR*
62 
63 #define FW_CASSERT(cond) ((void)((cond) ? (0) : (CAssert0((FILE_NAME_ARG)(__FILE__), __LINE__))))
64 
65 #define FW_CASSERT_1(cond, arg1) \
66  ((void)((cond) ? (0) : (CAssert1((FILE_NAME_ARG)(__FILE__), (FwAssertArgType)(arg1), __LINE__))))
67 
68 #define FW_CASSERT_2(cond, arg1, arg2) \
69  ((void)((cond) \
70  ? (0) \
71  : (CAssert2((FILE_NAME_ARG)(__FILE__), (FwAssertArgType)(arg1), (FwAssertArgType)(arg2), __LINE__))))
72 
73 #define FW_CASSERT_3(cond, arg1, arg2, arg3) \
74  ((void)((cond) ? (0) \
75  : (CAssert3((FILE_NAME_ARG)(__FILE__), (FwAssertArgType)(arg1), (FwAssertArgType)(arg2), \
76  (FwAssertArgType)(arg3), __LINE__))))
77 
78 #define FW_CASSERT_4(cond, arg1, arg2, arg3, arg4) \
79  ((void)((cond) ? (0) \
80  : (CAssert4((FILE_NAME_ARG)(__FILE__), (FwAssertArgType)(arg1), (FwAssertArgType)(arg2), \
81  (FwAssertArgType)(arg3), (FwAssertArgType)(arg4), __LINE__))))
82 
83 #define FW_CASSERT_5(cond, arg1, arg2, arg3, arg4, arg5) \
84  ((void)((cond) ? (0) \
85  : (CAssert5((FILE_NAME_ARG)(__FILE__), (FwAssertArgType)(arg1), (FwAssertArgType)(arg2), \
86  (FwAssertArgType)(arg3), (FwAssertArgType)(arg4), (FwAssertArgType)(arg5), __LINE__))))
87 
88 #define FW_CASSERT_6(cond, arg1, arg2, arg3, arg4, arg5, arg6) \
89  ((void)((cond) ? (0) \
90  : (CAssert6((FILE_NAME_ARG)(__FILE__), (FwAssertArgType)(arg1), (FwAssertArgType)(arg2), \
91  (FwAssertArgType)(arg3), (FwAssertArgType)(arg4), (FwAssertArgType)(arg5), \
92  (FwAssertArgType)(arg6), __LINE__))))
93 
94 #endif // FW_ASSERT_LEVEL == FW_FILEID_ASSERT
95 
96 I8 CAssert0(FILE_NAME_ARG file, FwSizeType lineNo);
104  FwAssertArgType arg1,
105  FwAssertArgType arg2,
106  FwAssertArgType arg3,
107  FwAssertArgType arg4,
108  FwSizeType lineNo);
111  FwAssertArgType arg1,
112  FwAssertArgType arg2,
113  FwAssertArgType arg3,
114  FwAssertArgType arg4,
115  FwAssertArgType arg5,
116  FwSizeType lineNo);
119  FwAssertArgType arg1,
120  FwAssertArgType arg2,
121  FwAssertArgType arg3,
122  FwAssertArgType arg4,
123  FwAssertArgType arg5,
124  FwAssertArgType arg6,
125  FwSizeType lineNo);
126 
127 #endif // ASSERT is defined
128 
129 #ifdef __cplusplus
130 }
131 #endif
132 
133 #endif /* FWCASSERT_HPP_ */
I8 CAssert1(FILE_NAME_ARG file, FwAssertArgType arg1, FwSizeType lineNo)
Definition: Assert.cpp:227
PlatformSizeType FwSizeType
I8 CAssert2(FILE_NAME_ARG file, FwAssertArgType arg1, FwAssertArgType arg2, FwSizeType lineNo)
Definition: Assert.cpp:240
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:253
I8 CAssert6(FILE_NAME_ARG file, FwAssertArgType arg1, FwAssertArgType arg2, FwAssertArgType arg3, FwAssertArgType arg4, FwAssertArgType arg5, FwAssertArgType arg6, FwSizeType lineNo)
Definition: Assert.cpp:303
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:284
I8 CAssert4(FILE_NAME_ARG file, FwAssertArgType arg1, FwAssertArgType arg2, FwAssertArgType arg3, FwAssertArgType arg4, FwSizeType lineNo)
Definition: Assert.cpp:266
PlatformAssertArgType FwAssertArgType
The type of arguments to assert functions.