summaryrefslogtreecommitdiffstats
path: root/src/H5private.h
diff options
context:
space:
mode:
authorRobb Matzke <matzke@llnl.gov>1998-11-02 17:58:28 (GMT)
committerRobb Matzke <matzke@llnl.gov>1998-11-02 17:58:28 (GMT)
commit254ae8d43d796c02aedfb7393726a80be14b95d5 (patch)
treea8be7fe29a273fb0ae4c21e41625755ae6ae88f9 /src/H5private.h
parenta125ee351ba738a61d35755fbb2880b011ac6649 (diff)
downloadhdf5-254ae8d43d796c02aedfb7393726a80be14b95d5.zip
hdf5-254ae8d43d796c02aedfb7393726a80be14b95d5.tar.gz
hdf5-254ae8d43d796c02aedfb7393726a80be14b95d5.tar.bz2
[svn-r859] Changes since 19981030
---------------------- ./MANIFEST Added new Pablo files HDF5record_RT.h and ProcIDs.h ./acconfig.h ./configure [REGENERATED] ./configure.in ./src/H5.c ./src/H5Vprivate.h ./src/H5config.h.in [REGENERATED] ./src/H5private.h ./src/H5public.h ./test/big.c Added more configuration stuff for the Win32 environment. Removed all the #ifdef WIN32 from the source and replaced them with OS-independent stuff. Specifics follow: Check for non-Posix.1 `st_blocks' field in `struct stat' which is used by the big file test to decide if the file system supports holes. If the st_blocks field isn't present then we just skip the test. Configure checks for <io.h> <sys/resource.h> <sys/time.h> and <winsock.h> and defines HAVE_IO_H, HAVE_SYS_RESOURCE_H, HAVE_SYS_TIME_H and HAVE_WINSOCK_H when they're found. Configure checks whether both <sys/time.h> and <time.h> can be included and defines SYS_TIME_WITH_TIME if so. Otherwise include only <sys/time.h> or <time.h> even if both exist. Configure checks sizeof(__int64) and defines SIZEOF___INT64 to the result or to zero if __int64 isn't defined. The source uses `long long' in preference to `__int64'. Removed null WIN32 definition for `inline' since such a definition already exists in H5config.h Protected gettimeofday() calls in debugging code with HAVE_GETTIMEOFDAY instead of WIN32. ./src/H5F.c ./src/H5Flow.c ./src/H5Fmpio.c ./src/H5Fsec2.c ./src/H5Fstdio.h ./src/H5P.c ./src/H5Tconv.c ./src/H5private.h Removed #include of system files from library source files and consolodated them into H5private.h where they're protected by various configuration macros (most of them were duplicated there already anyway). ./test/big.c ./test/chunk.c ./test/cmpd_dset.c ./test/dsets.c ./test/dtypes.c ./test/extend.c ./test/external.c ./test/fillval.c ./test/flush1.c ./test/flush2.c ./test/iopipe.c ./test/links.c ./test/mount.c ./test/mtime.c ./test/overhead.c ./test/ragged.c ./test/shtype.c ./test/unlink.c Protected system #include's with #ifdef's from H5config.h. Undefined NDEBUG since some of the tests rely on assert() to check return values. Removed WIN32 definitions for __unused__ since this can be controlled by the definition of HAVE_ATTRIBUTE in H5config.h ./test/testhdf5.h Removed the CLEAN_CMD definition because we no longer use it. Albert's cleanup() functions replaced it. ./test/fillval.c Initialized auto hid_t variables to fix warnings in error recovery code when data flow analysis is turned on in compilers. ./test/h5tools.c Initialized an auto variable to fix a compiler warning. ./test/chunk.c ./test/ragged.c The WIN32 had some unsigned variables changed to signed because the compiler generates warnings when coercing unsigned to double(?). I changed them back to unsigned because they really are unsigned quantities. If this the change was just to shut up extraneous warnings then perhaps a compiler flag can do the same; otherwise if the compiler generates bad code then we should supply a patch file instead messing up source code with bug work-arounds. ./src/H5detect.c Protected system #include's with #ifdef's from H5config.h thereby removing a WIN32. If getpwuid() doesn't exist (HAVE_GETPWUID) then we assume that `struct passwd' doesn't exist either (we don't really need it in that case). The H5T_NATIVE_LLONG and H5T_NATIVE_ULLONG are defined in terms of `long long' or else `__int64' or else `long' depending on what's available. ./src/H5Flow.c ./src/H5Ofill.c Added __unused__ to some function arguments that aren't used when assertions are turned off. ./src/H5V.c Changed an auto variable name in some hand-inlined code to get rid of a warning about the variable shadowing a previous auto.
Diffstat (limited to 'src/H5private.h')
-rw-r--r--src/H5private.h190
1 files changed, 114 insertions, 76 deletions
diff --git a/src/H5private.h b/src/H5private.h
index 25e93f6..2769269 100644
--- a/src/H5private.h
+++ b/src/H5private.h
@@ -1,70 +1,90 @@
-/****************************************************************************
- * NCSA HDF *
- * Software Development Group *
- * National Center for Supercomputing Applications *
- * University of Illinois at Urbana-Champaign *
- * 605 E. Springfield, Champaign IL 61820 *
- * *
- * For conditions of distribution and use, see the accompanying *
- * hdf/COPYING file. *
- * *
- ****************************************************************************/
-
-/* $Id$ */
-
/*
- * This file contains macros & private information for general HDF5 functions.
- * Every HDF5 source file will include this file immediately after any
- * system include files but before any other private include files.
+ * Copyright (C) 1998 NCSA
+ * All rights reserved.
+ *
+ * Programmer: Robb Matzke <matzke@llnl.gov>
+ * Friday, October 30, 1998
+ *
+ * Purpose: This file is included by all HDF5 library source files to
+ * define common things which are not defined in the HDF5 API.
+ * The configuration constants like HAVE_UNISTD_H etc. are
+ * defined in H5config.h which is included by H5public.h.
*/
#ifndef _H5private_H
#define _H5private_H
#include <H5public.h> /* Include Public Definitions */
-/* Version #'s of the major components of the file format */
-#define HDF5_BOOTBLOCK_VERSION 0 /* of the boot block format */
-#define HDF5_FREESPACE_VERSION 0 /* of the Free-Space Info */
-#define HDF5_OBJECTDIR_VERSION 0 /* of the Object Directory format */
-#define HDF5_SHAREDHEADER_VERSION 0 /* of the Shared-Header Info */
-
-/*
- * Status return values for the `herr_t' type.
- * Since some unix/c routines use 0 and -1 (or more precisely, non-negative
- * vs. negative) as their return code, and some assumption had been made in
- * the code about that, it is important to keep these constants the same
- * values. When checking the success or failure of an integer-valued
- * function, remember to compare against zero and not one of these two
- * values.
- */
-#define SUCCEED 0
-#define FAIL (-1)
-#define UFAIL (unsigned)(-1)
-
-
/*
- * Include those things that almost all source files need.
+ * Include ANSI-C header files.
*/
#ifdef STDC_HEADERS
# include <assert.h>
# include <ctype.h>
+# include <errno.h>
# include <fcntl.h>
+# include <float.h>
+# include <math.h>
+# include <stdarg.h>
# include <stdio.h>
# include <stdlib.h>
# include <string.h>
-# include <time.h>
+#endif
-#if defined(WIN32)
-# include<sys\types.h>
-# include<io.h>
-#define F_OK 00
-#define R_OK 04
-#define W_OK 02
-#else
-# include <sys/time.h>
+/*
+ * If _POSIX_VERSION is defined in unistd.h then this system is Posix.1
+ * compliant. Otherwise all bets are off.
+ */
+#ifdef HAVE_UNISTD_H
# include <sys/types.h>
# include <unistd.h>
-#endif /*if defined(WIN32)*/
+#endif
+#ifdef _POSIX_VERSION
+# include <sys/stat.h>
+# include <sys/wait.h>
+# include <pwd.h>
+#endif
+/*
+ * If a program may include both `time.h' and `sys/time.h' then
+ * TIME_WITH_SYS_TIME is defined (see AC_HEADER_TIME in configure.in).
+ * On some older systems, `sys/time.h' includes `time.h' but `time.h' is not
+ * protected against multiple inclusion, so programs should not explicitly
+ * include both files. This macro is useful in programs that use, for example,
+ * `struct timeval' or `struct timezone' as well as `struct tm'. It is best
+ * used in conjunction with `HAVE_SYS_TIME_H', whose existence is checked
+ * by `AC_CHECK_HEADERS(sys/time.h)' in configure.in.
+ */
+#if defined(TIME_WITH_SYS_TIME)
+# include <sys/time.h>
+# include <time.h>
+#elif defined(HAVE_SYS_TIME_H)
+# include <sys/time.h>
+#else
+# include <time.h>
+#endif
+
+/*
+ * Resource usage is not Posix.1 but HDF5 uses it anyway for some performance
+ * and debugging code if available.
+ */
+#ifdef HAVE_SYS_RESOURCE_H
+# include <sys/resource.h>
+#endif
+
+/*
+ * Win32 is severely broken when it comes to ANSI-C and Posix.1 compliance.
+ */
+#ifdef HAVE_IO_H
+# include <io.h>
+#endif
+#ifdef HAVE_WINSOCK_H
+# include <winsock.h>
+# include <winsock2.h>
+#endif
+#ifndef F_OK
+# define F_OK 00
+# define W_OK 02
+# define R_OK 04
#endif
/*
@@ -77,44 +97,64 @@
# include "ProcIDs.h"
#endif
-/* Does the compiler support the __attribute__(()) syntax? */
-#ifndef HAVE_ATTRIBUTE
+/*
+ * Does the compiler support the __attribute__(()) syntax? This is how gcc
+ * suppresses warnings about unused function arguments. It's no big deal if
+ * we don't.
+ */
+#ifdef HAVE_ATTRIBUTE
+# define __unused__ __attribute__((unused))
+#else
# define __attribute__(X) /*void*/
# define __unused__ /*void*/
-#else
-# define __unused__ __attribute__((unused))
-#endif
-
-#if defined(WIN32)
-#undef __unused__
-#define __unused__
#endif
-/* Does the compiler expand __FUNCTION__? */
+/*
+ * Does the compiler expand __FUNCTION__ to be the name of the function
+ * currently being defined? If not then define it to be some constant
+ * string.
+ */
#ifndef HAVE_FUNCTION
-# define __FUNCTION__ "NoFuntionName"
+# define __FUNCTION__ "NoFunctionName"
#endif
+/* Version #'s of the major components of the file format */
+#define HDF5_BOOTBLOCK_VERSION 0 /* of the boot block format */
+#define HDF5_FREESPACE_VERSION 0 /* of the Free-Space Info */
+#define HDF5_OBJECTDIR_VERSION 0 /* of the Object Directory format */
+#define HDF5_SHAREDHEADER_VERSION 0 /* of the Shared-Header Info */
+
+/*
+ * Status return values for the `herr_t' type.
+ * Since some unix/c routines use 0 and -1 (or more precisely, non-negative
+ * vs. negative) as their return code, and some assumption had been made in
+ * the code about that, it is important to keep these constants the same
+ * values. When checking the success or failure of an integer-valued
+ * function, remember to compare against zero and not one of these two
+ * values.
+ */
+#define SUCCEED 0
+#define FAIL (-1)
+#define UFAIL (unsigned)(-1)
+
/* number of members in an array */
#ifndef NELMTS
# define NELMTS(X) (sizeof(X)/sizeof(X[0]))
#endif
/* minimum of two, three, or four values */
-#ifndef MIN
-# define MIN(a,b) (((a)<(b)) ? (a) : (b))
-# define MIN2(a,b) MIN(a,b)
-# define MIN3(a,b,c) MIN(a,MIN(b,c))
-# define MIN4(a,b,c,d) MIN(MIN(a,b),MIN(c,d))
-#endif
+#undef MIN
+#define MIN(a,b) (((a)<(b)) ? (a) : (b))
+#define MIN2(a,b) MIN(a,b)
+#define MIN3(a,b,c) MIN(a,MIN(b,c))
+#define MIN4(a,b,c,d) MIN(MIN(a,b),MIN(c,d))
/* maximum of two, three, or four values */
-#ifndef MAX
-# define MAX(a,b) (((a)>(b)) ? (a) : (b))
-# define MAX2(a,b) MAX(a,b)
-# define MAX3(a,b,c) MAX(a,MAX(b,c))
-# define MAX4(a,b,c,d) MAX(MAX(a,b),MAX(c,d))
-#endif
+#undef MAX
+#define MAX(a,b) (((a)>(b)) ? (a) : (b))
+#define MAX2(a,b) MAX(a,b)
+#define MAX3(a,b,c) MAX(a,MAX(b,c))
+#define MAX4(a,b,c,d) MAX(MAX(a,b),MAX(c,d))
/* limit the middle value to be within a range (inclusive) */
#define RANGE(LO,X,HI) MAX(LO,MIN(X,HI))
@@ -178,13 +218,11 @@ typedef unsigned uint64;
typedef long int64;
typedef unsigned long uint64;
#elif SIZEOF_LONG_LONG==8
-#if defined(WIN32)
-typedef __int64 int64;
-typedef unsigned __int64 uint64;
-#else
typedef long long int64;
typedef unsigned long long uint64;
-#endif
+#elif SIZEOF___INT64==8
+typedef __int64 int64;
+typedef unsigned __int64 uint64;
#else
# error "no 64-bit integer type"
#endif