212 lines
5.1 KiB
C++
212 lines
5.1 KiB
C++
|
/**********************************************************************/
|
||
|
/** Microsoft LAN Manager **/
|
||
|
/** Copyright(c) Microsoft Corp., 1990, 1991 **/
|
||
|
/**********************************************************************/
|
||
|
|
||
|
/*
|
||
|
MaskMap.hxx
|
||
|
|
||
|
This file contains the definition for the MASK_MAP class.
|
||
|
A MASK_MAP is a BITFIELD, NLS_STR pair that can be used to
|
||
|
associate bitmasks with strings.
|
||
|
|
||
|
|
||
|
|
||
|
FILE HISTORY:
|
||
|
Johnl 02-Aug-1991 Created
|
||
|
|
||
|
*/
|
||
|
|
||
|
|
||
|
#ifndef _MASKMAP_HXX_
|
||
|
#define _MASKMAP_HXX_
|
||
|
|
||
|
#include "bitfield.hxx"
|
||
|
#include "string.hxx"
|
||
|
#include "slist.hxx"
|
||
|
|
||
|
/*************************************************************************
|
||
|
|
||
|
NAME: US_IDS_PAIR
|
||
|
|
||
|
SYNOPSIS: This structure can be used for static initialization
|
||
|
that is compatible with MASK_MAP::Add.
|
||
|
|
||
|
CAVEATS:
|
||
|
|
||
|
NOTES: usBitMask is the initialized bitfield
|
||
|
idsStringID is the ID of the string that will be loaded
|
||
|
with NLS_STR::LoadString
|
||
|
nID is the app defined ID of this pair.
|
||
|
|
||
|
HISTORY:
|
||
|
Johnl 05-Aug-1991 Created
|
||
|
|
||
|
**************************************************************************/
|
||
|
|
||
|
|
||
|
struct US_IDS_PAIRS {
|
||
|
USHORT usBitMask ;
|
||
|
MSGID idsStringID ; // Resource string ID
|
||
|
int nID ;
|
||
|
} ;
|
||
|
|
||
|
/*************************************************************************
|
||
|
|
||
|
NAME: STRING_BITSET_PAIR
|
||
|
|
||
|
SYNOPSIS: This is a container class for the MASK_MAP class.
|
||
|
|
||
|
INTERFACE: QueryString & QueryBitfield, returns the string and
|
||
|
and bitfield components respectively. QueryID returns
|
||
|
the user defined ID associated with the string and bitset.
|
||
|
|
||
|
PARENT: BASE
|
||
|
|
||
|
USES: NLS_STR, BITFIELD
|
||
|
|
||
|
CAVEATS: None
|
||
|
|
||
|
NOTES:
|
||
|
|
||
|
HISTORY:
|
||
|
Johnl 02-Aug-1991 Created
|
||
|
|
||
|
**************************************************************************/
|
||
|
|
||
|
DLL_CLASS STRING_BITSET_PAIR : public BASE
|
||
|
{
|
||
|
public:
|
||
|
|
||
|
STRING_BITSET_PAIR( const NLS_STR & nlsString,
|
||
|
const BITFIELD & bitfieldMask,
|
||
|
int nID ) ;
|
||
|
|
||
|
NLS_STR * QueryString( void )
|
||
|
{ return &_nlsString ; }
|
||
|
|
||
|
BITFIELD * QueryBitfield( void )
|
||
|
{ return &_bitfieldMask ; }
|
||
|
|
||
|
int QueryID( void )
|
||
|
{ return _nID ; }
|
||
|
|
||
|
private:
|
||
|
NLS_STR _nlsString ;
|
||
|
BITFIELD _bitfieldMask ;
|
||
|
int _nID ;
|
||
|
} ;
|
||
|
|
||
|
|
||
|
|
||
|
/*************************************************************************
|
||
|
|
||
|
NAME: MASK_MAP
|
||
|
|
||
|
SYNOPSIS: This class provides a bitfield/string lookup table that
|
||
|
optionally allows a user defined classification (by using
|
||
|
an int ID key value that is used for lookups).
|
||
|
|
||
|
INTERFACE:
|
||
|
|
||
|
Add
|
||
|
Adds an association to the list with the specified
|
||
|
bitfield, string and id.
|
||
|
|
||
|
Add (alternate form)
|
||
|
Adds an array of struct US_IDS_PAIRS, good for static
|
||
|
initialization.
|
||
|
|
||
|
|
||
|
BitsToString, StringToBits
|
||
|
Finds the first matching passed String/Bitfield with the requested
|
||
|
ID and returns the corresponding Bitfield/string.
|
||
|
|
||
|
|
||
|
EnumStrings, EnumBits
|
||
|
Lists all of the strings in the class or all of the bits in
|
||
|
the class (respectively) that have the ID that matches the
|
||
|
passed ID. pfFromBeginning indicates start from the beginning
|
||
|
of the list, it will be set to FALSE automatically. While the
|
||
|
method returns TRUE, there is more data.
|
||
|
|
||
|
IsPresent
|
||
|
Searches for a particular bitfield and returns TRUE if found
|
||
|
|
||
|
QueryBits
|
||
|
Retrieves the nth bitfield and string in this maskmap
|
||
|
|
||
|
PARENT: BASE
|
||
|
|
||
|
USES: BITFIELD, NLS_STR
|
||
|
|
||
|
CAVEATS:
|
||
|
|
||
|
NOTES: As a CODEWORK item, may want to allow a search value of -1 for
|
||
|
the ID which means accept any ID (this might be useful for
|
||
|
BitsToString/StringToBits and the Enum* methods.
|
||
|
|
||
|
HISTORY:
|
||
|
Johnl 02-Aug-1991 Created
|
||
|
Johnl 10-Feb-1992 Added QueryBits, added found at index to
|
||
|
StringToBits and BitsToString
|
||
|
Johnl 02-Feb-1993 Added IsPresent
|
||
|
|
||
|
**************************************************************************/
|
||
|
|
||
|
DECL_SLIST_OF( STRING_BITSET_PAIR, DLL_BASED )
|
||
|
|
||
|
DLL_CLASS MASK_MAP : public BASE
|
||
|
{
|
||
|
public:
|
||
|
|
||
|
MASK_MAP() ;
|
||
|
~MASK_MAP() ;
|
||
|
|
||
|
APIERR Add( const BITFIELD & bitfieldMask,
|
||
|
const NLS_STR & nlsString,
|
||
|
int nID = 0 ) ;
|
||
|
|
||
|
APIERR Add( US_IDS_PAIRS uidsspairs[], USHORT cCount ) ;
|
||
|
|
||
|
APIERR BitsToString( const BITFIELD & bitfieldKey,
|
||
|
NLS_STR * pnlsString,
|
||
|
int nID = 0,
|
||
|
UINT * puiFoundIndex = NULL ) ;
|
||
|
|
||
|
APIERR StringToBits( const NLS_STR & nlsStringKey,
|
||
|
BITFIELD * pbitfield,
|
||
|
int nID = 0,
|
||
|
UINT * puiFoundIndex = NULL ) ;
|
||
|
|
||
|
APIERR EnumStrings( NLS_STR * pnlsString,
|
||
|
BOOL * pfMoreData,
|
||
|
BOOL * pfFromBeginning,
|
||
|
int nID = 0 ) ;
|
||
|
|
||
|
APIERR EnumBits( BITFIELD* pbitfield,
|
||
|
BOOL * pfMoreData,
|
||
|
BOOL * pfFromBeginning,
|
||
|
int nID = 0 ) ;
|
||
|
|
||
|
APIERR QueryBits( UINT uiIndex,
|
||
|
BITFIELD * pbitfield,
|
||
|
NLS_STR * pnlsString,
|
||
|
int * pnID = NULL ) ;
|
||
|
|
||
|
BOOL IsPresent( BITFIELD * pbitfield ) ;
|
||
|
|
||
|
UINT QueryCount( void )
|
||
|
{ return _slbitnlsPairs.QueryNumElem() ; }
|
||
|
|
||
|
private:
|
||
|
|
||
|
SLIST_OF( STRING_BITSET_PAIR ) _slbitnlsPairs ;
|
||
|
ITER_SL_OF(STRING_BITSET_PAIR) _sliterStrings ;
|
||
|
ITER_SL_OF(STRING_BITSET_PAIR) _sliterBits ;
|
||
|
|
||
|
} ;
|
||
|
|
||
|
|
||
|
#endif //_MASKMAP_HXX_
|