//+--------------------------------------------------------------------------- // // 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; }