/* config.h.in.  Generated from configure.ac by autoheader.  */


#ifndef HARP_CONFIG_H
#define HARP_CONFIG_H


/* Define if building universal (internal helper macro) */
#cmakedefine AC_APPLE_UNIVERSAL_BUILD ${AC_APPLE_UNIVERSAL_BUILD}

/* String to use in netCDF Conventions attribute */
#cmakedefine HARP_CONVENTION ${HARP_CONVENTION}

/* Define to enable name mangling of symbols for the built-in expat library.
   */
#cmakedefine HARP_EXPAT_NAME_MANGLE ${HARP_EXPAT_NAME_MANGLE}

/* Current HARP format major version number. */
#define HARP_FORMAT_VERSION_MAJOR 1

/* Current HARP format minor version number. */
#define HARP_FORMAT_VERSION_MINOR 0

/* Define to enable name mangling of symbols for the built-in netcdf library.
   */
#cmakedefine HARP_NETCDF_NAME_MANGLE ${HARP_NETCDF_NAME_MANGLE}

/* Define to enable name mangling of symbols for the built-in udunits2
   library. */
#cmakedefine HARP_UDUNITS2_NAME_MANGLE ${HARP_UDUNITS2_NAME_MANGLE}

/* This is the current version of HARP */
#cmakedefine HARP_VERSION ${HARP_VERSION}

/* Define to 1 if you have the 'bcopy' function. */
#cmakedefine HAVE_BCOPY ${HAVE_BCOPY}

/* Define to 1 if CODA is available. */
#cmakedefine HAVE_CODA ${HAVE_CODA}

/* Define to 1 if you have the <coda.h> header file. */
#cmakedefine HAVE_CODA_H ${HAVE_CODA_H}

/* Define to 1 if you have the <dirent.h> header file. */
#cmakedefine HAVE_DIRENT_H ${HAVE_DIRENT_H}

/* Define to 1 if you have the <dlfcn.h> header file. */
#cmakedefine HAVE_DLFCN_H ${HAVE_DLFCN_H}

/* Define to 1 if you have the 'floor' function. */
#cmakedefine HAVE_FLOOR ${HAVE_FLOOR}

/* Define to 1 if HDF4 is available. */
#cmakedefine HAVE_HDF4 ${HAVE_HDF4}

/* Define to 1 if HDF5 is available. */
#cmakedefine HAVE_HDF5 ${HAVE_HDF5}

/* Define to 1 if you have the <hdf5.h> header file. */
#cmakedefine HAVE_HDF5_H ${HAVE_HDF5_H}

/* Define to 1 if you have the <hdf5_hl.h> header file. */
#cmakedefine HAVE_HDF5_HL_H ${HAVE_HDF5_HL_H}

/* Define to 1 if you have the <hdf.h> header file. */
#cmakedefine HAVE_HDF_H ${HAVE_HDF_H}

/* Define to 1 if you have the <idl_export.h> header file. */
#cmakedefine HAVE_IDL_EXPORT_H ${HAVE_IDL_EXPORT_H}

/* Define to 1 if you have the <inttypes.h> header file. */
#cmakedefine HAVE_INTTYPES_H ${HAVE_INTTYPES_H}

/* Define to 1 if you have the 'm' library (-lm). */
#cmakedefine HAVE_LIBM ${HAVE_LIBM}

/* Define to 1 if your system has a GNU libc compatible 'malloc' function, and
   to 0 otherwise. */
#cmakedefine HAVE_MALLOC ${HAVE_MALLOC}

/* Define to 1 if you have the 'memmove' function. */
#cmakedefine HAVE_MEMMOVE ${HAVE_MEMMOVE}

/* Define to 1 if you have the <mex.h> header file. */
#cmakedefine HAVE_MEX_H ${HAVE_MEX_H}

/* Define to 1 if you have the <mfhdf.h> header file. */
#cmakedefine HAVE_MFHDF_H ${HAVE_MFHDF_H}

/* Define to 1 if you have the <netcdf.h> header file. */
#cmakedefine HAVE_NETCDF_H ${HAVE_NETCDF_H}

/* Define to 1 if you have the 'pread' function. */
#cmakedefine HAVE_PREAD ${HAVE_PREAD}

/* Define to 1 if your system has a GNU libc compatible 'realloc' function,
   and to 0 otherwise. */
#cmakedefine HAVE_REALLOC ${HAVE_REALLOC}

