/*++ Copyright (C) Microsoft Corporation, 1998 - 1998 All rights reserved. Module Name: select.hxx Abstract: Command/Selection handling. Command line argument selection Author: Steve Kiraly (SteveKi) Feb-26-1998 Revision History: --*/ #ifndef _SELECT_HXX #define _SELECT_HXX class MPrinterClient; class TPrinter; /******************************************************************** Command/Selection handling. ********************************************************************/ class TSelection { SIGNATURE( 'sel' ) public: enum COMMAND_TYPE { kCommandTypePrinter = 1, // Printer command argument kCommandTypeJob = 2, // Print Job command kCommandTypePrinterAttributes = 3, // Printer command attribute change }; COUNT _cSelected; VAR( PIDENT, pid ); DLINK( TSelection, Selection ); COMMAND_TYPE _CommandType; DWORD _dwCommandAction; TSelection( const MPrinterClient* pPrinterClient, const TPrinter* pPrinter ); ~TSelection( VOID ); BOOL bValid( VOID ) const { return _pid != NULL; } }; /******************************************************************** Command line argument selection ********************************************************************/ class TSelect { SIGNATURE( 'selt' ) public: enum EDataType { kString, kInt, kBitTable, kValTable, kNone, }; enum EOperation { kOr, kNot, kAnd, kXor, kNop, }; struct Selection { UINT iKeyWord; EDataType eDataType; PVOID pTable; UINT iOffset; }; struct SelectionBit { UINT iKeyWord; UINT uBit; EOperation Op; }; struct SelectionVal { UINT iKeyWord; UINT uValue; UINT iOffset; }; TSelect( VOID ); ~TSelect( VOID ); BOOL bValid( VOID ); BOOL bLookup( IN Selection *pSelection, IN PVOID pInfo, IN LPCTSTR pKey, IN LPCTSTR pValue ); BOOL bApplyBitTableToValue( IN SelectionBit *pBitTable, IN UINT uBit, IN LPDWORD pdwBit ); BOOL TSelect:: bLookupBitTable( IN SelectionBit *pBitTable, IN LPCTSTR pKey ); BOOL TSelect:: bLookupValTable( IN SelectionVal *pValTable, IN PVOID pInfo, IN LPCTSTR pKey ); BOOL TSelect:: bMatch( IN LPCTSTR pszString, IN UINT iResId ); }; #endif // _SELECT_HXX