Files
PlantAI-dev/tools/pymol-env/include/herr.h
T
2026-08-03 18:42:47 +08:00

520 lines
24 KiB
C

/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* Copyright by The HDF Group. *
* Copyright by the Board of Trustees of the University of Illinois. *
* All rights reserved. *
* *
* This file is part of HDF. The full HDF copyright notice, including *
* terms governing use, modification, and redistribution, is contained in *
* the COPYING file, which can be found at the root of the source code *
* distribution tree, or in https://support.hdfgroup.org/ftp/HDF/releases/. *
* If you do not have access to either file, you may request a copy from *
* help@hdfgroup.org. *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
/* $Id$ */
/*+ herr.h
*** header file for using error routines
*** to be included by all ".c" files
+ */
#ifndef __HERR_H
#define __HERR_H
/* if these symbols are not provided by the compiler, we'll have to
fake them. These are used in HERROR for recording location of
error in code. */
#ifndef __FILE__
# define __FILE__ "File name not supported"
#endif
#ifndef __LINE__
# define __LINE__ 0
#endif
/* HERROR macro, used to facilitate error reporting. Assumes that
there's a variable called FUNC which holds the function name.
Assume that func and file are both stored in static space, or at
least be not corrupted in the meanwhile. */
#define HERROR(e) HEpush(e, FUNC, __FILE__, __LINE__)
/* HRETURN_ERROR macro, used to facilitate error reporting. Makes
same assumptions as HERROR. IN ADDITION, this macro causes
a return from the calling routine */
#define HRETURN_ERROR(err, ret_val) {HERROR(err); return(ret_val);}
/* HCLOSE_RETURN_ERROR macro, used to facilitate error reporting. Makes
same assumptions as HRETURN_ERROR. IN ADDITION, this macro causes
the file specified by the id "fid" to be closed */
#define HCLOSE_RETURN_ERROR(hfid, err, ret_val) {HERROR(err); Hclose(hfid); \
return(ret_val);}
/* HGOTO_ERROR macro, used to facilitate error reporting. Makes
same assumptions as HERROR. IN ADDITION, this macro causes
a jump to the label 'done' which should be in every fucntion
Also there is an assumption of a variable 'ret_value' */
#define HGOTO_ERROR(err, ret_val) {HERROR(err); ret_value = ret_val; \
goto done;}
/* HGOTO_FAIL macro, used to facilitate error reporting. This one
is added in 2019 to tidy the code. It is similar to HGOTO_ERROR,
except it does not call HERROR. This is to preserve the exact
behavior as the original code. */
#define HGOTO_FAIL(ret_val) {ret_value = ret_val; \
goto done;}
/* HCLOSE_RETURN_ERROR macro, used to facilitate error reporting. Makes
same assumptions as HRETURN_ERROR. IN ADDITION, this macro causes
the file specified by the id "fid" to be closed
Also , this macro causes a jump to the label 'done' which should
be in every fucntion. There is an assumption of a variable 'ret_value' */
#define HCLOSE_GOTO_ERROR(hfid, err, ret_val) {HERROR(err); Hclose(hfid); \
ret_value = ret_val; goto done;}
/* HGOTO_DONE macro, used to facilitate the new error reporting model.
This macro is just a wrapper to set the return value and jump to the 'done'
label. Also assumption of a variable 'ret_value' */
#define HGOTO_DONE(ret_val) {ret_value = ret_val; goto done;}
/* For further error reporting */
#define HE_REPORT(msg) HEreport(msg)
#define HE_REPORT_RETURN(msg, ret_val) { HEreport(msg); return(ret_val); }
#define HE_CLOSE_REPORT_RETURN(hfid,msg, ret_val) { HEreport(msg); \
Hclose(hfid); \
return(ret_val);}
#define HE_REPORT_GOTO(msg, ret_val) { HEreport(msg); ret_value = ret_val; \
goto done;}
#define HE_CLOSE_REPORT_GOTO(hfid,msg, ret_val) { HEreport(msg); \
Hclose(hfid); \
ret_value = ret_val; \
goto done;}
/* always points to the next available slot; the last error record is in slot (top-1) */
#if defined(H4_BUILT_AS_DYNAMIC_LIB)
# ifdef _H_ERR_MASTER_
# if defined _WIN32 && defined hdf_shared_EXPORTS
__declspec(dllexport)
# endif
# else
HDFERRPUBLIC
# endif /* _H_ERR_MASTER_ */
int32 error_top
# ifdef _H_ERR_MASTER_
= 0
# endif /* _H_ERR_MASTER_ */
;
#else /* defined(H4_BUILT_AS_DYNAMIC_LIB) */
# ifndef _H_ERR_MASTER_
HDFERRPUBLIC
# endif /* _H_ERR_MASTER_ */
int32 error_top
# ifdef _H_ERR_MASTER_
= 0
# endif /* _H_ERR_MASTER_ */
;
#endif /* defined(H4_BUILT_AS_DYNAMIC_LIB) */
/* Macro to wrap around calls to HEPclear, so it doesn't get called zillions of times */
#define HEclear() {if(error_top!=0) HEPclear(); }
/*
======================================================================
Error codes
NOTE: Remember to update the error_messages[] structure in herr.c
whenever errors are added/deleted from this list.
======================================================================
*/
/* Declare an enumerated type which holds all the valid HDF error codes */
typedef enum
{
DFE_NONE = 0, /* special zero, no error */
/* Low-level I/O errors */
DFE_FNF, /* File not found */
DFE_DENIED, /* Access to file denied */
DFE_ALROPEN, /* File already open */
DFE_TOOMANY, /* Too Many AID's or files open */
DFE_BADNAME, /* Bad file name on open */
DFE_BADACC, /* Bad file access mode */
DFE_BADOPEN, /* Other open error */
DFE_NOTOPEN, /* File can't be closed 'cause it isn't open */
DFE_CANTCLOSE, /* fclose wouldn't work! */
DFE_READERROR, /* There was a read error */
DFE_WRITEERROR, /* There was a write error */
DFE_SEEKERROR, /* There was a seek error */
DFE_RDONLY, /* The DF is read only */
DFE_BADSEEK, /* Attempt to seek past end of element */
DFE_INVFILE, /* File is neither hdf, cdf, netcdf */
/* Low-level HDF I/O errors */
DFE_PUTELEM, /* Hputelement failed in some way */
DFE_GETELEM, /* Hgetelement failed in some way */
DFE_CANTLINK, /* Can't initialize link information */
DFE_CANTSYNC, /* Cannot synchronize memory with file */
/* Old group interface errors */
DFE_BADGROUP, /* Error from DFdiread in opening a group */
DFE_GROUPSETUP, /* Error from DFdisetup in opening a group */
DFE_PUTGROUP, /* Error when putting a tag/ref into a group */
DFE_GROUPWRITE, /* Error when writing out a group */
/* Internal HDF errors */
DFE_DFNULL, /* DF is a null pointer */
DFE_ILLTYPE, /* DF has an illegal type: internal error */
DFE_BADDDLIST, /* The DD list is non-existent: internal error */
DFE_NOTDFFILE, /* This is not a DF file and it is not 0 length */
DFE_SEEDTWICE, /* The DD list already seeded: internal error */
DFE_NOSUCHTAG, /* No such tag in the file: search failed */
DFE_NOFREEDD, /* There are no free DD's left: internal error */
DFE_BADTAG, /* illegal WILDCARD tag */
DFE_BADREF, /* illegal WILDCARD reference # */
DFE_NOMATCH, /* No (more) DDs which match specified tag/ref */
DFE_NOTINSET, /* Warning: Set contained unknown tag: ignored */
DFE_BADOFFSET, /* Illegal offset specified */
DFE_CORRUPT, /* File is corrupted */
DFE_NOREF, /* no more reference numbers are available */
DFE_DUPDD, /* the new tag/ref is already used */
DFE_CANTMOD, /* old element not exist, cannot modify */
DFE_DIFFFILES, /* Attempt to merge objs in diff files */
DFE_BADAID, /* Got a bogus aid */
DFE_OPENAID, /* There are still active AIDs */
DFE_CANTFLUSH, /* Can't flush DD back to file */
DFE_CANTUPDATE, /* Cannot update the DD block */
DFE_CANTHASH, /* Cannot add a DD to the hash table */
DFE_CANTDELDD, /* Cannot delete a DD in the file */
DFE_CANTDELHASH, /* Cannot delete a DD from the hash table */
DFE_CANTACCESS, /* Cannot access specified tag/ref */
DFE_CANTENDACCESS, /* Cannot end access to data element */
DFE_TABLEFULL, /* Access table is full */
DFE_NOTINTABLE, /* Cannot find element in table */
/* Generic errors */
DFE_UNSUPPORTED, /* Feature not currently supported */
DFE_NOSPACE, /* Malloc failed */
DFE_BADCALL, /* Calls in wrong order */
DFE_BADPTR, /* NULL ptr argument */
DFE_BADLEN, /* Invalid len specified */
DFE_NOTENOUGH, /* space provided insufficient for size of data */
DFE_NOVALS, /* Values not available */
DFE_ARGS, /* bad arguments to routine */
DFE_INTERNAL, /* serious internal error */
DFE_NORESET, /* Too late to modify this value */
DFE_EXCEEDMAX, /* Value exceeds max allowed */
DFE_GENAPP, /* Generic application,level error */
/* Generic interface errors */
DFE_UNINIT, /* Interface was not initialized correctly */
DFE_CANTINIT, /* Can't initialize an interface we depend on */
DFE_CANTSHUTDOWN, /* Can't shut down an interface we depend on */
/* General Dataset errors */
DFE_BADDIM, /* negative or zero dimensions specified */
DFE_BADFP, /* File contained an illegal floating point num */
DFE_BADDATATYPE, /* unknown or unavailable data type specified */
DFE_BADMCTYPE, /* unknown or unavailable machine type specified */
DFE_BADNUMTYPE, /* unknown or unavailable number type specified */
DFE_BADORDER, /* unknown or illegal array order specified */
DFE_RANGE, /* improper range for attempted acess */
DFE_BADCONV, /* Don't know how to convert data type */
DFE_BADTYPE, /* Incompatible types specified */
DFE_BADDIMNAME, /* Dimension name not valid or already taken */
DFE_NOVGREP, /* No Vgroup representation for SDS and dim */
/* Compression errors */
DFE_BADSCHEME, /* Unknown compression scheme specified */
DFE_BADMODEL, /* Invalid compression model specified */
DFE_BADCODER, /* Invalid compression encoder specified */
DFE_MODEL, /* Error in modeling layer of compression */
DFE_CODER, /* Error in encoding layer of compression */
DFE_CINIT, /* Error in encoding initialization */
DFE_CDECODE, /* Error in decoding compressed data */
DFE_CENCODE, /* Error in encoding compressed data */
DFE_CTERM, /* Error in encoding termination */
DFE_CSEEK, /* Error seekging in encoded dataset */
DFE_MINIT, /* Error in modeling initialization */
DFE_COMPINFO, /* Invalid compression header */
DFE_CANTCOMP, /* Can't compress an object */
DFE_CANTDECOMP, /* Can't de-compress an object */
DFE_NOENCODER, /* Encoder not available */
DFE_NOSZLIB, /* SZIP library not available */
DFE_COMPVERSION, /* Z_VERSION_ERROR (-6) returned from zlib */
DFE_READCOMP, /* Error in reading compressed data; this
error occurs when one of the following
error codes is returned from zlib:
Z_ERRNO (-1)
Z_STREAM_ERROR (-2)
Z_DATA_ERROR (-3)
Z_MEM_ERROR (-4)
Z_BUF_ERROR (-5) */
/* Raster errors */
DFE_NODIM, /* No dimension record associated with image */
DFE_BADRIG, /* Error processing a RIG */
DFE_RINOTFOUND, /* Can't find raster image */
DFE_BADATTR, /* Bad Attribute */
DFE_LUTNOTFOUND, /* No palette information for RIG */
DFE_GRNOTFOUND, /* Can't find specified GR */
/* SDG/NDG errors */
DFE_BADTABLE, /* the nsdg table is wrong */
DFE_BADSDG, /* error processing an sdg */
DFE_BADNDG, /* error processing an ndg */
/* Vset errors */
DFE_VGSIZE, /* Too many elements in VGroup */
DFE_VTAB, /* Elmt not in vtab[] */
DFE_CANTADDELEM, /* Cannot add tag/ref to VGroup */
DFE_BADVGNAME, /* Cannot set VGroup name */
DFE_BADVGCLASS, /* Cannot set VGroup class */
/* Vdata errors */
DFE_BADFIELDS, /* Bad fields string passed to Vset routine */
DFE_NOVS, /* Counldn't find VS in file */
DFE_SYMSIZE, /* Too many symbols in users table */
DFE_BADATTACH, /* Cannot write to a previously attached VData */
DFE_BADVSNAME, /* Cannot set VData name */
DFE_BADVSCLASS, /* Cannot set VData class */
DFE_VSWRITE, /* Error writing to VData */
DFE_VSREAD, /* Error reading from VData */
DFE_BADVH, /* Error in VData Header */
DFE_FIELDSSET, /* Fields already set for vdata */
/* High-level Vdata/Vset errors */
DFE_VSCANTCREATE, /* Cannot create VData */
DFE_VGCANTCREATE, /* Cannot create VGroup */
/* Generic Vdata/Vset errors */
DFE_CANTATTACH, /* Cannot attach to a VData/Vset */
DFE_CANTDETACH, /* Cannot detach a VData/Vset with access 'w' */
/* XDR level errors */
DFE_XDRERROR, /* Error occur in XDR and/or CDF level */
/* bit I/O errors */
DFE_BITREAD, /* There was a bit-read error */
DFE_BITWRITE, /* There was a bit-write error */
DFE_BITSEEK, /* There was a bit-seek error */
/* tbbt interface errors */
DFE_TBBTINS, /* Failed to insert element into tree */
/* bit-vector interface errors */
DFE_BVNEW, /* Failed to create a bit-vector */
DFE_BVSET, /* Failed when setting a bit in a bit-vector */
DFE_BVGET, /* Failed when getting a bit in a bit-vector */
DFE_BVFIND, /* Failed when finding a bit in a bit-vector */
/* General to all interfaces */
DFE_CANTSETATTR, /* Failed to add an attribute */
DFE_CANTGETATTR, /* Failed to find or get an attribute */
/* Annotation interface errors */
DFE_ANAPIERROR /* Failed in annotation interface */
}
hdf_err_code_t;
#ifdef _H_ERR_MASTER_
/* error_messages is the list of error messages in the system, kept as
error_code-message pairs. To look up a message, a linear search is
required but efficiency should be okay. */
typedef struct error_messages_t
{
hdf_err_code_t error_code;
const char *str;
}
error_messages_t;
PRIVATE const struct error_messages_t error_messages[] =
{
{DFE_NONE, "No error"},
/* Low-level I/O errors */
{DFE_FNF, "File not found"},
{DFE_DENIED, "Access to file denied"},
{DFE_ALROPEN, "File already open"},
{DFE_TOOMANY, "Too Many AID's or files open"},
{DFE_BADNAME, "Bad file name on open"},
{DFE_BADACC, "Bad file access mode"},
{DFE_BADOPEN, "Error opening file"},
{DFE_NOTOPEN, "File can't be closed; It isn't open"},
{DFE_CANTCLOSE, "Unable to close file"},
{DFE_READERROR, "Read error"},
{DFE_WRITEERROR, "Write error"},
{DFE_SEEKERROR, "Error performing seek operation"},
{DFE_RDONLY, "Attempt to write to read-only HDF file"},
{DFE_BADSEEK, "Attempt to seek past end of element"},
{DFE_INVFILE, "File is supported, must be either hdf, cdf, netcdf"},
/* Low-level HDF I/O errors */
{DFE_PUTELEM, "Hputelement failed in some way"},
{DFE_GETELEM, "Hgetelement failed in some way"},
{DFE_CANTLINK, "Can't initialize link information"},
{DFE_CANTSYNC, "Cannot synchronize memory with file"},
/* Old group interface errors */
{DFE_BADGROUP, "Error from DFdiread in opening a group"},
{DFE_GROUPSETUP, "Error from DFdisetup in opening a group"},
{DFE_PUTGROUP, "Error when putting a tag/ref into a group"},
{DFE_GROUPWRITE, "Error when writing out a group"},
/* Internal HDF errors */
{DFE_DFNULL, "DF has a null pointer"},
{DFE_ILLTYPE, "Internal error: DF has an illegal type"},
{DFE_BADDDLIST, "Internal error: The DD list is non-existent"},
{DFE_NOTDFFILE, "This is not an HDF file"},
{DFE_SEEDTWICE, "Internal error: The DD list is already seeded"},
{DFE_NOSUCHTAG, "No such tag in the file: search failed"},
{DFE_NOFREEDD, "There are no free DD's left"},
{DFE_BADTAG, "Illegal WILDCARD tag"},
{DFE_BADREF, "Illegal WILDCARD reference"},
{DFE_NOMATCH, "No (more) DDs which match specified tag/ref"},
{DFE_NOTINSET, "Set contained unknown tag: ignored"},
{DFE_BADOFFSET, "Illegal offset specified"},
{DFE_CORRUPT, "File is corrupted"},
{DFE_NOREF, "No more reference numbers are available"},
{DFE_DUPDD, "Tag/ref is already used"},
{DFE_CANTMOD, "Old element does not exist, cannot modify"},
{DFE_DIFFFILES, "Attempt to merge objects in different files"},
{DFE_BADAID, "Unable to create a new AID"},
{DFE_OPENAID, "There are still active AIDs"},
{DFE_CANTFLUSH, "Cannot flush the changed DD back to the file"},
{DFE_CANTUPDATE, "Cannot update the DD block"},
{DFE_CANTHASH, "Cannot add a DD to the hash table"},
{DFE_CANTDELDD, "Cannot delete a DD in the file"},
{DFE_CANTDELHASH, "Cannot delete a DD from the hash table"},
{DFE_CANTACCESS, "Cannot access specified tag/ref"},
{DFE_CANTENDACCESS, "Cannot end access to data element"},
{DFE_TABLEFULL, "Access table is full"},
{DFE_NOTINTABLE, "Cannot find element in table"},
/* Generic errors */
{DFE_UNSUPPORTED, "Feature not currently supported"},
{DFE_NOSPACE, "Internal error: Out of space"},
{DFE_BADCALL, "Calls in wrong order"},
{DFE_BADPTR, "NULL ptr argument"},
{DFE_BADLEN, "Invalid length specified"},
{DFE_NOTENOUGH, "Space provided insufficient for size of data"},
{DFE_NOVALS, "Values not available"},
{DFE_ARGS, "Invalid arguments to routine"},
{DFE_INTERNAL, "HDF Internal error"},
{DFE_NORESET, "Can not reset this value"},
{DFE_EXCEEDMAX, "Value exceeds max allowed"},
{DFE_GENAPP, "Generic application-level error"},
/* Generic interface errors */
{DFE_UNINIT, "Interface was not initialized correctly"},
{DFE_CANTINIT, "Can't initialize an interface we depend on"},
{DFE_CANTSHUTDOWN, "Can't shut down an interface we depend on"},
/* Dataset errors */
{DFE_BADDIM, "Negative or zero dimensions specified"},
{DFE_BADFP, "File contained an illegal floating point number"},
{DFE_BADDATATYPE, "Unknown or unavailable data type specified"},
{DFE_BADMCTYPE, "Unknown or unavailable machine type specified"},
{DFE_BADNUMTYPE, "Unknown or unavailable number type specified"},
{DFE_BADORDER, "Unknown or illegal array order specified"},
{DFE_RANGE, "Improper range for attempted access"},
{DFE_BADCONV, "Don't know how to convert data type"},
{DFE_BADTYPE, "Incompatible type specified"},
{DFE_BADDIMNAME, "Dimension name not valid or already taken"},
{DFE_NOVGREP, "No Vgroup representation for SDS and dim"},
/* Compression errors */
{DFE_BADSCHEME, "Unknown compression scheme specified"},
{DFE_BADMODEL, "Invalid compression model specified"},
{DFE_BADCODER, "Invalid compression coder specified"},
{DFE_MODEL, "Error in modeling layer of compression"},
{DFE_CODER, "Error in encoding layer of compression"},
{DFE_CINIT, "Error in encoding initialization"},
{DFE_CDECODE, "Error in decoding compressed data"},
{DFE_CENCODE, "Error in encoding compressed data"},
{DFE_CTERM, "Error in encoding termination"},
{DFE_CSEEK, "Error seeking in encoded dataset"},
{DFE_MINIT, "Error in modeling initialization"},
{DFE_COMPINFO, "Invalid compression header"},
{DFE_CANTCOMP, "Can't compress an object"},
{DFE_CANTDECOMP, "Can't de-compress an object"},
{DFE_NOENCODER, "Encoder not available"},
{DFE_NOSZLIB, "SZIP library not available"},
{DFE_COMPVERSION, "Z_VERSION_ERROR (-6) returned from zlib"},
{DFE_READCOMP, "Error in reading compressed data"},
/* Raster errors */
{DFE_NODIM, "No dimension record associated with image or data set"},
{DFE_BADRIG, "Error processing a RIG"},
{DFE_RINOTFOUND, "Can't find raster image"},
{DFE_BADATTR, "Bad Attribute"},
{DFE_LUTNOTFOUND, "No palette information for RIG"},
{DFE_GRNOTFOUND, "Can't find specified GR"},
/* SDG/NDG errors */
{DFE_BADTABLE, "The nsdg table is wrong"},
{DFE_BADSDG, "Error processing an sdg"},
{DFE_BADNDG, "Error processing an ndg"},
/* Vset errors */
{DFE_VGSIZE, "No more elements will fit in this VGroup"},
{DFE_VTAB, "Element is not in VSet tables"},
{DFE_CANTADDELEM, "Cannot add tag/ref to VGroup"},
{DFE_BADVGNAME, "Cannot set VGroup name"},
{DFE_BADVGCLASS, "Cannot set VGroup class"},
/* Vdata errors */
{DFE_BADFIELDS, "Unable to parse fields string correctly"},
{DFE_NOVS, "Could not find specified VS or VG in file"},
{DFE_SYMSIZE, "Too many symbols in table"},
{DFE_BADATTACH, "Cannot write to a previously attached VData"},
{DFE_BADVSNAME, "Cannot set VData name"},
{DFE_BADVSCLASS, "Cannot set VData class"},
{DFE_VSWRITE, "Error writing to VData"},
{DFE_VSREAD, "Error reading from VData"},
{DFE_BADVH, "Error in VData Header"},
{DFE_FIELDSSET, "Fields already set for vdata"},
/* High-level Vdata/Vset errors */
{DFE_VSCANTCREATE, "Cannot create VData"},
{DFE_VGCANTCREATE, "Cannot create VGroup"},
/* Generic Vdata/Vset errors */
{DFE_CANTATTACH, "Cannot attach to a VData"},
{DFE_CANTDETACH, "Cannot detach a VData with access 'w'"},
/* XDR level errors */
{DFE_XDRERROR, "Error from XDR and/or CDF level"},
/* bit I/O errors */
{DFE_BITREAD, "There was a bit-read error"},
{DFE_BITWRITE, "There was a bit-write error"},
{DFE_BITSEEK, "There was a bit-seek error"},
/* tbbt interface errors */
{DFE_TBBTINS, "Failed to insert element into tree"},
/* bit-vector interface errors */
{DFE_BVNEW, "Failed to create a bit-vector"},
{DFE_BVSET, "Failed when setting a bit in a bit-vector"},
{DFE_BVGET, "Failed when getting a bit in a bit-vector"},
{DFE_BVFIND, "Failed when finding a bit in a bit-vector"},
/* General to all interfaces */
{DFE_CANTSETATTR, "Cannot set an attribute"},
{DFE_CANTGETATTR, "Cannot find or get an attribute"},
/* Annotation interface errors */
{DFE_ANAPIERROR, "Failed in annotation interface"}
};
#endif /* _H_ERR_MASTER_ */
#endif /* __HERR_H */