/* Define to 1 if you have the 'stat' function. */
#cmakedefine HAVE_STAT ${HAVE_STAT}

/* Define to 1 if stdbool.h conforms to C99. */
#cmakedefine HAVE_STDBOOL_H ${HAVE_STDBOOL_H}

/* Define to 1 if you have the <stdint.h> header file. */
#cmakedefine HAVE_STDINT_H ${HAVE_STDINT_H}

/* Define to 1 if you have the <stdio.h> header file. */
#cmakedefine HAVE_STDIO_H ${HAVE_STDIO_H}

/* Define to 1 if you have the <stdlib.h> header file. */
#cmakedefine HAVE_STDLIB_H ${HAVE_STDLIB_H}

/* Define to 1 if you have the 'strcasecmp' function. */
#cmakedefine HAVE_STRCASECMP ${HAVE_STRCASECMP}

/* Define to 1 if you have the 'strdup' function. */
#cmakedefine HAVE_STRDUP ${HAVE_STRDUP}

/* Define to 1 if you have the 'strerror' function. */
#cmakedefine HAVE_STRERROR ${HAVE_STRERROR}

/* Define to 1 if you have the <strings.h> header file. */
#cmakedefine HAVE_STRINGS_H ${HAVE_STRINGS_H}

/* Define to 1 if you have the <string.h> header file. */
#cmakedefine HAVE_STRING_H ${HAVE_STRING_H}

/* Define to 1 if you have the 'strncasecmp' function. */
#cmakedefine HAVE_STRNCASECMP ${HAVE_STRNCASECMP}

/* Define to 1 if you have the <sys/stat.h> header file. */
#cmakedefine HAVE_SYS_STAT_H ${HAVE_SYS_STAT_H}

/* Define to 1 if you have the <sys/types.h> header file. */
#cmakedefine HAVE_SYS_TYPES_H ${HAVE_SYS_TYPES_H}

/* Define to 1 if you have the <unistd.h> header file. */
#cmakedefine HAVE_UNISTD_H ${HAVE_UNISTD_H}

/* Define to 1 if you have the 'vsnprintf' function. */
#cmakedefine HAVE_VSNPRINTF ${HAVE_VSNPRINTF}

/* Define to 1 if the system has the type '_Bool'. */
#cmakedefine HAVE__BOOL ${HAVE__BOOL}

/* Define to the sub-directory where libtool stores uninstalled libraries. */
#cmakedefine LT_OBJDIR ${LT_OBJDIR}

/* Name of package */
#cmakedefine PACKAGE ${PACKAGE}

/* Define to the address where bug reports for this package should be sent. */
#cmakedefine PACKAGE_BUGREPORT ${PACKAGE_BUGREPORT}

/* Define to the full name of this package. */
#cmakedefine PACKAGE_NAME ${PACKAGE_NAME}

/* Define to the full name and version of this package. */
#cmakedefine PACKAGE_STRING ${PACKAGE_STRING}

/* Define to the one symbol short name of this package. */
#cmakedefine PACKAGE_TARNAME ${PACKAGE_TARNAME}

/* Define to the home page for this package. */
#cmakedefine PACKAGE_URL ${PACKAGE_URL}

/* Define to the version of this package. */
#cmakedefine PACKAGE_VERSION ${PACKAGE_VERSION}

/* The size of 'double', as computed by sizeof. */
#cmakedefine SIZEOF_DOUBLE ${SIZEOF_DOUBLE}

/* The size of 'float', as computed by sizeof. */
#cmakedefine SIZEOF_FLOAT ${SIZEOF_FLOAT}

/* The size of 'int', as computed by sizeof. */
#cmakedefine SIZEOF_INT ${SIZEOF_INT}

/* The size of 'long', as computed by sizeof. */
#cmakedefine SIZEOF_LONG ${SIZEOF_LONG}

/* The size of 'off_t', as computed by sizeof. */
#cmakedefine SIZEOF_OFF_T ${SIZEOF_OFF_T}

/* The size of 'short', as computed by sizeof. */
#cmakedefine SIZEOF_SHORT ${SIZEOF_SHORT}

/* The size of 'size_t', as computed by sizeof. */
#cmakedefine SIZEOF_SIZE_T ${SIZEOF_SIZE_T}

/* Define to 1 if all of the C89 standard headers exist (not just the ones
   required in a freestanding environment). This macro is provided for
   backward compatibility; new code need not use it. */
