/// @file
/// @brief PC-Lint 9.x option file for linting QP/C applications
/// @cond
///===========================================================================
/// Product: QP/C
/// Last Updated for Version: 5.9.7
/// Date of the Last Update:  2017-08-20
///
///                    Q u a n t u m     L e a P s
///                    ---------------------------
///                    innovating embedded systems
///
/// Copyright (C) Quantum Leaps. All rights reserved.
///
/// This program 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.
///
/// Alternatively, this program may be distributed and modified under the
/// terms of Quantum Leaps commercial licenses, which expressly supersede
/// the GNU General Public License and are specifically designed for
/// licensees interested in retaining the proprietary status of their code.
///
/// This program 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 this program. If not, see <http://www.gnu.org/licenses/>.
///
/// Contact information:
/// https://state-machine.com
/// info@state-machine.com
///============================================================================
/// @endcond

// General
-estring(793,6)       // ANSI/ISO limit of 6 significant chars exceeded
-emacro((960),        // MISRA04-17.4(req) pointer arithmetic
 Q_DIM,
 Q_UINT2PTR_CAST)
-estring(961,         // MISRA04-19.7(adv) function-like macro
 Q_DIM,
 Q_UINT2PTR_CAST)
-esym(960,            // MISRA04-19.10(req) unparenthesized macro par
 Q_UINT2PTR_CAST)
-estring(9022,        // MISRA04-19.10(req) unparenthesized macro parameter
 Q_UINT2PTR_CAST)


// Assertions
-estring(960,         // MISRA04-8.7(req) could use block scope
 Q_this_module_)
-estring(961,         // MISRA04-19.7(adv) function-like macro
 Q_ASSERT,
 Q_ASSERT_ID,
 Q_ALLEGE,
 Q_ALLEGE_ID,
 Q_ERROR,
 Q_ERROR_ID,
 Q_REQUIRE,
 Q_REQUIRE_ID,
 Q_ENSURE,
 Q_ENSURE_ID,
 Q_INVARIANT,
 Q_INVARIANT_ID,
 Q_ASSERT_COMPILE,
 Q_DEFINE_THIS_MODULE)
-esym(960,            // MISRA04-19.4(req) Disallowed macro definition
 Q_ALLEGE,
 Q_ALLEGE_ID,
 Q_ERROR,
 Q_ERROR_ID,
 Q_REQUIRE,
 Q_REQUIRE_ID,
 Q_ENSURE,
 Q_ENSURE_ID,
 Q_INVARIANT,
 Q_INVARIANT_ID,
 Q_DEFINE_THIS_FILE,
 Q_ASSERT_COMPILE)
-esym(960,            // MISRA04-19.10(req) unparenthesized macro par
 Q_DEFINE_THIS_MODULE)
-estring(9022,        // MISRA04-19.10(req) unparenthesized macro parameter
 Q_DEFINE_THIS_MODULE)
-emacro(522,          // Highest operation lacks side-effects
 Q_ASSERT,
 Q_ERROR,
 Q_ALLEGE)
-function(exit,       // give Q_onAssert() the semantics of "exit"
 Q_onAssert)
-estring(752,         // not referenced
 Q_assert_compile)

// QEP
-emacro(740,          // MISRA04-1.2(req) incompatible indirect types
 Q_HSM_UPCAST)
-esym(960,            // MISRA04-19.10(req) unparenthesized macro par
 Q_EVT_CAST)
-estring(961,         // MISRA04-19.7(adv) function-like macro
 Q_HSM_UPCAST,
 Q_EVT_CAST)
-emacro(929,          // MISRA04-11.4(adv) cast pointer to pointer
 Q_HSM_UPCAST,
 Q_EVT_CAST)
-estring(9022,        // MISRA04-19.10(req) unparenthesized macro parameter
 Q_EVT_CAST)

-emacro(740,          // MISRA04-1.2(req) pointer cast
 Q_STATE_CAST,        // (incompatible indirect types)
 Q_TRAN,
 Q_TRAN_HIST,
 Q_SUPER,
 QM_ENTRY,
 QM_EXIT,
 QM_SM_EXIT,
 QM_TRAN,
 QM_TRAN_INIT,
 QM_TRAN_HIST,
 QM_TRAN_EP,
 QM_TRAN_XP)
