#ifndef vxl_config_h_
#define vxl_config_h_

/* this file either is or was generated from vxl_config.h.in */

/* -------------------- machine word characteristics */

/* these are 0 or 1, never empty. */
#define VXL_LITTLE_ENDIAN @VXL_LITTLE_ENDIAN@
#define VXL_BIG_ENDIAN    @VXL_BIG_ENDIAN@

/* we can't just use typedefs, because on systems where there are   */
/* no 64bit integers we have to #define vxl_int_64 to `void' in     */
/* order to catch illegitimate uses. However, typedefs are superior */
/* to #defines, especially for the two keyword types, so we use     */
/* typedefs for the valid cases.                                    */

#define VXL_HAS_BYTE @VXL_HAS_BYTE@
#define VXL_BYTE_STRING "@VXL_BYTE@"
#if @VXL_HAS_BYTE@
  typedef   signed @VXL_BYTE@  vxl_sbyte;
  typedef unsigned @VXL_BYTE@  vxl_byte;
#else
# define vxl_sbyte  void
# define vxl_byte  void
#endif

#define VXL_HAS_INT_8 @VXL_HAS_INT_8@
#define VXL_INT_8_STRING "@VXL_INT_8@"
#if @VXL_HAS_INT_8@
  typedef          @VXL_INT_8@  vxl_int_8;
  typedef   signed @VXL_INT_8@  vxl_sint_8;
  typedef unsigned @VXL_INT_8@  vxl_uint_8;
#else
# define vxl_int_8   void
# define vxl_sint_8  void
# define vxl_uint_8  void
#endif

#define VXL_HAS_INT_16 @VXL_HAS_INT_16@
#define VXL_INT_16_STRING "@VXL_INT_16@"
#if @VXL_HAS_INT_16@
  typedef          @VXL_INT_16@ vxl_int_16;
  typedef   signed @VXL_INT_16@ vxl_sint_16;
  typedef unsigned @VXL_INT_16@ vxl_uint_16;
#else
# define vxl_int_16  void
# define vxl_sint_16 void
# define vxl_uint_16 void
#endif

#define VXL_HAS_INT_32 @VXL_HAS_INT_32@
#define VXL_INT_32_STRING "@VXL_INT_32@"
#if @VXL_HAS_INT_32@
  typedef          @VXL_INT_32@ vxl_int_32;
  typedef   signed @VXL_INT_32@ vxl_sint_32;
  typedef unsigned @VXL_INT_32@ vxl_uint_32;
#else
# define vxl_int_32  void
# define vxl_sint_32 void
# define vxl_uint_32 void
#endif

#define VXL_HAS_INT_64 @VXL_HAS_INT_64@
#define VXL_INT_64_STRING "@VXL_INT_64@"
#if @VXL_HAS_INT_64@
  typedef          @VXL_INT_64@ vxl_int_64;
  typedef   signed @VXL_INT_64@ vxl_sint_64;
  typedef unsigned @VXL_INT_64@ vxl_uint_64;
#else
# define vxl_int_64  void
# define vxl_sint_64 void
# define vxl_uint_64 void
#endif

#define VXL_INT_64_IS_LONG @VXL_INT_64_IS_LONG@

#define VXL_HAS_IEEE_32 @VXL_HAS_IEEE_32@
#define VXL_IEEE_32_STRING "@VXL_IEEE_32@"
#if @VXL_HAS_IEEE_32@
  typedef @VXL_IEEE_32@ vxl_ieee_32;
#else
# define vxl_ieee_32 void
#endif

#define VXL_HAS_IEEE_64 @VXL_HAS_IEEE_64@
#define VXL_IEEE_64_STRING "@VXL_IEEE_64@"
#if @VXL_HAS_IEEE_64@
  typedef @VXL_IEEE_64@ vxl_ieee_64;
#else
# define vxl_ieee_64 void
#endif

#define VXL_HAS_IEEE_96 @VXL_HAS_IEEE_96@
#define VXL_IEEE_96_STRING "@VXL_IEEE_96@"
#if @VXL_HAS_IEEE_96@
  typedef @VXL_IEEE_96@ vxl_ieee_96;
#else
# define vxl_ieee_96 void
#endif

#define VXL_HAS_IEEE_128 @VXL_HAS_IEEE_128@
#define VXL_IEEE_128_STRING "@VXL_IEEE_128@"
#if @VXL_HAS_IEEE_128@
  typedef @VXL_IEEE_128@ vxl_ieee_128;
#else
# define vxl_ieee_128 void
#endif

/* -------------------- operating system services */

#define VXL_HAS_PTHREAD_H         @VXL_HAS_PTHREAD_H@
#define VXL_HAS_SEMAPHORE_H       @VXL_HAS_SEMAPHORE_H@

/* -------------------- library quirks */

/* these should be 1 if the symbol in question is declared */
/* in the relevant header file and 0 otherwise. */

#define VXL_UNISTD_HAS_USECONDS_T @VXL_UNISTD_HAS_USECONDS_T@
#define VXL_UNISTD_HAS_INTPTR_T   @VXL_UNISTD_HAS_INTPTR_T@
#define VXL_UNISTD_HAS_UALARM     @VXL_UNISTD_HAS_UALARM@
#define VXL_UNISTD_HAS_USLEEP     @VXL_UNISTD_HAS_USLEEP@
#define VXL_UNISTD_HAS_LCHOWN     @VXL_UNISTD_HAS_LCHOWN@
#define VXL_UNISTD_HAS_PREAD      @VXL_UNISTD_HAS_PREAD@
#define VXL_UNISTD_HAS_PWRITE     @VXL_UNISTD_HAS_PWRITE@
#define VXL_UNISTD_HAS_TELL       @VXL_UNISTD_HAS_TELL@

/* true if <stdlib.h> declares qsort() */
#define VXL_STDLIB_HAS_QSORT      @VXL_STDLIB_HAS_QSORT@

/* true if <stdlib.h> declares lrand48() */
#define VXL_STDLIB_HAS_LRAND48    @VXL_STDLIB_HAS_LRAND48@

/* true if <stdlib.h> declares drand48() */
#define VXL_STDLIB_HAS_DRAND48    @VXL_STDLIB_HAS_DRAND48@

/* true if <stdlib.h> declares srand48() */
#define VXL_STDLIB_HAS_SRAND48    @VXL_STDLIB_HAS_SRAND48@

/* true if <ieeefp.h> declares finite() */
#define VXL_IEEEFP_HAS_FINITE     @VXL_IEEEFP_HAS_FINITE@

/* true if <math.h> declares finitef() */
#define VXL_C_MATH_HAS_FINITEF     @VXL_C_MATH_HAS_FINITEF@

/* true if <math.h> declares finite() */
#define VXL_C_MATH_HAS_FINITE     @VXL_C_MATH_HAS_FINITE@

/* true if <math.h> declares finitel() */
#define VXL_C_MATH_HAS_FINITEL     @VXL_C_MATH_HAS_FINITEL@

/* true if <math.h> declares sqrtf() for the C compiler */
#define VXL_C_MATH_HAS_SQRTF      @VXL_C_MATH_HAS_SQRTF@

/* true if usleep() returns void */
#define VXL_UNISTD_USLEEP_IS_VOID @VXL_UNISTD_USLEEP_IS_VOID@

/* true if gettime() takes two arguments */
#define VXL_TWO_ARG_GETTIME       @VXL_TWO_ARG_GETTIME@

/* true if <ieeefp.h> is available */
#define VXL_HAS_IEEEFP_H          @VXL_HAS_IEEEFP_H@

#endif /* vxl_config_h_ */
