windows-nt/Source/XPSP1/NT/inetsrv/query/h/enforcer.hxx
2020-09-26 16:20:57 +08:00

213 lines
5.4 KiB
C++

//+---------------------------------------------------------------------------
//
// Microsoft Windows
// Copyright (C) Microsoft Corporation, 1991 - 1992.
//
// File: enforcer.hxx
//
// Contents: Constraint enforcer for IWordSink methods
//
// History: 24-Apr-95 SitaramR Created.
//
//----------------------------------------------------------------------------
#pragma once
enum StateOfEnforcer
{
stateStart, // start state
stateError, // error state
statePAW, // PutAltWord state
stateSAP, // StartAltPhrase state
stateEAP, // EndAltPhrase state
};
//+---------------------------------------------------------------------------
//
// Class: CAltWordsEnforcer
//
// Purpose: Constraint enforcer for PutAltWord and PutWord methods
//
// History: 25-Apr-95 SitaramR Created.
//
//----------------------------------------------------------------------------
class CAltWordsEnforcer
{
public:
CAltWordsEnforcer() { _state = stateStart; }
~CAltWordsEnforcer() { }
BOOL IsPutWordOk();
BOOL IsPutAltWordOk();
BOOL IsStartAltPhraseOk();
BOOL IsEndAltPhraseOk();
private:
StateOfEnforcer _state;
};
//+---------------------------------------------------------------------------
//
// Class: CAltPhrasesEnforcer
//
// Purpose: Constraint enforcer for StartAltPhrase and EndAltPhrase methods
//
// History: 25-Apr-95 SitaramR Created.
//
//----------------------------------------------------------------------------
class CAltPhrasesEnforcer
{
public:
CAltPhrasesEnforcer() { _state = stateStart; }
~CAltPhrasesEnforcer() { }
BOOL IsStartAltPhraseOk();
BOOL IsEndAltPhraseOk();
private:
StateOfEnforcer _state;
};
//+---------------------------------------------------------------------------
//
// Member: CAltWordsEnforcer::IsPutWordOk
//
// Synopsis: Is the PutWord method call allowed in the current state ?
//
// History: 24-Apr-1995 SitaramR Created
//
//----------------------------------------------------------------------------
inline BOOL CAltWordsEnforcer::IsPutWordOk()
{
if ( _state == statePAW )
_state = stateStart;
return _state != stateError;
}
//+---------------------------------------------------------------------------
//
// Member: CAltWordsEnforcer::IsPutAltWordOk
//
// Synopsis: Is the PutAltWord method call allowed in the current state ? After a
// sequence of PutAltWord calls at least one PutWord method must be
// called before any StartAltPhrase or EndAltPhrase methods
//
// History: 24-Apr-1995 SitaramR Created
//
//----------------------------------------------------------------------------
inline BOOL CAltWordsEnforcer::IsPutAltWordOk()
{
if ( _state == stateStart )
_state = statePAW;
return _state != stateError;
}
//+---------------------------------------------------------------------------
//
// Member: CAltWordsEnforcer::IsStartAltPhraseOk
//
// Synopsis: Is the StartAltPhrase method call allowed in the current state ? After a
// sequence of PutAltWord calls at least one PutWord method must be
// called before any StartAltPhrase or EndAltPhrase methods
//
// History: 24-Apr-1995 SitaramR Created
//
//----------------------------------------------------------------------------
inline BOOL CAltWordsEnforcer::IsStartAltPhraseOk()
{
if ( _state == statePAW )
_state = stateError;
return _state != stateError;
}
//+---------------------------------------------------------------------------
//
// Member: CAltWordsEnforcer::IsEndAltPhraseOk
//
// Synopsis: Is the EndAltPhrase method call allowed in the current state ? After a
// sequence of PutAltWord calls at least one PutWord method must be
// called before any StartAltPhrase or EndAltPhrase methods
//
// History: 24-Apr-1995 SitaramR Created
//
//----------------------------------------------------------------------------
inline BOOL CAltWordsEnforcer::IsEndAltPhraseOk()
{
if ( _state == statePAW )
_state = stateError;
return _state != stateError;
}
//+---------------------------------------------------------------------------
//
// Member: CAltPhrasesEnforcer::IsStartAltPhraseOk
//
// Synopsis: Is the StartAltPhrase method call allowed in the current state ?
// There cannot be two EndAltPhrase calls without an intervening
// StartAltPhrase
//
// History: 24-Apr-1995 SitaramR Created
//
//----------------------------------------------------------------------------
inline BOOL CAltPhrasesEnforcer::IsStartAltPhraseOk()
{
if ( _state == stateStart || _state == stateEAP )
_state = stateSAP;
return _state != stateError;
}
//+---------------------------------------------------------------------------
//
// Member: CAltPhrasesEnforcer::IsEndAltPhraseOk
//
// Synopsis: Is the EndAltPhrase method call allowed in the current state ?
//
// History: 24-Apr-1995 SitaramR Created
//
//----------------------------------------------------------------------------
inline BOOL CAltPhrasesEnforcer::IsEndAltPhraseOk()
{
if ( _state == stateSAP )
_state = stateEAP;
else
_state = stateError;
return _state != stateError;
}