// Implement the TestVariable action. Triggers a TestEvent event on the result. void MHIntegerVar::TestVariable(int nOp, const MHUnion &parm, MHEngine *engine) { parm.CheckType(MHUnion::U_Int); bool fRes = false; switch (nOp) { case TC_Equal: fRes = m_nValue == parm.m_nIntVal; break; case TC_NotEqual: fRes = m_nValue != parm.m_nIntVal; break; case TC_Less: fRes = m_nValue < parm.m_nIntVal; break; case TC_LessOrEqual: fRes = m_nValue <= parm.m_nIntVal; break; case TC_Greater: fRes = m_nValue > parm.m_nIntVal; break; case TC_GreaterOrEqual: fRes = m_nValue >= parm.m_nIntVal; break; default: MHERROR("Invalid comparison for int"); // Shouldn't ever happen } MHLOG(MHLogDetail, QString("Comparison %1 between %2 and %3 => %4").arg(TestToText(nOp)) .arg(m_nValue).arg(parm.m_nIntVal).arg(fRes ? "true" : "false")); engine->EventTriggered(this, EventTestEvent, fRes); }
// Implement the TestVariable action. Triggers a TestEvent event on the result. void MHOctetStrVar::TestVariable(int nOp, const MHUnion &parm, MHEngine *engine) { parm.CheckType(MHUnion::U_String); int nRes = m_Value.Compare(parm.m_StrVal); bool fRes = false; switch (nOp) { case TC_Equal: fRes = nRes == 0; break; case TC_NotEqual: fRes = nRes != 0; break; /* case TC_Less: fRes = nRes < 0; break; case TC_LessOrEqual: fRes = nRes <= 0; break; case TC_Greater: fRes = nRes > 0; break; case TC_GreaterOrEqual: fRes = nRes >= 0; break;*/ default: MHERROR("Invalid comparison for string"); // Shouldn't ever happen } MHOctetString sample1(m_Value, 0, 10); MHOctetString sample2(parm.m_StrVal, 0, 10); MHLOG(MHLogDetail, QString("Comparison %1 %2 and %3 => %4").arg(TestToText(nOp)) .arg(sample1.Printable()).arg(sample2.Printable()).arg(fRes ? "true" : "false")); engine->EventTriggered(this, EventTestEvent, fRes); }
// Implement the TestVariable action. Triggers a TestEvent event on the result. void MHBooleanVar::TestVariable(int nOp, const MHUnion &parm, MHEngine *engine) { parm.CheckType(MHUnion::U_Bool); bool fRes = false; switch (nOp) { case TC_Equal: fRes = m_fValue == parm.m_fBoolVal; break; case TC_NotEqual: fRes = m_fValue != parm.m_fBoolVal; break; default: MHERROR("Invalid comparison for bool"); } MHLOG(MHLogDetail, QString("Comparison %1 between %2 and %3 => %4").arg(TestToText(nOp)) .arg(m_fValue ? "true" : "false").arg(parm.m_fBoolVal ? "true" : "false").arg(fRes ? "true" : "false")); engine->EventTriggered(this, EventTestEvent, fRes); }