-emacro(929,          // MISRA04-11.4(adv) cast pointer to pointer
 Q_STATE_CAST,
 Q_ACTION_CAST,
 Q_TRAN,
 Q_SUPER,
 QM_ENTRY,
 QM_EXIT,
 QM_SM_EXIT,
 QM_TRAN,
 QM_TRAN_INIT,
 QM_TRAN_HIST,
 QM_TRAN_EP,
 QM_TRAN_XP)
-emacro(960,          // MISRA04-11.1(req) Conversions involving
 Q_STATE_CAST,        // fun. pointers must be to/from integral types
 Q_ACTION_CAST)
-emacro(960,          // MISRA04-12.10(req) comma operator used
 Q_TRAN,
 Q_TRAN_HIST,
 Q_SUPER,
 QM_ENTRY,
 QM_EXIT,
 QM_SM_EXIT,
 QM_TRAN,
 QM_TRAN_INIT,
 QM_TRAN_HIST)
-estring(960,         // MISRA04-18.4(req) declaration of union type
 QHsmAttr)
-estring(961,         // MISRA04-19.7(adv) function-like macro
 QMsm_stateObj,
 QMsm_childStateObj,
 QHsm_state,
 QHsm_childState,
 Q_IGNORED,
 Q_HANDLED,
 Q_UNHANDLED,
 Q_TRAN,
 Q_TRAN_HIST,
 Q_SUPER,
 Q_STATE_CAST,
 Q_ACTION_CAST,
 QEP_getVersion)
-estring(961,         // MISRA04-19.7(adv) function-like macro
 QHSM_INIT,
 QHSM_DISPATCH,
 QM_ENTRY,
 QM_EXIT,
 QM_SM_EXIT,
 QM_TRAN,
 QM_TRAN_INIT,
 QM_TRAN_HIST,
 QM_TRAN_EP,
 QM_TRAN_XP,
 QM_SUPER,
 QM_SUPER_SUB,
 QM_HANDLED,
 QM_UNHANDLED)
-esym(960,            // MISRA04-19.4(req) Disallowed macro definition
 QMsm_childStateObj,
 QHsm_childState)
-esym(754,            // Info: local structure member not referenced
 target,
 act)

// QF
-emacro(950,          // MISRA04-2.1(req) assembly language
 QF_INT_DISABLE,
 QF_INT_ENABLE,
 QF_CRIT_ENTRY,
 QF_CRIT_EXIT,
 QF_LOG2)
-estring(961,         // MISRA04-19.7(adv) function-like macro
 Q_NEW,
 Q_NEW_X,
 Q_NEW_REF,
 Q_DELETE_REF,
 QF_INT_DISABLE,
 QF_INT_ENABLE,
 QF_CRIT_ENTRY,
 QF_CRIT_EXIT,
 QF_CRIT_EXIT_NOP,
 QF_TICK,
 QF_TICK_X,
 QF_PUBLISH,
 QF_MPOOL_EL,
 QF_LOG2,
 QACTIVE_START,
 QACTIVE_POST,
 QACTIVE_POST_X,
 QACTIVE_POST_LIFO)
-estring(961,         // MISRA04-19.7(adv) function-like macro
 QPSet_setEmpty,
 QPSet_isEmpty,
 QPSet_notEmpty,
 QPSet_hasElement,
 QPSet_insert,
 QPSet_remove,
 QPSet_findMax,
 QEQueue_getNFree,
 QEQueue_getNMin,
 QEQueue_isEmpty,
 QTimeEvt_ctor,
 QTimeEvt_postIn,
 QTimeEvt_postEvery,
 QF_getVersion)
-estring(961,         // MISRA04-19.7(adv) function-like macro
 QF_QS_CRIT_EXIT,
 QF_QS_CRIT_ENTRY,
 QF_QS_CRIT_EXIT,
 QF_QS_ISR_ENTRY,
 QF_QS_ISR_EXIT,
 QF_QS_ACTION)
-estring(961,         // MISRA04-19.7(adv) function-like macro
 QACTIVE_EQUEUE_WAIT_,
 QACTIVE_EQUEUE_SIGNAL_,
 QACTIVE_EQUEUE_ONEMPTY_,
 QF_EPOOL_INIT_,
 QF_EPOOL_EVENT_SIZE_,
 QF_EPOOL_GET_,
 QF_EPOOL_PUT_,
 QF_PTR_INC_,
 QF_tick,
 QActive_postFIFO,
 QEQueue_postFIFO)
