/* * Copyright (C) 2026 Peter Mikkelsen * * This file is part of aplwc. * * Aplwc is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * Aplwc is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with aplwc. If not, see . */ #ifndef APLWC_MACROS_H #define APLWC_MACROS_H #include #define UNUSED_PARAMETER(arg) ((void)arg) #define NELEM(x) (sizeof(x)/sizeof(x[0])) #if APLWC_BUILD_TYPE_DEBUG #define ALWAYS(x) ((x) ? 1 : (assert(0), 0)) #define NEVER(x) ((x) ? (assert(0), 1) : 0) #define DEBUG(x) debug_##x #elif APLWC_BUILD_TYPE_RELEASE #define ALWAYS(x) (x) #define NEVER(x) (x) #define DEBUG(x) ((void)0) #elif APLWC_BUILD_TYPE_COVERAGE #define ALWAYS(x) (1) #define NEVER(x) (0) #define DEBUG(x) ((void)0) #endif #define FAILCASE(x, fail) (aplwc_simulate_failure() ? (fail) : (x)) #endif /* APLWC_MACROS_H */