MISR Toolkit  1.5.1
herr.h
Go to the documentation of this file.
1 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
2  * Copyright by The HDF Group. *
3  * Copyright by the Board of Trustees of the University of Illinois. *
4  * All rights reserved. *
5  * *
6  * This file is part of HDF. The full HDF copyright notice, including *
7  * terms governing use, modification, and redistribution, is contained in *
8  * the files COPYING and Copyright.html. COPYING can be found at the root *
9  * of the source code distribution tree; Copyright.html can be found at *
10  * http://hdfgroup.org/products/hdf4/doc/Copyright.html. If you do not have *
11  * access to either file, you may request a copy from help@hdfgroup.org. *
12  * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
13 
14 /* $Id: herr.h 5584 2011-04-13 18:25:06Z bmribler $ */
15 
16 /*+ herr.h
17  *** header file for using error routines
18  *** to be included by all ".c" files
19  + */
20 
21 #ifndef __HERR_H
22 #define __HERR_H
23 
24 /* if these symbols are not provided by the compiler, we'll have to
25  fake them. These are used in HERROR for recording location of
26  error in code. */
27 
28 #ifndef __FILE__
29 # define __FILE__ "File name not supported"
30 #endif
31 #ifndef __LINE__
32 # define __LINE__ 0
33 #endif
34 
35 /* HERROR macro, used to facilitate error reporting. Assumes that
36  there's a variable called FUNC which holds the function name.
37  Assume that func and file are both stored in static space, or at
38  least be not corrupted in the meanwhile. */
39 
40 #define HERROR(e) HEpush(e, FUNC, __FILE__, __LINE__)
41 
42 /* HRETURN_ERROR macro, used to facilitate error reporting. Makes
43  same assumptions as HERROR. IN ADDITION, this macro causes
44  a return from the calling routine */
45 
46 #define HRETURN_ERROR(err, ret_val) {HERROR(err); return(ret_val);}
47 
48 /* HCLOSE_RETURN_ERROR macro, used to facilitate error reporting. Makes
49  same assumptions as HRETURN_ERROR. IN ADDITION, this macro causes
50  the file specified by the id "fid" to be closed */
51 
52 #define HCLOSE_RETURN_ERROR(hfid, err, ret_val) {HERROR(err); Hclose(hfid); \
53  return(ret_val);}
54 
55 /* HGOTO_ERROR macro, used to facilitate error reporting. Makes
56  same assumptions as HERROR. IN ADDITION, this macro causes
57  a jump to the label 'done' which should be in every fucntion
58  Also there is an assumption of a variable 'ret_value' */
59 
60 #define HGOTO_ERROR(err, ret_val) {HERROR(err); ret_value = ret_val; \
61  goto done;}
62 
63 /* HCLOSE_RETURN_ERROR macro, used to facilitate error reporting. Makes
64  same assumptions as HRETURN_ERROR. IN ADDITION, this macro causes
65  the file specified by the id "fid" to be closed
66  Also , this macro causes a jump to the label 'done' which should
67  be in every fucntion. There is an assumption of a variable 'ret_value' */
68 
69 #define HCLOSE_GOTO_ERROR(hfid, err, ret_val) {HERROR(err); Hclose(hfid); \
70  ret_value = ret_val; goto done;}
71 
72 /* HGOTO_DONE macro, used to facilitate the new error reporting model.
73  This macro is just a wrapper to set the return value and jump to the 'done'
74  label. Also assumption of a variable 'ret_value' */
75 
76 #define HGOTO_DONE(ret_val) {ret_value = ret_val; goto done;}
77 
78 /* For further error reporting */
79 #define HE_REPORT(msg) HEreport(msg)
80 #define HE_REPORT_RETURN(msg, ret_val) { HEreport(msg); return(ret_val); }
81 #define HE_CLOSE_REPORT_RETURN(hfid,msg, ret_val) { HEreport(msg); \
82  Hclose(hfid); \
83  return(ret_val);}
84 
85 #define HE_REPORT_GOTO(msg, ret_val) { HEreport(msg); ret_value = ret_val; \
86  goto done;}
87 #define HE_CLOSE_REPORT_GOTO(hfid,msg, ret_val) { HEreport(msg); \
88  Hclose(hfid); \
89  ret_value = ret_val; \
90  goto done;}
91 
92 
93 /* always points to the next available slot; the last error record is in slot (top-1) */
94 #if defined(H4_BUILT_AS_DYNAMIC_LIB)
95 #ifdef _H_ERR_MASTER_
96 #if defined _WIN32 && defined hdf_EXPORTS
97 __declspec(dllexport)
98 #endif
99 #else
101 #endif /* _H_ERR_MASTER_ */
102 int32 error_top
103 #ifdef _H_ERR_MASTER_
104 = 0
105 #endif /* _H_ERR_MASTER_ */
106 ;
107 #else /* defined(H4_BUILT_AS_DYNAMIC_LIB) */
108 #ifndef _H_ERR_MASTER_
109 #if defined _WIN32 && defined HDFAPDLL
110 __declspec(dllimport)
111 #else
112 extern
113 #endif
114 #else
115 #if defined _WIN32 && defined HDFLIBDLL
116 __declspec(dllexport)
117 #endif
118 #endif /* _H_ERR_MASTER_ */
119 int32 error_top
120 #ifdef _H_ERR_MASTER_
121 = 0
122 #endif /* _H_ERR_MASTER_ */
123 ;
124 #endif /* defined(H4_BUILT_AS_DYNAMIC_LIB) */
125 
126 /* Macro to wrap around calls to HEPclear, so it doesn't get called zillions of times */
127 #define HEclear() {if(error_top!=0) HEPclear(); }
128 
129 /*
130  ======================================================================
131  Error codes
132 
133  NOTE: Remember to update the error_messages[] structure in herr.c
134  whenever errors are added/deleted from this list.
135  ======================================================================
136  */
137 /* Declare an enumerated type which holds all the valid HDF error codes */
138 typedef enum
139  {
140  DFE_NONE = 0, /* special zero, no error */
141 /* Low-level I/O errors */
142  DFE_FNF, /* File not found */
143  DFE_DENIED, /* Access to file denied */
144  DFE_ALROPEN, /* File already open */
145  DFE_TOOMANY, /* Too Many AID's or files open */
146  DFE_BADNAME, /* Bad file name on open */
147  DFE_BADACC, /* Bad file access mode */
148  DFE_BADOPEN, /* Other open error */
149  DFE_NOTOPEN, /* File can't be closed 'cause it isn't open */
150  DFE_CANTCLOSE, /* fclose wouldn't work! */
151  DFE_READERROR, /* There was a read error */
152  DFE_WRITEERROR, /* There was a write error */
153  DFE_SEEKERROR, /* There was a seek error */
154  DFE_RDONLY, /* The DF is read only */
155  DFE_BADSEEK, /* Attempt to seek past end of element */
156 
157 /* Low-level HDF I/O errors */
158  DFE_PUTELEM, /* Hputelement failed in some way */
159  DFE_GETELEM, /* Hgetelement failed in some way */
160  DFE_CANTLINK, /* Can't initialize link information */
161  DFE_CANTSYNC, /* Cannot syncronize memory with file */
162 
163 /* Old group interface errors */
164  DFE_BADGROUP, /* Error from DFdiread in opening a group */
165  DFE_GROUPSETUP, /* Error from DFdisetup in opening a group */
166  DFE_PUTGROUP, /* Error when putting a tag/ref into a group */
167  DFE_GROUPWRITE, /* Error when writing out a group */
168 
169 /* Internal HDF errors */
170  DFE_DFNULL, /* DF is a null pointer */
171  DFE_ILLTYPE, /* DF has an illegal type: internal error */
172  DFE_BADDDLIST, /* The DD list is non-existent: internal error */
173  DFE_NOTDFFILE, /* This is not a DF file and it is not 0 length */
174  DFE_SEEDTWICE, /* The DD list already seeded: internal error */
175  DFE_NOSUCHTAG, /* No such tag in the file: search failed */
176  DFE_NOFREEDD, /* There are no free DD's left: internal error */
177  DFE_BADTAG, /* illegal WILDCARD tag */
178  DFE_BADREF, /* illegal WILDCARD reference # */
179  DFE_NOMATCH, /* No (more) DDs which match specified tag/ref */
180  DFE_NOTINSET, /* Warning: Set contained unknown tag: ignored */
181  DFE_BADOFFSET, /* Illegal offset specified */
182  DFE_CORRUPT, /* File is corrupted */
183  DFE_NOREF, /* no more reference numbers are available */
184  DFE_DUPDD, /* the new tag/ref is already used */
185  DFE_CANTMOD, /* old element not exist, cannot modify */
186  DFE_DIFFFILES, /* Attempt to merge objs in diff files */
187  DFE_BADAID, /* Got a bogus aid */
188  DFE_OPENAID, /* There are still active AIDs */
189  DFE_CANTFLUSH, /* Can't flush DD back to file */
190  DFE_CANTUPDATE, /* Cannot update the DD block */
191  DFE_CANTHASH, /* Cannot add a DD to the hash table */
192  DFE_CANTDELDD, /* Cannot delete a DD in the file */
193  DFE_CANTDELHASH, /* Cannot delete a DD from the hash table */
194  DFE_CANTACCESS, /* Cannot access specified tag/ref */
195  DFE_CANTENDACCESS, /* Cannot end access to data element */
196  DFE_TABLEFULL, /* Access table is full */
197  DFE_NOTINTABLE, /* Cannot find element in table */
198 
199 /* Generic errors */
200  DFE_UNSUPPORTED, /* Feature not currently supported */
201  DFE_NOSPACE, /* Malloc failed */
202  DFE_BADCALL, /* Calls in wrong order */
203  DFE_BADPTR, /* NULL ptr argument */
204  DFE_BADLEN, /* Invalid len specified */
205  DFE_NOTENOUGH, /* space provided insufficient for size of data */
206  DFE_NOVALS, /* Values not available */
207  DFE_ARGS, /* bad arguments to routine */
208  DFE_INTERNAL, /* serious internal error */
209  DFE_NORESET, /* Too late to modify this value */
210  DFE_GENAPP, /* Generic application,level error */
211 
212 /* Generic interface errors */
213  DFE_UNINIT, /* Interface was not initialized correctly */
214  DFE_CANTINIT, /* Can't initialize an interface we depend on */
215  DFE_CANTSHUTDOWN, /* Can't shut down an interface we depend on */
216 
217 /* General Dataset errors */
218  DFE_BADDIM, /* negative or zero dimensions specified */
219  DFE_BADFP, /* File contained an illegal floating point num */
220  DFE_BADDATATYPE, /* unknown or unavailable data type specified */
221  DFE_BADMCTYPE, /* unknown or unavailable machine type specified */
222  DFE_BADNUMTYPE, /* unknown or unavailable number type specified */
223  DFE_BADORDER, /* unknown or illegal array order specified */
224  DFE_RANGE, /* improper range for attempted acess */
225  DFE_BADCONV, /* Don't know how to convert data type */
226  DFE_BADTYPE, /* Incompatible types specified */
227  DFE_NOVGREP, /* No Vgroup representation for SDS and dim */
228 
229 /* Compression errors */
230  DFE_BADSCHEME, /* Unknown compression scheme specified */
231  DFE_BADMODEL, /* Invalid compression model specified */
232  DFE_BADCODER, /* Invalid compression encoder specified */
233  DFE_MODEL, /* Error in modeling layer of compression */
234  DFE_CODER, /* Error in encoding layer of compression */
235  DFE_CINIT, /* Error in encoding initialization */
236  DFE_CDECODE, /* Error in decoding compressed data */
237  DFE_CENCODE, /* Error in encoding compressed data */
238  DFE_CTERM, /* Error in encoding termination */
239  DFE_CSEEK, /* Error seekging in encoded dataset */
240  DFE_MINIT, /* Error in modeling initialization */
241  DFE_COMPINFO, /* Invalid compression header */
242  DFE_CANTCOMP, /* Can't compress an object */
243  DFE_CANTDECOMP, /* Can't de-compress an object */
244  DFE_NOENCODER, /* Encoder not available */
245  DFE_NOSZLIB, /* SZIP library not available */
246  DFE_COMPVERSION, /* Z_VERSION_ERROR (-6) returned from zlib */
247  DFE_READCOMP, /* Error in reading compressed data; this
248  error occurs when one of the following
249  error codes is returned from zlib:
250  Z_ERRNO (-1)
251  Z_STREAM_ERROR (-2)
252  Z_DATA_ERROR (-3)
253  Z_MEM_ERROR (-4)
254  Z_BUF_ERROR (-5) */
255 
256 /* Raster errors */
257  DFE_NODIM, /* No dimension record associated with image */
258  DFE_BADRIG, /* Error processing a RIG */
259  DFE_RINOTFOUND, /* Can't find raster image */
260  DFE_BADATTR, /* Bad Attribute */
261  DFE_LUTNOTFOUND, /* No palette information for RIG */
262  DFE_GRNOTFOUND, /* Can't find specified GR */
263 
264 /* SDG/NDG errors */
265  DFE_BADTABLE, /* the nsdg table is wrong */
266  DFE_BADSDG, /* error processing an sdg */
267  DFE_BADNDG, /* error processing an ndg */
268 
269 /* Vset errors */
270  DFE_VGSIZE, /* Too many elements in VGroup */
271  DFE_VTAB, /* Elmt not in vtab[] */
272  DFE_CANTADDELEM, /* Cannot add tag/ref to VGroup */
273  DFE_BADVGNAME, /* Cannot set VGroup name */
274  DFE_BADVGCLASS, /* Cannot set VGroup class */
275 
276 /* Vdata errors */
277  DFE_BADFIELDS, /* Bad fields string passed to Vset routine */
278  DFE_NOVS, /* Counldn't find VS in file */
279  DFE_SYMSIZE, /* Too many symbols in users table */
280  DFE_BADATTACH, /* Cannot write to a previously attached VData */
281  DFE_BADVSNAME, /* Cannot set VData name */
282  DFE_BADVSCLASS, /* Cannot set VData class */
283  DFE_VSWRITE, /* Error writing to VData */
284  DFE_VSREAD, /* Error reading from VData */
285  DFE_BADVH, /* Error in VData Header */
286  DFE_FIELDSSET, /* Fields already set for vdata */
287 /* High-level Vdata/Vset errors */
288  DFE_VSCANTCREATE, /* Cannot create VData */
289  DFE_VGCANTCREATE, /* Cannot create VGroup */
290 
291 /* Generic Vdata/Vset errors */
292  DFE_CANTATTACH, /* Cannot attach to a VData/Vset */
293  DFE_CANTDETACH, /* Cannot detach a VData/Vset with access 'w' */
294 
295 /* bit I/O errors */
296  DFE_BITREAD, /* There was a bit-read error */
297  DFE_BITWRITE, /* There was a bit-write error */
298  DFE_BITSEEK, /* There was a bit-seek error */
299 
300 /* tbbt interface errors */
301  DFE_TBBTINS, /* Failed to insert element into tree */
302 
303 /* bit-vector interface errors */
304  DFE_BVNEW, /* Failed to create a bit-vector */
305  DFE_BVSET, /* Failed when setting a bit in a bit-vector */
306  DFE_BVGET, /* Failed when getting a bit in a bit-vector */
307  DFE_BVFIND /* Failed when finding a bit in a bit-vector */
308  }
310 
311 #ifdef _H_ERR_MASTER_
312 
313 /* error_messages is the list of error messages in the system, kept as
314  error_code-message pairs. To look up a message, a linear search is
315  required but efficiency should be okay. */
316 
317 typedef struct error_messages_t
318  {
319  hdf_err_code_t error_code;
320  const char *str;
321  }
322 error_messages_t;
323 
324 PRIVATE const struct error_messages_t error_messages[] =
325 {
326  {DFE_NONE, "No error"},
327 /* Low-level I/O errors */
328  {DFE_FNF, "File not found"},
329  {DFE_DENIED, "Access to file denied"},
330  {DFE_ALROPEN, "File already open"},
331  {DFE_TOOMANY, "Too Many AID's or files open"},
332  {DFE_BADNAME, "Bad file name on open"},
333  {DFE_BADACC, "Bad file access mode"},
334  {DFE_BADOPEN, "Error opening file"},
335  {DFE_NOTOPEN, "File can't be closed; It isn't open"},
336  {DFE_CANTCLOSE, "Unable to close file"},
337  {DFE_READERROR, "Read error"},
338  {DFE_WRITEERROR, "Write error"},
339  {DFE_SEEKERROR, "Error performing seek operation"},
340  {DFE_RDONLY, "Attempt to write to read-only HDF file"},
341  {DFE_BADSEEK, "Attempt to seek past end of element"},
342 
343 /* Low-level HDF I/O errors */
344  {DFE_PUTELEM, "Hputelement failed in some way"},
345  {DFE_GETELEM, "Hgetelement failed in some way"},
346  {DFE_CANTLINK, "Can't initialize link information"},
347  {DFE_CANTSYNC, "Cannot syncronize memory with file"},
348 
349 /* Old group interface errors */
350  {DFE_BADGROUP, "Error from DFdiread in opening a group"},
351  {DFE_GROUPSETUP, "Error from DFdisetup in opening a group"},
352  {DFE_PUTGROUP, "Error when putting a tag/ref into a group"},
353  {DFE_GROUPWRITE, "Error when writing out a group"},
354 
355 /* Internal HDF errors */
356  {DFE_DFNULL, "DF has a null pointer"},
357  {DFE_ILLTYPE, "Internal error: DF has an illegal type"},
358  {DFE_BADDDLIST, "Internal error: The DD list is non-existent"},
359  {DFE_NOTDFFILE, "This is not an HDF file"},
360  {DFE_SEEDTWICE, "Internal error: The DD list is already seeded"},
361  {DFE_NOSUCHTAG, "No such tag in the file: search failed"},
362  {DFE_NOFREEDD, "There are no free DD's left"},
363  {DFE_BADTAG, "Illegal WILDCARD tag"},
364  {DFE_BADREF, "Illegal WILDCARD reference"},
365  {DFE_NOMATCH, "No (more) DDs which match specified tag/ref"},
366  {DFE_NOTINSET, "Set contained unknown tag: ignored"},
367  {DFE_BADOFFSET, "Illegal offset specified"},
368  {DFE_CORRUPT, "File is corrupted"},
369  {DFE_NOREF, "No more reference numbers are available"},
370  {DFE_DUPDD, "Tag/ref is already used"},
371  {DFE_CANTMOD, "Old element does not exist, cannot modify"},
372  {DFE_DIFFFILES, "Attempt to merge objects in different files"},
373  {DFE_BADAID, "Unable to create a new AID"},
374  {DFE_OPENAID, "There are still active AIDs"},
375  {DFE_CANTFLUSH, "Cannot flush the changed DD back to the file"},
376  {DFE_CANTUPDATE, "Cannot update the DD block"},
377  {DFE_CANTHASH, "Cannot add a DD to the hash table"},
378  {DFE_CANTDELDD, "Cannot delete a DD in the file"},
379  {DFE_CANTDELHASH, "Cannot delete a DD from the hash table"},
380  {DFE_CANTACCESS, "Cannot access specified tag/ref"},
381  {DFE_CANTENDACCESS, "Cannot end access to data element"},
382  {DFE_TABLEFULL, "Access table is full"},
383  {DFE_NOTINTABLE, "Cannot find element in table"},
384 
385 /* Generic errors */
386  {DFE_UNSUPPORTED, "Feature not currently supported"},
387  {DFE_NOSPACE, "Internal error: Out of space"},
388  {DFE_BADCALL, "Calls in wrong order"},
389  {DFE_BADPTR, "NULL ptr argument"},
390  {DFE_BADLEN, "Invalid length specified"},
391  {DFE_NOTENOUGH, "Space provided insufficient for size of data"},
392  {DFE_NOVALS, "Values not available"},
393  {DFE_ARGS, "Invalid arguments to routine"},
394  {DFE_INTERNAL, "HDF Internal error"},
395  {DFE_NORESET, "Can not reset this value"},
396  {DFE_GENAPP, "Generic application-level error"},
397 
398 /* Generic interface errors */
399  {DFE_UNINIT, "Interface was not initialized correctly"},
400  {DFE_CANTINIT, "Can't initialize an interface we depend on"},
401  {DFE_CANTSHUTDOWN, "Can't shut down an interface we depend on"},
402 
403 /* Dataset errors */
404  {DFE_BADDIM, "Negative or zero dimensions specified"},
405  {DFE_BADFP, "File contained an illegal floating point number"},
406  {DFE_BADDATATYPE, "Unknown or unavailable data type specified"},
407  {DFE_BADMCTYPE, "Unknown or unavailable machine type specified"},
408  {DFE_BADNUMTYPE, "Unknown or unavailable number type specified"},
409  {DFE_BADORDER, "Unknown or illegal array order specified"},
410  {DFE_RANGE, "Improper range for attempted access"},
411  {DFE_BADCONV, "Don't know how to convert data type"},
412  {DFE_BADTYPE, "Incompatible type specified"},
413 
414 /* Compression errors */
415  {DFE_BADSCHEME, "Unknown compression scheme specified"},
416  {DFE_BADMODEL, "Invalid compression model specified"},
417  {DFE_BADCODER, "Invalid compression coder specified"},
418  {DFE_MODEL, "Error in modeling layer of compression"},
419  {DFE_CODER, "Error in encoding layer of compression"},
420  {DFE_CINIT, "Error in encoding initialization"},
421  {DFE_CDECODE, "Error in decoding compressed data"},
422  {DFE_CENCODE, "Error in encoding compressed data"},
423  {DFE_CTERM, "Error in encoding termination"},
424  {DFE_CSEEK, "Error seeking in encoded dataset"},
425  {DFE_MINIT, "Error in modeling initialization"},
426  {DFE_COMPINFO, "Invalid compression header"},
427  {DFE_CANTCOMP, "Can't compress an object"},
428  {DFE_CANTDECOMP, "Can't de-compress an object"},
429  {DFE_NOENCODER, "Encoder not available"},
430 
431 /* Raster errors */
432  {DFE_NODIM, "No dimension record associated with image"},
433  {DFE_BADRIG, "Error processing a RIG"},
434  {DFE_RINOTFOUND, "Can't find raster image"},
435  {DFE_BADATTR, "Bad Attribute"},
436  {DFE_LUTNOTFOUND, "No palette information for RIG"},
437 
438 /* SDG/NDG errors */
439  {DFE_BADTABLE, "The nsdg table is wrong"},
440  {DFE_BADSDG, "Error processing an sdg"},
441  {DFE_BADNDG, "Error processing an ndg"},
442 
443 /* Vset errors */
444  {DFE_VGSIZE, "No more elements will fit in this VGroup"},
445  {DFE_VTAB, "Element is not in VSet tables"},
446  {DFE_CANTADDELEM, "Cannot add tag/ref to VGroup"},
447  {DFE_BADVGNAME, "Cannot set VGroup name"},
448  {DFE_BADVGCLASS, "Cannot set VGroup class"},
449 
450 /* Vdata errors */
451  {DFE_BADFIELDS, "Unable to parse fields string correctly"},
452  {DFE_NOVS, "Could not find specified VS or VG in file"},
453  {DFE_SYMSIZE, "Too many symbols in table"},
454  {DFE_BADATTACH, "Cannot write to a previously attached VData"},
455  {DFE_BADVSNAME, "Cannot set VData name"},
456  {DFE_BADVSCLASS, "Cannot set VData class"},
457  {DFE_VSWRITE, "Error writing to VData"},
458  {DFE_VSREAD, "Error reading from VData"},
459  {DFE_FIELDSSET, "Fields already set for vdata"},
460 
461 /* High-level Vdata/Vset errors */
462  {DFE_VSCANTCREATE, "Cannot create VData"},
463  {DFE_VGCANTCREATE, "Cannot create VGroup"},
464 
465 /* Generic Vdata/Vset errors */
466  {DFE_CANTATTACH, "Cannot attach to a VData"},
467  {DFE_CANTDETACH, "Cannot detach a VData with access 'w'"},
468 
469 /* bit I/O errors */
470  {DFE_BITREAD, "There was a bit-read error"},
471  {DFE_BITWRITE, "There was a bit-write error"},
472  {DFE_BITSEEK, "There was a bit-seek error"},
473 
474 /* tbbt interface errors */
475  {DFE_TBBTINS, "Failed to insert element into tree"},
476 
477 /* bit-vector interface errors */
478  {DFE_BVNEW, "Failed to create a bit-vector"},
479  {DFE_BVSET, "Failed when setting a bit in a bit-vector"},
480  {DFE_BVGET, "Failed when getting a bit in a bit-vector"},
481  {DFE_BVFIND, "Failed when finding a bit in a bit-vector"}
482 };
483 #endif /* _H_ERR_MASTER_ */
484 
485 #endif /* __HERR_H */
Definition: herr.h:278
#define PRIVATE
Definition: hdf.h:117
Definition: herr.h:207
Definition: herr.h:271
#define HDFERRPUBLIC
Definition: H4api_adpt.h:168
Definition: herr.h:140
hdf_err_code_t
Definition: herr.h:138
int32 error_top
Definition: herr.h:115
Definition: herr.h:142

MISR Toolkit - Copyright © 2005 - 2020 Jet Propulsion Laboratory
Generated on Fri Jun 19 2020 22:49:52