windows-nt/Source/XPSP1/NT/inetsrv/query/h/convert.hxx
2020-09-26 16:20:57 +08:00

63 lines
1.6 KiB
C++

//+---------------------------------------------------------------------------
//
// Copyright (C) 1991-1992, Microsoft Corporation.
//
// File: CONVERT.HXX
//
// Contents: Expression to cursor converter
//
// Classes: CConverter
//
// History: 16-Jul-92 MikeHew Created
//
//----------------------------------------------------------------------------
#pragma once
class CRestriction;
class CNodeRestriction;
class CCursor;
class COccCursor;
class CQueriable;
//+---------------------------------------------------------------------------
//
// Class: CConverter
//
// Purpose: Convert expressions to cursors
//
// Interface:
//
// History: 15-Jul-92 MikeHew Created
//
//----------------------------------------------------------------------------
class CConverter
{
public:
CConverter( CQueriable* pQuerble, ULONG cMaxNodes );
CCursor* QueryCursor ( CRestriction const * pRst );
BOOL TooManyNodes() { return 0 == _cNodesRemaining; }
private:
// Converting expressions to cursors
CCursor* ConvertRst ( CRestriction const * pRst );
CCursor* ConvertNode ( CNodeRestriction const * pNodeRst );
CCursor* ConvertProxNode ( CNodeRestriction const * pNodeRst );
COccCursor* ConvertPhraseNode ( CNodeRestriction const * pNodeRst );
CCursor* ConvertAndNotNode ( XCursor & curAnd, CCurStack & curNot );
CCursor* ConvertVectorNode ( CNodeRestriction const * pNodeRst );
COccCursor* ConvertLeaf ( CRestriction const * pRst );
CQueriable * _pQuerble;
ULONG _cNodesRemaining;
};