Code/Resource
Windows Develop
Linux-Unix program
Internet-Socket-Network
Web Server
Browser Client
Ftp Server
Ftp Client
Browser Plugins
Proxy Server
Email Server
Email Client
WEB Mail
Firewall-Security
Telnet Server
Telnet Client
ICQ-IM-Chat
Search Engine
Sniffer Package capture
Remote Control
xml-soap-webservice
P2P
WEB(ASP,PHP,...)
TCP/IP Stack
SNMP
Grid Computing
SilverLight
DNS
Cluster Service
Network Security
Communication-Mobile
Game Program
Editor
Multimedia program
Graph program
Compiler program
Compress-Decompress algrithms
Crypt_Decrypt algrithms
Mathimatics-Numerical algorithms
MultiLanguage
Disk/Storage
Java Develop
assembly language
Applications
Other systems
Database system
Embeded-SCM Develop
FlashMX/Flex
source in ebook
Delphi VCL
OS Develop
MiddleWare
MPI
MacOS develop
LabView
ELanguage
Software/Tools
E-Books
Artical/Document
npassert.h
Package: shell.rar [view]
Upload User: xhy777
Upload Date: 2007-02-14
Package Size: 24088k
Code Size: 7k
Category:
Windows Kernel
Development Platform:
Visual C++
- /*****************************************************************/
- /** Microsoft Windows for Workgroups **/
- /** Copyright (C) Microsoft Corp., 1991-1992 **/
- /*****************************************************************/
- /*
- npassert.h
- NP environment independent assertion/logging routines
- Usage:
- ASSERT(exp) Evaluates its argument. If "exp" evals to
- FALSE, then the app will terminate, naming
- the file name and line number of the assertion
- in the source.
- UIASSERT(exp) Synonym for ASSERT.
- ASSERTSZ(exp,sz) As ASSERT, except will also print the message
- "sz" with the assertion message should it fail.
- REQUIRE(exp) As ASSERT, except that its expression is still
- evaluated in retail versions. (Other versions
- of ASSERT disappear completely in retail builds.)
- ANSI_ASSERTABLE(sz) Declares "sz" to be a string buffer which
- can be used with the ASSERT_ANSI and ASSERT_OEM
- macros (effectively declares a debug-only BOOL
- associated with the string).
- ASSERT_ANSI(sz) Asserts that sz is in the ANSI character set.
- ASSERT_OEM(sz) Asserts that sz is in the OEM character set.
- IS_ANSI(sz) Declares that sz is in the ANSI character set
- (e.g., if it's just come back from a GetWindowText).
- IS_OEM(sz) Declares that sz is in the OEM character set.
- TO_ANSI(sz) Does OemToAnsi in place.
- TO_OEM(sz) Does AnsiToOem in place.
- COPY_TO_ANSI(src,dest) Does OemToAnsi, not in place.
- COPY_TO_OEM(src,dest) Does AnsiToOem, not in place.
- NOTE: the latter two, just like the APIs themselves, have the
- source first and destination second, opposite from strcpy().
- The ASSERT macros expect a symbol _FILENAME_DEFINED_ONCE, and will
- use the value of that symbol as the filename if found; otherwise,
- they will emit a new copy of the filename, using the ANSI C __FILE__
- macro. A client sourcefile may therefore define __FILENAME_DEFINED_ONCE
- in order to minimize the DGROUP footprint of a number of ASSERTs.
- FILE HISTORY:
- Johnl 11/15/90 Converted from CAssert to general purpose
- Johnl 12/06/90 Changed _FAR_ to _far in _assert prototype
- beng 04/30/91 Made C-includable
- beng 08/05/91 Made assertions occupy less dgroup; withdrew
- explicit heapchecking (which was crt
- dependent anyway)
- beng 09/17/91 Removed additional consistency checks;
- rewrote to minimize dgroup footprint,
- check expression in-line
- beng 09/19/91 Fixed my own over-cleverness
- beng 09/25/91 Fixed stupid bug in retail REQUIRE
- gregj 03/23/93 Ported to Chicago environment
- gregj 05/11/93 Added ANSI/OEM asserting routines
- gregj 05/25/93 Added COPY_TO_ANSI and COPY_TO_OEM
- */
- #ifndef _NPASSERT_H_
- #define _NPASSERT_H_
- #if defined(__cplusplus)
- extern "C"
- {
- #else
- extern
- #endif
- VOID UIAssertHelper( const CHAR* pszFileName, UINT nLine );
- VOID UIAssertSzHelper( const CHAR* pszMessage, const CHAR* pszFileName, UINT nLine );
- extern const CHAR szShouldBeAnsi[];
- extern const CHAR szShouldBeOEM[];
- #if defined(__cplusplus)
- }
- #endif
- #if defined(DEBUG)
- # if defined(_FILENAME_DEFINED_ONCE)
- # define ASSERT(exp)
- { if (!(exp)) UIAssertHelper(_FILENAME_DEFINED_ONCE, __LINE__); }
- # define ASSERTSZ(exp, sz)
- { if (!(exp)) UIAssertSzHelper((sz), _FILENAME_DEFINED_ONCE, __LINE__); }
- # else
- # define ASSERT(exp)
- { if (!(exp)) UIAssertHelper(__FILE__, __LINE__); }
- # define ASSERTSZ(exp, sz)
- { if (!(exp)) UIAssertSzHelper((sz), __FILE__, __LINE__); }
- # endif
- # define UIASSERT(exp) ASSERT(exp)
- # define REQUIRE(exp) ASSERT(exp)
- #define EXTERN_ANSI_ASSERTABLE(sz) extern BOOL fAnsiIs##sz;
- #define ANSI_ASSERTABLE(sz) BOOL fAnsiIs##sz=FALSE;
- #define ASSERT_ANSI(sz) ASSERTSZ(fAnsiIs##sz,szShouldBeAnsi)
- #define ASSERT_OEM(sz) ASSERTSZ(!fAnsiIs##sz,szShouldBeOEM)
- #define IS_ANSI(sz) fAnsiIs##sz = TRUE;
- #define IS_OEM(sz) fAnsiIs##sz = FALSE;
- #define TO_ANSI(sz) { ASSERT_OEM(sz); ::OemToAnsi(sz,sz); IS_ANSI(sz); }
- #define TO_OEM(sz) { ASSERT_ANSI(sz); ::AnsiToOem(sz,sz); IS_OEM(sz); }
- #define COPY_TO_ANSI(s,d) { ASSERT_OEM(s); ::OemToAnsi(s,d); IS_ANSI(d); }
- #define COPY_TO_OEM(s,d) { ASSERT_ANSI(s); ::AnsiToOem(s,d); IS_OEM(d); }
- #else // !DEBUG
- # define ASSERT(exp) ;
- # define UIASSERT(exp) ;
- # define ASSERTSZ(exp, sz) ;
- # define REQUIRE(exp) { (exp); }
- #define EXTERN_ANSI_ASSERTABLE(sz) ;
- #define ANSI_ASSERTABLE(sz) ;
- #define ASSERT_ANSI(sz) ;
- #define ASSERT_OEM(sz) ;
- #define IS_ANSI(sz) ;
- #define IS_OEM(sz) ;
- #define TO_ANSI(sz) ::OemToAnsi(sz,sz)
- #define TO_OEM(sz) ::AnsiToOem(sz,sz)
- #define COPY_TO_ANSI(s,d) ::OemToAnsi(s,d)
- #define COPY_TO_OEM(s,d) ::AnsiToOem(s,d)
- #endif // DEBUG
- // Debug mask APIs
- // NOTE: You can #define your own DM_* values using bits in the HI BYTE
- #define DM_TRACE 0x0001 // Trace messages
- #define DM_WARNING 0x0002 // Warning
- #define DM_ERROR 0x0004 // Error
- #define DM_ASSERT 0x0008 // Assertions
- #define DM_LOG_FILE 0x0100
- #define DM_PREFIX 0x0200
- #if !defined(NetDebugMsg)
- //
- // DebugMsg(mask, msg, args...) - Generate wsprintf-formatted msg using
- // specified debug mask. System debug mask
- // governs whether message is output.
- //
- #if defined(__cplusplus)
- extern "C"
- {
- #else
- extern
- #endif
- #define REGVAL_STR_DEBUGMASK "DebugMask"
- void __cdecl NetDebugMsg(UINT mask, LPCSTR psz, ...);
- UINT WINAPI NetSetDebugParameters(PSTR pszName,PSTR pszLogFile);
- UINT WINAPI NetSetDebugMask(UINT mask);
- UINT WINAPI NetGetDebugMask(void);
- #if defined(__cplusplus)
- }
- #endif
- #endif
- #ifdef DEBUG
- #define Break() {_asm _emit 0xcc}
- //#define Trap() {_asm {_emit 0xcc}}
- //#define TrapC(c) {if(c) {Trap()}}
- #define DPRINTF NetDebugMsg
- #else
- #define Break()
- #define Trap()
- #define TrapC(c)
- // Nb: Following definition is needed to avoid compiler complaining
- // about empty function name in expression. In retail builds using this macro
- // will cause string parameters not appear in executable
- #define DPRINTF 1?(void)0 : (void)
- #endif
- #endif // _NPASSERT_H_