Windows-Server-2003/inetsrv/query/cindex/mcursor.hxx

83 lines
1.7 KiB
C++

//+---------------------------------------------------------------------------
//
// Microsoft Windows
// Copyright (C) Microsoft Corporation, 1991 - 1992.
//
// File: MCURSOR.HXX
//
// Contents: Merge Cursor
//
// Classes: CMergeCursor
//
// History: 06-May-91 BarotszM Created.
//
//----------------------------------------------------------------------------
#pragma once
#include <keycur.hxx>
#include "kcurheap.hxx"
class CKeyCurStack;
//+---------------------------------------------------------------------------
//
// Class: CMergeCursor
//
// Purpose: Merge cursor, merges several cursors into one ordered cursor
// The cursors come from different indexes. The call to
// NextWorkId may return the same wid, changing only index id.
//
// History: 06-May-91 BartoszM Created.
// 27-Feb-92 AmyA Added HitCount
//
//----------------------------------------------------------------------------
class CMergeCursor: public CKeyCursor
{
public:
CMergeCursor( CKeyCurStack & stkCursor );
~CMergeCursor() {} // heaps are deleted
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 )
{
Win4Assert ( !"RatioFinished called on CMergeCursor\n" );
}
void FreeStream();
void RefillStream();
protected:
BOOL ReplenishWid();
CKeyHeap _keyHeap;
CIdxWidHeap _widHeap;
};