requireDefinitions.h from redshed at Krugle
Show requireDefinitions.h syntax highlighted
/****************************************************************************************
requireDefinitions.h $Revision: 30 $
<http://rentzsch.com/require>
Copyright © 1997-2002 Red Shed Software. All rights reserved.
by Jonathan 'Wolf' Rentzsch (jon at redshed dot net)
************************************************************************************/
#ifndef _requireDefinitions_
#define _requireDefinitions_
#ifdef __MWERKS__ // CWPro6.2 is 0x2401
#include <AEDataModel.h>
#else
#include <Carbon/Carbon.h>
#endif
#ifdef __cplusplus
extern "C" {
#endif
extern void _Require( const char *code, const char *note, const char *file, long line );
extern void _RequireMacPtr( const void *ptr, const char *name, const char *file, long line );
extern void _RequirePtrAlign( const void *ptr, const char *name, unsigned long align, const char *file, long line );
extern void _RequireHandle( const void *handle, const char *name, const char *file, long line );
extern void _RequireResHandle( const void *handle, const char *name, const char *file, long line );
extern void _RequirePString( const void *string, const char *name, long size, long min, long max, const char *file, long line );
extern void _RequireCString( const void *string, const char *name, long min, long max, const char *file, long line );
extern void _RequireAEDesc( const AEDesc desc, const char *name, Boolean canBeNull, const char *file, long line );
extern void _RequireSwitch( long value, const char *name, const char *file, long line );
extern void _RequireEqual( Boolean shouldBeEqual, long actualValue, const char *actualName, long expectedValue, const char *expectedName, const char *file, long line );
extern void _RequireFSSpec( const void *specPtr, const char *name, const char *file, long line );
#if GenerateRequirements
#define RequireIf( TEST, CODE ) if((TEST)&&!(CODE))_Require( #CODE, nil, __FILE__, __LINE__ )
#define Require( CODE ) if(!(CODE))_Require( #CODE, nil, __FILE__, __LINE__ )
#define RequireNote( CODE, NOTE ) if(!(CODE))_Require( #CODE, NOTE, __FILE__, __LINE__ )
#define RequireIfNote( TEST, CODE, NOTE ) if((TEST)&&!(CODE))_Require( #CODE, NOTE, __FILE__, __LINE__ )
#define RequireMacPtr( PTR ) _RequireMacPtr( (PTR), #PTR, __FILE__, __LINE__ )
#define RequireMacPtrIf( TEST, PTR ) if((TEST))RequireMacPtr( PTR )
#define RequireMacPtrIfNotNil( PTR ) RequireMacPtrIf( (PTR)!=nil, PTR )
#define RequirePtrAlign( PTR, ALIGN ) _RequirePtrAlign( (PTR), #PTR, (ALIGN), __FILE__, __LINE__ )
#define RequirePtr( PTR ) RequirePtrAlign( PTR, 1 )
#define RequirePtrAlignIf( TEST, PTR, ALIGN ) if((TEST))RequirePtrAlign( PTR, ALIGN )
#define RequirePtrIf( TEST, PTR ) RequirePtrAlignIf( TEST, PTR, 1 )
#define RequirePtrAlignIfNotNil( PTR, ALIGN ) RequirePtrAlignIf( (PTR)!=nil, PTR, ALIGN )
#define RequirePtrIfNotNil( PTR ) RequirePtrAlignIfNotNil( PTR, 1 )
#if TARGET_CPU_PPC
#define RequireProcPtr( PTR ) RequirePtrAlign( PTR, 4 )
#define RequireProcPtrIfNotNil( PTR ) RequirePtrAlignIfNotNil( PTR, 4 )
#else
#define RequireProcPtr( PTR ) RequirePtrAlign( PTR, 2 )
#define RequireProcPtrIfNotNil( PTR ) RequirePtrAlignIfNotNil( PTR, 2 )
#endif
#define RequireHandle( HANDLE ) _RequireHandle( (HANDLE), #HANDLE, __FILE__, __LINE__ )
#define RequireHandleIfNotNil( HANDLE ) if((HANDLE)!=(Handle)0)_RequireHandle( (HANDLE), #HANDLE, __FILE__, __LINE__ )
#define RequireResHandle( HANDLE ) _RequireResHandle( (HANDLE), #HANDLE, __FILE__, __LINE__ )
#define RequireResHandleIfNotNil( HANDLE ) if((HANDLE)!=(Handle)0)_RequireResHandle( (HANDLE), #HANDLE, __FILE__, __LINE__ )
#define RequirePString( STR, MIN, MAX ) _RequirePString( (STR), #STR, sizeof((STR)), (MIN), (MAX), __FILE__, __LINE__ )
#define RequireCString( STR, MIN, MAX ) _RequireCString( (STR), #STR, (MIN), (MAX), __FILE__, __LINE__ )
#define RequireAEDesc( DESC ) _RequireAEDesc( (DESC), #DESC, false, __FILE__, __LINE__ )
#define RequireAEDescIfNotNull( DESC ) _RequireAEDesc( (DESC), #DESC, true, __FILE__, __LINE__ )
#define RequireAEDescIfNotNil( DESC ) if((DESC))RequireAEDesc( *(DESC) )
#define RequireAEDescIfNotNilOrNull( DESC ) if((DESC))RequireAEDescIfNotNull( *(DESC) )
#define RequireSwitch( VALUE ) _RequireSwitch( (VALUE), #VALUE, __FILE__, __LINE__ )
#define RequireSupport( CODE ) CODE
#define RequireEqual( VAR, VALUE ) _RequireEqual( true, (long)(VAR), #VAR, (long)(VALUE), #VALUE, __FILE__, __LINE__ )
#define RequireNotEqual( VAR, VALUE ) _RequireEqual( false, (long)(VAR), #VAR, (long)(VALUE), #VALUE, __FILE__, __LINE__ )
#define RequireNoErr( ERR ) RequireEqual( (ERR), noErr )
#define RequireBool( VAR ) Require( (VAR) == 0 || (VAR) == 1 )
#define RequireSInt8( VAR ) Require( (VAR) <= 0x7F )
#define RequireUInt8( VAR ) Require( (VAR) <= 0xFF )
#define RequireSInt16( VAR ) Require( (VAR) <= 0x7FFF )
#define RequireUInt16( VAR ) Require( (VAR) <= 0xFFFF )
#define RequireSInt32( VAR ) Require( (VAR) <= 0x7FFFFFF )
#define RequireUInt32( VAR ) Require( (VAR) <= 0xFFFFFFF )
#if TARGET_API_MAC_CARBON
#define RequireControl( CONTROL ) Require( IsValidControlHandle( CONTROL ) )
#define RequireMenu( MENU )
#else
#define RequireControl( CONTROL ) RequireHandle( CONTROL )
#define RequireMenu( MENU ) RequireHandle( MENU )
#endif
#define RequireRefNum( REFNUM ) Require( ((REFNUM) > 1) && ((REFNUM) < 0x7FFF) )
#define RequireFSSpec( FSSPEC ) _RequireFSSpec( (FSSPEC), #FSSPEC, __FILE__, __LINE__ )
#else // GenerateRequirements
#define RequireIf( TEST, CODE )
#define Require( CODE )
#define RequireNote( CODE, NOTE )
#define RequireIfNote( TEST, CODE, NOTE )
#define RequireMacPtr( PTR )
#define RequireMacPtrIf( TEST, PTR )
#define RequireMacPtrIfNotNil( PTR )
#define RequirePtrAlign( PTR, ALIGN )
#define RequirePtr( PTR )
#define RequirePtrAlignIf( TEST, PTR, ALIGN )
#define RequirePtrIf( TEST, PTR )
#define RequirePtrAlignIfNotNil( PTR, ALIGN )
#define RequirePtrIfNotNil( PTR )
#define RequireProcPtr( PTR )
#define RequireProcPtrIfNotNil( PTR )
#define RequireHandle( HANDLE )
#define RequireHandleIfNotNil( HANDLE )
#define RequireResHandle( HANDLE )
#define RequireResHandleIfNotNil( HANDLE )
#define RequirePString( STR, MIN, MAX )
#define RequireCString( STR, MIN, MAX )
#define RequireAEDesc( DESC )
#define RequireAEDescIfNotNull( DESC )
#define RequireAEDescIfNotNil( DESC )
#define RequireAEDescIfNotNilOrNull( DESC )
#define RequireSwitch( VALUE )
#define RequireSupport( CODE )
#define RequireEqual( VAR, VALUE )
#define RequireNotEqual( VAR, VALUE )
#define RequireNoErr( ERR )
#define RequireBool( VAR )
#define RequireSInt8( VAR )
#define RequireUInt8( VAR )
#define RequireSInt16( VAR )
#define RequireUInt16( VAR )
#define RequireSInt32( VAR )
#define RequireUInt32( VAR )
#define RequireControl( CONTROL )
#define RequireMenu( MENU )
#define RequireRefNum( REFNUM )
#define RequireFSSpec( FSSPEC )
#endif // GenerateRequirements
#ifdef __cplusplus
}
#endif
#endif // _requireDefinitions_
See more files for this project here