Code Search for Developers
 
 
  

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

redshed

Code for Mac+WebObjects.

Project homepage: http://sourceforge.net/projects/redshed
Programming language(s): C,Java,Objective C
License: other

  requireDefinitions.h
  requireImplementation.c