File indexing completed on 2025-05-11 08:24:14
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028
0029
0030
0031
0032
0033
0034
0035
0036
0037 #ifndef THE_T_TEST_FRAMEWORK_H
0038 #define THE_T_TEST_FRAMEWORK_H
0039
0040 #include <stdarg.h>
0041 #include <stdbool.h>
0042 #include <stddef.h>
0043 #include <stdint.h>
0044 #include <string.h>
0045
0046 #ifdef __rtems__
0047 #include <rtems/score/cpu.h>
0048 #include <rtems/rtems/status.h>
0049 #endif
0050
0051 #ifdef __cplusplus
0052 extern "C" {
0053 #endif
0054
0055
0056
0057
0058
0059
0060
0061
0062
0063
0064
0065 typedef enum {
0066 T_QUIET,
0067 T_NORMAL,
0068 T_VERBOSE
0069 } T_verbosity;
0070
0071 typedef struct T_fixture {
0072 void (*setup)(void *);
0073 void (*stop)(void *);
0074 void (*teardown)(void *);
0075 size_t (*scope)(void *, char *, size_t);
0076 void *initial_context;
0077 } T_fixture;
0078
0079 typedef struct T_fixture_node {
0080 struct T_fixture_node *next;
0081 struct T_fixture_node *previous;
0082 const T_fixture *fixture;
0083 void *context;
0084 unsigned int next_planned_steps;
0085 unsigned int next_steps;
0086 unsigned int failures;
0087 } T_fixture_node;
0088
0089 typedef struct T_remark {
0090 struct T_remark *next;
0091 const char *remark;
0092 } T_remark;
0093
0094 #define T_ARRAY_SIZE(array) (sizeof(array) / sizeof((array)[0]))
0095
0096
0097
0098
0099
0100 #ifndef T_FILE_NAME
0101 #define T_FILE_NAME __FILE__
0102 #endif
0103
0104 #if defined(__GNUC__) || __STDC_VERSION__ >= 199409L
0105 #define T_ZERO_LENGTH_ARRAY
0106 #else
0107 #define T_ZERO_LENGTH_ARRAY 1
0108 #endif
0109
0110
0111
0112
0113
0114
0115
0116
0117
0118
0119
0120
0121
0122 #ifdef __cplusplus
0123 #define T_NO_RETURN [[ noreturn ]]
0124 #else
0125 #define T_NO_RETURN _Noreturn
0126 #endif
0127
0128 typedef struct T_case_context {
0129 const char *name;
0130 void (*body)(void);
0131 const T_fixture *fixture;
0132 const struct T_case_context *next;
0133 } T_case_context;
0134
0135 void T_case_register(T_case_context *);
0136
0137 #define T_CHECK_STOP 1U
0138
0139 #define T_CHECK_QUIET 2U
0140
0141
0142 #define T_CHECK_FMT 4U
0143
0144 #define T_CHECK_STEP_FLAG 8U
0145
0146 #define T_CHECK_STEP_TO_FLAGS(step) ((unsigned int)(step) << 8)
0147
0148 #define T_CHECK_STEP_FROM_FLAGS(flags) ((flags) >> 8)
0149
0150 #define T_CHECK_STEP(step) (T_CHECK_STEP_TO_FLAGS(step) | T_CHECK_STEP_FLAG)
0151
0152 typedef struct {
0153 const char *file;
0154 int line;
0155 unsigned int flags;
0156 } T_check_context;
0157
0158 typedef struct {
0159 T_check_context base;
0160 const char *msg;
0161 } T_check_context_msg;
0162
0163 #define T_VA_ARGS_FIRST(...) T_VA_ARGS_FIRST_SELECT(__VA_ARGS__, throw_away)
0164 #define T_VA_ARGS_FIRST_SELECT(first, ...) first
0165
0166
0167
0168
0169
0170
0171
0172 #define T_VA_ARGS_MORE(...) \
0173 T_VA_ARGS_XEXPAND(T_VA_ARGS_KIND(__VA_ARGS__), __VA_ARGS__)
0174 #define T_VA_ARGS_XEXPAND(kind, ...) T_VA_ARGS_EXPAND(kind, __VA_ARGS__)
0175 #define T_VA_ARGS_EXPAND(kind, ...) T_VA_ARGS_EXPAND_##kind(__VA_ARGS__)
0176 #define T_VA_ARGS_EXPAND_0U(first)
0177 #define T_VA_ARGS_EXPAND_4U(first, ...) , __VA_ARGS__
0178 #define T_VA_ARGS_KIND(...) \
0179 T_VA_ARGS_SELECT(__VA_ARGS__, \
0180 4U, 4U, 4U, 4U, 4U, 4U, 4U, 4U, 0U, throw_away)
0181 #define T_VA_ARGS_SELECT(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, ...) a10
0182
0183 void T_check(const T_check_context *, bool, ...);
0184
0185 extern const T_check_context T_special;
0186
0187 #define T_flags_true(flags, ...) \
0188 { \
0189 static const T_check_context T_check_instance = { \
0190 T_FILE_NAME, __LINE__, \
0191 (flags) | T_VA_ARGS_KIND(__VA_ARGS__) }; \
0192 T_check(&T_check_instance, \
0193 T_VA_ARGS_FIRST(__VA_ARGS__) T_VA_ARGS_MORE(__VA_ARGS__)); \
0194 }
0195
0196 #define T_flags_eq(flags, a, ...) \
0197 T_flags_true(flags, \
0198 (a) == (T_VA_ARGS_FIRST(__VA_ARGS__)) T_VA_ARGS_MORE(__VA_ARGS__))
0199
0200 #define T_flags_ne(flags, a, ...) \
0201 T_flags_true(flags, \
0202 (a) != (T_VA_ARGS_FIRST(__VA_ARGS__)) T_VA_ARGS_MORE(__VA_ARGS__))
0203
0204 void T_check_eq_ptr(const T_check_context_msg *, uintptr_t, uintptr_t);
0205
0206 #define T_flags_eq_ptr(a, e, flags, sa, se) \
0207 { \
0208 static const T_check_context_msg T_check_instance = { \
0209 { T_FILE_NAME, __LINE__, (flags) | T_CHECK_FMT }, \
0210 sa " == " se }; \
0211 T_check_eq_ptr(&T_check_instance, (uintptr_t)a, (uintptr_t)e); \
0212 }
0213
0214 void T_check_ne_ptr(const T_check_context_msg *, uintptr_t, uintptr_t);
0215
0216 #define T_flags_ne_ptr(a, e, flags, sa, se) \
0217 { \
0218 static const T_check_context_msg T_check_instance = { \
0219 { T_FILE_NAME, __LINE__, (flags) | T_CHECK_FMT }, \
0220 sa " != " se }; \
0221 T_check_ne_ptr(&T_check_instance, (uintptr_t)a, (uintptr_t)e); \
0222 }
0223
0224 void T_check_null(const T_check_context_msg *, uintptr_t);
0225
0226 #define T_flags_null(a, flags, sa) \
0227 { \
0228 static const T_check_context_msg T_check_instance = { \
0229 { T_FILE_NAME, __LINE__, (flags) | T_CHECK_FMT }, sa }; \
0230 T_check_null(&T_check_instance, (uintptr_t)a); \
0231 }
0232
0233 void T_check_not_null(const T_check_context_msg *, uintptr_t);
0234
0235 #define T_flags_not_null(a, flags, sa) \
0236 { \
0237 static const T_check_context_msg T_check_instance = { \
0238 { T_FILE_NAME, __LINE__, (flags) | T_CHECK_FMT }, sa }; \
0239 T_check_not_null(&T_check_instance, (uintptr_t)a); \
0240 }
0241
0242 void T_check_eq_mem(const T_check_context_msg *, const void *, const void *,
0243 size_t);
0244
0245 #define T_flags_eq_mem(a, e, n, flags, sa, se, sn) \
0246 { \
0247 static const T_check_context_msg T_check_instance = { \
0248 { T_FILE_NAME, __LINE__, (flags) | T_CHECK_FMT }, \
0249 "memcmp(" sa ", " se ", " sn ") == 0" }; \
0250 T_check_eq_mem(&T_check_instance, a, e, n); \
0251 }
0252
0253 void T_check_ne_mem(const T_check_context_msg *, const void *, const void *,
0254 size_t);
0255
0256 #define T_flags_ne_mem(a, e, n, flags, sa, se, sn) \
0257 { \
0258 static const T_check_context_msg T_check_instance = { \
0259 { T_FILE_NAME, __LINE__, (flags) | T_CHECK_FMT }, \
0260 "memcmp(" sa ", " se ", " sn ") != 0" }; \
0261 T_check_ne_mem(&T_check_instance, a, e, n); \
0262 }
0263
0264 void T_check_eq_str(const T_check_context *, const char *, const char *);
0265
0266 #define T_flags_eq_str(a, e, flags) \
0267 { \
0268 static const T_check_context T_check_instance = { \
0269 T_FILE_NAME, __LINE__, (flags) | T_CHECK_FMT }; \
0270 T_check_eq_str(&T_check_instance, a, e); \
0271 }
0272
0273 void T_check_ne_str(const T_check_context *, const char *, const char *);
0274
0275 #define T_flags_ne_str(a, e, flags) \
0276 { \
0277 static const T_check_context T_check_instance = { \
0278 T_FILE_NAME, __LINE__, (flags) | T_CHECK_FMT }; \
0279 T_check_ne_str(&T_check_instance, a, e); \
0280 }
0281
0282 void T_check_eq_nstr(const T_check_context *, const char *, const char *,
0283 size_t);
0284
0285 #define T_flags_eq_nstr(a, e, n, flags) \
0286 { \
0287 static const T_check_context T_check_instance = { \
0288 T_FILE_NAME, __LINE__, (flags) | T_CHECK_FMT }; \
0289 T_check_eq_nstr(&T_check_instance, a, e, n); \
0290 }
0291
0292 void T_check_ne_nstr(const T_check_context *, const char *, const char *,
0293 size_t);
0294
0295 #define T_flags_ne_nstr(a, e, n, flags) \
0296 { \
0297 static const T_check_context T_check_instance = { \
0298 T_FILE_NAME, __LINE__, (flags) | T_CHECK_FMT }; \
0299 T_check_ne_nstr(&T_check_instance, a, e, n); \
0300 }
0301
0302 void T_check_eq_char(const T_check_context *, char, char);
0303
0304 #define T_flags_eq_char(a, e, flags) \
0305 { \
0306 static const T_check_context T_check_instance = { \
0307 T_FILE_NAME, __LINE__, (flags) | T_CHECK_FMT }; \
0308 T_check_eq_char(&T_check_instance, a, e); \
0309 }
0310
0311 void T_check_ne_char(const T_check_context *, char, char);
0312
0313 #define T_flags_ne_char(a, e, flags) \
0314 { \
0315 static const T_check_context T_check_instance = { \
0316 T_FILE_NAME, __LINE__, (flags) | T_CHECK_FMT }; \
0317 T_check_ne_char(&T_check_instance, a, e); \
0318 }
0319
0320 void T_check_eq_int(const T_check_context *, int, int);
0321
0322 #define T_flags_eq_int(a, e, flags) \
0323 { \
0324 static const T_check_context T_check_instance = { \
0325 T_FILE_NAME, __LINE__, (flags) | T_CHECK_FMT }; \
0326 T_check_eq_int(&T_check_instance, a, e); \
0327 }
0328
0329 void T_check_ne_int(const T_check_context *, int, int);
0330
0331 #define T_flags_ne_int(a, e, flags) \
0332 { \
0333 static const T_check_context T_check_instance = { \
0334 T_FILE_NAME, __LINE__, (flags) | T_CHECK_FMT }; \
0335 T_check_ne_int(&T_check_instance, a, e); \
0336 }
0337
0338 void T_check_ge_int(const T_check_context *, int, int);
0339
0340 #define T_flags_ge_int(a, e, flags) \
0341 { \
0342 static const T_check_context T_check_instance = { \
0343 T_FILE_NAME, __LINE__, (flags) | T_CHECK_FMT }; \
0344 T_check_ge_int(&T_check_instance, a, e); \
0345 }
0346
0347 void T_check_gt_int(const T_check_context *, int, int);
0348
0349 #define T_flags_gt_int(a, e, flags) \
0350 { \
0351 static const T_check_context T_check_instance = { \
0352 T_FILE_NAME, __LINE__, (flags) | T_CHECK_FMT }; \
0353 T_check_gt_int(&T_check_instance, a, e); \
0354 }
0355
0356 void T_check_le_int(const T_check_context *, int, int);
0357
0358 #define T_flags_le_int(a, e, flags) \
0359 { \
0360 static const T_check_context T_check_instance = { \
0361 T_FILE_NAME, __LINE__, (flags) | T_CHECK_FMT }; \
0362 T_check_le_int(&T_check_instance, a, e); \
0363 }
0364
0365 void T_check_lt_int(const T_check_context *, int, int);
0366
0367 #define T_flags_lt_int(a, e, flags) \
0368 { \
0369 static const T_check_context T_check_instance = { \
0370 T_FILE_NAME, __LINE__, (flags) | T_CHECK_FMT }; \
0371 T_check_lt_int(&T_check_instance, a, e); \
0372 }
0373
0374 void T_check_eq_uint(const T_check_context *, unsigned int, unsigned int);
0375
0376 #define T_flags_eq_uint(a, e, flags) \
0377 { \
0378 static const T_check_context T_check_instance = { \
0379 T_FILE_NAME, __LINE__, (flags) | T_CHECK_FMT }; \
0380 T_check_eq_uint(&T_check_instance, a, e); \
0381 }
0382
0383 void T_check_ne_uint(const T_check_context *, unsigned int, unsigned int);
0384
0385 #define T_flags_ne_uint(a, e, flags) \
0386 { \
0387 static const T_check_context T_check_instance = { \
0388 T_FILE_NAME, __LINE__, (flags) | T_CHECK_FMT }; \
0389 T_check_ne_uint(&T_check_instance, a, e); \
0390 }
0391
0392 void T_check_ge_uint(const T_check_context *, unsigned int, unsigned int);
0393
0394 #define T_flags_ge_uint(a, e, flags) \
0395 { \
0396 static const T_check_context T_check_instance = { \
0397 T_FILE_NAME, __LINE__, (flags) | T_CHECK_FMT }; \
0398 T_check_ge_uint(&T_check_instance, a, e); \
0399 }
0400
0401 void T_check_gt_uint(const T_check_context *, unsigned int, unsigned int);
0402
0403 #define T_flags_gt_uint(a, e, flags) \
0404 { \
0405 static const T_check_context T_check_instance = { \
0406 T_FILE_NAME, __LINE__, (flags) | T_CHECK_FMT }; \
0407 T_check_gt_uint(&T_check_instance, a, e); \
0408 }
0409
0410 void T_check_le_uint(const T_check_context *, unsigned int, unsigned int);
0411
0412 #define T_flags_le_uint(a, e, flags) \
0413 { \
0414 static const T_check_context T_check_instance = { \
0415 T_FILE_NAME, __LINE__, (flags) | T_CHECK_FMT }; \
0416 T_check_le_uint(&T_check_instance, a, e); \
0417 }
0418
0419 void T_check_lt_uint(const T_check_context *, unsigned int, unsigned int);
0420
0421 #define T_flags_lt_uint(a, e, flags) \
0422 { \
0423 static const T_check_context T_check_instance = { \
0424 T_FILE_NAME, __LINE__, (flags) | T_CHECK_FMT }; \
0425 T_check_lt_uint(&T_check_instance, a, e); \
0426 }
0427
0428 void T_check_eq_long(const T_check_context *, long, long);
0429
0430 #define T_flags_eq_long(a, e, flags) \
0431 { \
0432 static const T_check_context T_check_instance = { \
0433 T_FILE_NAME, __LINE__, (flags) | T_CHECK_FMT }; \
0434 T_check_eq_long(&T_check_instance, a, e); \
0435 }
0436
0437 void T_check_ne_long(const T_check_context *, long, long);
0438
0439 #define T_flags_ne_long(a, e, flags) \
0440 { \
0441 static const T_check_context T_check_instance = { \
0442 T_FILE_NAME, __LINE__, (flags) | T_CHECK_FMT }; \
0443 T_check_ne_long(&T_check_instance, a, e); \
0444 }
0445
0446 void T_check_ge_long(const T_check_context *, long, long);
0447
0448 #define T_flags_ge_long(a, e, flags) \
0449 { \
0450 static const T_check_context T_check_instance = { \
0451 T_FILE_NAME, __LINE__, (flags) | T_CHECK_FMT }; \
0452 T_check_ge_long(&T_check_instance, a, e); \
0453 }
0454
0455 void T_check_gt_long(const T_check_context *, long, long);
0456
0457 #define T_flags_gt_long(a, e, flags) \
0458 { \
0459 static const T_check_context T_check_instance = { \
0460 T_FILE_NAME, __LINE__, (flags) | T_CHECK_FMT }; \
0461 T_check_gt_long(&T_check_instance, a, e); \
0462 }
0463
0464 void T_check_le_long(const T_check_context *, long, long);
0465
0466 #define T_flags_le_long(a, e, flags) \
0467 { \
0468 static const T_check_context T_check_instance = { \
0469 T_FILE_NAME, __LINE__, (flags) | T_CHECK_FMT }; \
0470 T_check_le_long(&T_check_instance, a, e); \
0471 }
0472
0473 void T_check_lt_long(const T_check_context *, long, long);
0474
0475 #define T_flags_lt_long(a, e, flags) \
0476 { \
0477 static const T_check_context T_check_instance = { \
0478 T_FILE_NAME, __LINE__, (flags) | T_CHECK_FMT }; \
0479 T_check_lt_long(&T_check_instance, a, e); \
0480 }
0481
0482 void T_check_eq_ulong(const T_check_context *, unsigned long, unsigned long);
0483
0484 #define T_flags_eq_ulong(a, e, flags) \
0485 { \
0486 static const T_check_context T_check_instance = { \
0487 T_FILE_NAME, __LINE__, (flags) | T_CHECK_FMT }; \
0488 T_check_eq_ulong(&T_check_instance, a, e); \
0489 }
0490
0491 void T_check_ne_ulong(const T_check_context *, unsigned long, unsigned long);
0492
0493 #define T_flags_ne_ulong(a, e, flags) \
0494 { \
0495 static const T_check_context T_check_instance = { \
0496 T_FILE_NAME, __LINE__, (flags) | T_CHECK_FMT }; \
0497 T_check_ne_ulong(&T_check_instance, a, e); \
0498 }
0499
0500 void T_check_ge_ulong(const T_check_context *, unsigned long, unsigned long);
0501
0502 #define T_flags_ge_ulong(a, e, flags) \
0503 { \
0504 static const T_check_context T_check_instance = { \
0505 T_FILE_NAME, __LINE__, (flags) | T_CHECK_FMT }; \
0506 T_check_ge_ulong(&T_check_instance, a, e); \
0507 }
0508
0509 void T_check_gt_ulong(const T_check_context *, unsigned long, unsigned long);
0510
0511 #define T_flags_gt_ulong(a, e, flags) \
0512 { \
0513 static const T_check_context T_check_instance = { \
0514 T_FILE_NAME, __LINE__, (flags) | T_CHECK_FMT }; \
0515 T_check_gt_ulong(&T_check_instance, a, e); \
0516 }
0517
0518 void T_check_le_ulong(const T_check_context *, unsigned long, unsigned long);
0519
0520 #define T_flags_le_ulong(a, e, flags) \
0521 { \
0522 static const T_check_context T_check_instance = { \
0523 T_FILE_NAME, __LINE__, (flags) | T_CHECK_FMT }; \
0524 T_check_le_ulong(&T_check_instance, a, e); \
0525 }
0526
0527 void T_check_lt_ulong(const T_check_context *, unsigned long, unsigned long);
0528
0529 #define T_flags_lt_ulong(a, e, flags) \
0530 { \
0531 static const T_check_context T_check_instance = { \
0532 T_FILE_NAME, __LINE__, (flags) | T_CHECK_FMT }; \
0533 T_check_lt_ulong(&T_check_instance, a, e); \
0534 }
0535
0536 void T_check_eq_ll(const T_check_context *, long long, long long);
0537
0538 #define T_flags_eq_ll(a, e, flags) \
0539 { \
0540 static const T_check_context T_check_instance = { \
0541 T_FILE_NAME, __LINE__, (flags) | T_CHECK_FMT }; \
0542 T_check_eq_ll(&T_check_instance, a, e); \
0543 }
0544
0545 void T_check_ne_ll(const T_check_context *, long long, long long);
0546
0547 #define T_flags_ne_ll(a, e, flags) \
0548 { \
0549 static const T_check_context T_check_instance = { \
0550 T_FILE_NAME, __LINE__, (flags) | T_CHECK_FMT }; \
0551 T_check_ne_ll(&T_check_instance, a, e); \
0552 }
0553
0554 void T_check_ge_ll(const T_check_context *, long long, long long);
0555
0556 #define T_flags_ge_ll(a, e, flags) \
0557 { \
0558 static const T_check_context T_check_instance = { \
0559 T_FILE_NAME, __LINE__, (flags) | T_CHECK_FMT }; \
0560 T_check_ge_ll(&T_check_instance, a, e); \
0561 }
0562
0563 void T_check_gt_ll(const T_check_context *, long long, long long);
0564
0565 #define T_flags_gt_ll(a, e, flags) \
0566 { \
0567 static const T_check_context T_check_instance = { \
0568 T_FILE_NAME, __LINE__, (flags) | T_CHECK_FMT }; \
0569 T_check_gt_ll(&T_check_instance, a, e); \
0570 }
0571
0572 void T_check_le_ll(const T_check_context *, long long, long long);
0573
0574 #define T_flags_le_ll(a, e, flags) \
0575 { \
0576 static const T_check_context T_check_instance = { \
0577 T_FILE_NAME, __LINE__, (flags) | T_CHECK_FMT }; \
0578 T_check_le_ll(&T_check_instance, a, e); \
0579 }
0580
0581 void T_check_lt_ll(const T_check_context *, long long, long long);
0582
0583 #define T_flags_lt_ll(a, e, flags) \
0584 { \
0585 static const T_check_context T_check_instance = { \
0586 T_FILE_NAME, __LINE__, (flags) | T_CHECK_FMT }; \
0587 T_check_lt_ll(&T_check_instance, a, e); \
0588 }
0589
0590 void T_check_eq_ull(const T_check_context *, unsigned long long,
0591 unsigned long long);
0592
0593 #define T_flags_eq_ull(a, e, flags) \
0594 { \
0595 static const T_check_context T_check_instance = { \
0596 T_FILE_NAME, __LINE__, (flags) | T_CHECK_FMT }; \
0597 T_check_eq_ull(&T_check_instance, a, e); \
0598 }
0599
0600 void T_check_ne_ull(const T_check_context *, unsigned long long,
0601 unsigned long long);
0602
0603 #define T_flags_ne_ull(a, e, flags) \
0604 { \
0605 static const T_check_context T_check_instance = { \
0606 T_FILE_NAME, __LINE__, (flags) | T_CHECK_FMT }; \
0607 T_check_ne_ull(&T_check_instance, a, e); \
0608 }
0609
0610 void T_check_ge_ull(const T_check_context *, unsigned long long,
0611 unsigned long long);
0612
0613 #define T_flags_ge_ull(a, e, flags) \
0614 { \
0615 static const T_check_context T_check_instance = { \
0616 T_FILE_NAME, __LINE__, (flags) | T_CHECK_FMT }; \
0617 T_check_ge_ull(&T_check_instance, a, e); \
0618 }
0619
0620 void T_check_gt_ull(const T_check_context *, unsigned long long,
0621 unsigned long long);
0622
0623 #define T_flags_gt_ull(a, e, flags) \
0624 { \
0625 static const T_check_context T_check_instance = { \
0626 T_FILE_NAME, __LINE__, (flags) | T_CHECK_FMT }; \
0627 T_check_gt_ull(&T_check_instance, a, e); \
0628 }
0629
0630 void T_check_le_ull(const T_check_context *, unsigned long long,
0631 unsigned long long);
0632
0633 #define T_flags_le_ull(a, e, flags) \
0634 { \
0635 static const T_check_context T_check_instance = { \
0636 T_FILE_NAME, __LINE__, (flags) | T_CHECK_FMT }; \
0637 T_check_le_ull(&T_check_instance, a, e); \
0638 }
0639
0640 void T_check_lt_ull(const T_check_context *, unsigned long long,
0641 unsigned long long);
0642
0643 #define T_flags_lt_ull(a, e, flags) \
0644 { \
0645 static const T_check_context T_check_instance = { \
0646 T_FILE_NAME, __LINE__, (flags) | T_CHECK_FMT }; \
0647 T_check_lt_ull(&T_check_instance, a, e); \
0648 }
0649
0650 void T_check_eno(const T_check_context *, int, int);
0651
0652 #define T_flags_eno(a, e, flags) \
0653 { \
0654 static const T_check_context T_check_instance = { \
0655 T_FILE_NAME, __LINE__, (flags) | T_CHECK_FMT }; \
0656 T_check_eno(&T_check_instance, a, e); \
0657 }
0658
0659 void T_check_eno_success(const T_check_context *, int);
0660
0661 #define T_flags_eno_success(a, flags) \
0662 { \
0663 static const T_check_context T_check_instance = { \
0664 T_FILE_NAME, __LINE__, (flags) | T_CHECK_FMT }; \
0665 T_check_eno_success(&T_check_instance, a); \
0666 }
0667
0668 void T_check_psx_error(const T_check_context *, int, int);
0669
0670 #define T_flags_psx_error(a, eno, flags) \
0671 { \
0672 static const T_check_context T_check_instance = { \
0673 T_FILE_NAME, __LINE__, (flags) | T_CHECK_FMT }; \
0674 T_check_psx_error(&T_check_instance, a, eno); \
0675 }
0676
0677 void T_check_psx_success(const T_check_context *, int);
0678
0679 #define T_flags_psx_success(a, flags) \
0680 { \
0681 static const T_check_context T_check_instance = { \
0682 T_FILE_NAME, __LINE__, (flags) | T_CHECK_FMT }; \
0683 T_check_psx_success(&T_check_instance, a); \
0684 }
0685
0686
0687
0688 int T_printf(char const *, ...);
0689
0690 int T_vprintf(char const *, va_list);
0691
0692 int T_puts(const char *, size_t);
0693
0694 int T_snprintf(char *, size_t, const char *, ...);
0695
0696 void T_log(T_verbosity, char const *, ...);
0697
0698 const char *T_case_name(void);
0699
0700 T_verbosity T_set_verbosity(T_verbosity);
0701
0702
0703
0704
0705
0706
0707
0708
0709
0710
0711
0712 #define T_true(...) T_flags_true(0, __VA_ARGS__)
0713 #define T_assert_true(...) T_flags_true(T_CHECK_STOP, __VA_ARGS__)
0714 #define T_quiet_true(...) T_flags_true(T_CHECK_QUIET, __VA_ARGS__)
0715 #define T_step_true(s, ...) T_flags_true(T_CHECK_STEP(s), __VA_ARGS__)
0716 #define T_step_assert_true(s, ...) \
0717 T_flags_true(T_CHECK_STEP(s) | T_CHECK_STOP, __VA_ARGS__)
0718
0719 #define T_false(...) \
0720 T_flags_true(0, \
0721 !(T_VA_ARGS_FIRST(__VA_ARGS__)) T_VA_ARGS_MORE(__VA_ARGS__))
0722 #define T_assert_false(...) \
0723 T_flags_true(T_CHECK_STOP, \
0724 !(T_VA_ARGS_FIRST(__VA_ARGS__)) T_VA_ARGS_MORE(__VA_ARGS__))
0725 #define T_quiet_false(...) \
0726 T_flags_true(T_CHECK_QUIET, \
0727 !(T_VA_ARGS_FIRST(__VA_ARGS__)) T_VA_ARGS_MORE(__VA_ARGS__))
0728 #define T_step_false(s, ...) \
0729 T_flags_true(T_CHECK_STEP(s), \
0730 !(T_VA_ARGS_FIRST(__VA_ARGS__)) T_VA_ARGS_MORE(__VA_ARGS__))
0731 #define T_step_assert_false(s, ...) \
0732 T_flags_true(T_CHECK_STEP(s) | T_CHECK_STOP, \
0733 !(T_VA_ARGS_FIRST(__VA_ARGS__)) T_VA_ARGS_MORE(__VA_ARGS__))
0734
0735
0736
0737
0738
0739
0740
0741
0742
0743
0744
0745
0746
0747 #define T_eq(a, ...) T_flags_eq(0, a, __VA_ARGS__)
0748 #define T_assert_eq(a, ...) T_flags_eq(T_CHECK_STOP, a, __VA_ARGS__)
0749 #define T_quiet_eq(a, ...) T_flags_eq(T_CHECK_QUIET, a, __VA_ARGS__)
0750 #define T_step_eq(s, a, ...) T_flags_eq(T_CHECK_STEP(s), a, __VA_ARGS__)
0751 #define T_step_assert_eq(s, a, ...) \
0752 T_flags_eq(T_CHECK_STEP(s) | T_CHECK_STOP, a, __VA_ARGS__)
0753
0754 #define T_ne(a, ...) T_flags_ne(0, a, __VA_ARGS__)
0755 #define T_assert_ne(a, ...) T_flags_ne(T_CHECK_STOP, a, __VA_ARGS__)
0756 #define T_quiet_ne(a, ...) T_flags_ne(T_CHECK_QUIET, a, __VA_ARGS__)
0757 #define T_step_ne(s, a, ...) T_flags_ne(T_CHECK_STEP(s), a, __VA_ARGS__)
0758 #define T_step_assert_ne(s, a, ...) \
0759 T_flags_ne(T_CHECK_STEP(s) | T_CHECK_STOP, a, __VA_ARGS__)
0760
0761
0762
0763
0764
0765
0766
0767
0768
0769
0770
0771
0772
0773 #define T_eq_ptr(a, e) T_flags_eq_ptr(a, e, 0, #a, #e)
0774 #define T_assert_eq_ptr(a, e) T_flags_eq_ptr(a, e, T_CHECK_STOP, #a, #e)
0775 #define T_quiet_eq_ptr(a, e) T_flags_eq_ptr(a, e, T_CHECK_QUIET, #a, #e)
0776 #define T_step_eq_ptr(s, a, e) T_flags_eq_ptr(a, e, T_CHECK_STEP(s), #a, #e)
0777 #define T_step_assert_eq_ptr(s, a, e) \
0778 T_flags_eq_ptr(a, e, T_CHECK_STEP(s) | T_CHECK_STOP, #a, #e)
0779
0780 #define T_ne_ptr(a, e) T_flags_ne_ptr(a, e, 0, #a, #e)
0781 #define T_assert_ne_ptr(a, e) T_flags_ne_ptr(a, e, T_CHECK_STOP, #a, #e)
0782 #define T_quiet_ne_ptr(a, e) T_flags_ne_ptr(a, e, T_CHECK_QUIET, #a, #e)
0783 #define T_step_ne_ptr(s, a, e) T_flags_ne_ptr(a, e, T_CHECK_STEP(s), #a, #e)
0784 #define T_step_assert_ne_ptr(s, a, e) \
0785 T_flags_ne_ptr(a, e, T_CHECK_STEP(s) | T_CHECK_STOP, #a, #e)
0786
0787 #define T_null(a) T_flags_null(a, 0, #a)
0788 #define T_assert_null(a) T_flags_null(a, T_CHECK_STOP, #a)
0789 #define T_quiet_null(a) T_flags_null(a, T_CHECK_QUIET, #a)
0790 #define T_quiet_assert_null(a) \
0791 T_flags_null(a, T_CHECK_QUIET | T_CHECK_STOP, #a)
0792 #define T_step_null(s, a) T_flags_null(a, T_CHECK_STEP(s), #a)
0793 #define T_step_assert_null(s, a) \
0794 T_flags_null(a, T_CHECK_STEP(s) | T_CHECK_STOP, #a)
0795
0796 #define T_not_null(a) T_flags_not_null(a, 0, #a)
0797 #define T_assert_not_null(a) T_flags_not_null(a, T_CHECK_STOP, #a)
0798 #define T_quiet_not_null(a) T_flags_not_null(a, T_CHECK_QUIET, #a)
0799 #define T_quiet_assert_not_null(a) \
0800 T_flags_not_null(a, T_CHECK_QUIET | T_CHECK_STOP, #a)
0801 #define T_step_not_null(s, a) T_flags_not_null(a, T_CHECK_STEP(s), #a)
0802 #define T_step_assert_not_null(s, a) \
0803 T_flags_not_null(a, T_CHECK_STEP(s) | T_CHECK_STOP, #a)
0804
0805
0806
0807
0808
0809
0810
0811
0812
0813
0814
0815
0816
0817 #define T_eq_mem(a, e, n) T_flags_eq_mem(a, e, n, 0, #a, #e, #n)
0818 #define T_assert_eq_mem(a, e, n) \
0819 T_flags_eq_mem(a, e, n, T_CHECK_STOP, #a, #e, #n)
0820 #define T_quiet_eq_mem(a, e, n) \
0821 T_flags_eq_mem(a, e, n, T_CHECK_QUIET, #a, #e, #n)
0822 #define T_step_eq_mem(s, a, e, n) \
0823 T_flags_eq_mem(a, e, n, T_CHECK_STEP(s), #a, #e, #n)
0824 #define T_step_assert_eq_mem(s, a, e, n) \
0825 T_flags_eq_mem(a, e, n, T_CHECK_STEP(s) | T_CHECK_STOP, #a, #e, #n)
0826
0827 #define T_ne_mem(a, e, n) T_flags_ne_mem(a, e, n, 0, #a, #e, #n)
0828 #define T_assert_ne_mem(a, e, n) \
0829 T_flags_ne_mem(a, e, n, T_CHECK_STOP, #a, #e, #n)
0830 #define T_quiet_ne_mem(a, e, n) \
0831 T_flags_ne_mem(a, e, n, T_CHECK_QUIET, #a, #e, #n)
0832 #define T_step_ne_mem(s, a, e, n) \
0833 T_flags_ne_mem(a, e, n, T_CHECK_STEP(s), #a, #e, #n)
0834 #define T_step_assert_ne_mem(s, a, e, n) \
0835 T_flags_ne_mem(a, e, n, T_CHECK_STEP(s) | T_CHECK_STOP, #a, #e, #n)
0836
0837
0838
0839
0840
0841
0842
0843
0844
0845
0846
0847
0848
0849
0850 #define T_eq_str(a, e) T_flags_eq_str(a, e, 0)
0851 #define T_assert_eq_str(a, e) T_flags_eq_str(a, e, T_CHECK_STOP)
0852 #define T_quiet_eq_str(a, e) T_flags_eq_str(a, e, T_CHECK_QUIET)
0853 #define T_step_eq_str(s, a, e) T_flags_eq_str(a, e, T_CHECK_STEP(s))
0854 #define T_step_assert_eq_str(s, a, e) \
0855 T_flags_eq_str(a, e, T_CHECK_STEP(s) | T_CHECK_STOP)
0856
0857 #define T_ne_str(a, e) T_flags_ne_str(a, e, 0)
0858 #define T_assert_ne_str(a, e) T_flags_ne_str(a, e, T_CHECK_STOP)
0859 #define T_quiet_ne_str(a, e) T_flags_ne_str(a, e, T_CHECK_QUIET)
0860 #define T_step_ne_str(s, a, e) T_flags_ne_str(a, e, T_CHECK_STEP(s))
0861 #define T_step_assert_ne_str(s, a, e) \
0862 T_flags_ne_str(a, e, T_CHECK_STEP(s) | T_CHECK_STOP)
0863
0864 #define T_eq_nstr(a, e, n) T_flags_eq_nstr(a, e, n, 0)
0865 #define T_assert_eq_nstr(a, e, n) T_flags_eq_nstr(a, e, n, T_CHECK_STOP)
0866 #define T_quiet_eq_nstr(a, e, n) T_flags_eq_nstr(a, e, n, T_CHECK_QUIET)
0867 #define T_step_eq_nstr(s, a, e, n) T_flags_eq_nstr(a, e, n, T_CHECK_STEP(s))
0868 #define T_step_assert_eq_nstr(s, a, e, n) \
0869 T_flags_eq_nstr(a, e, n, T_CHECK_STEP(s) | T_CHECK_STOP)
0870
0871 #define T_ne_nstr(a, e, n) T_flags_ne_nstr(a, e, n, 0)
0872 #define T_assert_ne_nstr(a, e, n) T_flags_ne_nstr(a, e, n, T_CHECK_STOP)
0873 #define T_quiet_ne_nstr(a, e, n) T_flags_ne_nstr(a, e, n, T_CHECK_QUIET)
0874 #define T_step_ne_nstr(s, a, e, n) T_flags_ne_nstr(a, e, n, T_CHECK_STEP(s))
0875 #define T_step_assert_ne_nstr(s, a, e, n) \
0876 T_flags_ne_nstr(a, e, n, T_CHECK_STEP(s) | T_CHECK_STOP)
0877
0878
0879
0880
0881
0882
0883
0884
0885
0886
0887
0888
0889
0890 #define T_eq_char(a, e) T_flags_eq_char(a, e, 0)
0891 #define T_assert_eq_char(a, e) T_flags_eq_char(a, e, T_CHECK_STOP)
0892 #define T_quiet_eq_char(a, e) T_flags_eq_char(a, e, T_CHECK_QUIET)
0893 #define T_step_eq_char(s, a, e) T_flags_eq_char(a, e, T_CHECK_STEP(s))
0894 #define T_step_assert_eq_char(s, a, e) \
0895 T_flags_eq_char(a, e, T_CHECK_STEP(s) | T_CHECK_STOP)
0896
0897 #define T_ne_char(a, e) T_flags_ne_char(a, e, 0)
0898 #define T_assert_ne_char(a, e) T_flags_ne_char(a, e, T_CHECK_STOP)
0899 #define T_quiet_ne_char(a, e) T_flags_ne_char(a, e, T_CHECK_QUIET)
0900 #define T_step_ne_char(s, a, e) T_flags_ne_char(a, e, T_CHECK_STEP(s))
0901 #define T_step_assert_ne_char(s, a, e) \
0902 T_flags_ne_char(a, e, T_CHECK_STEP(s) | T_CHECK_STOP)
0903
0904
0905
0906
0907
0908
0909
0910
0911
0912
0913
0914
0915
0916 #define T_eq_schar(a, e) T_flags_eq_int(a, e, 0)
0917 #define T_assert_eq_schar(a, e) T_flags_eq_int(a, e, T_CHECK_STOP)
0918 #define T_quiet_eq_schar(a, e) T_flags_eq_int(a, e, T_CHECK_QUIET)
0919 #define T_step_eq_schar(s, a, e) T_flags_eq_int(a, e, T_CHECK_STEP(s))
0920 #define T_step_assert_eq_schar(s, a, e) \
0921 T_flags_eq_int(a, e, T_CHECK_STEP(s) | T_CHECK_STOP)
0922
0923 #define T_ne_schar(a, e) T_flags_ne_int(a, e, 0)
0924 #define T_assert_ne_schar(a, e) T_flags_ne_int(a, e, T_CHECK_STOP)
0925 #define T_quiet_ne_schar(a, e) T_flags_ne_int(a, e, T_CHECK_QUIET)
0926 #define T_step_ne_schar(s, a, e) T_flags_ne_int(a, e, T_CHECK_STEP(s))
0927 #define T_step_assert_ne_schar(s, a, e) \
0928 T_flags_ne_int(a, e, T_CHECK_STEP(s) | T_CHECK_STOP)
0929
0930 #define T_ge_schar(a, e) T_flags_ge_int(a, e, 0)
0931 #define T_assert_ge_schar(a, e) T_flags_ge_int(a, e, T_CHECK_STOP)
0932 #define T_quiet_ge_schar(a, e) T_flags_ge_int(a, e, T_CHECK_QUIET)
0933 #define T_step_ge_schar(s, a, e) T_flags_ge_int(a, e, T_CHECK_STEP(s))
0934 #define T_step_assert_ge_schar(s, a, e) \
0935 T_flags_ge_int(a, e, T_CHECK_STEP(s) | T_CHECK_STOP)
0936
0937 #define T_gt_schar(a, e) T_flags_gt_int(a, e, 0)
0938 #define T_assert_gt_schar(a, e) T_flags_gt_int(a, e, T_CHECK_STOP)
0939 #define T_quiet_gt_schar(a, e) T_flags_gt_int(a, e, T_CHECK_QUIET)
0940 #define T_step_gt_schar(s, a, e) T_flags_gt_int(a, e, T_CHECK_STEP(s))
0941 #define T_step_assert_gt_schar(s, a, e) \
0942 T_flags_gt_int(a, e, T_CHECK_STEP(s) | T_CHECK_STOP)
0943
0944 #define T_le_schar(a, e) T_flags_le_int(a, e, 0)
0945 #define T_assert_le_schar(a, e) T_flags_le_int(a, e, T_CHECK_STOP)
0946 #define T_quiet_le_schar(a, e) T_flags_le_int(a, e, T_CHECK_QUIET)
0947 #define T_step_le_schar(s, a, e) T_flags_le_int(a, e, T_CHECK_STEP(s))
0948 #define T_step_assert_le_schar(s, a, e) \
0949 T_flags_le_int(a, e, T_CHECK_STEP(s) | T_CHECK_STOP)
0950
0951 #define T_lt_schar(a, e) T_flags_lt_int(a, e, 0)
0952 #define T_assert_lt_schar(a, e) T_flags_lt_int(a, e, T_CHECK_STOP)
0953 #define T_quiet_lt_schar(a, e) T_flags_lt_int(a, e, T_CHECK_QUIET)
0954 #define T_step_lt_schar(s, a, e) T_flags_lt_int(a, e, T_CHECK_STEP(s))
0955 #define T_step_assert_lt_schar(s, a, e) \
0956 T_flags_lt_int(a, e, T_CHECK_STEP(s) | T_CHECK_STOP)
0957
0958
0959
0960
0961
0962
0963
0964
0965
0966
0967
0968
0969
0970 #define T_eq_uchar(a, e) T_flags_eq_uint(a, e, 0)
0971 #define T_assert_eq_uchar(a, e) T_flags_eq_uint(a, e, T_CHECK_STOP)
0972 #define T_quiet_eq_uchar(a, e) T_flags_eq_uint(a, e, T_CHECK_QUIET)
0973 #define T_step_eq_uchar(s, a, e) T_flags_eq_uint(a, e, T_CHECK_STEP(s))
0974 #define T_step_assert_eq_uchar(s, a, e) \
0975 T_flags_eq_uint(a, e, T_CHECK_STEP(s) | T_CHECK_STOP)
0976
0977 #define T_ne_uchar(a, e) T_flags_ne_uint(a, e, 0)
0978 #define T_assert_ne_uchar(a, e) T_flags_ne_uint(a, e, T_CHECK_STOP)
0979 #define T_quiet_ne_uchar(a, e) T_flags_ne_uint(a, e, T_CHECK_QUIET)
0980 #define T_step_ne_uchar(s, a, e) T_flags_ne_uint(a, e, T_CHECK_STEP(s))
0981 #define T_step_assert_ne_uchar(s, a, e) \
0982 T_flags_ne_uint(a, e, T_CHECK_STEP(s) | T_CHECK_STOP)
0983
0984 #define T_ge_uchar(a, e) T_flags_ge_uint(a, e, 0)
0985 #define T_assert_ge_uchar(a, e) T_flags_ge_uint(a, e, T_CHECK_STOP)
0986 #define T_quiet_ge_uchar(a, e) T_flags_ge_uint(a, e, T_CHECK_QUIET)
0987 #define T_step_ge_uchar(s, a, e) T_flags_ge_uint(a, e, T_CHECK_STEP(s))
0988 #define T_step_assert_ge_uchar(s, a, e) \
0989 T_flags_ge_uint(a, e, T_CHECK_STEP(s) | T_CHECK_STOP)
0990
0991 #define T_gt_uchar(a, e) T_flags_gt_uint(a, e, 0)
0992 #define T_assert_gt_uchar(a, e) T_flags_gt_uint(a, e, T_CHECK_STOP)
0993 #define T_quiet_gt_uchar(a, e) T_flags_gt_uint(a, e, T_CHECK_QUIET)
0994 #define T_step_gt_uchar(s, a, e) T_flags_gt_uint(a, e, T_CHECK_STEP(s))
0995 #define T_step_assert_gt_uchar(s, a, e) \
0996 T_flags_gt_uint(a, e, T_CHECK_STEP(s) | T_CHECK_STOP)
0997
0998 #define T_le_uchar(a, e) T_flags_le_uint(a, e, 0)
0999 #define T_assert_le_uchar(a, e) T_flags_le_uint(a, e, T_CHECK_STOP)
1000 #define T_quiet_le_uchar(a, e) T_flags_le_uint(a, e, T_CHECK_QUIET)
1001 #define T_step_le_uchar(s, a, e) T_flags_le_uint(a, e, T_CHECK_STEP(s))
1002 #define T_step_assert_le_uchar(s, a, e) \
1003 T_flags_le_uint(a, e, T_CHECK_STEP(s) | T_CHECK_STOP)
1004
1005 #define T_lt_uchar(a, e) T_flags_lt_uint(a, e, 0)
1006 #define T_assert_lt_uchar(a, e) T_flags_lt_uint(a, e, T_CHECK_STOP)
1007 #define T_quiet_lt_uchar(a, e) T_flags_lt_uint(a, e, T_CHECK_QUIET)
1008 #define T_step_lt_uchar(s, a, e) T_flags_lt_uint(a, e, T_CHECK_STEP(s))
1009 #define T_step_assert_lt_uchar(s, a, e) \
1010 T_flags_lt_uint(a, e, T_CHECK_STEP(s) | T_CHECK_STOP)
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024 #define T_eq_short(a, e) T_flags_eq_int(a, e, 0)
1025 #define T_assert_eq_short(a, e) T_flags_eq_int(a, e, T_CHECK_STOP)
1026 #define T_quiet_eq_short(a, e) T_flags_eq_int(a, e, T_CHECK_QUIET)
1027 #define T_step_eq_short(s, a, e) T_flags_eq_int(a, e, T_CHECK_STEP(s))
1028 #define T_step_assert_eq_short(s, a, e) \
1029 T_flags_eq_int(a, e, T_CHECK_STEP(s) | T_CHECK_STOP)
1030
1031 #define T_ne_short(a, e) T_flags_ne_int(a, e, 0)
1032 #define T_assert_ne_short(a, e) T_flags_ne_int(a, e, T_CHECK_STOP)
1033 #define T_quiet_ne_short(a, e) T_flags_ne_int(a, e, T_CHECK_QUIET)
1034 #define T_step_ne_short(s, a, e) T_flags_ne_int(a, e, T_CHECK_STEP(s))
1035 #define T_step_assert_ne_short(s, a, e) \
1036 T_flags_ne_int(a, e, T_CHECK_STEP(s) | T_CHECK_STOP)
1037
1038 #define T_ge_short(a, e) T_flags_ge_int(a, e, 0)
1039 #define T_assert_ge_short(a, e) T_flags_ge_int(a, e, T_CHECK_STOP)
1040 #define T_quiet_ge_short(a, e) T_flags_ge_int(a, e, T_CHECK_QUIET)
1041 #define T_step_ge_short(s, a, e) T_flags_ge_int(a, e, T_CHECK_STEP(s))
1042 #define T_step_assert_ge_short(s, a, e) \
1043 T_flags_ge_int(a, e, T_CHECK_STEP(s) | T_CHECK_STOP)
1044
1045 #define T_gt_short(a, e) T_flags_gt_int(a, e, 0)
1046 #define T_assert_gt_short(a, e) T_flags_gt_int(a, e, T_CHECK_STOP)
1047 #define T_quiet_gt_short(a, e) T_flags_gt_int(a, e, T_CHECK_QUIET)
1048 #define T_step_gt_short(s, a, e) T_flags_gt_int(a, e, T_CHECK_STEP(s))
1049 #define T_step_assert_gt_short(s, a, e) \
1050 T_flags_gt_int(a, e, T_CHECK_STEP(s) | T_CHECK_STOP)
1051
1052 #define T_le_short(a, e) T_flags_le_int(a, e, 0)
1053 #define T_assert_le_short(a, e) T_flags_le_int(a, e, T_CHECK_STOP)
1054 #define T_quiet_le_short(a, e) T_flags_le_int(a, e, T_CHECK_QUIET)
1055 #define T_step_le_short(s, a, e) T_flags_le_int(a, e, T_CHECK_STEP(s))
1056 #define T_step_assert_le_short(s, a, e) \
1057 T_flags_le_int(a, e, T_CHECK_STEP(s) | T_CHECK_STOP)
1058
1059 #define T_lt_short(a, e) T_flags_lt_int(a, e, 0)
1060 #define T_assert_lt_short(a, e) T_flags_lt_int(a, e, T_CHECK_STOP)
1061 #define T_quiet_lt_short(a, e) T_flags_lt_int(a, e, T_CHECK_QUIET)
1062 #define T_step_lt_short(s, a, e) T_flags_lt_int(a, e, T_CHECK_STEP(s))
1063 #define T_step_assert_lt_short(s, a, e) \
1064 T_flags_lt_int(a, e, T_CHECK_STEP(s) | T_CHECK_STOP)
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078 #define T_eq_ushort(a, e) T_flags_eq_uint(a, e, 0)
1079 #define T_assert_eq_ushort(a, e) T_flags_eq_uint(a, e, T_CHECK_STOP)
1080 #define T_quiet_eq_ushort(a, e) T_flags_eq_uint(a, e, T_CHECK_QUIET)
1081 #define T_step_eq_ushort(s, a, e) T_flags_eq_uint(a, e, T_CHECK_STEP(s))
1082 #define T_step_assert_eq_ushort(s, a, e) \
1083 T_flags_eq_uint(a, e, T_CHECK_STEP(s) | T_CHECK_STOP)
1084
1085 #define T_ne_ushort(a, e) T_flags_ne_uint(a, e, 0)
1086 #define T_assert_ne_ushort(a, e) T_flags_ne_uint(a, e, T_CHECK_STOP)
1087 #define T_quiet_ne_ushort(a, e) T_flags_ne_uint(a, e, T_CHECK_QUIET)
1088 #define T_step_ne_ushort(s, a, e) T_flags_ne_uint(a, e, T_CHECK_STEP(s))
1089 #define T_step_assert_ne_ushort(s, a, e) \
1090 T_flags_ne_uint(a, e, T_CHECK_STEP(s) | T_CHECK_STOP)
1091
1092 #define T_ge_ushort(a, e) T_flags_ge_uint(a, e, 0)
1093 #define T_assert_ge_ushort(a, e) T_flags_ge_uint(a, e, T_CHECK_STOP)
1094 #define T_quiet_ge_ushort(a, e) T_flags_ge_uint(a, e, T_CHECK_QUIET)
1095 #define T_step_ge_ushort(s, a, e) T_flags_ge_uint(a, e, T_CHECK_STEP(s))
1096 #define T_step_assert_ge_ushort(s, a, e) \
1097 T_flags_ge_uint(a, e, T_CHECK_STEP(s) | T_CHECK_STOP)
1098
1099 #define T_gt_ushort(a, e) T_flags_gt_uint(a, e, 0)
1100 #define T_assert_gt_ushort(a, e) T_flags_gt_uint(a, e, T_CHECK_STOP)
1101 #define T_quiet_gt_ushort(a, e) T_flags_gt_uint(a, e, T_CHECK_QUIET)
1102 #define T_step_gt_ushort(s, a, e) T_flags_gt_uint(a, e, T_CHECK_STEP(s))
1103 #define T_step_assert_gt_ushort(s, a, e) \
1104 T_flags_gt_uint(a, e, T_CHECK_STEP(s) | T_CHECK_STOP)
1105
1106 #define T_le_ushort(a, e) T_flags_le_uint(a, e, 0)
1107 #define T_assert_le_ushort(a, e) T_flags_le_uint(a, e, T_CHECK_STOP)
1108 #define T_quiet_le_ushort(a, e) T_flags_le_uint(a, e, T_CHECK_QUIET)
1109 #define T_step_le_ushort(s, a, e) T_flags_le_uint(a, e, T_CHECK_STEP(s))
1110 #define T_step_assert_le_ushort(s, a, e) \
1111 T_flags_le_uint(a, e, T_CHECK_STEP(s) | T_CHECK_STOP)
1112
1113 #define T_lt_ushort(a, e) T_flags_lt_uint(a, e, 0)
1114 #define T_assert_lt_ushort(a, e) T_flags_lt_uint(a, e, T_CHECK_STOP)
1115 #define T_quiet_lt_ushort(a, e) T_flags_lt_uint(a, e, T_CHECK_QUIET)
1116 #define T_step_lt_ushort(s, a, e) T_flags_lt_uint(a, e, T_CHECK_STEP(s))
1117 #define T_step_assert_lt_ushort(s, a, e) \
1118 T_flags_lt_uint(a, e, T_CHECK_STEP(s) | T_CHECK_STOP)
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132 #define T_eq_int(a, e) T_flags_eq_int(a, e, 0)
1133 #define T_assert_eq_int(a, e) T_flags_eq_int(a, e, T_CHECK_STOP)
1134 #define T_quiet_eq_int(a, e) T_flags_eq_int(a, e, T_CHECK_QUIET)
1135 #define T_step_eq_int(s, a, e) T_flags_eq_int(a, e, T_CHECK_STEP(s))
1136 #define T_step_assert_eq_int(s, a, e) \
1137 T_flags_eq_int(a, e, T_CHECK_STEP(s) | T_CHECK_STOP)
1138
1139 #define T_ne_int(a, e) T_flags_ne_int(a, e, 0)
1140 #define T_assert_ne_int(a, e) T_flags_ne_int(a, e, T_CHECK_STOP)
1141 #define T_quiet_ne_int(a, e) T_flags_ne_int(a, e, T_CHECK_QUIET)
1142 #define T_step_ne_int(s, a, e) T_flags_ne_int(a, e, T_CHECK_STEP(s))
1143 #define T_step_assert_ne_int(s, a, e) \
1144 T_flags_ne_int(a, e, T_CHECK_STEP(s) | T_CHECK_STOP)
1145
1146 #define T_ge_int(a, e) T_flags_ge_int(a, e, 0)
1147 #define T_assert_ge_int(a, e) T_flags_ge_int(a, e, T_CHECK_STOP)
1148 #define T_quiet_ge_int(a, e) T_flags_ge_int(a, e, T_CHECK_QUIET)
1149 #define T_step_ge_int(s, a, e) T_flags_ge_int(a, e, T_CHECK_STEP(s))
1150 #define T_step_assert_ge_int(s, a, e) \
1151 T_flags_ge_int(a, e, T_CHECK_STEP(s) | T_CHECK_STOP)
1152
1153 #define T_gt_int(a, e) T_flags_gt_int(a, e, 0)
1154 #define T_assert_gt_int(a, e) T_flags_gt_int(a, e, T_CHECK_STOP)
1155 #define T_quiet_gt_int(a, e) T_flags_gt_int(a, e, T_CHECK_QUIET)
1156 #define T_step_gt_int(s, a, e) T_flags_gt_int(a, e, T_CHECK_STEP(s))
1157 #define T_step_assert_gt_int(s, a, e) \
1158 T_flags_gt_int(a, e, T_CHECK_STEP(s) | T_CHECK_STOP)
1159
1160 #define T_le_int(a, e) T_flags_le_int(a, e, 0)
1161 #define T_assert_le_int(a, e) T_flags_le_int(a, e, T_CHECK_STOP)
1162 #define T_quiet_le_int(a, e) T_flags_le_int(a, e, T_CHECK_QUIET)
1163 #define T_step_le_int(s, a, e) T_flags_le_int(a, e, T_CHECK_STEP(s))
1164 #define T_step_assert_le_int(s, a, e) \
1165 T_flags_le_int(a, e, T_CHECK_STEP(s) | T_CHECK_STOP)
1166
1167 #define T_lt_int(a, e) T_flags_lt_int(a, e, 0)
1168 #define T_assert_lt_int(a, e) T_flags_lt_int(a, e, T_CHECK_STOP)
1169 #define T_quiet_lt_int(a, e) T_flags_lt_int(a, e, T_CHECK_QUIET)
1170 #define T_step_lt_int(s, a, e) T_flags_lt_int(a, e, T_CHECK_STEP(s))
1171 #define T_step_assert_lt_int(s, a, e) \
1172 T_flags_lt_int(a, e, T_CHECK_STEP(s) | T_CHECK_STOP)
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186 #define T_eq_uint(a, e) T_flags_eq_uint(a, e, 0)
1187 #define T_assert_eq_uint(a, e) T_flags_eq_uint(a, e, T_CHECK_STOP)
1188 #define T_quiet_eq_uint(a, e) T_flags_eq_uint(a, e, T_CHECK_QUIET)
1189 #define T_step_eq_uint(s, a, e) T_flags_eq_uint(a, e, T_CHECK_STEP(s))
1190 #define T_step_assert_eq_uint(s, a, e) \
1191 T_flags_eq_uint(a, e, T_CHECK_STEP(s) | T_CHECK_STOP)
1192
1193 #define T_ne_uint(a, e) T_flags_ne_uint(a, e, 0)
1194 #define T_assert_ne_uint(a, e) T_flags_ne_uint(a, e, T_CHECK_STOP)
1195 #define T_quiet_ne_uint(a, e) T_flags_ne_uint(a, e, T_CHECK_QUIET)
1196 #define T_step_ne_uint(s, a, e) T_flags_ne_uint(a, e, T_CHECK_STEP(s))
1197 #define T_step_assert_ne_uint(s, a, e) \
1198 T_flags_ne_uint(a, e, T_CHECK_STEP(s) | T_CHECK_STOP)
1199
1200 #define T_ge_uint(a, e) T_flags_ge_uint(a, e, 0)
1201 #define T_assert_ge_uint(a, e) T_flags_ge_uint(a, e, T_CHECK_STOP)
1202 #define T_quiet_ge_uint(a, e) T_flags_ge_uint(a, e, T_CHECK_QUIET)
1203 #define T_step_ge_uint(s, a, e) T_flags_ge_uint(a, e, T_CHECK_STEP(s))
1204 #define T_step_assert_ge_uint(s, a, e) \
1205 T_flags_ge_uint(a, e, T_CHECK_STEP(s) | T_CHECK_STOP)
1206
1207 #define T_gt_uint(a, e) T_flags_gt_uint(a, e, 0)
1208 #define T_assert_gt_uint(a, e) T_flags_gt_uint(a, e, T_CHECK_STOP)
1209 #define T_quiet_gt_uint(a, e) T_flags_gt_uint(a, e, T_CHECK_QUIET)
1210 #define T_step_gt_uint(s, a, e) T_flags_gt_uint(a, e, T_CHECK_STEP(s))
1211 #define T_step_assert_gt_uint(s, a, e) \
1212 T_flags_gt_uint(a, e, T_CHECK_STEP(s) | T_CHECK_STOP)
1213
1214 #define T_le_uint(a, e) T_flags_le_uint(a, e, 0)
1215 #define T_assert_le_uint(a, e) T_flags_le_uint(a, e, T_CHECK_STOP)
1216 #define T_quiet_le_uint(a, e) T_flags_le_uint(a, e, T_CHECK_QUIET)
1217 #define T_step_le_uint(s, a, e) T_flags_le_uint(a, e, T_CHECK_STEP(s))
1218 #define T_step_assert_le_uint(s, a, e) \
1219 T_flags_le_uint(a, e, T_CHECK_STEP(s) | T_CHECK_STOP)
1220
1221 #define T_lt_uint(a, e) T_flags_lt_uint(a, e, 0)
1222 #define T_assert_lt_uint(a, e) T_flags_lt_uint(a, e, T_CHECK_STOP)
1223 #define T_quiet_lt_uint(a, e) T_flags_lt_uint(a, e, T_CHECK_QUIET)
1224 #define T_step_lt_uint(s, a, e) T_flags_lt_uint(a, e, T_CHECK_STEP(s))
1225 #define T_step_assert_lt_uint(s, a, e) \
1226 T_flags_lt_uint(a, e, T_CHECK_STEP(s) | T_CHECK_STOP)
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240 #define T_eq_long(a, e) T_flags_eq_long(a, e, 0)
1241 #define T_assert_eq_long(a, e) T_flags_eq_long(a, e, T_CHECK_STOP)
1242 #define T_quiet_eq_long(a, e) T_flags_eq_long(a, e, T_CHECK_QUIET)
1243 #define T_step_eq_long(s, a, e) T_flags_eq_long(a, e, T_CHECK_STEP(s))
1244 #define T_step_assert_eq_long(s, a, e) \
1245 T_flags_eq_long(a, e, T_CHECK_STEP(s) | T_CHECK_STOP)
1246
1247 #define T_ne_long(a, e) T_flags_ne_long(a, e, 0)
1248 #define T_assert_ne_long(a, e) T_flags_ne_long(a, e, T_CHECK_STOP)
1249 #define T_quiet_ne_long(a, e) T_flags_ne_long(a, e, T_CHECK_QUIET)
1250 #define T_step_ne_long(s, a, e) T_flags_ne_long(a, e, T_CHECK_STEP(s))
1251 #define T_step_assert_ne_long(s, a, e) \
1252 T_flags_ne_long(a, e, T_CHECK_STEP(s) | T_CHECK_STOP)
1253
1254 #define T_ge_long(a, e) T_flags_ge_long(a, e, 0)
1255 #define T_assert_ge_long(a, e) T_flags_ge_long(a, e, T_CHECK_STOP)
1256 #define T_quiet_ge_long(a, e) T_flags_ge_long(a, e, T_CHECK_QUIET)
1257 #define T_step_ge_long(s, a, e) T_flags_ge_long(a, e, T_CHECK_STEP(s))
1258 #define T_step_assert_ge_long(s, a, e) \
1259 T_flags_ge_long(a, e, T_CHECK_STEP(s) | T_CHECK_STOP)
1260
1261 #define T_gt_long(a, e) T_flags_gt_long(a, e, 0)
1262 #define T_assert_gt_long(a, e) T_flags_gt_long(a, e, T_CHECK_STOP)
1263 #define T_quiet_gt_long(a, e) T_flags_gt_long(a, e, T_CHECK_QUIET)
1264 #define T_step_gt_long(s, a, e) T_flags_gt_long(a, e, T_CHECK_STEP(s))
1265 #define T_step_assert_gt_long(s, a, e) \
1266 T_flags_gt_long(a, e, T_CHECK_STEP(s) | T_CHECK_STOP)
1267
1268 #define T_le_long(a, e) T_flags_le_long(a, e, 0)
1269 #define T_assert_le_long(a, e) T_flags_le_long(a, e, T_CHECK_STOP)
1270 #define T_quiet_le_long(a, e) T_flags_le_long(a, e, T_CHECK_QUIET)
1271 #define T_step_le_long(s, a, e) T_flags_le_long(a, e, T_CHECK_STEP(s))
1272 #define T_step_assert_le_long(s, a, e) \
1273 T_flags_le_long(a, e, T_CHECK_STEP(s) | T_CHECK_STOP)
1274
1275 #define T_lt_long(a, e) T_flags_lt_long(a, e, 0)
1276 #define T_assert_lt_long(a, e) T_flags_lt_long(a, e, T_CHECK_STOP)
1277 #define T_quiet_lt_long(a, e) T_flags_lt_long(a, e, T_CHECK_QUIET)
1278 #define T_step_lt_long(s, a, e) T_flags_lt_long(a, e, T_CHECK_STEP(s))
1279 #define T_step_assert_lt_long(s, a, e) \
1280 T_flags_lt_long(a, e, T_CHECK_STEP(s) | T_CHECK_STOP)
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294 #define T_eq_ulong(a, e) T_flags_eq_ulong(a, e, 0)
1295 #define T_assert_eq_ulong(a, e) T_flags_eq_ulong(a, e, T_CHECK_STOP)
1296 #define T_quiet_eq_ulong(a, e) T_flags_eq_ulong(a, e, T_CHECK_QUIET)
1297 #define T_step_eq_ulong(s, a, e) T_flags_eq_ulong(a, e, T_CHECK_STEP(s))
1298 #define T_step_assert_eq_ulong(s, a, e) \
1299 T_flags_eq_ulong(a, e, T_CHECK_STEP(s) | T_CHECK_STOP)
1300
1301 #define T_ne_ulong(a, e) T_flags_ne_ulong(a, e, 0)
1302 #define T_assert_ne_ulong(a, e) T_flags_ne_ulong(a, e, T_CHECK_STOP)
1303 #define T_quiet_ne_ulong(a, e) T_flags_ne_ulong(a, e, T_CHECK_QUIET)
1304 #define T_step_ne_ulong(s, a, e) T_flags_ne_ulong(a, e, T_CHECK_STEP(s))
1305 #define T_step_assert_ne_ulong(s, a, e) \
1306 T_flags_ne_ulong(a, e, T_CHECK_STEP(s) | T_CHECK_STOP)
1307
1308 #define T_ge_ulong(a, e) T_flags_ge_ulong(a, e, 0)
1309 #define T_assert_ge_ulong(a, e) T_flags_ge_ulong(a, e, T_CHECK_STOP)
1310 #define T_quiet_ge_ulong(a, e) T_flags_ge_ulong(a, e, T_CHECK_QUIET)
1311 #define T_step_ge_ulong(s, a, e) T_flags_ge_ulong(a, e, T_CHECK_STEP(s))
1312 #define T_step_assert_ge_ulong(s, a, e) \
1313 T_flags_ge_ulong(a, e, T_CHECK_STEP(s) | T_CHECK_STOP)
1314
1315 #define T_gt_ulong(a, e) T_flags_gt_ulong(a, e, 0)
1316 #define T_assert_gt_ulong(a, e) T_flags_gt_ulong(a, e, T_CHECK_STOP)
1317 #define T_quiet_gt_ulong(a, e) T_flags_gt_ulong(a, e, T_CHECK_QUIET)
1318 #define T_step_gt_ulong(s, a, e) T_flags_gt_ulong(a, e, T_CHECK_STEP(s))
1319 #define T_step_assert_gt_ulong(s, a, e) \
1320 T_flags_gt_ulong(a, e, T_CHECK_STEP(s) | T_CHECK_STOP)
1321
1322 #define T_le_ulong(a, e) T_flags_le_ulong(a, e, 0)
1323 #define T_assert_le_ulong(a, e) T_flags_le_ulong(a, e, T_CHECK_STOP)
1324 #define T_quiet_le_ulong(a, e) T_flags_le_ulong(a, e, T_CHECK_QUIET)
1325 #define T_step_le_ulong(s, a, e) T_flags_le_ulong(a, e, T_CHECK_STEP(s))
1326 #define T_step_assert_le_ulong(s, a, e) \
1327 T_flags_le_ulong(a, e, T_CHECK_STEP(s) | T_CHECK_STOP)
1328
1329 #define T_lt_ulong(a, e) T_flags_lt_ulong(a, e, 0)
1330 #define T_assert_lt_ulong(a, e) T_flags_lt_ulong(a, e, T_CHECK_STOP)
1331 #define T_quiet_lt_ulong(a, e) T_flags_lt_ulong(a, e, T_CHECK_QUIET)
1332 #define T_step_lt_ulong(s, a, e) T_flags_lt_ulong(a, e, T_CHECK_STEP(s))
1333 #define T_step_assert_lt_ulong(s, a, e) \
1334 T_flags_lt_ulong(a, e, T_CHECK_STEP(s) | T_CHECK_STOP)
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348 #define T_eq_ll(a, e) T_flags_eq_ll(a, e, 0)
1349 #define T_assert_eq_ll(a, e) T_flags_eq_ll(a, e, T_CHECK_STOP)
1350 #define T_quiet_eq_ll(a, e) T_flags_eq_ll(a, e, T_CHECK_QUIET)
1351 #define T_step_eq_ll(s, a, e) T_flags_eq_ll(a, e, T_CHECK_STEP(s))
1352 #define T_step_assert_eq_ll(s, a, e) \
1353 T_flags_eq_ll(a, e, T_CHECK_STEP(s) | T_CHECK_STOP)
1354
1355 #define T_ne_ll(a, e) T_flags_ne_ll(a, e, 0)
1356 #define T_assert_ne_ll(a, e) T_flags_ne_ll(a, e, T_CHECK_STOP)
1357 #define T_quiet_ne_ll(a, e) T_flags_ne_ll(a, e, T_CHECK_QUIET)
1358 #define T_step_ne_ll(s, a, e) T_flags_ne_ll(a, e, T_CHECK_STEP(s))
1359 #define T_step_assert_ne_ll(s, a, e) \
1360 T_flags_ne_ll(a, e, T_CHECK_STEP(s) | T_CHECK_STOP)
1361
1362 #define T_ge_ll(a, e) T_flags_ge_ll(a, e, 0)
1363 #define T_assert_ge_ll(a, e) T_flags_ge_ll(a, e, T_CHECK_STOP)
1364 #define T_quiet_ge_ll(a, e) T_flags_ge_ll(a, e, T_CHECK_QUIET)
1365 #define T_step_ge_ll(s, a, e) T_flags_ge_ll(a, e, T_CHECK_STEP(s))
1366 #define T_step_assert_ge_ll(s, a, e) \
1367 T_flags_ge_ll(a, e, T_CHECK_STEP(s) | T_CHECK_STOP)
1368
1369 #define T_gt_ll(a, e) T_flags_gt_ll(a, e, 0)
1370 #define T_assert_gt_ll(a, e) T_flags_gt_ll(a, e, T_CHECK_STOP)
1371 #define T_quiet_gt_ll(a, e) T_flags_gt_ll(a, e, T_CHECK_QUIET)
1372 #define T_step_gt_ll(s, a, e) T_flags_gt_ll(a, e, T_CHECK_STEP(s))
1373 #define T_step_assert_gt_ll(s, a, e) \
1374 T_flags_gt_ll(a, e, T_CHECK_STEP(s) | T_CHECK_STOP)
1375
1376 #define T_le_ll(a, e) T_flags_le_ll(a, e, 0)
1377 #define T_assert_le_ll(a, e) T_flags_le_ll(a, e, T_CHECK_STOP)
1378 #define T_quiet_le_ll(a, e) T_flags_le_ll(a, e, T_CHECK_QUIET)
1379 #define T_step_le_ll(s, a, e) T_flags_le_ll(a, e, T_CHECK_STEP(s))
1380 #define T_step_assert_le_ll(s, a, e) \
1381 T_flags_le_ll(a, e, T_CHECK_STEP(s) | T_CHECK_STOP)
1382
1383 #define T_lt_ll(a, e) T_flags_lt_ll(a, e, 0)
1384 #define T_assert_lt_ll(a, e) T_flags_lt_ll(a, e, T_CHECK_STOP)
1385 #define T_quiet_lt_ll(a, e) T_flags_lt_ll(a, e, T_CHECK_QUIET)
1386 #define T_step_lt_ll(s, a, e) T_flags_lt_ll(a, e, T_CHECK_STEP(s))
1387 #define T_step_assert_lt_ll(s, a, e) \
1388 T_flags_lt_ll(a, e, T_CHECK_STEP(s) | T_CHECK_STOP)
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402 #define T_eq_ull(a, e) T_flags_eq_ull(a, e, 0)
1403 #define T_assert_eq_ull(a, e) T_flags_eq_ull(a, e, T_CHECK_STOP)
1404 #define T_quiet_eq_ull(a, e) T_flags_eq_ull(a, e, T_CHECK_QUIET)
1405 #define T_step_eq_ull(s, a, e) T_flags_eq_ull(a, e, T_CHECK_STEP(s))
1406 #define T_step_assert_eq_ull(s, a, e) \
1407 T_flags_eq_ull(a, e, T_CHECK_STEP(s) | T_CHECK_STOP)
1408
1409 #define T_ne_ull(a, e) T_flags_ne_ull(a, e, 0)
1410 #define T_assert_ne_ull(a, e) T_flags_ne_ull(a, e, T_CHECK_STOP)
1411 #define T_quiet_ne_ull(a, e) T_flags_ne_ull(a, e, T_CHECK_QUIET)
1412 #define T_step_ne_ull(s, a, e) T_flags_ne_ull(a, e, T_CHECK_STEP(s))
1413 #define T_step_assert_ne_ull(s, a, e) \
1414 T_flags_ne_ull(a, e, T_CHECK_STEP(s) | T_CHECK_STOP)
1415
1416 #define T_ge_ull(a, e) T_flags_ge_ull(a, e, 0)
1417 #define T_assert_ge_ull(a, e) T_flags_ge_ull(a, e, T_CHECK_STOP)
1418 #define T_quiet_ge_ull(a, e) T_flags_ge_ull(a, e, T_CHECK_QUIET)
1419 #define T_step_ge_ull(s, a, e) T_flags_ge_ull(a, e, T_CHECK_STEP(s))
1420 #define T_step_assert_ge_ull(s, a, e) \
1421 T_flags_ge_ull(a, e, T_CHECK_STEP(s) | T_CHECK_STOP)
1422
1423 #define T_gt_ull(a, e) T_flags_gt_ull(a, e, 0)
1424 #define T_assert_gt_ull(a, e) T_flags_gt_ull(a, e, T_CHECK_STOP)
1425 #define T_quiet_gt_ull(a, e) T_flags_gt_ull(a, e, T_CHECK_QUIET)
1426 #define T_step_gt_ull(s, a, e) T_flags_gt_ull(a, e, T_CHECK_STEP(s))
1427 #define T_step_assert_gt_ull(s, a, e) \
1428 T_flags_gt_ull(a, e, T_CHECK_STEP(s) | T_CHECK_STOP)
1429
1430 #define T_le_ull(a, e) T_flags_le_ull(a, e, 0)
1431 #define T_assert_le_ull(a, e) T_flags_le_ull(a, e, T_CHECK_STOP)
1432 #define T_quiet_le_ull(a, e) T_flags_le_ull(a, e, T_CHECK_QUIET)
1433 #define T_step_le_ull(s, a, e) T_flags_le_ull(a, e, T_CHECK_STEP(s))
1434 #define T_step_assert_le_ull(s, a, e) \
1435 T_flags_le_ull(a, e, T_CHECK_STEP(s) | T_CHECK_STOP)
1436
1437 #define T_lt_ull(a, e) T_flags_lt_ull(a, e, 0)
1438 #define T_assert_lt_ull(a, e) T_flags_lt_ull(a, e, T_CHECK_STOP)
1439 #define T_quiet_lt_ull(a, e) T_flags_lt_ull(a, e, T_CHECK_QUIET)
1440 #define T_step_lt_ull(s, a, e) T_flags_lt_ull(a, e, T_CHECK_STEP(s))
1441 #define T_step_assert_lt_ull(s, a, e) \
1442 T_flags_lt_ull(a, e, T_CHECK_STEP(s) | T_CHECK_STOP)
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456 #define T_eq_i8(a, e) T_flags_eq_int(a, e, 0)
1457 #define T_assert_eq_i8(a, e) T_flags_eq_int(a, e, T_CHECK_STOP)
1458 #define T_quiet_eq_i8(a, e) T_flags_eq_int(a, e, T_CHECK_QUIET)
1459 #define T_step_eq_i8(s, a, e) T_flags_eq_int(a, e, T_CHECK_STEP(s))
1460 #define T_step_assert_eq_i8(s, a, e) \
1461 T_flags_eq_int(a, e, T_CHECK_STEP(s) | T_CHECK_STOP)
1462
1463 #define T_ne_i8(a, e) T_flags_ne_int(a, e, 0)
1464 #define T_assert_ne_i8(a, e) T_flags_ne_int(a, e, T_CHECK_STOP)
1465 #define T_quiet_ne_i8(a, e) T_flags_ne_int(a, e, T_CHECK_QUIET)
1466 #define T_step_ne_i8(s, a, e) T_flags_ne_int(a, e, T_CHECK_STEP(s))
1467 #define T_step_assert_ne_i8(s, a, e) \
1468 T_flags_ne_int(a, e, T_CHECK_STEP(s) | T_CHECK_STOP)
1469
1470 #define T_ge_i8(a, e) T_flags_ge_int(a, e, 0)
1471 #define T_assert_ge_i8(a, e) T_flags_ge_int(a, e, T_CHECK_STOP)
1472 #define T_quiet_ge_i8(a, e) T_flags_ge_int(a, e, T_CHECK_QUIET)
1473 #define T_step_ge_i8(s, a, e) T_flags_ge_int(a, e, T_CHECK_STEP(s))
1474 #define T_step_assert_ge_i8(s, a, e) \
1475 T_flags_ge_int(a, e, T_CHECK_STEP(s) | T_CHECK_STOP)
1476
1477 #define T_gt_i8(a, e) T_flags_gt_int(a, e, 0)
1478 #define T_assert_gt_i8(a, e) T_flags_gt_int(a, e, T_CHECK_STOP)
1479 #define T_quiet_gt_i8(a, e) T_flags_gt_int(a, e, T_CHECK_QUIET)
1480 #define T_step_gt_i8(s, a, e) T_flags_gt_int(a, e, T_CHECK_STEP(s))
1481 #define T_step_assert_gt_i8(s, a, e) \
1482 T_flags_gt_int(a, e, T_CHECK_STEP(s) | T_CHECK_STOP)
1483
1484 #define T_le_i8(a, e) T_flags_le_int(a, e, 0)
1485 #define T_assert_le_i8(a, e) T_flags_le_int(a, e, T_CHECK_STOP)
1486 #define T_quiet_le_i8(a, e) T_flags_le_int(a, e, T_CHECK_QUIET)
1487 #define T_step_le_i8(s, a, e) T_flags_le_int(a, e, T_CHECK_STEP(s))
1488 #define T_step_assert_le_i8(s, a, e) \
1489 T_flags_le_int(a, e, T_CHECK_STEP(s) | T_CHECK_STOP)
1490
1491 #define T_lt_i8(a, e) T_flags_lt_int(a, e, 0)
1492 #define T_assert_lt_i8(a, e) T_flags_lt_int(a, e, T_CHECK_STOP)
1493 #define T_quiet_lt_i8(a, e) T_flags_lt_int(a, e, T_CHECK_QUIET)
1494 #define T_step_lt_i8(s, a, e) T_flags_lt_int(a, e, T_CHECK_STEP(s))
1495 #define T_step_assert_lt_i8(s, a, e) \
1496 T_flags_lt_int(a, e, T_CHECK_STEP(s) | T_CHECK_STOP)
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510 #define T_eq_u8(a, e) T_flags_eq_uint(a, e, 0)
1511 #define T_assert_eq_u8(a, e) T_flags_eq_uint(a, e, T_CHECK_STOP)
1512 #define T_quiet_eq_u8(a, e) T_flags_eq_uint(a, e, T_CHECK_QUIET)
1513 #define T_step_eq_u8(s, a, e) T_flags_eq_uint(a, e, T_CHECK_STEP(s))
1514 #define T_step_assert_eq_u8(s, a, e) \
1515 T_flags_eq_uint(a, e, T_CHECK_STEP(s) | T_CHECK_STOP)
1516
1517 #define T_ne_u8(a, e) T_flags_ne_uint(a, e, 0)
1518 #define T_assert_ne_u8(a, e) T_flags_ne_uint(a, e, T_CHECK_STOP)
1519 #define T_quiet_ne_u8(a, e) T_flags_ne_uint(a, e, T_CHECK_QUIET)
1520 #define T_step_ne_u8(s, a, e) T_flags_ne_uint(a, e, T_CHECK_STEP(s))
1521 #define T_step_assert_ne_u8(s, a, e) \
1522 T_flags_ne_uint(a, e, T_CHECK_STEP(s) | T_CHECK_STOP)
1523
1524 #define T_ge_u8(a, e) T_flags_ge_uint(a, e, 0)
1525 #define T_assert_ge_u8(a, e) T_flags_ge_uint(a, e, T_CHECK_STOP)
1526 #define T_quiet_ge_u8(a, e) T_flags_ge_uint(a, e, T_CHECK_QUIET)
1527 #define T_step_ge_u8(s, a, e) T_flags_ge_uint(a, e, T_CHECK_STEP(s))
1528 #define T_step_assert_ge_u8(s, a, e) \
1529 T_flags_ge_uint(a, e, T_CHECK_STEP(s) | T_CHECK_STOP)
1530
1531 #define T_gt_u8(a, e) T_flags_gt_uint(a, e, 0)
1532 #define T_assert_gt_u8(a, e) T_flags_gt_uint(a, e, T_CHECK_STOP)
1533 #define T_quiet_gt_u8(a, e) T_flags_gt_uint(a, e, T_CHECK_QUIET)
1534 #define T_step_gt_u8(s, a, e) T_flags_gt_uint(a, e, T_CHECK_STEP(s))
1535 #define T_step_assert_gt_u8(s, a, e) \
1536 T_flags_gt_uint(a, e, T_CHECK_STEP(s) | T_CHECK_STOP)
1537
1538 #define T_le_u8(a, e) T_flags_le_uint(a, e, 0)
1539 #define T_assert_le_u8(a, e) T_flags_le_uint(a, e, T_CHECK_STOP)
1540 #define T_quiet_le_u8(a, e) T_flags_le_uint(a, e, T_CHECK_QUIET)
1541 #define T_step_le_u8(s, a, e) T_flags_le_uint(a, e, T_CHECK_STEP(s))
1542 #define T_step_assert_le_u8(s, a, e) \
1543 T_flags_le_uint(a, e, T_CHECK_STEP(s) | T_CHECK_STOP)
1544
1545 #define T_lt_u8(a, e) T_flags_lt_uint(a, e, 0)
1546 #define T_assert_lt_u8(a, e) T_flags_lt_uint(a, e, T_CHECK_STOP)
1547 #define T_quiet_lt_u8(a, e) T_flags_lt_uint(a, e, T_CHECK_QUIET)
1548 #define T_step_lt_u8(s, a, e) T_flags_lt_uint(a, e, T_CHECK_STEP(s))
1549 #define T_step_assert_lt_u8(s, a, e) \
1550 T_flags_lt_uint(a, e, T_CHECK_STEP(s) | T_CHECK_STOP)
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564 #define T_eq_i16(a, e) T_flags_eq_int(a, e, 0)
1565 #define T_assert_eq_i16(a, e) T_flags_eq_int(a, e, T_CHECK_STOP)
1566 #define T_quiet_eq_i16(a, e) T_flags_eq_int(a, e, T_CHECK_QUIET)
1567 #define T_step_eq_i16(s, a, e) T_flags_eq_int(a, e, T_CHECK_STEP(s))
1568 #define T_step_assert_eq_i16(s, a, e) \
1569 T_flags_eq_int(a, e, T_CHECK_STEP(s) | T_CHECK_STOP)
1570
1571 #define T_ne_i16(a, e) T_flags_ne_int(a, e, 0)
1572 #define T_assert_ne_i16(a, e) T_flags_ne_int(a, e, T_CHECK_STOP)
1573 #define T_quiet_ne_i16(a, e) T_flags_ne_int(a, e, T_CHECK_QUIET)
1574 #define T_step_ne_i16(s, a, e) T_flags_ne_int(a, e, T_CHECK_STEP(s))
1575 #define T_step_assert_ne_i16(s, a, e) \
1576 T_flags_ne_int(a, e, T_CHECK_STEP(s) | T_CHECK_STOP)
1577
1578 #define T_ge_i16(a, e) T_flags_ge_int(a, e, 0)
1579 #define T_assert_ge_i16(a, e) T_flags_ge_int(a, e, T_CHECK_STOP)
1580 #define T_quiet_ge_i16(a, e) T_flags_ge_int(a, e, T_CHECK_QUIET)
1581 #define T_step_ge_i16(s, a, e) T_flags_ge_int(a, e, T_CHECK_STEP(s))
1582 #define T_step_assert_ge_i16(s, a, e) \
1583 T_flags_ge_int(a, e, T_CHECK_STEP(s) | T_CHECK_STOP)
1584
1585 #define T_gt_i16(a, e) T_flags_gt_int(a, e, 0)
1586 #define T_assert_gt_i16(a, e) T_flags_gt_int(a, e, T_CHECK_STOP)
1587 #define T_quiet_gt_i16(a, e) T_flags_gt_int(a, e, T_CHECK_QUIET)
1588 #define T_step_gt_i16(s, a, e) T_flags_gt_int(a, e, T_CHECK_STEP(s))
1589 #define T_step_assert_gt_i16(s, a, e) \
1590 T_flags_gt_int(a, e, T_CHECK_STEP(s) | T_CHECK_STOP)
1591
1592 #define T_le_i16(a, e) T_flags_le_int(a, e, 0)
1593 #define T_assert_le_i16(a, e) T_flags_le_int(a, e, T_CHECK_STOP)
1594 #define T_quiet_le_i16(a, e) T_flags_le_int(a, e, T_CHECK_QUIET)
1595 #define T_step_le_i16(s, a, e) T_flags_le_int(a, e, T_CHECK_STEP(s))
1596 #define T_step_assert_le_i16(s, a, e) \
1597 T_flags_le_int(a, e, T_CHECK_STEP(s) | T_CHECK_STOP)
1598
1599 #define T_lt_i16(a, e) T_flags_lt_int(a, e, 0)
1600 #define T_assert_lt_i16(a, e) T_flags_lt_int(a, e, T_CHECK_STOP)
1601 #define T_quiet_lt_i16(a, e) T_flags_lt_int(a, e, T_CHECK_QUIET)
1602 #define T_step_lt_i16(s, a, e) T_flags_lt_int(a, e, T_CHECK_STEP(s))
1603 #define T_step_assert_lt_i16(s, a, e) \
1604 T_flags_lt_int(a, e, T_CHECK_STEP(s) | T_CHECK_STOP)
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618 #define T_eq_u16(a, e) T_flags_eq_uint(a, e, 0)
1619 #define T_assert_eq_u16(a, e) T_flags_eq_uint(a, e, T_CHECK_STOP)
1620 #define T_quiet_eq_u16(a, e) T_flags_eq_uint(a, e, T_CHECK_QUIET)
1621 #define T_step_eq_u16(s, a, e) T_flags_eq_uint(a, e, T_CHECK_STEP(s))
1622 #define T_step_assert_eq_u16(s, a, e) \
1623 T_flags_eq_uint(a, e, T_CHECK_STEP(s) | T_CHECK_STOP)
1624
1625 #define T_ne_u16(a, e) T_flags_ne_uint(a, e, 0)
1626 #define T_assert_ne_u16(a, e) T_flags_ne_uint(a, e, T_CHECK_STOP)
1627 #define T_quiet_ne_u16(a, e) T_flags_ne_uint(a, e, T_CHECK_QUIET)
1628 #define T_step_ne_u16(s, a, e) T_flags_ne_uint(a, e, T_CHECK_STEP(s))
1629 #define T_step_assert_ne_u16(s, a, e) \
1630 T_flags_ne_uint(a, e, T_CHECK_STEP(s) | T_CHECK_STOP)
1631
1632 #define T_ge_u16(a, e) T_flags_ge_uint(a, e, 0)
1633 #define T_assert_ge_u16(a, e) T_flags_ge_uint(a, e, T_CHECK_STOP)
1634 #define T_quiet_ge_u16(a, e) T_flags_ge_uint(a, e, T_CHECK_QUIET)
1635 #define T_step_ge_u16(s, a, e) T_flags_ge_uint(a, e, T_CHECK_STEP(s))
1636 #define T_step_assert_ge_u16(s, a, e) \
1637 T_flags_ge_uint(a, e, T_CHECK_STEP(s) | T_CHECK_STOP)
1638
1639 #define T_gt_u16(a, e) T_flags_gt_uint(a, e, 0)
1640 #define T_assert_gt_u16(a, e) T_flags_gt_uint(a, e, T_CHECK_STOP)
1641 #define T_quiet_gt_u16(a, e) T_flags_gt_uint(a, e, T_CHECK_QUIET)
1642 #define T_step_gt_u16(s, a, e) T_flags_gt_uint(a, e, T_CHECK_STEP(s))
1643 #define T_step_assert_gt_u16(s, a, e) \
1644 T_flags_gt_uint(a, e, T_CHECK_STEP(s) | T_CHECK_STOP)
1645
1646 #define T_le_u16(a, e) T_flags_le_uint(a, e, 0)
1647 #define T_assert_le_u16(a, e) T_flags_le_uint(a, e, T_CHECK_STOP)
1648 #define T_quiet_le_u16(a, e) T_flags_le_uint(a, e, T_CHECK_QUIET)
1649 #define T_step_le_u16(s, a, e) T_flags_le_uint(a, e, T_CHECK_STEP(s))
1650 #define T_step_assert_le_u16(s, a, e) \
1651 T_flags_le_uint(a, e, T_CHECK_STEP(s) | T_CHECK_STOP)
1652
1653 #define T_lt_u16(a, e) T_flags_lt_uint(a, e, 0)
1654 #define T_assert_lt_u16(a, e) T_flags_lt_uint(a, e, T_CHECK_STOP)
1655 #define T_quiet_lt_u16(a, e) T_flags_lt_uint(a, e, T_CHECK_QUIET)
1656 #define T_step_lt_u16(s, a, e) T_flags_lt_uint(a, e, T_CHECK_STEP(s))
1657 #define T_step_assert_lt_u16(s, a, e) \
1658 T_flags_lt_uint(a, e, T_CHECK_STEP(s) | T_CHECK_STOP)
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672 #define T_eq_i32(a, e) T_flags_eq_long(a, e, 0)
1673 #define T_assert_eq_i32(a, e) T_flags_eq_long(a, e, T_CHECK_STOP)
1674 #define T_quiet_eq_i32(a, e) T_flags_eq_long(a, e, T_CHECK_QUIET)
1675 #define T_step_eq_i32(s, a, e) T_flags_eq_long(a, e, T_CHECK_STEP(s))
1676 #define T_step_assert_eq_i32(s, a, e) \
1677 T_flags_eq_long(a, e, T_CHECK_STEP(s) | T_CHECK_STOP)
1678
1679 #define T_ne_i32(a, e) T_flags_ne_long(a, e, 0)
1680 #define T_assert_ne_i32(a, e) T_flags_ne_long(a, e, T_CHECK_STOP)
1681 #define T_quiet_ne_i32(a, e) T_flags_ne_long(a, e, T_CHECK_QUIET)
1682 #define T_step_ne_i32(s, a, e) T_flags_ne_long(a, e, T_CHECK_STEP(s))
1683 #define T_step_assert_ne_i32(s, a, e) \
1684 T_flags_ne_long(a, e, T_CHECK_STEP(s) | T_CHECK_STOP)
1685
1686 #define T_ge_i32(a, e) T_flags_ge_long(a, e, 0)
1687 #define T_assert_ge_i32(a, e) T_flags_ge_long(a, e, T_CHECK_STOP)
1688 #define T_quiet_ge_i32(a, e) T_flags_ge_long(a, e, T_CHECK_QUIET)
1689 #define T_step_ge_i32(s, a, e) T_flags_ge_long(a, e, T_CHECK_STEP(s))
1690 #define T_step_assert_ge_i32(s, a, e) \
1691 T_flags_ge_long(a, e, T_CHECK_STEP(s) | T_CHECK_STOP)
1692
1693 #define T_gt_i32(a, e) T_flags_gt_long(a, e, 0)
1694 #define T_assert_gt_i32(a, e) T_flags_gt_long(a, e, T_CHECK_STOP)
1695 #define T_quiet_gt_i32(a, e) T_flags_gt_long(a, e, T_CHECK_QUIET)
1696 #define T_step_gt_i32(s, a, e) T_flags_gt_long(a, e, T_CHECK_STEP(s))
1697 #define T_step_assert_gt_i32(s, a, e) \
1698 T_flags_gt_long(a, e, T_CHECK_STEP(s) | T_CHECK_STOP)
1699
1700 #define T_le_i32(a, e) T_flags_le_long(a, e, 0)
1701 #define T_assert_le_i32(a, e) T_flags_le_long(a, e, T_CHECK_STOP)
1702 #define T_quiet_le_i32(a, e) T_flags_le_long(a, e, T_CHECK_QUIET)
1703 #define T_step_le_i32(s, a, e) T_flags_le_long(a, e, T_CHECK_STEP(s))
1704 #define T_step_assert_le_i32(s, a, e) \
1705 T_flags_le_long(a, e, T_CHECK_STEP(s) | T_CHECK_STOP)
1706
1707 #define T_lt_i32(a, e) T_flags_lt_long(a, e, 0)
1708 #define T_assert_lt_i32(a, e) T_flags_lt_long(a, e, T_CHECK_STOP)
1709 #define T_quiet_lt_i32(a, e) T_flags_lt_long(a, e, T_CHECK_QUIET)
1710 #define T_step_lt_i32(s, a, e) T_flags_lt_long(a, e, T_CHECK_STEP(s))
1711 #define T_step_assert_lt_i32(s, a, e) \
1712 T_flags_lt_long(a, e, T_CHECK_STEP(s) | T_CHECK_STOP)
1713
1714
1715
1716
1717
1718
1719
1720
1721
1722
1723
1724
1725
1726 #define T_eq_u32(a, e) T_flags_eq_ulong(a, e, 0)
1727 #define T_assert_eq_u32(a, e) T_flags_eq_ulong(a, e, T_CHECK_STOP)
1728 #define T_quiet_eq_u32(a, e) T_flags_eq_ulong(a, e, T_CHECK_QUIET)
1729 #define T_step_eq_u32(s, a, e) T_flags_eq_ulong(a, e, T_CHECK_STEP(s))
1730 #define T_step_assert_eq_u32(s, a, e) \
1731 T_flags_eq_ulong(a, e, T_CHECK_STEP(s) | T_CHECK_STOP)
1732
1733 #define T_ne_u32(a, e) T_flags_ne_ulong(a, e, 0)
1734 #define T_assert_ne_u32(a, e) T_flags_ne_ulong(a, e, T_CHECK_STOP)
1735 #define T_quiet_ne_u32(a, e) T_flags_ne_ulong(a, e, T_CHECK_QUIET)
1736 #define T_step_ne_u32(s, a, e) T_flags_ne_ulong(a, e, T_CHECK_STEP(s))
1737 #define T_step_assert_ne_u32(s, a, e) \
1738 T_flags_ne_ulong(a, e, T_CHECK_STEP(s) | T_CHECK_STOP)
1739
1740 #define T_ge_u32(a, e) T_flags_ge_ulong(a, e, 0)
1741 #define T_assert_ge_u32(a, e) T_flags_ge_ulong(a, e, T_CHECK_STOP)
1742 #define T_quiet_ge_u32(a, e) T_flags_ge_ulong(a, e, T_CHECK_QUIET)
1743 #define T_step_ge_u32(s, a, e) T_flags_ge_ulong(a, e, T_CHECK_STEP(s))
1744 #define T_step_assert_ge_u32(s, a, e) \
1745 T_flags_ge_ulong(a, e, T_CHECK_STEP(s) | T_CHECK_STOP)
1746
1747 #define T_gt_u32(a, e) T_flags_gt_ulong(a, e, 0)
1748 #define T_assert_gt_u32(a, e) T_flags_gt_ulong(a, e, T_CHECK_STOP)
1749 #define T_quiet_gt_u32(a, e) T_flags_gt_ulong(a, e, T_CHECK_QUIET)
1750 #define T_step_gt_u32(s, a, e) T_flags_gt_ulong(a, e, T_CHECK_STEP(s))
1751 #define T_step_assert_gt_u32(s, a, e) \
1752 T_flags_gt_ulong(a, e, T_CHECK_STEP(s) | T_CHECK_STOP)
1753
1754 #define T_le_u32(a, e) T_flags_le_ulong(a, e, 0)
1755 #define T_assert_le_u32(a, e) T_flags_le_ulong(a, e, T_CHECK_STOP)
1756 #define T_quiet_le_u32(a, e) T_flags_le_ulong(a, e, T_CHECK_QUIET)
1757 #define T_step_le_u32(s, a, e) T_flags_le_ulong(a, e, T_CHECK_STEP(s))
1758 #define T_step_assert_le_u32(s, a, e) \
1759 T_flags_le_ulong(a, e, T_CHECK_STEP(s) | T_CHECK_STOP)
1760
1761 #define T_lt_u32(a, e) T_flags_lt_ulong(a, e, 0)
1762 #define T_assert_lt_u32(a, e) T_flags_lt_ulong(a, e, T_CHECK_STOP)
1763 #define T_quiet_lt_u32(a, e) T_flags_lt_ulong(a, e, T_CHECK_QUIET)
1764 #define T_step_lt_u32(s, a, e) T_flags_lt_ulong(a, e, T_CHECK_STEP(s))
1765 #define T_step_assert_lt_u32(s, a, e) \
1766 T_flags_lt_ulong(a, e, T_CHECK_STEP(s) | T_CHECK_STOP)
1767
1768
1769
1770
1771
1772
1773
1774
1775
1776
1777
1778
1779
1780 #define T_eq_i64(a, e) T_flags_eq_ll(a, e, 0)
1781 #define T_assert_eq_i64(a, e) T_flags_eq_ll(a, e, T_CHECK_STOP)
1782 #define T_quiet_eq_i64(a, e) T_flags_eq_ll(a, e, T_CHECK_QUIET)
1783 #define T_step_eq_i64(s, a, e) T_flags_eq_ll(a, e, T_CHECK_STEP(s))
1784 #define T_step_assert_eq_i64(s, a, e) \
1785 T_flags_eq_ll(a, e, T_CHECK_STEP(s) | T_CHECK_STOP)
1786
1787 #define T_ne_i64(a, e) T_flags_ne_ll(a, e, 0)
1788 #define T_assert_ne_i64(a, e) T_flags_ne_ll(a, e, T_CHECK_STOP)
1789 #define T_quiet_ne_i64(a, e) T_flags_ne_ll(a, e, T_CHECK_QUIET)
1790 #define T_step_ne_i64(s, a, e) T_flags_ne_ll(a, e, T_CHECK_STEP(s))
1791 #define T_step_assert_ne_i64(s, a, e) \
1792 T_flags_ne_ll(a, e, T_CHECK_STEP(s) | T_CHECK_STOP)
1793
1794 #define T_ge_i64(a, e) T_flags_ge_ll(a, e, 0)
1795 #define T_assert_ge_i64(a, e) T_flags_ge_ll(a, e, T_CHECK_STOP)
1796 #define T_quiet_ge_i64(a, e) T_flags_ge_ll(a, e, T_CHECK_QUIET)
1797 #define T_step_ge_i64(s, a, e) T_flags_ge_ll(a, e, T_CHECK_STEP(s))
1798 #define T_step_assert_ge_i64(s, a, e) \
1799 T_flags_ge_ll(a, e, T_CHECK_STEP(s) | T_CHECK_STOP)
1800
1801 #define T_gt_i64(a, e) T_flags_gt_ll(a, e, 0)
1802 #define T_assert_gt_i64(a, e) T_flags_gt_ll(a, e, T_CHECK_STOP)
1803 #define T_quiet_gt_i64(a, e) T_flags_gt_ll(a, e, T_CHECK_QUIET)
1804 #define T_step_gt_i64(s, a, e) T_flags_gt_ll(a, e, T_CHECK_STEP(s))
1805 #define T_step_assert_gt_i64(s, a, e) \
1806 T_flags_gt_ll(a, e, T_CHECK_STEP(s) | T_CHECK_STOP)
1807
1808 #define T_le_i64(a, e) T_flags_le_ll(a, e, 0)
1809 #define T_assert_le_i64(a, e) T_flags_le_ll(a, e, T_CHECK_STOP)
1810 #define T_quiet_le_i64(a, e) T_flags_le_ll(a, e, T_CHECK_QUIET)
1811 #define T_step_le_i64(s, a, e) T_flags_le_ll(a, e, T_CHECK_STEP(s))
1812 #define T_step_assert_le_i64(s, a, e) \
1813 T_flags_le_ll(a, e, T_CHECK_STEP(s) | T_CHECK_STOP)
1814
1815 #define T_lt_i64(a, e) T_flags_lt_ll(a, e, 0)
1816 #define T_assert_lt_i64(a, e) T_flags_lt_ll(a, e, T_CHECK_STOP)
1817 #define T_quiet_lt_i64(a, e) T_flags_lt_ll(a, e, T_CHECK_QUIET)
1818 #define T_step_lt_i64(s, a, e) T_flags_lt_ll(a, e, T_CHECK_STEP(s))
1819 #define T_step_assert_lt_i64(s, a, e) \
1820 T_flags_lt_ll(a, e, T_CHECK_STEP(s) | T_CHECK_STOP)
1821
1822
1823
1824
1825
1826
1827
1828
1829
1830
1831
1832
1833
1834 #define T_eq_u64(a, e) T_flags_eq_ull(a, e, 0)
1835 #define T_assert_eq_u64(a, e) T_flags_eq_ull(a, e, T_CHECK_STOP)
1836 #define T_quiet_eq_u64(a, e) T_flags_eq_ull(a, e, T_CHECK_QUIET)
1837 #define T_step_eq_u64(s, a, e) T_flags_eq_ull(a, e, T_CHECK_STEP(s))
1838 #define T_step_assert_eq_u64(s, a, e) \
1839 T_flags_eq_ull(a, e, T_CHECK_STEP(s) | T_CHECK_STOP)
1840
1841 #define T_ne_u64(a, e) T_flags_ne_ull(a, e, 0)
1842 #define T_assert_ne_u64(a, e) T_flags_ne_ull(a, e, T_CHECK_STOP)
1843 #define T_quiet_ne_u64(a, e) T_flags_ne_ull(a, e, T_CHECK_QUIET)
1844 #define T_step_ne_u64(s, a, e) T_flags_ne_ull(a, e, T_CHECK_STEP(s))
1845 #define T_step_assert_ne_u64(s, a, e) \
1846 T_flags_ne_ull(a, e, T_CHECK_STEP(s) | T_CHECK_STOP)
1847
1848 #define T_ge_u64(a, e) T_flags_ge_ull(a, e, 0)
1849 #define T_assert_ge_u64(a, e) T_flags_ge_ull(a, e, T_CHECK_STOP)
1850 #define T_quiet_ge_u64(a, e) T_flags_ge_ull(a, e, T_CHECK_QUIET)
1851 #define T_step_ge_u64(s, a, e) T_flags_ge_ull(a, e, T_CHECK_STEP(s))
1852 #define T_step_assert_ge_u64(s, a, e) \
1853 T_flags_ge_ull(a, e, T_CHECK_STEP(s) | T_CHECK_STOP)
1854
1855 #define T_gt_u64(a, e) T_flags_gt_ull(a, e, 0)
1856 #define T_assert_gt_u64(a, e) T_flags_gt_ull(a, e, T_CHECK_STOP)
1857 #define T_quiet_gt_u64(a, e) T_flags_gt_ull(a, e, T_CHECK_QUIET)
1858 #define T_step_gt_u64(s, a, e) T_flags_gt_ull(a, e, T_CHECK_STEP(s))
1859 #define T_step_assert_gt_u64(s, a, e) \
1860 T_flags_gt_ull(a, e, T_CHECK_STEP(s) | T_CHECK_STOP)
1861
1862 #define T_le_u64(a, e) T_flags_le_ull(a, e, 0)
1863 #define T_assert_le_u64(a, e) T_flags_le_ull(a, e, T_CHECK_STOP)
1864 #define T_quiet_le_u64(a, e) T_flags_le_ull(a, e, T_CHECK_QUIET)
1865 #define T_step_le_u64(s, a, e) T_flags_le_ull(a, e, T_CHECK_STEP(s))
1866 #define T_step_assert_le_u64(s, a, e) \
1867 T_flags_le_ull(a, e, T_CHECK_STEP(s) | T_CHECK_STOP)
1868
1869 #define T_lt_u64(a, e) T_flags_lt_ull(a, e, 0)
1870 #define T_assert_lt_u64(a, e) T_flags_lt_ull(a, e, T_CHECK_STOP)
1871 #define T_quiet_lt_u64(a, e) T_flags_lt_ull(a, e, T_CHECK_QUIET)
1872 #define T_step_lt_u64(s, a, e) T_flags_lt_ull(a, e, T_CHECK_STEP(s))
1873 #define T_step_assert_lt_u64(s, a, e) \
1874 T_flags_lt_ull(a, e, T_CHECK_STEP(s) | T_CHECK_STOP)
1875
1876
1877
1878
1879
1880
1881
1882
1883
1884
1885
1886
1887
1888 #define T_eq_iptr(a, e) T_flags_eq_long(a, e, 0)
1889 #define T_assert_eq_iptr(a, e) T_flags_eq_long(a, e, T_CHECK_STOP)
1890 #define T_quiet_eq_iptr(a, e) T_flags_eq_long(a, e, T_CHECK_QUIET)
1891 #define T_step_eq_iptr(s, a, e) T_flags_eq_long(a, e, T_CHECK_STEP(s))
1892 #define T_step_assert_eq_iptr(s, a, e) \
1893 T_flags_eq_long(a, e, T_CHECK_STEP(s) | T_CHECK_STOP)
1894
1895 #define T_ne_iptr(a, e) T_flags_ne_long(a, e, 0)
1896 #define T_assert_ne_iptr(a, e) T_flags_ne_long(a, e, T_CHECK_STOP)
1897 #define T_quiet_ne_iptr(a, e) T_flags_ne_long(a, e, T_CHECK_QUIET)
1898 #define T_step_ne_iptr(s, a, e) T_flags_ne_long(a, e, T_CHECK_STEP(s))
1899 #define T_step_assert_ne_iptr(s, a, e) \
1900 T_flags_ne_long(a, e, T_CHECK_STEP(s) | T_CHECK_STOP)
1901
1902 #define T_ge_iptr(a, e) T_flags_ge_long(a, e, 0)
1903 #define T_assert_ge_iptr(a, e) T_flags_ge_long(a, e, T_CHECK_STOP)
1904 #define T_quiet_ge_iptr(a, e) T_flags_ge_long(a, e, T_CHECK_QUIET)
1905 #define T_step_ge_iptr(s, a, e) T_flags_ge_long(a, e, T_CHECK_STEP(s))
1906 #define T_step_assert_ge_iptr(s, a, e) \
1907 T_flags_ge_long(a, e, T_CHECK_STEP(s) | T_CHECK_STOP)
1908
1909 #define T_gt_iptr(a, e) T_flags_gt_long(a, e, 0)
1910 #define T_assert_gt_iptr(a, e) T_flags_gt_long(a, e, T_CHECK_STOP)
1911 #define T_quiet_gt_iptr(a, e) T_flags_gt_long(a, e, T_CHECK_QUIET)
1912 #define T_step_gt_iptr(s, a, e) T_flags_gt_long(a, e, T_CHECK_STEP(s))
1913 #define T_step_assert_gt_iptr(s, a, e) \
1914 T_flags_gt_long(a, e, T_CHECK_STEP(s) | T_CHECK_STOP)
1915
1916 #define T_le_iptr(a, e) T_flags_le_long(a, e, 0)
1917 #define T_assert_le_iptr(a, e) T_flags_le_long(a, e, T_CHECK_STOP)
1918 #define T_quiet_le_iptr(a, e) T_flags_le_long(a, e, T_CHECK_QUIET)
1919 #define T_step_le_iptr(s, a, e) T_flags_le_long(a, e, T_CHECK_STEP(s))
1920 #define T_step_assert_le_iptr(s, a, e) \
1921 T_flags_le_long(a, e, T_CHECK_STEP(s) | T_CHECK_STOP)
1922
1923 #define T_lt_iptr(a, e) T_flags_lt_long(a, e, 0)
1924 #define T_assert_lt_iptr(a, e) T_flags_lt_long(a, e, T_CHECK_STOP)
1925 #define T_quiet_lt_iptr(a, e) T_flags_lt_long(a, e, T_CHECK_QUIET)
1926 #define T_step_lt_iptr(s, a, e) T_flags_lt_long(a, e, T_CHECK_STEP(s))
1927 #define T_step_assert_lt_iptr(s, a, e) \
1928 T_flags_lt_long(a, e, T_CHECK_STEP(s) | T_CHECK_STOP)
1929
1930
1931
1932
1933
1934
1935
1936
1937
1938
1939
1940
1941
1942 #define T_eq_uptr(a, e) T_flags_eq_ulong(a, e, 0)
1943 #define T_assert_eq_uptr(a, e) T_flags_eq_ulong(a, e, T_CHECK_STOP)
1944 #define T_quiet_eq_uptr(a, e) T_flags_eq_ulong(a, e, T_CHECK_QUIET)
1945 #define T_step_eq_uptr(s, a, e) T_flags_eq_ulong(a, e, T_CHECK_STEP(s))
1946 #define T_step_assert_eq_uptr(s, a, e) \
1947 T_flags_eq_ulong(a, e, T_CHECK_STEP(s) | T_CHECK_STOP)
1948
1949 #define T_ne_uptr(a, e) T_flags_ne_ulong(a, e, 0)
1950 #define T_assert_ne_uptr(a, e) T_flags_ne_ulong(a, e, T_CHECK_STOP)
1951 #define T_quiet_ne_uptr(a, e) T_flags_ne_ulong(a, e, T_CHECK_QUIET)
1952 #define T_step_ne_uptr(s, a, e) T_flags_ne_ulong(a, e, T_CHECK_STEP(s))
1953 #define T_step_assert_ne_uptr(s, a, e) \
1954 T_flags_ne_ulong(a, e, T_CHECK_STEP(s) | T_CHECK_STOP)
1955
1956 #define T_ge_uptr(a, e) T_flags_ge_ulong(a, e, 0)
1957 #define T_assert_ge_uptr(a, e) T_flags_ge_ulong(a, e, T_CHECK_STOP)
1958 #define T_quiet_ge_uptr(a, e) T_flags_ge_ulong(a, e, T_CHECK_QUIET)
1959 #define T_step_ge_uptr(s, a, e) T_flags_ge_ulong(a, e, T_CHECK_STEP(s))
1960 #define T_step_assert_ge_uptr(s, a, e) \
1961 T_flags_ge_ulong(a, e, T_CHECK_STEP(s) | T_CHECK_STOP)
1962
1963 #define T_gt_uptr(a, e) T_flags_gt_ulong(a, e, 0)
1964 #define T_assert_gt_uptr(a, e) T_flags_gt_ulong(a, e, T_CHECK_STOP)
1965 #define T_quiet_gt_uptr(a, e) T_flags_gt_ulong(a, e, T_CHECK_QUIET)
1966 #define T_step_gt_uptr(s, a, e) T_flags_gt_ulong(a, e, T_CHECK_STEP(s))
1967 #define T_step_assert_gt_uptr(s, a, e) \
1968 T_flags_gt_ulong(a, e, T_CHECK_STEP(s) | T_CHECK_STOP)
1969
1970 #define T_le_uptr(a, e) T_flags_le_ulong(a, e, 0)
1971 #define T_assert_le_uptr(a, e) T_flags_le_ulong(a, e, T_CHECK_STOP)
1972 #define T_quiet_le_uptr(a, e) T_flags_le_ulong(a, e, T_CHECK_QUIET)
1973 #define T_step_le_uptr(s, a, e) T_flags_le_ulong(a, e, T_CHECK_STEP(s))
1974 #define T_step_assert_le_uptr(s, a, e) \
1975 T_flags_le_ulong(a, e, T_CHECK_STEP(s) | T_CHECK_STOP)
1976
1977 #define T_lt_uptr(a, e) T_flags_lt_ulong(a, e, 0)
1978 #define T_assert_lt_uptr(a, e) T_flags_lt_ulong(a, e, T_CHECK_STOP)
1979 #define T_quiet_lt_uptr(a, e) T_flags_lt_ulong(a, e, T_CHECK_QUIET)
1980 #define T_step_lt_uptr(s, a, e) T_flags_lt_ulong(a, e, T_CHECK_STEP(s))
1981 #define T_step_assert_lt_uptr(s, a, e) \
1982 T_flags_lt_ulong(a, e, T_CHECK_STEP(s) | T_CHECK_STOP)
1983
1984
1985
1986
1987
1988
1989
1990
1991
1992
1993
1994
1995
1996 #define T_eq_ssz(a, e) T_flags_eq_long(a, e, 0)
1997 #define T_assert_eq_ssz(a, e) T_flags_eq_long(a, e, T_CHECK_STOP)
1998 #define T_quiet_eq_ssz(a, e) T_flags_eq_long(a, e, T_CHECK_QUIET)
1999 #define T_step_eq_ssz(s, a, e) T_flags_eq_long(a, e, T_CHECK_STEP(s))
2000 #define T_step_assert_eq_ssz(s, a, e) \
2001 T_flags_eq_long(a, e, T_CHECK_STEP(s) | T_CHECK_STOP)
2002
2003 #define T_ne_ssz(a, e) T_flags_ne_long(a, e, 0)
2004 #define T_assert_ne_ssz(a, e) T_flags_ne_long(a, e, T_CHECK_STOP)
2005 #define T_quiet_ne_ssz(a, e) T_flags_ne_long(a, e, T_CHECK_QUIET)
2006 #define T_step_ne_ssz(s, a, e) T_flags_ne_long(a, e, T_CHECK_STEP(s))
2007 #define T_step_assert_ne_ssz(s, a, e) \
2008 T_flags_ne_long(a, e, T_CHECK_STEP(s) | T_CHECK_STOP)
2009
2010 #define T_ge_ssz(a, e) T_flags_ge_long(a, e, 0)
2011 #define T_assert_ge_ssz(a, e) T_flags_ge_long(a, e, T_CHECK_STOP)
2012 #define T_quiet_ge_ssz(a, e) T_flags_ge_long(a, e, T_CHECK_QUIET)
2013 #define T_step_ge_ssz(s, a, e) T_flags_ge_long(a, e, T_CHECK_STEP(s))
2014 #define T_step_assert_ge_ssz(s, a, e) \
2015 T_flags_ge_long(a, e, T_CHECK_STEP(s) | T_CHECK_STOP)
2016
2017 #define T_gt_ssz(a, e) T_flags_gt_long(a, e, 0)
2018 #define T_assert_gt_ssz(a, e) T_flags_gt_long(a, e, T_CHECK_STOP)
2019 #define T_quiet_gt_ssz(a, e) T_flags_gt_long(a, e, T_CHECK_QUIET)
2020 #define T_step_gt_ssz(s, a, e) T_flags_gt_long(a, e, T_CHECK_STEP(s))
2021 #define T_step_assert_gt_ssz(s, a, e) \
2022 T_flags_gt_long(a, e, T_CHECK_STEP(s) | T_CHECK_STOP)
2023
2024 #define T_le_ssz(a, e) T_flags_le_long(a, e, 0)
2025 #define T_assert_le_ssz(a, e) T_flags_le_long(a, e, T_CHECK_STOP)
2026 #define T_quiet_le_ssz(a, e) T_flags_le_long(a, e, T_CHECK_QUIET)
2027 #define T_step_le_ssz(s, a, e) T_flags_le_long(a, e, T_CHECK_STEP(s))
2028 #define T_step_assert_le_ssz(s, a, e) \
2029 T_flags_le_long(a, e, T_CHECK_STEP(s) | T_CHECK_STOP)
2030
2031 #define T_lt_ssz(a, e) T_flags_lt_long(a, e, 0)
2032 #define T_assert_lt_ssz(a, e) T_flags_lt_long(a, e, T_CHECK_STOP)
2033 #define T_quiet_lt_ssz(a, e) T_flags_lt_long(a, e, T_CHECK_QUIET)
2034 #define T_step_lt_ssz(s, a, e) T_flags_lt_long(a, e, T_CHECK_STEP(s))
2035 #define T_step_assert_lt_ssz(s, a, e) \
2036 T_flags_lt_long(a, e, T_CHECK_STEP(s) | T_CHECK_STOP)
2037
2038
2039
2040
2041
2042
2043
2044
2045
2046
2047
2048
2049
2050 #define T_eq_sz(a, e) T_flags_eq_ulong(a, e, 0)
2051 #define T_assert_eq_sz(a, e) T_flags_eq_ulong(a, e, T_CHECK_STOP)
2052 #define T_quiet_eq_sz(a, e) T_flags_eq_ulong(a, e, T_CHECK_QUIET)
2053 #define T_step_eq_sz(s, a, e) T_flags_eq_ulong(a, e, T_CHECK_STEP(s))
2054 #define T_step_assert_eq_sz(s, a, e) \
2055 T_flags_eq_ulong(a, e, T_CHECK_STEP(s) | T_CHECK_STOP)
2056
2057 #define T_ne_sz(a, e) T_flags_ne_ulong(a, e, 0)
2058 #define T_assert_ne_sz(a, e) T_flags_ne_ulong(a, e, T_CHECK_STOP)
2059 #define T_quiet_ne_sz(a, e) T_flags_ne_ulong(a, e, T_CHECK_QUIET)
2060 #define T_step_ne_sz(s, a, e) T_flags_ne_ulong(a, e, T_CHECK_STEP(s))
2061 #define T_step_assert_ne_sz(s, a, e) \
2062 T_flags_ne_ulong(a, e, T_CHECK_STEP(s) | T_CHECK_STOP)
2063
2064 #define T_ge_sz(a, e) T_flags_ge_ulong(a, e, 0)
2065 #define T_assert_ge_sz(a, e) T_flags_ge_ulong(a, e, T_CHECK_STOP)
2066 #define T_quiet_ge_sz(a, e) T_flags_ge_ulong(a, e, T_CHECK_QUIET)
2067 #define T_step_ge_sz(s, a, e) T_flags_ge_ulong(a, e, T_CHECK_STEP(s))
2068 #define T_step_assert_ge_sz(s, a, e) \
2069 T_flags_ge_ulong(a, e, T_CHECK_STEP(s) | T_CHECK_STOP)
2070
2071 #define T_gt_sz(a, e) T_flags_gt_ulong(a, e, 0)
2072 #define T_assert_gt_sz(a, e) T_flags_gt_ulong(a, e, T_CHECK_STOP)
2073 #define T_quiet_gt_sz(a, e) T_flags_gt_ulong(a, e, T_CHECK_QUIET)
2074 #define T_step_gt_sz(s, a, e) T_flags_gt_ulong(a, e, T_CHECK_STEP(s))
2075 #define T_step_assert_gt_sz(s, a, e) \
2076 T_flags_gt_ulong(a, e, T_CHECK_STEP(s) | T_CHECK_STOP)
2077
2078 #define T_le_sz(a, e) T_flags_le_ulong(a, e, 0)
2079 #define T_assert_le_sz(a, e) T_flags_le_ulong(a, e, T_CHECK_STOP)
2080 #define T_quiet_le_sz(a, e) T_flags_le_ulong(a, e, T_CHECK_QUIET)
2081 #define T_step_le_sz(s, a, e) T_flags_le_ulong(a, e, T_CHECK_STEP(s))
2082 #define T_step_assert_le_sz(s, a, e) \
2083 T_flags_le_ulong(a, e, T_CHECK_STEP(s) | T_CHECK_STOP)
2084
2085 #define T_lt_sz(a, e) T_flags_lt_ulong(a, e, 0)
2086 #define T_assert_lt_sz(a, e) T_flags_lt_ulong(a, e, T_CHECK_STOP)
2087 #define T_quiet_lt_sz(a, e) T_flags_lt_ulong(a, e, T_CHECK_QUIET)
2088 #define T_step_lt_sz(s, a, e) T_flags_lt_ulong(a, e, T_CHECK_STEP(s))
2089 #define T_step_assert_lt_sz(s, a, e) \
2090 T_flags_lt_ulong(a, e, T_CHECK_STEP(s) | T_CHECK_STOP)
2091
2092
2093
2094
2095
2096
2097
2098
2099
2100
2101
2102
2103
2104 const char *T_strerror(int);
2105
2106 #define T_eno(a, e) T_flags_eno(a, e, 0)
2107 #define T_assert_eno(a, e) T_flags_eno(a, e, T_CHECK_STOP)
2108 #define T_quiet_eno(a, e) T_flags_eno(a, e, T_CHECK_QUIET)
2109 #define T_step_eno(s, a, e) T_flags_eno(a, e, T_CHECK_STEP(s))
2110 #define T_step_assert_eno(s, a, e) \
2111 T_flags_eno(a, e, T_CHECK_STEP(s) | T_CHECK_STOP)
2112
2113 #define T_eno_success(a) T_flags_eno_success(a, 0)
2114 #define T_assert_eno_success(a) T_flags_eno_success(a, T_CHECK_STOP)
2115 #define T_quiet_eno_success(a) T_flags_eno_success(a, T_CHECK_QUIET)
2116 #define T_step_eno_success(s, a) T_flags_eno_success(a, T_CHECK_STEP(s))
2117 #define T_step_assert_eno_success(s, a) \
2118 T_flags_eno_success(a, T_CHECK_STEP(s) | T_CHECK_STOP)
2119
2120 #define T_psx_error(a, eno) T_flags_psx_error(a, eno, 0)
2121 #define T_assert_psx_error(a, eno) T_flags_psx_error(a, eno, T_CHECK_STOP)
2122 #define T_quiet_psx_error(a, eno) T_flags_psx_error(a, eno, T_CHECK_QUIET)
2123 #define T_step_psx_error(s, a, eno) T_flags_psx_error(a, eno, T_CHECK_STEP(s))
2124 #define T_step_assert_psx_error(s, a, eno) \
2125 T_flags_psx_error(a, eno, T_CHECK_STEP(s) | T_CHECK_STOP)
2126
2127 #define T_psx_success(a) T_flags_psx_success(a, 0)
2128 #define T_assert_psx_success(a) T_flags_psx_success(a, T_CHECK_STOP)
2129 #define T_quiet_psx_success(a) T_flags_psx_success(a, T_CHECK_QUIET)
2130 #define T_step_psx_success(s, a) T_flags_psx_success(a, T_CHECK_STEP(s))
2131 #define T_step_assert_psx_success(s, a) \
2132 T_flags_psx_success(a, T_CHECK_STEP(s) | T_CHECK_STOP)
2133
2134
2135
2136 #ifdef __rtems__
2137 void T_check_rsc(const T_check_context *, uint32_t, uint32_t);
2138
2139 #define T_flags_rsc(a, e, flags) \
2140 { \
2141 static const T_check_context T_check_instance = { \
2142 T_FILE_NAME, __LINE__, (flags) | T_CHECK_FMT }; \
2143 T_check_rsc(&T_check_instance, a, e); \
2144 }
2145
2146 void T_check_rsc_success(const T_check_context *, uint32_t);
2147
2148 #define T_flags_rsc_success(a, flags) \
2149 { \
2150 static const T_check_context T_check_instance = { \
2151 T_FILE_NAME, __LINE__, (flags) | T_CHECK_FMT }; \
2152 T_check_rsc_success(&T_check_instance, a); \
2153 }
2154
2155
2156
2157
2158
2159
2160
2161
2162
2163
2164
2165 #define T_rsc(a, e) T_flags_rsc(a, e, 0)
2166 #define T_assert_rsc(a, e) T_flags_rsc(a, e, T_CHECK_STOP)
2167 #define T_quiet_rsc(a, e) T_flags_rsc(a, e, T_CHECK_QUIET)
2168 #define T_step_rsc(s, a, e) T_flags_rsc(a, e, T_CHECK_STEP(s))
2169 #define T_step_assert_rsc(s, a, e) \
2170 T_flags_rsc(a, e, T_CHECK_STEP(s) | T_CHECK_STOP)
2171
2172 #define T_rsc_success(a) T_flags_rsc_success(a, 0)
2173 #define T_assert_rsc_success(a) T_flags_rsc_success(a, T_CHECK_STOP)
2174 #define T_quiet_rsc_success(a) T_flags_rsc_success(a, T_CHECK_QUIET)
2175 #define T_step_rsc_success(s, a) T_flags_rsc_success(a, T_CHECK_STEP(s))
2176 #define T_step_assert_rsc_success(s, a) \
2177 T_flags_rsc_success(a, T_CHECK_STEP(s) | T_CHECK_STOP)
2178
2179
2180 #endif
2181
2182 void T_plan(unsigned int);
2183
2184 extern const T_fixture T_empty_fixture;
2185
2186 void T_push_plan(T_fixture_node *, unsigned int);
2187
2188 void T_pop_plan(void);
2189
2190 void T_check_step(const T_check_context *, unsigned int);
2191
2192 #define T_flags_step(a, flags) \
2193 { \
2194 static const T_check_context T_check_instance = { \
2195 T_FILE_NAME, __LINE__, (flags) | T_CHECK_FMT }; \
2196 T_check_step(&T_check_instance, a); \
2197 }
2198
2199 #define T_step(e) T_flags_step(e, 0)
2200 #define T_step_assert(e) T_flags_step(e, T_CHECK_STOP)
2201
2202
2203
2204
2205
2206
2207
2208
2209
2210
2211
2212 #ifdef __rtems__
2213 typedef CPU_Counter_ticks T_ticks;
2214 #else
2215 typedef unsigned long T_ticks;
2216 #endif
2217
2218 typedef uint64_t T_time;
2219
2220
2221 typedef char T_time_string[24];
2222
2223 const char *T_time_to_string_ns(T_time, T_time_string);
2224
2225 const char *T_time_to_string_us(T_time, T_time_string);
2226
2227 const char *T_time_to_string_ms(T_time, T_time_string);
2228
2229 const char *T_time_to_string_s(T_time, T_time_string);
2230
2231 const char *T_ticks_to_string_ns(T_ticks, T_time_string);
2232
2233 const char *T_ticks_to_string_us(T_ticks, T_time_string);
2234
2235 const char *T_ticks_to_string_ms(T_ticks, T_time_string);
2236
2237 const char *T_ticks_to_string_s(T_ticks, T_time_string);
2238
2239 T_time T_ticks_to_time(T_ticks);
2240
2241 T_ticks T_time_to_ticks(T_time);
2242
2243 T_time T_seconds_and_nanoseconds_to_time(uint32_t, uint32_t);
2244
2245 void T_time_to_seconds_and_nanoseconds(T_time, uint32_t *, uint32_t *);
2246
2247 T_time T_now(void);
2248
2249 #ifdef __rtems__
2250 static inline T_ticks
2251 T_tick(void)
2252 {
2253 return _CPU_Counter_read();
2254 }
2255 #else
2256 T_ticks T_tick(void);
2257 #endif
2258
2259 T_time T_now_clock(void);
2260
2261 T_time T_now_dummy(void);
2262
2263 T_time T_now_tick(void);
2264
2265 T_time T_case_begin_time(void);
2266
2267
2268
2269 void *T_malloc(size_t);
2270
2271 void *T_calloc(size_t, size_t);
2272
2273 void *T_zalloc(size_t, void (*)(void *));
2274
2275 void T_free(void *);
2276
2277 void T_register(void);
2278
2279 typedef enum {
2280 T_EVENT_RUN_INITIALIZE_EARLY,
2281 T_EVENT_RUN_INITIALIZE_LATE,
2282 T_EVENT_CASE_EARLY,
2283 T_EVENT_CASE_BEGIN,
2284 T_EVENT_CASE_END,
2285 T_EVENT_CASE_LATE,
2286 T_EVENT_CASE_STOP,
2287 T_EVENT_RUN_FINALIZE_EARLY,
2288 T_EVENT_RUN_FINALIZE_LATE
2289 } T_event;
2290
2291 typedef void (*T_action)(T_event, const char *);
2292
2293 typedef void (*T_putchar)(int, void *);
2294
2295 typedef struct {
2296 const char *name;
2297 char *buf;
2298 size_t buf_size;
2299 T_putchar putchar;
2300 void *putchar_arg;
2301 T_verbosity verbosity;
2302 T_time (*now)(void);
2303 void *(*allocate)(size_t);
2304 void (*deallocate)(void *);
2305 size_t action_count;
2306 const T_action *actions;
2307 } T_config;
2308
2309 void T_putchar_default(int, void *);
2310
2311 int T_main(const T_config *);
2312
2313 void T_make_runner(void);
2314
2315 bool T_is_runner(void);
2316
2317 void T_run_initialize(const T_config *);
2318
2319 void T_run_all(void);
2320
2321 void T_run_by_name(const char *);
2322
2323 void *T_case_begin(const char *, const T_fixture *);
2324
2325 void T_case_end(void);
2326
2327 bool T_run_finalize(void);
2328
2329 void T_set_putchar(T_putchar, void *, T_putchar *, void **);
2330
2331 void *T_fixture_context(void);
2332
2333 void T_set_fixture_context(void *);
2334
2335 void T_add_remark(T_remark *);
2336
2337 void *T_push_fixture(T_fixture_node *, const T_fixture *);
2338
2339 void T_pop_fixture(void);
2340
2341 T_NO_RETURN void T_stop(void);
2342
2343 #define T_unreachable() \
2344 do { T_true(false, "Unreachable"); T_stop(); } while (0)
2345
2346
2347
2348
2349
2350
2351
2352
2353
2354
2355
2356
2357
2358
2359
2360
2361
2362
2363
2364
2365 size_t T_get_scope(
2366 const char * const * const *desc,
2367 char *buf,
2368 size_t n,
2369 const size_t *second_indices
2370 );
2371
2372 size_t T_str_copy(char *, const char *, size_t);
2373
2374 #ifdef __rtems__
2375 #define T_TEST_CASE_FIXTURE(name, fixture) \
2376 void T_case_body_##name(void); \
2377 T_case_context T_case_instance_##name = { \
2378 #name, \
2379 T_case_body_##name, \
2380 fixture, \
2381 NULL \
2382 }; \
2383 static T_case_context * const T_case_item_##name \
2384 __attribute__((__section__(".rtemsroset._T.content.0." #name))) \
2385 __attribute__((__used__)) = &T_case_instance_##name; \
2386 void T_case_body_##name(void)
2387 #else
2388 #define T_TEST_CASE_FIXTURE(name, fixture) \
2389 void T_case_body_##name(void); \
2390 T_case_context T_case_instance_##name = { \
2391 #name, \
2392 T_case_body_##name, \
2393 fixture, \
2394 NULL \
2395 }; \
2396 __attribute__((__constructor__)) static void \
2397 T_case_register_##name(void) \
2398 { \
2399 T_case_register(&T_case_instance_##name); \
2400 } \
2401 void T_case_body_##name(void)
2402 #endif
2403
2404 #define T_TEST_CASE(name) T_TEST_CASE_FIXTURE(name, NULL)
2405
2406 void T_busy(uint_fast32_t);
2407
2408 uint_fast32_t T_get_one_clock_tick_busy(void);
2409
2410 typedef enum {
2411 T_INTERRUPT_TEST_INITIAL,
2412 T_INTERRUPT_TEST_ACTION,
2413 T_INTERRUPT_TEST_BLOCKED,
2414 T_INTERRUPT_TEST_CONTINUE,
2415 T_INTERRUPT_TEST_DONE,
2416 T_INTERRUPT_TEST_EARLY,
2417 T_INTERRUPT_TEST_INTERRUPT,
2418 T_INTERRUPT_TEST_LATE,
2419 T_INTERRUPT_TEST_TIMEOUT
2420 } T_interrupt_test_state;
2421
2422 typedef struct {
2423 void (*prepare)(void *);
2424 void (*action)(void *);
2425 T_interrupt_test_state (*interrupt)(void *);
2426 void (*blocked)(void *);
2427 uint32_t max_iteration_count;
2428 } T_interrupt_test_config;
2429
2430 T_interrupt_test_state T_interrupt_test_change_state(T_interrupt_test_state,
2431 T_interrupt_test_state);
2432
2433 T_interrupt_test_state T_interrupt_test_get_state(void);
2434
2435 void T_interrupt_test_busy_wait_for_interrupt(void);
2436
2437 T_interrupt_test_state T_interrupt_test(const T_interrupt_test_config *config,
2438 void *arg);
2439
2440 typedef struct {
2441 uint32_t executing;
2442 uint32_t heir;
2443 uint32_t cpu;
2444 T_time instant;
2445 } T_thread_switch_event;
2446
2447 typedef struct {
2448 size_t recorded;
2449 size_t capacity;
2450 uint64_t switches;
2451 } T_thread_switch_header;
2452
2453 typedef struct {
2454 T_thread_switch_header header;
2455 T_thread_switch_event events[T_ZERO_LENGTH_ARRAY];
2456 } T_thread_switch_log;
2457
2458 typedef struct {
2459 T_thread_switch_header header;
2460 T_thread_switch_event events[2];
2461 } T_thread_switch_log_2;
2462
2463 typedef struct {
2464 T_thread_switch_header header;
2465 T_thread_switch_event events[4];
2466 } T_thread_switch_log_4;
2467
2468 typedef struct {
2469 T_thread_switch_header header;
2470 T_thread_switch_event events[10];
2471 } T_thread_switch_log_10;
2472
2473 T_thread_switch_log *T_thread_switch_record(T_thread_switch_log *);
2474
2475 T_thread_switch_log *T_thread_switch_record_2(T_thread_switch_log_2 *);
2476
2477 T_thread_switch_log *T_thread_switch_record_4(T_thread_switch_log_4 *);
2478
2479 T_thread_switch_log *T_thread_switch_record_10(T_thread_switch_log_10 *);
2480
2481 void T_report_hash_sha256(T_event, const char *);
2482
2483 void T_report_hash_sha256_update(char c);
2484
2485 void T_check_heap(T_event, const char *);
2486
2487 #ifdef __rtems__
2488 void T_memory_action(T_event, const char *);
2489
2490 void *T_memory_allocate(size_t);
2491
2492 void T_memory_deallocate(void *);
2493
2494 void T_check_task_context(T_event, const char *);
2495
2496 void T_check_file_descriptors(T_event, const char *);
2497
2498 void T_check_rtems_barriers(T_event, const char *);
2499
2500 void T_check_rtems_extensions(T_event, const char *);
2501
2502 void T_check_rtems_message_queues(T_event, const char *);
2503
2504 void T_check_rtems_partitions(T_event, const char *);
2505
2506 void T_check_rtems_periods(T_event, const char *);
2507
2508 void T_check_rtems_regions(T_event, const char *);
2509
2510 void T_check_rtems_semaphores(T_event, const char *);
2511
2512 void T_check_rtems_tasks(T_event, const char *);
2513
2514 void T_check_rtems_timers(T_event, const char *);
2515
2516 void T_check_posix_keys(T_event, const char *);
2517
2518 void T_check_posix_message_queues(T_event, const char *);
2519
2520 void T_check_posix_semaphores(T_event, const char *);
2521
2522 void T_check_posix_shms(T_event, const char *);
2523
2524 void T_check_posix_threads(T_event, const char *);
2525
2526 void T_check_posix_timers(T_event, const char *);
2527
2528 typedef enum {
2529 T_THREAD_TIMER_NO_THREAD,
2530 T_THREAD_TIMER_SCHEDULED,
2531 T_THREAD_TIMER_PENDING,
2532 T_THREAD_TIMER_INACTIVE
2533 } T_thread_timer_state;
2534
2535 T_thread_timer_state T_get_thread_timer_state(uint32_t);
2536
2537 void *T_seize_objects(rtems_status_code (*)(void *, uint32_t *), void *);
2538
2539 void T_surrender_objects(void **, rtems_status_code (*)(uint32_t));
2540 #endif
2541
2542
2543
2544
2545
2546
2547
2548
2549
2550
2551
2552 typedef struct T_destructor {
2553 struct {
2554 struct T_destructor *le_next;
2555 struct T_destructor **le_prev;
2556 } node;
2557 void (*destroy)(struct T_destructor *);
2558 } T_destructor;
2559
2560 void T_add_destructor(T_destructor *, void (*)(T_destructor *));
2561
2562 void T_remove_destructor(T_destructor *);
2563
2564
2565
2566
2567
2568
2569
2570
2571
2572
2573
2574
2575
2576 typedef struct T_measure_runtime_context T_measure_runtime_context;
2577
2578 typedef struct {
2579 size_t sample_count;
2580 } T_measure_runtime_config;
2581
2582 typedef struct {
2583 const char *name;
2584 int flags;
2585 void (*setup)(void *);
2586 void (*body)(void *);
2587 bool (*teardown)(void *, T_ticks *, uint32_t, uint32_t, unsigned int);
2588 void *arg;
2589 } T_measure_runtime_request;
2590
2591 #define T_MEASURE_RUNTIME_ALLOW_CLOCK_ISR 0x1
2592
2593 #define T_MEASURE_RUNTIME_REPORT_SAMPLES 0x2
2594
2595 #define T_MEASURE_RUNTIME_DISABLE_FULL_CACHE 0x10
2596
2597 #define T_MEASURE_RUNTIME_DISABLE_HOT_CACHE 0x20
2598
2599 #define T_MEASURE_RUNTIME_DISABLE_DIRTY_CACHE 0x40
2600
2601 #define T_MEASURE_RUNTIME_DISABLE_MINOR_LOAD 0x80
2602
2603 #define T_MEASURE_RUNTIME_DISABLE_MAX_LOAD 0x100
2604
2605 T_measure_runtime_context *T_measure_runtime_create(
2606 const T_measure_runtime_config *);
2607
2608 void T_measure_runtime(T_measure_runtime_context *,
2609 const T_measure_runtime_request *);
2610
2611
2612
2613 #ifdef __cplusplus
2614 }
2615 #endif
2616
2617 #endif