-esym(960,            // MISRA04-19.4(req) Disallowed macro definition
 QF_INT_DISABLE,
 QF_INT_ENABLE,
 QF_CRIT_ENTRY,
 QF_CRIT_EXIT,
 QF_CRIT_EXIT_NOP,
 QF_EQUEUE_TYPE,
 QF_OS_OBJECT_TYPE,
 QF_THREAD_TYPE,
 QF_CRIT_STAT_TYPE,
 QF_MPOOL_EL,
 QACTIVE_EQUEUE_ONEMPTY_,
 QF_EPOOL_TYPE_,
 QF_ACTIVE_SUPER_,
 QF_ACTIVE_STATE_,
 QTimeEvt_ctor)
-emacro(929,          // MISRA04-11.4(adv) cast from pointer to pointer
 Q_NEW,
 Q_NEW_X,
 Q_NEW_REF,
 QACTIVE_POST,
 QACTIVE_POST_LIFO)
-emacro(960,          // MISRA04-17.4(req) pointer increment
 QF_PTR_INC_)
-emacro(717,          // do ... while(0)
 QPSet_setEmpty,
 QPSet_insert,
 QPSet_remove,
 QTimeEvt_postIn,
 QTimeEvt_postEvery)
-estring(960,         // MISRA04-8.7(req) could use block scope
 QF_maxPool_,
 QF_timeEvtHead_)
-esym(960,            // MISRA04-19.10(req) unparenthesized macro par
 Q_NEW,
 Q_NEW_X,
 Q_NEW_REF)
-estring(9022,        // MISRA04-19.10(req) unparenthesized macro parameter
 Q_NEW,
 Q_NEW_X,
 Q_NEW_REF)
-esym(641, *Signals)  // Converting enum '*Signals' to 'int'
-esym(754, sto_)      // local structure member 'sto' not referenced

// QV
-estring(961,         // MISRA04-19.7(adv) function-like macro
 QV_getVersion,
 QV_CPU_SLEEP)

// QK
-emacro(950,          // MISRA04-2.1(req) assembly language
 QK_ISR_CONTEXT_,
 QK_ISR_ENTRY,
 QK_ISR_EXIT)
-estring(961,         // MISRA04-19.7(adv) function-like macro
 QK_ISR_CONTEXT_,
 QK_ISR_ENTRY,
 QK_ISR_EXIT,
 QK_getVersion)
-estring(960,         // MISRA04-8.7(req) could use block scope
 QK_intNest_)

// QXK
-emacro(950,          // MISRA04-2.1(req) assembly language
 QXK_ISR_CONTEXT_,
 QXK_ISR_ENTRY,
 QXK_ISR_EXIT)
-estring(961,         // MISRA04-19.7(adv) function-like macro
 QXK_ISR_CONTEXT_,
 QXK_ISR_ENTRY,
 QXK_ISR_EXIT,
 QXK_getVersion,
 QXK_TLS,
 QXTHREAD_START,
 QXTHREAD_POST_X,
 Q_XTHREAD_CAST)
-emacro(960,          // MISRA04-11.1(req) Conversions involving
 Q_XTHREAD_CAST)      // fun. pointers must be to/from integral types
-emacro(929,          // MISRA04-11.4(adv) cast pointer to pointer
 Q_XTHREAD_CAST)
-esym(960,            // MISRA04-19.4(req) Disallowed macro definition
 QXTHREAD_START,
 QXTHREAD_POST_X)
-estring(960,         // MISRA04-8.7(req) could use block scope
 QXK_intNest_)
-esym(960,            // MISRA04-20.2(req) Re-use of C90 identifier pattern
 topPrio)

// QS
-emacro(506, QS_*)    // MISRA04-13.7(req) constant value boolean
                      // MISRA04-14.1(req) no unreachable code
-emacro(774, QS_*)    // MISRA04-13.7(req) 'if' always True
                      // MISRA04-14.1(req) no unreachable code
-emacro(923,          // MISRA04-11.3(req) cast from pointer to int
 QS_OBJ_,
 QS_FUN_)
-emacro(960,          // MISRA04-17.4(req), pointer arithmetic
 QS_PTR_AT_)
-esym(960,            // MISRA04-19.4(req) Disallowed macro definition
 QS_PTR_AT_)
-estring(961,         // MISRA04-19.7(adv) function-like macro
 QS_INIT,
 QS_EXIT,
 QS_DUMP,
 QS_RESET,
 QS_FILTER_ON,
 QS_FILTER_OFF,
 QS_FILTER_SM_OBJ,
 QS_FILTER_AO_OBJ,
 QS_FILTER_MP_OBJ,
 QS_FILTER_EQ_OBJ,
 QS_FILTER_TE_OBJ,
 QS_FILTER_AP_OBJ,
 QS_GET_BYTE,
 QS_GET_BLOCK,
 QS_BEGIN,
 QS_END,
 QS_BEGIN_NOCRIT,
 QS_END_NOCRIT)
