Source code of Windows XP (NT5)
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Copyright (c) 1997-1999 Microsoft Corporation
Module Name:
pragma.hxx
Abstract:
An object that maintains flags for each warning/error message. The flag indicates whether or not the warning should be emitted. Error messages are always emitted.
Notes:
Author:
NishadM Dec-30-1997 Created.
Notes:
----------------------------------------------------------------------------*/
#ifndef __PRAGMA_HXX__
#define __PRAGMA_HXX__
#include "errors.hxx"
// calculate the number of unsigned longs
const unsigned long c_nMsgs = ( D_ERR_MAX-D_ERR_START+C_ERR_MAX-C_ERR_START ) / ( sizeof(unsigned long) * 8 ) + 1;
class CMessageNumberList { private: unsigned long fMessageNumber [c_nMsgs]; protected: // maps warning number to the apprpriate bit.
unsigned long BitIndex( unsigned long ulMsg ); public: CMessageNumberList(); ~CMessageNumberList() { } // queries for the warning message flag
unsigned long GetMessageFlag( unsigned long ulMsg ) { ulMsg = BitIndex( ulMsg ); return ( fMessageNumber[ ulMsg / ( sizeof(unsigned long) * 8 ) ] & ( 1 << ( ulMsg % ( sizeof(unsigned long) * 8 ) ) ) ); }
// turns on all flags specified by list
void SetMessageFlags( CMessageNumberList& list ); // turns on warning specified by ulMsg
void SetMessageFlag( unsigned long ulMsg ) { ulMsg = BitIndex( ulMsg ); fMessageNumber[ ulMsg / ( sizeof(unsigned long) * 8 ) ] |= ( 1 << ( ulMsg % ( sizeof(unsigned long) * 8 ) ) ); } // turns off all flags specified by list
void ResetMessageFlags( CMessageNumberList& list ); // turns off warning specified by ulMsg
void ResetMessageFlag( unsigned long ulMsg ) { ulMsg = BitIndex( ulMsg ); fMessageNumber[ ulMsg / ( sizeof(unsigned long) * 8 ) ] &= ~( 1 << ( ulMsg % ( sizeof(unsigned long) * 8 ) ) ); } void ResetAll(); void SetAll(); };
#endif __PRAGMA_HXX__
|