#cmakedefine STDC_HEADERS ${STDC_HEADERS}

/* Define to 1 if your <sys/time.h> declares 'struct tm'. */
#cmakedefine TM_IN_SYS_TIME ${TM_IN_SYS_TIME}

/* Version number of package */
#cmakedefine VERSION ${VERSION}

/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most
   significant byte first (like Motorola and SPARC, unlike Intel). */
#if defined AC_APPLE_UNIVERSAL_BUILD
# if defined __BIG_ENDIAN__
#  define WORDS_BIGENDIAN 1
# endif
#else
# ifndef WORDS_BIGENDIAN
#cmakedefine WORDS_BIGENDIAN ${WORDS_BIGENDIAN}
# endif
#endif

/* Define to specify how much context to retain around the current parse
   point. */
#cmakedefine XML_CONTEXT_BYTES ${XML_CONTEXT_BYTES}

/* Define to make parameter entity parsing functionality available. */
#cmakedefine XML_DTD ${XML_DTD}

/* Define to set the size of the XML_Size and XML_Index integer types to be at
   least 64 bits in size. */
#cmakedefine XML_LARGE_SIZE ${XML_LARGE_SIZE}

/* Define to make XML Namespaces functionality available. */
#cmakedefine XML_NS ${XML_NS}

/* Define to 1 if 'lex' declares 'yytext' as a 'char *' by default, not a
   'char[]'. */
#cmakedefine YYTEXT_POINTER ${YYTEXT_POINTER}

/* Number of bits in a file offset, on hosts where this is settable. */
#cmakedefine _FILE_OFFSET_BITS ${_FILE_OFFSET_BITS}

/* Define to 1 on platforms where this makes off_t a 64-bit type. */
#cmakedefine _LARGE_FILES ${_LARGE_FILES}

/* Number of bits in time_t, on hosts where this is settable. */
#cmakedefine _TIME_BITS ${_TIME_BITS}

/* Define for Solaris 2.5.1 so the uint32_t typedef from <sys/synch.h>,
   <pthread.h>, or <semaphore.h> is not used. If the typedef were allowed, the
   #define below would cause a syntax error. */
#cmakedefine _UINT32_T ${_UINT32_T}

/* Define for Solaris 2.5.1 so the uint64_t typedef from <sys/synch.h>,
   <pthread.h>, or <semaphore.h> is not used. If the typedef were allowed, the
   #define below would cause a syntax error. */
#cmakedefine _UINT64_T ${_UINT64_T}

/* Define for Solaris 2.5.1 so the uint8_t typedef from <sys/synch.h>,
   <pthread.h>, or <semaphore.h> is not used. If the typedef were allowed, the
   #define below would cause a syntax error. */
#cmakedefine _UINT8_T ${_UINT8_T}

/* Define to 1 on platforms where this makes time_t a 64-bit type. */
#cmakedefine __MINGW_USE_VC2005_COMPAT ${__MINGW_USE_VC2005_COMPAT}

/* Define to the type of a signed integer type of width exactly 16 bits if
   such a type exists and the standard includes do not define it. */
#cmakedefine int16_t ${int16_t}

/* Define to the type of a signed integer type of width exactly 32 bits if
   such a type exists and the standard includes do not define it. */
#cmakedefine int32_t ${int32_t}

/* Define to the type of a signed integer type of width exactly 64 bits if
   such a type exists and the standard includes do not define it. */
#cmakedefine int64_t ${int64_t}

/* Define to the type of a signed integer type of width exactly 8 bits if such
   a type exists and the standard includes do not define it. */
#cmakedefine int8_t ${int8_t}

/* Define to rpl_malloc if the replacement function should be used. */
#cmakedefine malloc ${malloc}

/* Define to rpl_realloc if the replacement function should be used. */
#cmakedefine realloc ${realloc}

/* Define as 'unsigned int' if <stddef.h> doesn't define. */
#cmakedefine size_t ${size_t}

/* Define to the type of an unsigned integer type of width exactly 16 bits if
   such a type exists and the standard includes do not define it. */
#cmakedefine uint16_t ${uint16_t}

/* Define to the type of an unsigned integer type of width exactly 32 bits if
   such a type exists and the standard includes do not define it. */
#cmakedefine uint32_t ${uint32_t}

/* Define to the type of an unsigned integer type of width exactly 64 bits if
   such a type exists and the standard includes do not define it. */