-esym(960,            // MISRA04-19.4(req) Disallowed macro definition
 QS_BEGIN,
 QS_END,
 QS_BEGIN_NOCRIT,
 QS_END_NOCRIT)
-estring(961,         // MISRA04-19.7(adv) function-like macro
 QS_I8,
 QS_U8,
 QS_I16,
 QS_U16,
 QS_I32,
 QS_I64,
 QS_U32,
 QS_F32,
 QS_F64,
 QS_U64,
 QS_U32_HEX,
 QS_STR,
 QS_OBJ,
 QS_FUN,
 QS_SIG_DICTIONARY,
 QS_OBJ_DICTIONARY,
 QS_FUN_DICTIONARY,
 QS_USR_DICTIONARY,
 QS_ASSERTION,
 QS_FLUSH,
 QS_MEM,
 QS_SIG,
 QS_PTR_AT_,
 QS_RX_PUT)
-estring(961,         // MISRA04-19.7(adv) function-like macro
 QS_CRIT_ENTRY_,
 QS_CRIT_EXIT_,
 QS_BEGIN_,
 QS_END_,
 QS_BEGIN_NOCRIT_,
 QS_END_NOCRIT_,
 QS_REC_DONE,
 QS_U8_,
 QS_2U8_,
 QS_U16_,
 QS_U32_,
 QS_U64_,
 QS_STR_,
 QS_TIME_,
 QS_SIG_,
 QS_EVS_,
 QS_OBJ_,
 QS_FUN_,
 QS_EQC_,
 QS_MPC_,
 QS_MPS_,
 QS_TEC_,
 QS_TEST_PAUSE,
 QS_TEST_PROBE_DEF,
 QS_TEST_PROBE,
 QS_TEST_PROBE_ID,
 QS_getVersion)
-esym(960,            // MISRA04-19.4(req) Disallowed macro definition
 QS_CRIT_STAT_,
 QS_CRIT_ENTRY_,
 QS_CRIT_EXIT_,
 QF_QS_CRIT_ENTRY,
 QF_QS_CRIT_EXIT,
 QF_QS_ISR_ENTRY,
 QF_QS_ISR_EXIT,
 QS_SIG,
 QS_BEGIN_,
 QS_END_,
 QS_BEGIN_NOCRIT_,
 QS_END_NOCRIT_,
 QS_TEST_PAUSE,
 QS_TEST_PROBE_DEF,
 QS_TEST_PROBE,
 QS_TEST_PROBE_ID)
-emacro(960,          // MISRA04-11.1(req) conversion of function pointers
 QS_FUN_DICTIONARY,
 QS_TEST_PROBE_DEF)
-emacro(929,          // MISRA04-11.4(adv) cast pointer to pointer
 QS_FUN_DICTIONARY,
 QS_TEST_PROBE_DEF)
-estring(9022,        // MISRA04-19.10(req) unparenthesized macro parameter
 QF_QS_ISR_ENTRY,
 QF_QS_ISR_EXIT,
 QS_PTR_AT_,
 QS_TEST_PROBE,
 QS_TEST_PROBE_ID)
-emacro(717, QS_*)    // do ... while(0);


// Deprecated features--provided in the backwards compatibility API of QP/C
-esym(960,            // MISRA04-19.4(req) disallowed macro definition
 QFsm,
 QFsm_ctor,
 QF_onIdle)
-estring(961,         // MISRA04-19.7(adv) function-like macro
 QMsm_init,
 QMsm_dispatch,
 QFsm_init,
 QFsm_dispatch,
 QActive_start,
 QActive_postFIFO,
 QF_tick,
 QF_TICK,
 QTimeEvt_ctor,
 QTimeEvt_postIn,
 QTimeEvt_postEvery,
 Q_ROM_BYTE)
-esym(960,            // MISRA04-19.4(req) Disallowed macro definition
 QMsm_init,
 QMsm_dispatch,
 QFsm_init,
 QFsm_dispatch,
 QActive_start,
 QActive_postFIFO,
 QF_tick,
 QF_TICK,
 QTimeEvt_ctor,
 QTimeEvt_postIn,
 QTimeEvt_postEvery)


