IOStream.hxx.in 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  1. /*============================================================================
  2. KWSys - Kitware System Library
  3. Copyright 2000-2009 Kitware, Inc., Insight Software Consortium
  4. Distributed under the OSI-approved BSD License (the "License");
  5. see accompanying file Copyright.txt for details.
  6. This software is distributed WITHOUT ANY WARRANTY; without even the
  7. implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  8. See the License for more information.
  9. ============================================================================*/
  10. #ifndef @KWSYS_NAMESPACE@_IOStream_hxx
  11. #define @KWSYS_NAMESPACE@_IOStream_hxx
  12. #include <@KWSYS_NAMESPACE@/ios/iosfwd>
  13. /* Define these macros temporarily to keep the code readable. */
  14. #if !defined (KWSYS_NAMESPACE) && !@KWSYS_NAMESPACE@_NAME_IS_KWSYS
  15. # define kwsysEXPORT @KWSYS_NAMESPACE@_EXPORT
  16. # define kwsys_ios @KWSYS_NAMESPACE@_ios
  17. #endif
  18. /* Whether istream supports long long. */
  19. #define @KWSYS_NAMESPACE@_IOS_HAS_ISTREAM_LONG_LONG @KWSYS_IOS_HAS_ISTREAM_LONG_LONG@
  20. /* Whether ostream supports long long. */
  21. #define @KWSYS_NAMESPACE@_IOS_HAS_OSTREAM_LONG_LONG @KWSYS_IOS_HAS_OSTREAM_LONG_LONG@
  22. /* Determine whether we need to define the streaming operators for
  23. long long or __int64. */
  24. #if @KWSYS_USE_LONG_LONG@
  25. # if !@KWSYS_NAMESPACE@_IOS_HAS_ISTREAM_LONG_LONG || \
  26. !@KWSYS_NAMESPACE@_IOS_HAS_OSTREAM_LONG_LONG
  27. # define @KWSYS_NAMESPACE@_IOS_NEED_OPERATORS_LL 1
  28. namespace @KWSYS_NAMESPACE@
  29. {
  30. typedef long long IOStreamSLL;
  31. typedef unsigned long long IOStreamULL;
  32. }
  33. # endif
  34. #elif defined(_MSC_VER) && _MSC_VER < 1300
  35. # define @KWSYS_NAMESPACE@_IOS_NEED_OPERATORS_LL 1
  36. namespace @KWSYS_NAMESPACE@
  37. {
  38. typedef __int64 IOStreamSLL;
  39. typedef unsigned __int64 IOStreamULL;
  40. }
  41. #endif
  42. #if !defined(@KWSYS_NAMESPACE@_IOS_NEED_OPERATORS_LL)
  43. # define @KWSYS_NAMESPACE@_IOS_NEED_OPERATORS_LL 0
  44. #endif
  45. #if @KWSYS_NAMESPACE@_IOS_NEED_OPERATORS_LL
  46. # if !@KWSYS_NAMESPACE@_IOS_HAS_ISTREAM_LONG_LONG
  47. /* Input stream operator implementation functions. */
  48. namespace @KWSYS_NAMESPACE@
  49. {
  50. kwsysEXPORT kwsys_ios::istream& IOStreamScan(kwsys_ios::istream&,
  51. IOStreamSLL&);
  52. kwsysEXPORT kwsys_ios::istream& IOStreamScan(kwsys_ios::istream&,
  53. IOStreamULL&);
  54. }
  55. /* Provide input stream operator for long long. */
  56. # if !defined(@KWSYS_NAMESPACE@_IOS_NO_ISTREAM_LONG_LONG) && \
  57. !defined(KWSYS_IOS_ISTREAM_LONG_LONG_DEFINED)
  58. # define KWSYS_IOS_ISTREAM_LONG_LONG_DEFINED
  59. # define @KWSYS_NAMESPACE@_IOS_ISTREAM_LONG_LONG_DEFINED
  60. inline kwsys_ios::istream&
  61. operator>>(kwsys_ios::istream& is, @KWSYS_NAMESPACE@::IOStreamSLL& value)
  62. {
  63. return @KWSYS_NAMESPACE@::IOStreamScan(is, value);
  64. }
  65. # endif
  66. /* Provide input stream operator for unsigned long long. */
  67. # if !defined(@KWSYS_NAMESPACE@_IOS_NO_ISTREAM_UNSIGNED_LONG_LONG) && \
  68. !defined(KWSYS_IOS_ISTREAM_UNSIGNED_LONG_LONG_DEFINED)
  69. # define KWSYS_IOS_ISTREAM_UNSIGNED_LONG_LONG_DEFINED
  70. # define @KWSYS_NAMESPACE@_IOS_ISTREAM_UNSIGNED_LONG_LONG_DEFINED
  71. inline kwsys_ios::istream&
  72. operator>>(kwsys_ios::istream& is, @KWSYS_NAMESPACE@::IOStreamULL& value)
  73. {
  74. return @KWSYS_NAMESPACE@::IOStreamScan(is, value);
  75. }
  76. # endif
  77. # endif /* !@KWSYS_NAMESPACE@_IOS_HAS_ISTREAM_LONG_LONG */
  78. # if !@KWSYS_NAMESPACE@_IOS_HAS_OSTREAM_LONG_LONG
  79. /* Output stream operator implementation functions. */
  80. namespace @KWSYS_NAMESPACE@
  81. {
  82. kwsysEXPORT kwsys_ios::ostream& IOStreamPrint(kwsys_ios::ostream&,
  83. IOStreamSLL);
  84. kwsysEXPORT kwsys_ios::ostream& IOStreamPrint(kwsys_ios::ostream&,
  85. IOStreamULL);
  86. }
  87. /* Provide output stream operator for long long. */
  88. # if !defined(@KWSYS_NAMESPACE@_IOS_NO_OSTREAM_LONG_LONG) && \
  89. !defined(KWSYS_IOS_OSTREAM_LONG_LONG_DEFINED)
  90. # define KWSYS_IOS_OSTREAM_LONG_LONG_DEFINED
  91. # define @KWSYS_NAMESPACE@_IOS_OSTREAM_LONG_LONG_DEFINED
  92. inline kwsys_ios::ostream&
  93. operator<<(kwsys_ios::ostream& os, @KWSYS_NAMESPACE@::IOStreamSLL value)
  94. {
  95. return @KWSYS_NAMESPACE@::IOStreamPrint(os, value);
  96. }
  97. # endif
  98. /* Provide output stream operator for unsigned long long. */
  99. # if !defined(@KWSYS_NAMESPACE@_IOS_NO_OSTREAM_UNSIGNED_LONG_LONG) && \
  100. !defined(KWSYS_IOS_OSTREAM_UNSIGNED_LONG_LONG_DEFINED)
  101. # define KWSYS_IOS_OSTREAM_UNSIGNED_LONG_LONG_DEFINED
  102. # define @KWSYS_NAMESPACE@_IOS_OSTREAM_UNSIGNED_LONG_LONG_DEFINED
  103. inline kwsys_ios::ostream&
  104. operator<<(kwsys_ios::ostream& os, @KWSYS_NAMESPACE@::IOStreamULL value)
  105. {
  106. return @KWSYS_NAMESPACE@::IOStreamPrint(os, value);
  107. }
  108. # endif
  109. # endif /* !@KWSYS_NAMESPACE@_IOS_HAS_OSTREAM_LONG_LONG */
  110. #endif /* @KWSYS_NAMESPACE@_IOS_NEED_OPERATORS_LL */
  111. /* Undefine temporary macros. */
  112. #if !defined (KWSYS_NAMESPACE) && !@KWSYS_NAMESPACE@_NAME_IS_KWSYS
  113. # undef kwsysEXPORT
  114. # undef kwsys_ios
  115. #endif
  116. /* If building a C++ file in kwsys itself, give the source file
  117. access to the macros without a configured namespace. */
  118. #if defined(KWSYS_NAMESPACE)
  119. # define KWSYS_IOS_HAS_ISTREAM_LONG_LONG @KWSYS_NAMESPACE@_IOS_HAS_ISTREAM_LONG_LONG
  120. # define KWSYS_IOS_HAS_OSTREAM_LONG_LONG @KWSYS_NAMESPACE@_IOS_HAS_OSTREAM_LONG_LONG
  121. # define KWSYS_IOS_NEED_OPERATORS_LL @KWSYS_NAMESPACE@_IOS_NEED_OPERATORS_LL
  122. #endif
  123. #endif