//+--------------------------------------------------------------------------- // // Microsoft Windows // Copyright (C) Microsoft Corporation, 1991 - 1992. // // File: WLCURSOR.HXX // // Contents: Wordlist Merge Cursor // // Classes: CWlCursor // // History: 17-Jun-91 BarotszM Created. // //---------------------------------------------------------------------------- #pragma once #include #include "kcurheap.hxx" class CKeyCurStack; //+--------------------------------------------------------------------------- // // Class: CWlCursor // // Purpose: Merge cursor, merges several sorts into one ordered cursor // // History: 17-Jun-91 BartoszM Created. // // Notes: Merges occurrences too (unlike straight merge cursor) // //---------------------------------------------------------------------------- class CWlCursor: public CKeyCursor { public: CWlCursor( int cCursor, CKeyCurStack & stkCursor, WORKID widMax ); const CKeyBuf * GetKey(); const CKeyBuf * GetNextKey(); WORKID WorkId(); WORKID NextWorkId(); OCCURRENCE Occurrence(); OCCURRENCE NextOccurrence(); ULONG OccurrenceCount(); OCCURRENCE MaxOccurrence(); ULONG WorkIdCount(); ULONG HitCount(); void RatioFinished ( ULONG& denom, ULONG& num ); private: BOOL ReplenishOcc(); BOOL ReplenishWid(); void ComputeWidCount(); void ComputeOccCount(); CKeyHeap _keyHeap; CIdxWidHeap _widHeap; COccHeapOfKeyCur _occHeap; ULONG _ulWidCount; ULONG _ulOccCount; };