|
|
//+---------------------------------------------------------------------------
//
// Copyright (C) Microsoft Corporation, 1996 - 2000.
//
// File: strrest.hxx
//
// Contents: Builds a restriction object from a string
//
// History: 96/Jan/3 DwightKr Created
// 97/Jul/22 KrishnaN Extended to take a restriction
// and build a full query tree.
//
//----------------------------------------------------------------------------
#pragma once
class PVariableSet; class CVariable;
CDbRestriction * GetStringDbRestriction( const WCHAR * wcsRestriction, ULONG ulDialect, IColumnMapper * pList, LCID locale );
CDbCmdTreeNode * FormDbQueryTree( XPtr<CDbCmdTreeNode> & xDbCmdTreeNode, XPtr<CDbSortNode> & xDbSortNode, XPtr<CDbProjectListAnchor> & pDbCols, XPtr<CDbNestingNode> & pDbGroupNode, ULONG ulMaxRecords, ULONG ulFirstRows );
CDbColumns * ParseStringColumns( WCHAR const * wcsColumns, IColumnMapper * pList, LCID lcid = GetSystemDefaultLCID(), PVariableSet * pVarSet = 0, CDynArray<WCHAR> * pawcsColumns = 0 );
CDbProjectListAnchor * ParseColumnsWithFriendlyNames( WCHAR const * wcsColumns, IColumnMapper * pList, PVariableSet * pVarSet = 0 );
//+---------------------------------------------------------------------------
//
// Class: CTextToTree
//
// Purpose: An object to convert the textual restriction, columns and
// sort specification to a DBCOMMANDTREE.
//
// History: 3-04-97 srikants Created
//
//----------------------------------------------------------------------------
class CTextToTree {
public:
CTextToTree( WCHAR const * wcsRestriction, ULONG ulDialect, WCHAR const * wcsColumns, IColumnMapper * pPropList, LCID locale, WCHAR const * wcsSort = 0, WCHAR const * wcsGroup = 0, PVariableSet * pVariableSet = 0, ULONG maxRecs = 0, ULONG cFirstRows = 0, BOOL fKeepFriendlyNames = FALSE ) : _wcsRestriction(wcsRestriction), _ulDialect( ulDialect ), _wcsColumns(wcsColumns), _wcsSort(wcsSort), _wcsGroup(wcsGroup), _locale(locale), _pVariableSet(pVariableSet), _pDbColumns(0), _xPropList(pPropList), _maxRecs(maxRecs), _cFirstRows(cFirstRows), _fKeepFriendlyNames( fKeepFriendlyNames ), _pDbCmdTree( 0 ) { Win4Assert( 0 != wcsRestriction && 0 != wcsRestriction[0] ); Win4Assert( 0 != _wcsColumns && 0 != _wcsColumns[0] ); _xPropList->AddRef(); }
CTextToTree( DBCOMMANDTREE const *pDbCmdTree, WCHAR const * wcsColumns, IColumnMapper *pPropList, LCID locale, WCHAR const * wcsSort = 0, WCHAR const * wcsGroup = 0, PVariableSet * pVariableSet = 0, ULONG maxRecs = 0, ULONG cFirstRows = 0, BOOL fKeepFriendlyNames = FALSE ) : _wcsRestriction( 0 ), _ulDialect( ISQLANG_V1 ), _wcsColumns(wcsColumns), _wcsSort(wcsSort), _wcsGroup(wcsGroup), _locale(locale), _pVariableSet(pVariableSet), _pDbColumns(0), _xPropList(pPropList), _maxRecs(maxRecs), _cFirstRows(cFirstRows), _fKeepFriendlyNames( fKeepFriendlyNames ), _pDbCmdTree( pDbCmdTree ) { Win4Assert( 0 != _pDbCmdTree ); Win4Assert( 0 != _wcsColumns && 0 != _wcsColumns[0] ); _xPropList->AddRef(); }
CTextToTree( WCHAR const * wcsRestriction, ULONG ulDialect, CDbColumns * pDbColumns, IColumnMapper *pPropList, LCID locale, WCHAR const * wcsSort = 0, WCHAR const * wcsGroup = 0, PVariableSet * pVariableSet = 0, ULONG maxRecs = 0, ULONG cFirstRows = 0 ) : _wcsRestriction(wcsRestriction), _ulDialect( ulDialect ), _wcsColumns(0), _wcsSort(wcsSort), _wcsGroup(wcsGroup), _locale(locale), _pVariableSet(pVariableSet), _pDbColumns(pDbColumns), _xPropList(pPropList), _maxRecs(maxRecs), _cFirstRows(cFirstRows), _fKeepFriendlyNames(FALSE), _pDbCmdTree( 0 ) { Win4Assert( 0 != wcsRestriction && 0 != wcsRestriction[0] ); Win4Assert( 0 != pDbColumns ); _xPropList->AddRef(); }
DBCOMMANDTREE * FormFullTree();
private:
WCHAR const * _wcsRestriction; // Restriction in "Tripolish"
ULONG _ulDialect; // tripolish dialict
DBCOMMANDTREE const * _pDbCmdTree; // Restriction tree
WCHAR const * _wcsColumns; // Comma separated column list
WCHAR const * _wcsSort; // Sort specification
WCHAR const * _wcsGroup; // Grouping specification
CDbColumns * _pDbColumns; // Parsed db columns
XInterface<IColumnMapper> _xPropList; // Property List
LCID _locale; // Locale for parsing the strings
PVariableSet * _pVariableSet; // Variable Set
ULONG _maxRecs; // Maximum number of output records
ULONG _cFirstRows; BOOL _fKeepFriendlyNames; // Flag indicating if friendly names
// from columns should be retained
};
|