Submitted by: Damien Miller <djm@mindrot.org> Approved by: steve@openssl.org Fix various typos.
		
			
				
	
	
		
			148 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			148 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
#ifdef __cplusplus
 | 
						|
extern "C" {
 | 
						|
#endif
 | 
						|
 | 
						|
#ifndef kGenericError
 | 
						|
	#define kGenericError		-1
 | 
						|
#endif
 | 
						|
 | 
						|
extern char	*gErrorMessage;
 | 
						|
 | 
						|
 | 
						|
void SetErrorMessage(const char *theErrorMessage);
 | 
						|
void SetErrorMessageAndAppendLongInt(const char *theErrorMessage,const long theLongInt);
 | 
						|
void SetErrorMessageAndCStrAndLongInt(const char *theErrorMessage,const char * theCStr,const long theLongInt);
 | 
						|
void SetErrorMessageAndCStr(const char *theErrorMessage,const char * theCStr);
 | 
						|
void AppendCStrToErrorMessage(const char *theErrorMessage);
 | 
						|
void AppendLongIntToErrorMessage(const long theLongInt);
 | 
						|
 | 
						|
 | 
						|
char *GetErrorMessage(void);
 | 
						|
OSErr GetErrorMessageInNewHandle(Handle *inoutHandle);
 | 
						|
OSErr GetErrorMessageInExistingHandle(Handle inoutHandle);
 | 
						|
OSErr AppendErrorMessageToHandle(Handle inoutHandle);
 | 
						|
 | 
						|
 | 
						|
#ifdef __EXCEPTIONS_ENABLED__
 | 
						|
	void ThrowErrorMessageException(void);
 | 
						|
#endif
 | 
						|
 | 
						|
 | 
						|
 | 
						|
//	A bunch of evil macros that would be unnecessary if I were always using C++ !
 | 
						|
 | 
						|
#define SetErrorMessageAndBailIfNil(theArg,theMessage)								\
 | 
						|
{																					\
 | 
						|
	if (theArg == nil)																\
 | 
						|
	{																				\
 | 
						|
		SetErrorMessage(theMessage);												\
 | 
						|
		errCode = kGenericError;													\
 | 
						|
		goto EXITPOINT;																\
 | 
						|
	}																				\
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
#define SetErrorMessageAndBail(theMessage)											\
 | 
						|
{																					\
 | 
						|
		SetErrorMessage(theMessage);												\
 | 
						|
		errCode = kGenericError;													\
 | 
						|
		goto EXITPOINT;																\
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
#define SetErrorMessageAndLongIntAndBail(theMessage,theLongInt)						\
 | 
						|
{																					\
 | 
						|
		SetErrorMessageAndAppendLongInt(theMessage,theLongInt);						\
 | 
						|
		errCode = kGenericError;													\
 | 
						|
		goto EXITPOINT;																\
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
#define SetErrorMessageAndLongIntAndBailIfError(theErrCode,theMessage,theLongInt)	\
 | 
						|
{																					\
 | 
						|
	if (theErrCode != noErr)														\
 | 
						|
	{																				\
 | 
						|
		SetErrorMessageAndAppendLongInt(theMessage,theLongInt);						\
 | 
						|
		errCode = theErrCode;														\
 | 
						|
		goto EXITPOINT;																\
 | 
						|
	}																				\
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
#define SetErrorMessageCStrLongIntAndBailIfError(theErrCode,theMessage,theCStr,theLongInt)	\
 | 
						|
{																					\
 | 
						|
	if (theErrCode != noErr)														\
 | 
						|
	{																				\
 | 
						|
		SetErrorMessageAndCStrAndLongInt(theMessage,theCStr,theLongInt);			\
 | 
						|
		errCode = theErrCode;														\
 | 
						|
		goto EXITPOINT;																\
 | 
						|
	}																				\
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
#define SetErrorMessageAndCStrAndBail(theMessage,theCStr)							\
 | 
						|
{																					\
 | 
						|
	SetErrorMessageAndCStr(theMessage,theCStr);										\
 | 
						|
	errCode = kGenericError;														\
 | 
						|
	goto EXITPOINT;																	\
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
#define SetErrorMessageAndBailIfError(theErrCode,theMessage)						\
 | 
						|
{																					\
 | 
						|
	if (theErrCode != noErr)														\
 | 
						|
	{																				\
 | 
						|
		SetErrorMessage(theMessage);												\
 | 
						|
		errCode = theErrCode;														\
 | 
						|
		goto EXITPOINT;																\
 | 
						|
	}																				\
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
#define SetErrorMessageAndLongIntAndBailIfNil(theArg,theMessage,theLongInt)			\
 | 
						|
{																					\
 | 
						|
	if (theArg == nil)																\
 | 
						|
	{																				\
 | 
						|
		SetErrorMessageAndAppendLongInt(theMessage,theLongInt);						\
 | 
						|
		errCode = kGenericError;													\
 | 
						|
		goto EXITPOINT;																\
 | 
						|
	}																				\
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
#define BailIfError(theErrCode)														\
 | 
						|
{																					\
 | 
						|
	if ((theErrCode) != noErr)														\
 | 
						|
	{																				\
 | 
						|
		goto EXITPOINT;																\
 | 
						|
	}																				\
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
#define SetErrCodeAndBail(theErrCode)												\
 | 
						|
{																					\
 | 
						|
	errCode = theErrCode;															\
 | 
						|
																					\
 | 
						|
	goto EXITPOINT;																	\
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
#define SetErrorCodeAndMessageAndBail(theErrCode,theMessage)						\
 | 
						|
{																					\
 | 
						|
	SetErrorMessage(theMessage);													\
 | 
						|
	errCode = theErrCode;															\
 | 
						|
	goto EXITPOINT;																	\
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
#define BailNow()																	\
 | 
						|
{																					\
 | 
						|
	errCode = kGenericError;														\
 | 
						|
	goto EXITPOINT;																	\
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
#ifdef __cplusplus
 | 
						|
}
 | 
						|
#endif
 |