windows-nt/Source/XPSP1/NT/net/ias/providers/nap/regex/stateset.hxx
2020-09-26 16:20:57 +08:00

113 lines
2.2 KiB
C++

//+-------------------------------------------------------------------------
//
// Copyright (C) 1991, Microsoft Corporation.
//
// File: StateSet.hxx
//
// Contents:
//
// Classes:
//
// History: 01-20-92 KyleP Created
// 03-11-97 arunk Modified for regex lib
//--------------------------------------------------------------------------
#ifndef __STATESET_HXX__
#define __STATESET_HXX__
#include <windows.h>
//+-------------------------------------------------------------------------
//
// Class: CStateSet
//
// Purpose: Represents a set of states.
//
// History: 20-Jan-92 KyleP Created
//
//--------------------------------------------------------------------------
//
// Assume most state sets are small.
//
UINT const CStateSet_cFirst = 10;
class CStateSet
{
public:
inline CStateSet();
inline ~CStateSet();
void Clear();
void Add( UINT state );
inline UINT Count() const;
UINT State( UINT iState ) const;
BOOL IsMember( UINT state );
private:
UINT _cStates;
UINT _auiFirst[ CStateSet_cFirst ];
UINT *_puiRest;
UINT _cuiRest;
UINT _cRest;
};
//+-------------------------------------------------------------------------
//
// Member: CStateSet::CStateSet, public
//
// Synopsis: Initialize a state set.
//
// History: 20-Jan-92 KyleP Created
//
//--------------------------------------------------------------------------
inline CStateSet::CStateSet()
: _puiRest( 0 )
{
Clear();
}
//+-------------------------------------------------------------------------
//
// Member: CStateSet::~CStateSet, public
//
// Synopsis: Destroy a state set.
//
// History: 20-Jan-92 KyleP Created
//
//--------------------------------------------------------------------------
inline CStateSet::~CStateSet()
{
delete _puiRest;
}
//+-------------------------------------------------------------------------
//
// Member: CStateSet::Count, public
//
// Returns: The number of states in the state set.
//
// History: 20-Jan-92 KyleP Created
//
//--------------------------------------------------------------------------
inline UINT CStateSet::Count() const
{
return( _cStates );
}
#endif // __STATESET_HXX__