summaryrefslogtreecommitdiffstats
path: root/src/H5Eprivate.h
diff options
context:
space:
mode:
authorRobb Matzke <matzke@llnl.gov>1997-08-15 16:51:34 (GMT)
committerRobb Matzke <matzke@llnl.gov>1997-08-15 16:51:34 (GMT)
commitbc2b9d9dea6271a46cdfb12913d73d0cd7675607 (patch)
tree41ac2d41fd86a39ae969610fefde057474f50f8e /src/H5Eprivate.h
parent9c6f65ec241eb2941e2af399385d7c7b62edac04 (diff)
downloadhdf5-bc2b9d9dea6271a46cdfb12913d73d0cd7675607.zip
hdf5-bc2b9d9dea6271a46cdfb12913d73d0cd7675607.tar.gz
hdf5-bc2b9d9dea6271a46cdfb12913d73d0cd7675607.tar.bz2
[svn-r35] ./src/H5ACproto.h
./src/H5Aproto.h ./src/H5Bproto.h ./src/H5Cproto.h ./src/H5Dproto.h ./src/H5Eproto.h ./src/H5Fproto.h ./src/H5Gproto.h ./src/H5Hproto.h ./src/H5MFproto.h ./src/H5MMproto.h ./src/H5Mproto.h ./src/H5Oproto.h ./src/H5Pproto.h ./src/H5Tproto.h ./src/H5proto.h These files were removed from the library and renamed by changing `proto' to `public'. ./src/H5ACpublic.h NEW ./src/H5Apublic.h NEW ./src/H5Bpublic.h NEW ./src/H5Cpublic.h NEW ./src/H5Dpublic.h NEW ./src/H5Epublic.h NEW ./src/H5Fpublic.h NEW ./src/H5Gpublic.h NEW ./src/H5Hpublic.h NEW ./src/H5MFpublic.h NEW ./src/H5MMpublic.h NEW ./src/H5Mpublic.h NEW ./src/H5Opublic.h NEW ./src/H5Ppublic.h NEW ./src/H5Tpublic.h NEW ./src/H5public.h NEW These files came from the old H5*proto.h files. ./src/Makefile ./src/Makefile.in NEW Removed. Now generated automatically from Makefile.in by running configure. ./src/h5oplat.h ./src/hdf5fort.h ./src/hdf5gen.h ./src/hdf5glob.h ./src/hdf5lims.h ./src/hdf5meta.h ./src/hdf5pabl.h ./src/hdf5plat.h ./src/hdf5port.h ./src/hdf5type.h Removed. The contents of these files has moved to other header files or source files depending on it's nature. ./src/H5.c ./src/H5A.c ./src/H5B.c ./src/H5C.c ./src/H5D.c ./src/H5E.c ./src/H5F.c ./src/H5G.c ./src/H5H.c ./src/H5M.c ./src/H5MF.c ./src/H5MM.c ./src/H5O.c ./src/H5Ocont.c ./src/H5Oname.c ./src/H5Onull.c ./src/H5Ostab.c ./src/H5P.c ./src/H5T.c Fixed include files. Moved some things from old headers into these files. ./src/H5ACprivate.h ./src/H5Aprivate.h ./src/H5Bprivate.h ./src/H5Cprivate.h ./src/H5Dprivate.h ./src/H5Eprivate.h ./src/H5Fprivate.h ./src/H5Gprivate.h ./src/H5Hprivate.h ./src/H5MFprivate.h ./src/H5MMprivate.h ./src/H5Mprivate.h ./src/H5Oprivate.h ./src/H5Pprivate.h ./src/H5Tprivate.h ./src/H5private.h ./src/debug.c Fixed include files. ./src/hdf5.h This is now the top-level *PUBLIC* include file. It should never appear in the library *.c files.
Diffstat (limited to 'src/H5Eprivate.h')
-rw-r--r--src/H5Eprivate.h136
1 files changed, 60 insertions, 76 deletions
diff --git a/src/H5Eprivate.h b/src/H5Eprivate.h
index dcce767..50b8241 100644
--- a/src/H5Eprivate.h
+++ b/src/H5Eprivate.h
@@ -15,11 +15,12 @@
/*
* Header file for error values, etc.
*/
+#ifndef _H5Eprivate_H
+#define _H5Eprivate_H
+#include <H5Epublic.h>
-#ifndef HDF5ERR_H
-#define HDF5ERR_H
-
-#include "H5Eproto.h"
+/* Private headers needed by this file */
+#include <H5private.h>
/*
======================================================================
@@ -29,17 +30,61 @@
whenever errors are added/deleted from this list.
======================================================================
*/
-/*
- * This section of code is designed to be only accessible to the actual
- * error-management code.
- */
-#ifdef HDF5_ERR_MASTER
+
+/* 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(maj, min) H5Epush(maj, min, 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(maj, min, ret_val) { \
+ HERROR (maj, min); \
+ PABLO_TRACE_OFF (PABLO_MASK, pablo_func_id); \
+ return (ret_val); \
+}
+
+/* HRETURN macro, similar to HRETURN_ERROR() except for success */
+
+#define HRETURN(ret_val) { \
+ PABLO_TRACE_OFF (PABLO_MASK, pablo_func_id); \
+ 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(maj, min, ret_val) { \
+ HERROR (maj, min); \
+ 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;}
+
+/* H5ECLEAR macro, used to facilitate the new error reporting model.
+ This macro is just a wrapper to clear the error stack with the thread
+ error ID */
+
+#define H5ECLEAR H5Eclear(thrderrid)
+
+/* Maximum length of function name to push onto error stack */
+#define MAX_FUNC_NAME_LEN 32
/*
* error_messages is the list of error messages in the system, kept as
* error_code-message pairs.
*/
-
typedef struct
{
hdf_maj_err_code_t error_code;
@@ -47,23 +92,6 @@ typedef struct
}
hdf_maj_error_messages_t;
-static const hdf_maj_error_messages_t hdf_maj_error_messages[] =
-{
- {H5E_NONE_MAJOR, "No error"},
- {H5E_ARGS, "Invalid arguments to routine"},
- {H5E_RESOURCE, "Resource unavailable"},
- {H5E_INTERNAL, "Internal HDF5 error (too specific to document in detail)"},
- {H5E_FILE, "File Accessability"},
- {H5E_IO, "Low-level I/O"},
- {H5E_FUNC, "Function Entry/Exit"},
- {H5E_ATOM, "Object Atom"},
- {H5E_CACHE, "Object Cache"},
- {H5E_BTREE, "B-Tree Node"},
- {H5E_SYM, "Symbol Table"},
- {H5E_HEAP, "Heap"},
- {H5E_OHDR, "Object Header"},
- {H5E_DIRECTORY, "Directory"},
-};
typedef struct
{
@@ -72,44 +100,6 @@ typedef struct
}
hdf_min_error_messages_t;
-static const hdf_min_error_messages_t hdf_min_error_messages[] =
-{
- {H5E_NONE_MINOR, "No error"},
- {H5E_UNINITIALIZED, "Information is uninitialized"},
- {H5E_UNSUPPORTED, "Feature is unsupported"},
- {H5E_BADTYPE, "Incorrect type found"},
- {H5E_BADRANGE, "Argument out of range"},
- {H5E_BADVALUE, "Bad value for argument"},
- {H5E_NOSPACE, "No space available for allocation"},
- {H5E_FILEEXISTS, "File already exists"},
- {H5E_FILEOPEN, "File already open"},
- {H5E_CANTCREATE, "Can't create file"},
- {H5E_CANTOPEN, "Can't open file"},
- {H5E_NOTHDF5, "Not an HDF5 format file"},
- {H5E_BADFILE, "Bad file ID accessed"},
- {H5E_SEEKERROR, "Seek failed"},
- {H5E_READERROR, "Read failed"},
- {H5E_WRITEERROR, "Write failed"},
- {H5E_CANTINIT, "Can't initialize interface"},
- {H5E_ALREADYINIT, "Object already initialized"},
- {H5E_BADATOM, "Can't find atom information"},
- {H5E_CANTREGISTER, "Can't register new atom"},
- {H5E_CANTFLUSH, "Can't flush object from cache"},
- {H5E_CANTLOAD, "Can't load object into cache"},
- {H5E_NOTFOUND, "Object not found"},
- {H5E_EXISTS, "Object already exists"},
- {H5E_CANTENCODE, "Can't encode value"},
- {H5E_CANTDECODE, "Can't decode value"},
- {H5E_CANTSPLIT, "Can't split node"},
- {H5E_CANTINSERT, "Can't insert object"},
- {H5E_CANTLIST, "Can't list node"},
- {H5E_LINKCOUNT, "Bad object header link count"},
- {H5E_VERSION, "Wrong version number"},
- {H5E_ALIGNMENT, "Alignment error"},
- {H5E_BADMESG, "Unrecognized message"},
- {H5E_COMPLEN, "Name component is too long"},
- {H5E_LINK, "Link count failure"},
-};
/* We use a stack to hold the errors plus we keep track of the function,
file and line where the error occurs. */
@@ -135,19 +125,13 @@ typedef struct errstack_t
H5E_push_func_t push; /* Function to call when an error is to be reported */
} H5E_errstack_t;
-#endif /* HDF5_ERR_MASTER */
-#if defined c_plusplus || defined __cplusplus
-extern "C"
-{
-#endif /* c_plusplus || __cplusplus */
+
+/* Private global variables in H5E.c */
+extern int32 thrderrid; /* Thread-specific "global" error-handler ID */
+extern hbool_t install_atexit; /* Whether to install the atexit routine */
/* Private functions in H5E.c */
herr_t H5E_store(int32 errid, hdf_maj_err_code_t maj, hdf_min_err_code_t min, const char *function_name, const char *file_name, intn line);
-#if defined c_plusplus || defined __cplusplus
-}
-#endif /* c_plusplus || __cplusplus */
-
-#endif /* HDF5ERR_H */
-
+#endif