| /*============================================================================ |
| KWSys - Kitware System Library |
| Copyright 2000-2009 Kitware, Inc., Insight Software Consortium |
| |
| Distributed under the OSI-approved BSD License (the "License"); |
| see accompanying file Copyright.txt for details. |
| |
| This software is distributed WITHOUT ANY WARRANTY; without even the |
| implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. |
| See the License for more information. |
| ============================================================================*/ |
| #ifndef @KWSYS_NAMESPACE@_IOStream_hxx |
| #define @KWSYS_NAMESPACE@_IOStream_hxx |
| |
| #include <iosfwd> |
| |
| /* Define these macros temporarily to keep the code readable. */ |
| #if !defined (KWSYS_NAMESPACE) && !@KWSYS_NAMESPACE@_NAME_IS_KWSYS |
| # define kwsysEXPORT @KWSYS_NAMESPACE@_EXPORT |
| #endif |
| |
| /* Whether istream supports long long. */ |
| #define @KWSYS_NAMESPACE@_IOS_HAS_ISTREAM_LONG_LONG @KWSYS_IOS_HAS_ISTREAM_LONG_LONG@ |
| |
| /* Whether ostream supports long long. */ |
| #define @KWSYS_NAMESPACE@_IOS_HAS_OSTREAM_LONG_LONG @KWSYS_IOS_HAS_OSTREAM_LONG_LONG@ |
| |
| /* Determine whether we need to define the streaming operators for |
| long long or __int64. */ |
| #if @KWSYS_USE_LONG_LONG@ |
| # if !@KWSYS_NAMESPACE@_IOS_HAS_ISTREAM_LONG_LONG || \ |
| !@KWSYS_NAMESPACE@_IOS_HAS_OSTREAM_LONG_LONG |
| # define @KWSYS_NAMESPACE@_IOS_NEED_OPERATORS_LL 1 |
| namespace @KWSYS_NAMESPACE@ |
| { |
| typedef long long IOStreamSLL; |
| typedef unsigned long long IOStreamULL; |
| } |
| # endif |
| #elif defined(_MSC_VER) && _MSC_VER < 1300 |
| # define @KWSYS_NAMESPACE@_IOS_NEED_OPERATORS_LL 1 |
| namespace @KWSYS_NAMESPACE@ |
| { |
| typedef __int64 IOStreamSLL; |
| typedef unsigned __int64 IOStreamULL; |
| } |
| #endif |
| #if !defined(@KWSYS_NAMESPACE@_IOS_NEED_OPERATORS_LL) |
| # define @KWSYS_NAMESPACE@_IOS_NEED_OPERATORS_LL 0 |
| #endif |
| |
| #if @KWSYS_NAMESPACE@_IOS_NEED_OPERATORS_LL |
| # if !@KWSYS_NAMESPACE@_IOS_HAS_ISTREAM_LONG_LONG |
| |
| /* Input stream operator implementation functions. */ |
| namespace @KWSYS_NAMESPACE@ |
| { |
| kwsysEXPORT std::istream& IOStreamScan(std::istream&, IOStreamSLL&); |
| kwsysEXPORT std::istream& IOStreamScan(std::istream&, IOStreamULL&); |
| } |
| |
| /* Provide input stream operator for long long. */ |
| # if !defined(@KWSYS_NAMESPACE@_IOS_NO_ISTREAM_LONG_LONG) && \ |
| !defined(KWSYS_IOS_ISTREAM_LONG_LONG_DEFINED) |
| # define KWSYS_IOS_ISTREAM_LONG_LONG_DEFINED |
| # define @KWSYS_NAMESPACE@_IOS_ISTREAM_LONG_LONG_DEFINED |
| inline std::istream& |
| operator>>(std::istream& is, @KWSYS_NAMESPACE@::IOStreamSLL& value) |
| { |
| return @KWSYS_NAMESPACE@::IOStreamScan(is, value); |
| } |
| # endif |
| |
| /* Provide input stream operator for unsigned long long. */ |
| # if !defined(@KWSYS_NAMESPACE@_IOS_NO_ISTREAM_UNSIGNED_LONG_LONG) && \ |
| !defined(KWSYS_IOS_ISTREAM_UNSIGNED_LONG_LONG_DEFINED) |
| # define KWSYS_IOS_ISTREAM_UNSIGNED_LONG_LONG_DEFINED |
| # define @KWSYS_NAMESPACE@_IOS_ISTREAM_UNSIGNED_LONG_LONG_DEFINED |
| inline std::istream& |
| operator>>(std::istream& is, @KWSYS_NAMESPACE@::IOStreamULL& value) |
| { |
| return @KWSYS_NAMESPACE@::IOStreamScan(is, value); |
| } |
| # endif |
| # endif /* !@KWSYS_NAMESPACE@_IOS_HAS_ISTREAM_LONG_LONG */ |
| |
| # if !@KWSYS_NAMESPACE@_IOS_HAS_OSTREAM_LONG_LONG |
| |
| /* Output stream operator implementation functions. */ |
| namespace @KWSYS_NAMESPACE@ |
| { |
| kwsysEXPORT std::ostream& IOStreamPrint(std::ostream&, IOStreamSLL); |
| kwsysEXPORT std::ostream& IOStreamPrint(std::ostream&, IOStreamULL); |
| } |
| |
| /* Provide output stream operator for long long. */ |
| # if !defined(@KWSYS_NAMESPACE@_IOS_NO_OSTREAM_LONG_LONG) && \ |
| !defined(KWSYS_IOS_OSTREAM_LONG_LONG_DEFINED) |
| # define KWSYS_IOS_OSTREAM_LONG_LONG_DEFINED |
| # define @KWSYS_NAMESPACE@_IOS_OSTREAM_LONG_LONG_DEFINED |
| inline std::ostream& |
| operator<<(std::ostream& os, @KWSYS_NAMESPACE@::IOStreamSLL value) |
| { |
| return @KWSYS_NAMESPACE@::IOStreamPrint(os, value); |
| } |
| # endif |
| |
| /* Provide output stream operator for unsigned long long. */ |
| # if !defined(@KWSYS_NAMESPACE@_IOS_NO_OSTREAM_UNSIGNED_LONG_LONG) && \ |
| !defined(KWSYS_IOS_OSTREAM_UNSIGNED_LONG_LONG_DEFINED) |
| # define KWSYS_IOS_OSTREAM_UNSIGNED_LONG_LONG_DEFINED |
| # define @KWSYS_NAMESPACE@_IOS_OSTREAM_UNSIGNED_LONG_LONG_DEFINED |
| inline std::ostream& |
| operator<<(std::ostream& os, @KWSYS_NAMESPACE@::IOStreamULL value) |
| { |
| return @KWSYS_NAMESPACE@::IOStreamPrint(os, value); |
| } |
| # endif |
| # endif /* !@KWSYS_NAMESPACE@_IOS_HAS_OSTREAM_LONG_LONG */ |
| #endif /* @KWSYS_NAMESPACE@_IOS_NEED_OPERATORS_LL */ |
| |
| /* Undefine temporary macros. */ |
| #if !defined (KWSYS_NAMESPACE) && !@KWSYS_NAMESPACE@_NAME_IS_KWSYS |
| # undef kwsysEXPORT |
| #endif |
| |
| /* If building a C++ file in kwsys itself, give the source file |
| access to the macros without a configured namespace. */ |
| #if defined(KWSYS_NAMESPACE) |
| # define KWSYS_IOS_HAS_ISTREAM_LONG_LONG @KWSYS_NAMESPACE@_IOS_HAS_ISTREAM_LONG_LONG |
| # define KWSYS_IOS_HAS_OSTREAM_LONG_LONG @KWSYS_NAMESPACE@_IOS_HAS_OSTREAM_LONG_LONG |
| # define KWSYS_IOS_NEED_OPERATORS_LL @KWSYS_NAMESPACE@_IOS_NEED_OPERATORS_LL |
| #endif |
| |
| #endif |
| |