70 #define TrackerTypeDef(num_user_vars) \
76 uint32_t user[num_user_vars]; \
80 #define num_of_usercnts(_user_) (sizeof(_user_) / sizeof(uint32_t))
82 #define assert_usertracker(_cntstruct_, _uservarnumb_) ((_uservarnumb_) < num_of_usercnts((_cntstruct_).user))
84 #define if_assert_usertracker(_cntstruct_, _uservarnumb_) if(assert_usertracker(_cntstruct_, _uservarnumb_))
86 #define tern_assert_usertracker(_cntstruct_, _uservarnumb_) (assert_usertracker(_cntstruct_, _uservarnumb_)) ? _uservarnumb_ : 0
90 #define TrackerGet_Ok(_cntstruct_) (_cntstruct_).cnt_ok
92 #define TrackerGet_Err(_cntstruct_) (_cntstruct_).cnt_err
94 #define TrackerGet_Warn(_cntstruct_) (_cntstruct_).cnt_warn
106 #define TrackerGet_User(_cntstruct_, _uservarnumb_) (_cntstruct_).user[tern_assert_usertracker(_cntstruct_, _uservarnumb_)]
111 #define TrackerCnt_Ok(_cntstruct_) (_cntstruct_).cnt_ok++
113 #define TrackerCnt_Err(_cntstruct_) (_cntstruct_).cnt_err++
115 #define TrackerCnt_Warn(_cntstruct_) (_cntstruct_).cnt_warn++
117 #define TrackerCnt_User(_cntstruct_, _uservarnumb_) if_assert_usertracker(_cntstruct_, _uservarnumb_) (_cntstruct_).user[_uservarnumb_]++;
119 #define TrackerWrite_User(_cntstruct_, _uservarnumb_, _val_) if_assert_usertracker(_cntstruct_, _uservarnumb_) (_cntstruct_).user[_uservarnumb_] = (_val_)
122 #define TrackerClear_All(_cntstruct_) memset(&(_cntstruct_), 0, sizeof(_cntstruct_))
124 #define TrackerClear_Ok(_cntstruct_) (_cntstruct_).cnt_ok = 0
126 #define TrackerClear_Err(_cntstruct_) (_cntstruct_).cnt_err = 0
128 #define TrackerClear_Warn(_cntstruct_) (_cntstruct_).cnt_warn = 0
130 #define TrackerClear_User(_cntstruct_, _uservarnumb_) if_assert_usertracker(_cntstruct_, _uservarnumb_) (_cntstruct_).user[_uservarnumb_] = 0;
132 #define TrackerClear_UserAll(_cntstruct_) memset(&(_cntstruct_).user, 0, sizeof((_cntstruct_).user))
136 #define TrackerTypeDef(num_user_vars) void *
138 #define num_of_usercnts(_user_) 0
139 #define assert_tracecnt(_cntstruct_, _uservarnumb_) 0
140 #define if_assert_usertracker(_cntstruct_, _uservarnumb_) if(0)
141 #define tern_assert_usertracker(_cntstruct_, _uservarnumb_) 0
143 #define TrackerGet_Ok(_cntstruct_) dummy
144 #define TrackerGet_Err(_cntstruct_) dummy
145 #define TrackerGet_Warn(_cntstruct_) dummy
146 #define TrackerGet_User(_cntstruct_, _uservarnumb_) dummy
148 #define TrackerCnt_Ok(_cntstruct_)
149 #define TrackerCnt_Err(_cntstruct_)
150 #define TrackerCnt_Warn(_cntstruct_)
151 #define TrackerCnt_User(_cntstruct_, _uservarnumb_)
152 #define TrackerWrite_User(_cntstruct_, _uservarnumb_, _val_)
154 #define TrackerClear_All(_cntstruct_)
155 #define TrackerClear_Ok(_cntstruct_)
156 #define TrackerClear_Err(_cntstruct_)
157 #define TrackerClear_Warn(_cntstruct_)
158 #define TrackerClear_User(_cntstruct_)
159 #define TrackerClear_UserAll(_cntstruct_)
Заголочный файл для дефайнов библиотеки MyLibsGeneral.