#cmakedefine uint64_t ${uint64_t}

/* Define to the type of an unsigned integer type of width exactly 8 bits if
   such a type exists and the standard includes do not define it. */
#cmakedefine uint8_t ${uint8_t}


#ifdef HAVE_INTTYPES_H
#include <inttypes.h>
#else
# ifdef HAVE_STDINT_H
#  include <stdint.h>
# else
#  ifdef HAVE_SYS_TYPES_H
#   include <sys/types.h>
#  endif
# endif
#endif

/* needed for expat */
#ifdef WORDS_BIGENDIAN
#define BYTEORDER 4321
#else
#define BYTEORDER 1234
#endif
#define XML_DEV_URANDOM 1

#ifndef HAVE_STRDUP
char *strdup(const char *);
#endif

#ifndef HAVE_STRCASECMP
int strcasecmp(const char *, const char *);
#endif

#if !defined(HAVE_STRNCASECMP) || !defined(HAVE_VSNPRINTF)
/* include string.h for size_t definition */
#include <string.h>
#endif

#ifndef HAVE_STRNCASECMP
int strncasecmp(const char *, const char *, size_t);
#endif

#if defined(HAVE_STRCASECMP) || defined(HAVE_STRNCASECMP)
#ifdef HAVE_STRINGS_H
/* include strings.h for definition of strcasecmp and strncasecmp */
#include <strings.h>
#endif
#endif

#ifndef HAVE_VSNPRINTF
/* include stdarg.h for va_list definition */
#include <stdarg.h>
int vsnprintf(const char *, size_t, const char *, va_list ap);
#endif

/* Make sure we use the HDF 1.6 compatibility API */
#define H5_USE_16_API

/* H5Oget_info did not exist in HDF 1.6, so make sure to use 1.8 for this */
#define H5Oget_info_vers 1
#define H5Oget_info_by_name_vers 1
#define H5O_info_t_vers 1

#ifdef WIN32

/* need to include this before we redefine lseek, etc. */
#include <io.h>

/* include sys/stat.h because we are going to override stat */
#include <sys/stat.h>

#if (_MSC_VER < 1600) && !defined(__MINGW32__)
/* For Visual Studio > 2010 and MinGW we can use stdint.h
 * For earlier versions of Visual Studio we need to provide our own defines
 */
#ifndef int8_t
#define int8_t  signed char
#endif
#ifndef int16_t
#define int16_t signed short
#endif
#ifndef int32_t
#define int32_t int
#endif
#ifndef int64_t
#define int64_t __int64
#endif

#ifndef uint8_t
#define uint8_t  unsigned char
#endif
#ifndef uint16_t
#define uint16_t unsigned short
#endif
#ifndef uint32_t
#define uint32_t unsigned int
#endif
#ifndef uint64_t
#define uint64_t unsigned __int64
#endif
#endif

/* redefines for special string handling functions */
#define strcasecmp _stricmp
#define strncasecmp _strnicmp
#if defined(_MSC_VER) && _MSC_VER < 1900
#define snprintf _snprintf
#endif
#if defined(_MSC_VER) && _MSC_VER < 1500
#define vsnprintf _vsnprintf
#endif

/* redefines for file handling functions */
#define open(arg1,arg2) _open(arg1,arg2)
#define close(arg1) _close(arg1)
/* WARNING: On Windows we can't read blocks larger than 4GB with the read() function */
#define read(arg1,arg2,arg3) _read(arg1,arg2,(unsigned int)arg3)
#define lseek(arg1,arg2,arg3) _lseeki64(arg1,arg2,arg3)
#define off_t __int64
#define stat _stati64
#define S_IFREG _S_IFREG
#define getcwd(arg1,arg2) _getcwd(arg1,arg2)

/* define ssize_t */
#ifdef _WIN64
#define ssize_t __int64
#else
#define ssize_t long
#endif

/* prevent HDF5 header files from redefining the above types */
#define H5_SIZEOF_INT64_T 8
#define H5_SIZEOF_UINT32_T 4
#define H5_SIZEOF_UINT64_T 8
#ifdef _WIN64
#define H5_SIZEOF_SSIZE_T 8
#else
#define H5_SIZEOF_SSIZE_T 4
#endif

#define YYMALLOC malloc
#define YYFREE free

#endif

#endif /* !defined(HARP_CONFIG_H) */

