OSDN Git Service

In libobjc/:
[pf3gnuchains/gcc-fork.git] / libobjc / objc / deprecated / objc_error.h
1 /* This API is incredibly limited and unsophisticated.  objc_error()
2    generally causes the program to abort, so it should only be used
3    when something so dramatic happens that it could be pointless to
4    continue.  Only two cases I can think of: failure to allocate new
5    memory or failure to load an Objective-C module.
6 */
7 /* Error handling
8   
9    Call objc_error() or objc_verror() to record an error; this error
10    routine will generally exit the program but not necessarily if the
11    user has installed his own error handler.
12   
13    Call objc_set_error_handler to assign your own function for
14    handling errors.  The function should return YES if it is ok
15    to continue execution, or return NO or just abort if the
16    program should be stopped.  The default error handler is just to
17    print a message on stderr.
18   
19    The error handler function should be of type objc_error_handler
20    The first parameter is an object instance of relevance.
21    The second parameter is an error code.
22    The third parameter is a format string in the printf style.
23    The fourth parameter is a variable list of arguments.  */
24 void objc_error(id object, int code, const char* fmt, ...);
25 void objc_verror(id object, int code, const char* fmt, va_list ap);
26 typedef BOOL (*objc_error_handler)(id, int code, const char *fmt, va_list ap);
27 objc_error_handler objc_set_error_handler(objc_error_handler func);
28
29 /* Error codes
30    These are used by the runtime library, and your
31    error handling may use them to determine if the error is
32    hard or soft thus whether execution can continue or abort.  */
33 #define OBJC_ERR_UNKNOWN 0             /* Generic error */
34
35 #define OBJC_ERR_OBJC_VERSION 1        /* Incorrect runtime version */
36 #define OBJC_ERR_GCC_VERSION 2         /* Incorrect compiler version */
37 #define OBJC_ERR_MODULE_SIZE 3         /* Bad module size */
38 #define OBJC_ERR_PROTOCOL_VERSION 4    /* Incorrect protocol version */
39
40 #define OBJC_ERR_MEMORY 10             /* Out of memory */
41
42 #define OBJC_ERR_RECURSE_ROOT 20       /* Attempt to archive the root
43                                           object more than once. */
44 #define OBJC_ERR_BAD_DATA 21           /* Didn't read expected data */
45 #define OBJC_ERR_BAD_KEY 22            /* Bad key for object */
46 #define OBJC_ERR_BAD_CLASS 23          /* Unknown class */
47 #define OBJC_ERR_BAD_TYPE 24           /* Bad type specification */
48 #define OBJC_ERR_NO_READ 25            /* Cannot read stream */
49 #define OBJC_ERR_NO_WRITE 26           /* Cannot write stream */
50 #define OBJC_ERR_STREAM_VERSION 27     /* Incorrect stream version */
51 #define OBJC_ERR_BAD_OPCODE 28         /* Bad opcode */
52
53 #define OBJC_ERR_UNIMPLEMENTED 30      /* Method is not implemented */
54
55 #define OBJC_ERR_BAD_STATE 40          /* Bad thread state */
56