97 lines
3.1 KiB
C++
97 lines
3.1 KiB
C++
|
//+---------------------------------------------------------------------------
|
||
|
//
|
||
|
// Microsoft Windows
|
||
|
// Copyright (c) Microsoft Corporation, 1991-1998.
|
||
|
//
|
||
|
// File: QPARSE.HXX
|
||
|
//
|
||
|
// Contents: Query parser
|
||
|
//
|
||
|
// Classes: CQParse -- query parser
|
||
|
//
|
||
|
// History: 19-Sep-91 BartoszM Implemented.
|
||
|
// 19-Jan-93 KyleP Expression --> Restriction
|
||
|
//
|
||
|
//----------------------------------------------------------------------------
|
||
|
|
||
|
#pragma once
|
||
|
|
||
|
class CLangList;
|
||
|
class CRestriction;
|
||
|
class CPidMapper;
|
||
|
|
||
|
//+---------------------------------------------------------------------------
|
||
|
//
|
||
|
// Class: CQParse
|
||
|
//
|
||
|
// Purpose: Parse Query
|
||
|
//
|
||
|
// Interface:
|
||
|
//
|
||
|
// History: 19-Sep-91 BartoszM Created
|
||
|
// 15-Apr-92 AmyA Changed ConvertOccNode to
|
||
|
// ConvertPhraseNode and added
|
||
|
// ConvertProxNode
|
||
|
// 22-Apr-92 AmyA Added ConvertAndNotNode
|
||
|
// 15-Jul-92 MikeHew Extracted converter class
|
||
|
// Eliminated _pExp
|
||
|
// 11-Sep-92 AmyA Added GetStatus
|
||
|
//
|
||
|
//----------------------------------------------------------------------------
|
||
|
|
||
|
class PKeyRepository;
|
||
|
|
||
|
class CQParse
|
||
|
{
|
||
|
public:
|
||
|
CQParse ( CPidMapper & pidmap, CLangList & langList );
|
||
|
|
||
|
CRestriction* Parse ( CRestriction* pRst );
|
||
|
ULONG GetStatus () { return _flags; }
|
||
|
|
||
|
private:
|
||
|
CRestriction* Leaf ( CRestriction* pRst );
|
||
|
|
||
|
void AddLpwstrHelper( CPropertyRestriction * prstProp,
|
||
|
CInternalPropertyRestriction * prstIProp );
|
||
|
|
||
|
void AddLpwstrVectorHelper( CPropertyRestriction * prstProp,
|
||
|
CInternalPropertyRestriction * prstIProp );
|
||
|
|
||
|
void AddLpstrHelper( CPropertyRestriction * prstProp,
|
||
|
CInternalPropertyRestriction * prstIProp );
|
||
|
|
||
|
ULONG _flags;
|
||
|
|
||
|
CPidMapper & _pidmap;
|
||
|
CLangList & _langList;
|
||
|
|
||
|
LCID _lcidSystemDefault; // Default locale of system
|
||
|
};
|
||
|
|
||
|
enum BreakPhraseStatus
|
||
|
{
|
||
|
BP_OK, // No noise
|
||
|
BP_INVALID_PROPERTY, // Couldn't break text
|
||
|
BP_NOISE // Some noise in phrase
|
||
|
};
|
||
|
|
||
|
BreakPhraseStatus BreakPhrase( WCHAR const * phrase,
|
||
|
const CFullPropSpec & ps,
|
||
|
LCID lcid,
|
||
|
ULONG fuzzy,
|
||
|
PKeyRepository& keyRep,
|
||
|
IPhraseSink *pPhraseSink,
|
||
|
CPidMapper & pidMap,
|
||
|
CLangList & langList );
|
||
|
|
||
|
BreakPhraseStatus BreakPhrase( char const * phrase,
|
||
|
const CFullPropSpec & ps,
|
||
|
LCID lcid,
|
||
|
ULONG fuzzy,
|
||
|
PKeyRepository& keyRep,
|
||
|
IPhraseSink *pPhraseSink,
|
||
|
CPidMapper & pidMap,
|
||
|
CLangList & langList );
|
||
|
|