/*=========================================================================

  Program:   Visualization Toolkit
  Module:    vtkConfigure.h.in

  Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
  All rights reserved.
  See Copyright.txt or http://www.kitware.com/Copyright.htm for details.

     This software is distributed WITHOUT ANY WARRANTY; without even
     the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
     PURPOSE.  See the above copyright notice for more information.

=========================================================================*/
#ifndef __vtkConfigure_h
#define __vtkConfigure_h

/* This header is configured by VTK's build process.  */

/*--------------------------------------------------------------------------*/
/* Platform Features                                                        */

/* Byte order.  */
#cmakedefine VTK_WORDS_BIGENDIAN

/* Threading system.  */
#cmakedefine VTK_USE_PTHREADS
#cmakedefine VTK_USE_SPROC
#cmakedefine VTK_HP_PTHREADS
#cmakedefine VTK_USE_WIN32_THREADS

/* Size of fundamental data types.  */
#define VTK_SIZEOF_CHAR   @VTK_SIZEOF_CHAR@
#define VTK_SIZEOF_DOUBLE @VTK_SIZEOF_DOUBLE@
#define VTK_SIZEOF_FLOAT  @VTK_SIZEOF_FLOAT@
#define VTK_SIZEOF_INT    @VTK_SIZEOF_INT@
#define VTK_SIZEOF_LONG   @VTK_SIZEOF_LONG@
#define VTK_SIZEOF_SHORT  @VTK_SIZEOF_SHORT@

/* Define size of long long and/or __int64 bit integer type only if the type
   exists.  */
#cmakedefine VTK_SIZEOF_LONG_LONG @VTK_SIZEOF_LONG_LONG@
#cmakedefine VTK_SIZEOF___INT64   @VTK_SIZEOF___INT64@

/* Whether types "long long" and "__int64" are enabled.  If a type is
   enabled then it is a unique fundamental type.  */
#cmakedefine VTK_TYPE_USE_LONG_LONG
#cmakedefine VTK_TYPE_USE___INT64

/* Some properties of the available types.  */
#cmakedefine VTK_TYPE_SAME_LONG_AND___INT64
#cmakedefine VTK_TYPE_SAME_LONG_LONG_AND___INT64
#cmakedefine VTK_TYPE_CONVERT_UI64_TO_DOUBLE

/* Whether type "char" is signed (it may be signed or unsigned).  */
#define VTK_TYPE_CHAR_IS_SIGNED @VTK_TYPE_CHAR_IS_SIGNED@

/* Compiler features.  */
#cmakedefine VTK_NO_EXPLICIT_TEMPLATE_INSTANTIATION
#cmakedefine VTK_NO_FULL_TEMPLATE_SPECIALIZATION
#cmakedefine VTK_NO_ANSI_STRING_STREAM
#cmakedefine VTK_NO_STD_NAMESPACE
#cmakedefine VTK_NO_FOR_SCOPE
#cmakedefine VTK_COMPILER_HAS_BOOL
#cmakedefine VTK_ISTREAM_SUPPORTS_LONG_LONG
#cmakedefine VTK_OSTREAM_SUPPORTS_LONG_LONG
#define VTK_STREAM_EOF_SEVERITY @VTK_STREAM_EOF_SEVERITY@
#cmakedefine VTK_HAVE_GETSOCKNAME_WITH_SOCKLEN_T

/*--------------------------------------------------------------------------*/
/* VTK Platform Configuration                                               */

/* Whether we are building shared libraries.  */
#cmakedefine VTK_BUILD_SHARED_LIBS

/* Whether vtkIdType is a 64-bit integer type (or a 32-bit integer type).  */
#cmakedefine VTK_USE_64BIT_IDS

/* Whether we are using ANSI C++ streams (or old-style streams).  */
#cmakedefine VTK_USE_ANSI_STDLIB

/* Whether VTK was built to support Carbon or Cocoa on the Mac.  */
#cmakedefine VTK_USE_CARBON
#cmakedefine VTK_USE_COCOA

