diff options
author | Robb Matzke <matzke@llnl.gov> | 1998-11-02 17:58:28 (GMT) |
---|---|---|
committer | Robb Matzke <matzke@llnl.gov> | 1998-11-02 17:58:28 (GMT) |
commit | 254ae8d43d796c02aedfb7393726a80be14b95d5 (patch) | |
tree | a8be7fe29a273fb0ae4c21e41625755ae6ae88f9 /src/H5private.h | |
parent | a125ee351ba738a61d35755fbb2880b011ac6649 (diff) | |
download | hdf5-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.h | 190 |
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 |