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.
|
|
/*****************************************************************/ /** Microsoft Windows for Workgroups **/ /** Copyright (C) Microsoft Corp., 1991-1992 **/ /*****************************************************************/
/*
base.h Universal base class for error cascading and debugging information
FILE HISTORY beng 09-Jul-1990 created beng 17-Jul-1990 added standard comment header to BASE beng 31-Jul-1991 added FORWARDING_BASE rustanl 11-Sep-1991 Added DECLARE_OUTLINE_NEWBASE, DECLARE_MI_NEWBASE, DEFINE_MI2_NEWBASE, DEFINE_MI3_NEWBASE, and DEFINE_MI4_NEWBASE gregj 22-Mar-1993 Ported to Chicago environment */
#ifndef _BASE_HXX_
#define _BASE_HXX_
/*************************************************************************
NAME: BASE (base)
SYNOPSIS: Universal base object, root of every class. It contains universal error status and debugging support.
INTERFACE: ReportError() - report an error on the object from within the object.
QueryError() - return the current error state, or 0 if no error outstanding.
operator!() - return TRUE if an error is outstanding. Typically means that construction failed.
CAVEATS: This sort of error reporting is safe enough in a single- threaded system, but loses robustness when multiple threads access shared objects. Use it for constructor-time error handling primarily.
NOTES: A class which inherits BASE through a private class should use the NEWBASE macro (q.v.) in its definition; otherwise its clients will lose the use of ! and QueryError.
HISTORY: rustanl 07-Jun-1990 Created as part of LMOD beng 09-Jul-1990 Gutted, removing LMOD methods beng 17-Jul-1990 Added USHORT error methods beng 19-Oct-1990 Finally, removed BOOL error methods johnl 14-Nov-1990 Changed QueryError to be a const method beng 25-Jan-1991 Added the ! Boolean operator and NEWBASE beng 31-Jul-1991 Made FORWARDING_BASE a friend gregj 22-Mar-1993 Ported to Chicago (removed excess baggage)
*************************************************************************/
class BASE { private: UINT _err;
protected: BASE() { _err = 0; } VOID ReportError( WORD err ) { _err = err; }
public: UINT QueryError() const { return _err; } BOOL operator!() const { return (_err != 0); } };
#endif // _BASE_HXX_
|