/*
** Copyright (C) 1999 Microsoft Corporation. All Rights Reserved.
**
** File: ntimescondition.cpp
**
** Author:
**
** Description:
** Implementation of the training library "ntimescondition" interface.
**
** History:
*/
#include "pch.h"
#include "NTimesCondition.h"
namespace Training
{
//------------------------------------------------------------------------------
// class methods
//------------------------------------------------------------------------------
/* void */ NTimesCondition::NTimesCondition (Condition* pCondition, unsigned int iTimes, bool bSticky) :
m_pCondition (pCondition),
m_iTimes (iTimes),
m_bSticky (bSticky)
{
assert (iTimes > 1);
}
//------------------------------------------------------------------------------
/* void */ NTimesCondition::~NTimesCondition (void)
{
delete m_pCondition;
}
//------------------------------------------------------------------------------
bool NTimesCondition::Start (void)
{
m_iCount = m_pCondition->Start () ? 1 : 0;
return false;
}
//------------------------------------------------------------------------------
void NTimesCondition::Stop (void)
{
m_pCondition->Stop ();
}
//------------------------------------------------------------------------------
bool NTimesCondition::Evaluate (void)
{
if (m_iCount < m_iTimes)
m_iCount += m_pCondition->Evaluate () ? 1 : 0;
if (m_iCount == m_iTimes)
{
m_iCount = m_bSticky ? m_iCount : 0;
return true;
}
return false;
}
//------------------------------------------------------------------------------
}