//+--------------------------------------------------------------------------- // // Microsoft Windows // Copyright (C) Microsoft Corporation, 1991 - 1995. // // File: stemsink.hxx // // Contents: IWordFormSink implementation // // Classes: CStemmerSink // // History: 3-May-95 SitaramR Created. // //---------------------------------------------------------------------------- #pragma once //+--------------------------------------------------------------------------- // // Class: CStemmerSink // // Purpose: Stemmer stage in filtering pipeline, which consists of: // Word Breaker // Stemmer // Normalizer // Noise List // // History: 3-May-95 SitaramR Created. // //---------------------------------------------------------------------------- class CStemmerSink : public PWordRepository, public IWordFormSink { public: CStemmerSink ( IStemmer *pStemmer, PWordRepository& wordRep ); ~CStemmerSink () { } // // From PWordRepository // unsigned GetMaxBufferLen () { return _cwcMaxNormBuf; } void GetFlags ( BOOL** ppRange, CI_RANK** ppRank ); void ProcessAltWord ( WCHAR const *pwcInBuf, ULONG cwc ); void ProcessWord ( WCHAR const *pwcInBuf, ULONG cwc ); void StartAltPhrase () { _wordRep.StartAltPhrase(); } void EndAltPhrase () { _wordRep.EndAltPhrase(); } void SkipNoiseWords ( ULONG cWords ) { _wordRep.SkipNoiseWords( cWords ); } void SetOccurrence ( OCCURRENCE occ ) { _wordRep.SetOccurrence( occ ); } OCCURRENCE GetOccurrence () { return _wordRep.GetOccurrence(); } // // From IUnknown // virtual SCODE STDMETHODCALLTYPE QueryInterface ( REFIID riid, void **ppvObject ); virtual ULONG STDMETHODCALLTYPE AddRef (); virtual ULONG STDMETHODCALLTYPE Release (); // // From IWordFormSink // virtual SCODE STDMETHODCALLTYPE PutAltWord ( WCHAR const *pwcInBuf, ULONG cwc ); virtual SCODE STDMETHODCALLTYPE PutWord ( WCHAR const *pwcInBuf, ULONG cwc ); private: SCODE PutStemmedWord ( WCHAR const *pwcInBuf, ULONG cwc, BOOL fAltWord ); PWordRepository& _wordRep; unsigned _cwcMaxNormBuf; IStemmer *_pStemmer; BOOL _fWBreakAltWord; // is the current word an alternate // word according to the wordbreaker ? };