Explorar o código

Merge branch 'upstream-kwsys' into update-kwsys

Brad King %!s(int64=12) %!d(string=hai) anos
pai
achega
2f7c169158
Modificáronse 3 ficheiros con 56 adicións e 2 borrados
  1. 5 0
      Source/kwsys/CMakeLists.txt
  2. 3 2
      Source/kwsys/FStream.hxx.in
  3. 48 0
      Source/kwsys/testFStream.cxx

+ 5 - 0
Source/kwsys/CMakeLists.txt

@@ -1136,6 +1136,11 @@ IF(KWSYS_STANDALONE OR CMake_SOURCE_DIR)
         testEncoding
         )
     ENDIF(KWSYS_STL_HAS_WSTRING)
+    IF(KWSYS_USE_FStream)
+      SET(KWSYS_CXX_TESTS ${KWSYS_CXX_TESTS}
+        testFStream
+        )
+    ENDIF(KWSYS_USE_FStream)
     IF(KWSYS_USE_SystemInformation)
       SET(KWSYS_CXX_TESTS ${KWSYS_CXX_TESTS} testSystemInformation)
     ENDIF(KWSYS_USE_SystemInformation)

+ 3 - 2
Source/kwsys/FStream.hxx.in

@@ -25,8 +25,9 @@ namespace @KWSYS_NAMESPACE@
       typedef std::basic_filebuf<CharType,Traits> my_base_type;
       basic_filebuf *open(char const *s,std::ios_base::openmode mode)
       {
-        my_base_type::open(Encoding::ToWide(s).c_str(), mode);
-        return this;
+        return static_cast<basic_filebuf*>(
+          my_base_type::open(Encoding::ToWide(s).c_str(), mode)
+          );
       }
   };
 

+ 48 - 0
Source/kwsys/testFStream.cxx

@@ -0,0 +1,48 @@
+/*============================================================================
+  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.
+============================================================================*/
+#include "kwsysPrivate.h"
+
+#if defined(_MSC_VER)
+# pragma warning (disable:4786)
+#endif
+
+#include KWSYS_HEADER(FStream.hxx)
+
+// Work-around CMake dependency scanning limitation.  This must
+// duplicate the above list of headers.
+#if 0
+# include "FStream.hxx.in"
+#endif
+
+
+//----------------------------------------------------------------------------
+static int testNoFile()
+{
+  kwsys::ifstream in_file("NoSuchFile.txt");
+  if(in_file)
+    {
+    return 1;
+    }
+
+  return 0;
+}
+
+
+//----------------------------------------------------------------------------
+int testFStream(int, char*[])
+{
+  int ret = 0;
+
+  ret |= testNoFile();
+
+  return ret;
+}