ftp.nice.ch/pub/next/connectivity/news/Alexandra-0.9.s.tar.gz#/alex/AMGErrorHandling.subproj/EMErrorManager.h

This is EMErrorManager.h in view mode; [Download] [Up]

#import <objc/error.h>
#import "EMErrorInfo.h"
#import "EMErrorDescription.h"
#import "dispatcher.h"


#define ERROR_MANAGER	[EMErrorManager new]

#define EM_ERROR_RANGE	1000000
#define EM_KITBASE		(0)
#define EM_INTBASE		(NX_APP_ERROR_BASE)
#define EM_SIGBASE		(NX_APP_ERROR_BASE+50)
#define EM_APPBASE		(NX_APP_ERROR_BASE+100)

#define EM_ERROR(NUM,UD1,UD2)	[ERROR_MANAGER raise:\
			[EMErrorInfo newWithCode:NUM userInfo:(UD1):(UD2)\
						 file:__FILE__ line: __LINE__ ]]
#define EM_ERRORF(NUM,UD1,UD2,UDFDESC)	[ERROR_MANAGER raise:\
			[[EMErrorInfo newWithCode:NUM userInfo:(UD1):(UD2)\
					file:__FILE__ line: __LINE__ ] setUDFreeSemantics:(UDFDESC)]]
#define EM_CONDERROR(P,NUM,UD1,UD2) do { if(P) EM_ERROR(NUM,UD1,UD2); } while(0)
#define EM_CONDERRORF(P,NUM,UD1,UD2,UDFDESC) \
		do { if(P) EM_ERRORF(NUM,UD1,UD2,UDFDESC); } while(0)

#define EM_DURING 	NX_DURING
#define EM_HANDLER	NX_HANDLER do { \
			EMErrorInfo *EMLocalException=EMInfoObjectForHandler(&NXLocalHandler);
#define EM_ENDHANDLER [ERROR_MANAGER handle:EMLocalException]; } while(0); \
			NX_ENDHANDLER
#define EM_EMPTYHANDLER EM_HANDLER EM_ENDHANDLER

#define	EM_MAJOR_VERSION	1
#define EM_MINOR_VERSION	1
#define EM_EMC_VERSION		5

EMErrorInfo *EMInfoObjectForHandler(NXHandler *errorState);

@class HashTable, NXBundle;

@interface EMErrorManager:Object
	{
	HashTable	*errorDescriptions;
	HashTable	*objectsToNotify;
	}
	

+ new;

- init;
- free;

- readErrorDescriptions;
- readErrorDescriptionsFromBundle:(NXBundle *)bundle;
- (HashTable *)errorDescriptions;
- (EMErrorDescription *)errorDescriptionFor:(int)code;

- installErrorReporter:(BOOL)flag;
- installErrorHandler:(BOOL)flag;
- installSignalHandler:(BOOL)flag;

- raise:infoObject;
- handle:infoObject;
- notify:obj of:infoObject;

- addObserver:anObject selector:(SEL)aSel forError:(int)errorNumber;
- addObserver:anObject selector:(SEL)aSel forErrors:(int)base:(int)count;
- removeObserver:anObject forError:(int)errorNumber;
- removeObserver:anObject forErrors:(int)base:(int)count;


@end

These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.