//+--------------------------------------------------------------------------- // // 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 & xDbCmdTreeNode, XPtr & xDbSortNode, XPtr & pDbCols, XPtr & pDbGroupNode, ULONG ulMaxRecords, ULONG ulFirstRows ); CDbColumns * ParseStringColumns( WCHAR const * wcsColumns, IColumnMapper * pList, LCID lcid = GetSystemDefaultLCID(), PVariableSet * pVarSet = 0, CDynArray * 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 _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 };