|
1 /* ************************************************************************** */ |
|
2 /* * For conditions of distribution and use, * */ |
|
3 /* * see copyright notice in libmng.h * */ |
|
4 /* ************************************************************************** */ |
|
5 /* * * */ |
|
6 /* * project : libmng * */ |
|
7 /* * file : libmng_error.h copyright (c) 2000-2002 G.Juyn * */ |
|
8 /* * version : 1.0.5 * */ |
|
9 /* * * */ |
|
10 /* * purpose : Error functions (definition) * */ |
|
11 /* * * */ |
|
12 /* * author : G.Juyn * */ |
|
13 /* * * */ |
|
14 /* * comment : Definition of the generic error-codes and functions * */ |
|
15 /* * * */ |
|
16 /* * changes : 0.5.1 - 05/06/2000 - G.Juyn * */ |
|
17 /* * - added some errorcodes * */ |
|
18 /* * 0.5.1 - 05/08/2000 - G.Juyn * */ |
|
19 /* * - added some errorcodes * */ |
|
20 /* * - changed strict-ANSI stuff * */ |
|
21 /* * 0.5.1 - 05/11/2000 - G.Juyn * */ |
|
22 /* * - added application errorcodes (used with callbacks) * */ |
|
23 /* * - moved chunk-access errorcodes to severity 5 * */ |
|
24 /* * * */ |
|
25 /* * 0.5.2 - 05/20/2000 - G.Juyn * */ |
|
26 /* * - added JNG errorcodes * */ |
|
27 /* * 0.5.2 - 05/23/2000 - G.Juyn * */ |
|
28 /* * - added error tell-tale definition * */ |
|
29 /* * 0.5.2 - 05/30/2000 - G.Juyn * */ |
|
30 /* * - added errorcodes for delta-image processing * */ |
|
31 /* * 0.5.2 - 06/06/2000 - G.Juyn * */ |
|
32 /* * - added errorcode for delayed buffer-processing * */ |
|
33 /* * - moved errorcodes to "libmng.h" * */ |
|
34 /* * * */ |
|
35 /* * 0.9.1 - 07/15/2000 - G.Juyn * */ |
|
36 /* * - added macro + routine to set returncode without * */ |
|
37 /* * calling error callback * */ |
|
38 /* * * */ |
|
39 /* * 0.9.2 - 08/05/2000 - G.Juyn * */ |
|
40 /* * - changed file-prefixes * */ |
|
41 /* * * */ |
|
42 /* * 1.0.5 - 08/19/2002 - G.Juyn * */ |
|
43 /* * - B597134 - libmng pollutes the linker namespace * */ |
|
44 /* * 1.0.5 - 08/20/2002 - G.Juyn * */ |
|
45 /* * - added option for soft-handling of errors * */ |
|
46 /* * * */ |
|
47 /* ************************************************************************** */ |
|
48 |
|
49 #if defined(__BORLANDC__) && defined(MNG_STRICT_ANSI) |
|
50 #pragma option -A /* force ANSI-C */ |
|
51 #endif |
|
52 |
|
53 #ifndef _libmng_error_h_ |
|
54 #define _libmng_error_h_ |
|
55 |
|
56 /* ************************************************************************** */ |
|
57 /* * * */ |
|
58 /* * Default error routines * */ |
|
59 /* * * */ |
|
60 /* ************************************************************************** */ |
|
61 |
|
62 mng_bool mng_store_error (mng_datap pData, |
|
63 mng_retcode iError, |
|
64 mng_retcode iExtra1, |
|
65 mng_retcode iExtra2); |
|
66 |
|
67 mng_bool mng_process_error (mng_datap pData, |
|
68 mng_retcode iError, |
|
69 mng_retcode iExtra1, |
|
70 mng_retcode iExtra2); |
|
71 |
|
72 /* ************************************************************************** */ |
|
73 /* * * */ |
|
74 /* * Error handling macros * */ |
|
75 /* * * */ |
|
76 /* ************************************************************************** */ |
|
77 |
|
78 #ifdef MNG_SOFTERRORS |
|
79 #define MNG_ERROR(D,C) { if (!mng_process_error (D, C, 0, 0)) return C; } |
|
80 #define MNG_ERRORZ(D,Z) { if (!mng_process_error (D, MNG_ZLIBERROR, Z, 0)) return MNG_ZLIBERROR; } |
|
81 #define MNG_ERRORJ(D,J) { if (!mng_process_error (D, MNG_JPEGERROR, J, 0)) return MNG_JPEGERROR; } |
|
82 #define MNG_ERRORL(D,L) { if (!mng_process_error (D, MNG_LCMSERROR, L, 0)) return MNG_LCMSERROR; } |
|
83 #else |
|
84 #define MNG_ERROR(D,C) { mng_process_error (D, C, 0, 0); return C; } |
|
85 #define MNG_ERRORZ(D,Z) { mng_process_error (D, MNG_ZLIBERROR, Z, 0); return MNG_ZLIBERROR; } |
|
86 #define MNG_ERRORJ(D,J) { mng_process_error (D, MNG_JPEGERROR, J, 0); return MNG_JPEGERROR; } |
|
87 #define MNG_ERRORL(D,L) { mng_process_error (D, MNG_LCMSERROR, L, 0); return MNG_LCMSERROR; } |
|
88 #endif |
|
89 |
|
90 #define MNG_RETURN(D,C) { mng_store_error (D, C, 0, 0); return C; } |
|
91 |
|
92 #define MNG_WARNING(D,C) { if (!mng_process_error (D, C, 0, 0)) return C; } |
|
93 |
|
94 #define MNG_VALIDHANDLE(H) { if ((H == 0) || (((mng_datap)H)->iMagic != MNG_MAGIC)) \ |
|
95 return MNG_INVALIDHANDLE; } |
|
96 #define MNG_VALIDHANDLEX(H) { if ((H == 0) || (((mng_datap)H)->iMagic != MNG_MAGIC)) \ |
|
97 return 0; } |
|
98 #define MNG_VALIDCB(D,C) { if (!((mng_datap)D)->C) \ |
|
99 MNG_ERROR (((mng_datap)D), MNG_NOCALLBACK) } |
|
100 |
|
101 /* ************************************************************************** */ |
|
102 /* * * */ |
|
103 /* * Error string-table entry * */ |
|
104 /* * * */ |
|
105 /* ************************************************************************** */ |
|
106 |
|
107 typedef struct { |
|
108 mng_retcode iError; |
|
109 mng_pchar zErrortext; |
|
110 } mng_error_entry; |
|
111 typedef mng_error_entry const * mng_error_entryp; |
|
112 |
|
113 /* ************************************************************************** */ |
|
114 |
|
115 #endif /* _libmng_error_h_ */ |
|
116 |
|
117 /* ************************************************************************** */ |
|
118 /* * end of file * */ |
|
119 /* ************************************************************************** */ |