/* Whether we are linking to Tcl/Tk statically.  */
#cmakedefine VTK_TCL_TK_STATIC

/* Whether Tk widgets are NOT initialized when vtkRendering loads.  */
#cmakedefine VTK_DISABLE_TK_INIT

/* Wheter the Tcl/Tk support files are copied to the build dir */
#cmakedefine VTK_TCL_TK_COPY_SUPPORT_LIBRARY

/* Configure internal Tk headers.  */
#ifdef VTK_USE_CARBON
# define USE_NON_CONST
# define MAC_OSX_TK
#endif


/*--------------------------------------------------------------------------*/
/* VTK Versioning                                                           */

/* Version number.  */
#define VTK_MAJOR_VERSION @VTK_MAJOR_VERSION@
#define VTK_MINOR_VERSION @VTK_MINOR_VERSION@
#define VTK_BUILD_VERSION @VTK_BUILD_VERSION@
#define VTK_VERSION "@VTK_VERSION@"

/* C++ compiler used.  */
#define VTK_CXX_COMPILER "@CMAKE_CXX_COMPILER@"

/* Compatibility settings.  */
#cmakedefine VTK_LEGACY_REMOVE
#cmakedefine VTK_LEGACY_SILENT

/*--------------------------------------------------------------------------*/
/* Setup VTK based on platform features and configuration.                  */

/* Setup vtkstd, a portable namespace for std.  */
#ifndef VTK_NO_STD_NAMESPACE
# define vtkstd std
#else
# define vtkstd
#endif

/* Define a "vtkstd_bool" type.  This should be used as the
   return type of comparison operators to keep STL happy on all
   platforms.  It should not be used elsewhere.  Only use bool
   if this file is included by a c++ file. */
#if defined(VTK_COMPILER_HAS_BOOL) && defined(__cplusplus)
typedef bool vtkstd_bool;
#else
typedef int vtkstd_bool;
#endif

/* Define a macro to help define template specializations.  Skip if
   compiling a windows resource file because the resource compiler
   warns about truncating the long symbol.  */
#if !defined(RC_INVOKED)
# if defined(VTK_NO_FULL_TEMPLATE_SPECIALIZATION)
#  define VTK_TEMPLATE_SPECIALIZE
# else
#  define VTK_TEMPLATE_SPECIALIZE template <>
# endif
#endif

/* Use the common for-scope work-around when compiling a source in VTK.  */
#if defined(VTK_IN_VTK) && !defined(VTK_NO_WORKAROUND_FOR_SCOPE)
# define VTK_WORKAROUND_FOR_SCOPE
#endif
#if defined(VTK_NO_FOR_SCOPE) && defined(VTK_WORKAROUND_FOR_SCOPE)
# ifndef for
#  define for if(0) {} else for
#  if defined(_MSC_VER)
#   pragma warning (disable: 4127) /* conditional expression is constant */
#  endif
# endif
#endif

/* Provide missing streaming operators.  */
#if defined(VTK_SIZEOF_LONG_LONG)
# if !defined(VTK_OSTREAM_SUPPORTS_LONG_LONG)
#  define VTK_IOSTREAM_NEED_OPERATORS_LL
# elif !defined(VTK_ISTREAM_SUPPORTS_LONG_LONG)
#  define VTK_IOSTREAM_NEED_OPERATORS_LL
# endif
# if defined(VTK_IOSTREAM_NEED_OPERATORS_LL)
   typedef long long vtkIOStreamSLL;
   typedef unsigned long long vtkIOStreamULL;
# endif
#elif defined(VTK_SIZEOF___INT64)
# if defined(_MSC_VER) && (_MSC_VER < 1300)
#  define VTK_IOSTREAM_NEED_OPERATORS_LL
   typedef __int64 vtkIOStreamSLL;
   typedef unsigned __int64 vtkIOStreamULL;
# endif
#endif

#endif
