Windows2003-3790/inetsrv/query/h/cursor.hxx
2020-09-30 16:53:55 +02:00

179 lines
4.9 KiB
C++

//+---------------------------------------------------------------------------
//
// Microsoft Windows
// Copyright (C) Microsoft Corporation, 1991 - 2000.
//
// File: Cursor.Hxx
//
// Contents: Cursor classes
//
// Classes: CCursor - 'The mother of all cursors'
//
// History: 15-Apr-91 KyleP Created.
// 26-Sep-91 BartoszM Rewrote
//
//----------------------------------------------------------------------------
#pragma once
#ifdef DISPLAY_INCLUDES
#pragma message( "#include <" __FILE__ ">..." )
#endif
#define rankInvalid (MAX_QUERY_RANK+1)
//+---------------------------------------------------------------------------
//
// Class: CCursor
//
// Purpose: The root class for all cursors
//
// Interface:
//
// History: 15-Apr-91 KyleP Created.
// 26-Sep-91 BartoszM Rewrote
// 26-Feb-92 AmyA Added HitCount().
// 13-Mar-92 AmyA Added Rank().
//
//----------------------------------------------------------------------------
class CCursor
{
public:
CCursor ( INDEXID iid, PROPID pid );
CCursor ( INDEXID iid );
CCursor ();
virtual ~CCursor();
INDEXID IndexId ();
PROPID Pid ();
virtual ULONG WorkIdCount();
virtual WORKID WorkId() = 0;
virtual WORKID NextWorkId() = 0;
virtual ULONG HitCount() = 0;
virtual LONG Rank() = 0;
LONG GetWeight() { return _weight; }
void SetWeight(LONG wt) { _weight = wt; }
virtual ULONG GetRankVector( LONG * plVector, ULONG cElements );
virtual LONG Hit() { return rankInvalid; }
virtual LONG NextHit() { return rankInvalid; }
virtual BOOL IsEmpty() { return WorkId() == widInvalid; }
virtual void RatioFinished ( ULONG& denom, ULONG& num ) = 0;
BOOL IsUnfilteredOnly() const
{
return _fUnfilteredOnly;
}
void SetUnfilteredOnly( BOOL fUnfilteredOnly = TRUE )
{
_fUnfilteredOnly = fUnfilteredOnly;
}
#ifdef CIEXTMODE
void CiExtDump(void *ciExtSelf);
#endif
protected:
PROPID _pid;
INDEXID _iid;
LONG _weight;
BOOL _fUnfilteredOnly;
};
DECLARE_SMARTP( Cursor )
//+---------------------------------------------------------------------------
//
// Member: CCursor::CCursor, public
//
// Synopsis:
//
// Arguments: [iid] -- index id
// [pid] -- property id
//
// History: 27-Sep-91 BartoszM Created.
// 23-Jun-92 MikeHew Added weight initialization.
//
//----------------------------------------------------------------------------
inline CCursor::CCursor ( INDEXID iid, PROPID pid )
: _iid(iid), _pid(pid), _weight(MAX_QUERY_RANK), _fUnfilteredOnly( FALSE )
{}
//+---------------------------------------------------------------------------
//
// Member: CCursor::CCursor, public
//
// Synopsis:
//
// Arguments: [iid] -- index id
//
// History: 27-Sep-91 BartoszM Created.
// 23-Jun-92 MikeHew Added weight initialization.
//
//----------------------------------------------------------------------------
inline CCursor::CCursor ( INDEXID iid )
: _iid(iid), _weight(MAX_QUERY_RANK), _fUnfilteredOnly( FALSE ), _pid( pidInvalid )
{}
//+---------------------------------------------------------------------------
//
// Member: CCursor::CCursor, public
//
// History: 27-Sep-91 BartoszM Created.
// 23-Jun-92 MikeHew Added weight initialization.
//
//----------------------------------------------------------------------------
inline CCursor::CCursor ()
: _weight(MAX_QUERY_RANK), _fUnfilteredOnly( FALSE ), _pid( pidInvalid )
{}
//+---------------------------------------------------------------------------
//
// Member: CCursor::~CCursor, public
//
// History: 27-Sep-91 BartoszM Created.
//
//----------------------------------------------------------------------------
inline CCursor::~CCursor() { };
//+---------------------------------------------------------------------------
//
// Member: CCursor::IndexId, public
//
// History: 27-Sep-91 BartoszM Created.
//
//----------------------------------------------------------------------------
inline INDEXID CCursor::IndexId () { return _iid; }
//+---------------------------------------------------------------------------
//
// Member: CCursor::Pid, public
//
// Returns: The property id of the current property
//
// History: 27-Sep-91 BartoszM Created.
//
//----------------------------------------------------------------------------
inline PROPID CCursor::Pid () { return _pid; }