ENH: Added wrappers around the std stream headers to make them look like ansi streams on all platforms.
This commit is contained in:
parent
395fae7642
commit
b910480e32
@ -69,6 +69,16 @@ FOREACH(header algorithm deque iterator list map numeric queue set stack string
|
|||||||
ENDIF(KWSYS_INCLUDE_INSTALL_DIR)
|
ENDIF(KWSYS_INCLUDE_INSTALL_DIR)
|
||||||
ENDFOREACH(header)
|
ENDFOREACH(header)
|
||||||
|
|
||||||
|
FOREACH(header iostream fstream sstream iosfwd)
|
||||||
|
CONFIGURE_FILE(${PROJECT_SOURCE_DIR}/kwsys_std_${header}.h.in
|
||||||
|
${PROJECT_BINARY_DIR}/../${KWSYS_NAMESPACE}/std/${header}
|
||||||
|
@ONLY IMMEDIATE)
|
||||||
|
IF(KWSYS_INCLUDE_INSTALL_DIR)
|
||||||
|
INSTALL_FILES(${KWSYS_INCLUDE_INSTALL_DIR}/${KWSYS_NAMESPACE}
|
||||||
|
FILES ${PROJECT_BINARY_DIR}/../${KWSYS_NAMESPACE}/std/${header})
|
||||||
|
ENDIF(KWSYS_INCLUDE_INSTALL_DIR)
|
||||||
|
ENDFOREACH(header)
|
||||||
|
|
||||||
IF(KWSYS_DEFAULTS)
|
IF(KWSYS_DEFAULTS)
|
||||||
INCLUDE_DIRECTORIES(${PROJECT_BINARY_DIR}/..)
|
INCLUDE_DIRECTORIES(${PROJECT_BINARY_DIR}/..)
|
||||||
ADD_EXECUTABLE(test1 test1.cxx)
|
ADD_EXECUTABLE(test1 test1.cxx)
|
||||||
|
@ -1,3 +1,19 @@
|
|||||||
|
/*=========================================================================
|
||||||
|
|
||||||
|
Program: KWSys - Kitware System Library
|
||||||
|
Module: $RCSfile$
|
||||||
|
Language: C++
|
||||||
|
Date: $Date$
|
||||||
|
Version: $Revision$
|
||||||
|
|
||||||
|
Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved.
|
||||||
|
See http://www.cmake.org/HTML/Copyright.html 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 notices for more information.
|
||||||
|
|
||||||
|
=========================================================================*/
|
||||||
#ifndef @KWSYS_NAMESPACE@_Configure_hxx
|
#ifndef @KWSYS_NAMESPACE@_Configure_hxx
|
||||||
#define @KWSYS_NAMESPACE@_Configure_hxx
|
#define @KWSYS_NAMESPACE@_Configure_hxx
|
||||||
|
|
||||||
|
@ -21,8 +21,8 @@
|
|||||||
#include <SystemTools.hxx>
|
#include <SystemTools.hxx>
|
||||||
#include <RegularExpression.hxx>
|
#include <RegularExpression.hxx>
|
||||||
#include <Directory.hxx>
|
#include <Directory.hxx>
|
||||||
|
#include <std/iostream>
|
||||||
#include <fstream>
|
#include <std/fstream>
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <sys/stat.h>
|
#include <sys/stat.h>
|
||||||
|
@ -17,10 +17,9 @@
|
|||||||
#ifndef @KWSYS_NAMESPACE@_SystemTools_hxx
|
#ifndef @KWSYS_NAMESPACE@_SystemTools_hxx
|
||||||
#define @KWSYS_NAMESPACE@_SystemTools_hxx
|
#define @KWSYS_NAMESPACE@_SystemTools_hxx
|
||||||
|
|
||||||
#include <@KWSYS_NAMESPACE@/StandardIncludes.hxx>
|
#include <@KWSYS_NAMESPACE@/std/iosfwd>
|
||||||
|
#include <@KWSYS_NAMESPACE@/std/string>
|
||||||
#include <string>
|
#include <@KWSYS_NAMESPACE@/std/vector>
|
||||||
#include <vector>
|
|
||||||
|
|
||||||
namespace @KWSYS_NAMESPACE@
|
namespace @KWSYS_NAMESPACE@
|
||||||
{
|
{
|
||||||
|
@ -1,3 +1,19 @@
|
|||||||
|
/*=========================================================================
|
||||||
|
|
||||||
|
Program: KWSys - Kitware System Library
|
||||||
|
Module: $RCSfile$
|
||||||
|
Language: C++
|
||||||
|
Date: $Date$
|
||||||
|
Version: $Revision$
|
||||||
|
|
||||||
|
Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved.
|
||||||
|
See http://www.cmake.org/HTML/Copyright.html 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 notices for more information.
|
||||||
|
|
||||||
|
=========================================================================*/
|
||||||
#ifndef @KWSYS_NAMESPACE@_std_@KWSYS_STL_HEADER@
|
#ifndef @KWSYS_NAMESPACE@_std_@KWSYS_STL_HEADER@
|
||||||
#define @KWSYS_NAMESPACE@_std_@KWSYS_STL_HEADER@
|
#define @KWSYS_NAMESPACE@_std_@KWSYS_STL_HEADER@
|
||||||
|
|
||||||
|
51
Source/kwsys/kwsys_std_fstream.h.in
Normal file
51
Source/kwsys/kwsys_std_fstream.h.in
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
/*=========================================================================
|
||||||
|
|
||||||
|
Program: KWSys - Kitware System Library
|
||||||
|
Module: $RCSfile$
|
||||||
|
Language: C++
|
||||||
|
Date: $Date$
|
||||||
|
Version: $Revision$
|
||||||
|
|
||||||
|
Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved.
|
||||||
|
See http://www.cmake.org/HTML/Copyright.html 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 notices for more information.
|
||||||
|
|
||||||
|
=========================================================================*/
|
||||||
|
#ifndef @KWSYS_NAMESPACE@_std_fstream
|
||||||
|
#define @KWSYS_NAMESPACE@_std_fstream
|
||||||
|
|
||||||
|
#include <@KWSYS_NAMESPACE@/Configure.hxx>
|
||||||
|
|
||||||
|
#ifdef _MSC_VER
|
||||||
|
#pragma warning (push, 1)
|
||||||
|
#pragma warning (disable: 4702)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if !defined(KWSYS_NO_ANSI_STREAM_HEADERS)
|
||||||
|
# include <fstream>
|
||||||
|
#else
|
||||||
|
# include <fstream.h>
|
||||||
|
# if !defined(KWSYS_NO_STD_NAMESPACE)
|
||||||
|
|
||||||
|
namespace std
|
||||||
|
{
|
||||||
|
using ::ostream;
|
||||||
|
using ::istream;
|
||||||
|
using ::ofstream;
|
||||||
|
using ::ifstream;
|
||||||
|
using ::ios;
|
||||||
|
using ::endl;
|
||||||
|
using ::flush;
|
||||||
|
}
|
||||||
|
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef _MSC_VER
|
||||||
|
#pragma warning(pop)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif
|
49
Source/kwsys/kwsys_std_iosfwd.h.in
Normal file
49
Source/kwsys/kwsys_std_iosfwd.h.in
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
/*=========================================================================
|
||||||
|
|
||||||
|
Program: KWSys - Kitware System Library
|
||||||
|
Module: $RCSfile$
|
||||||
|
Language: C++
|
||||||
|
Date: $Date$
|
||||||
|
Version: $Revision$
|
||||||
|
|
||||||
|
Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved.
|
||||||
|
See http://www.cmake.org/HTML/Copyright.html 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 notices for more information.
|
||||||
|
|
||||||
|
=========================================================================*/
|
||||||
|
#ifndef @KWSYS_NAMESPACE@_std_iosfwd
|
||||||
|
#define @KWSYS_NAMESPACE@_std_iosfwd
|
||||||
|
|
||||||
|
#include <@KWSYS_NAMESPACE@/Configure.hxx>
|
||||||
|
|
||||||
|
#ifdef _MSC_VER
|
||||||
|
#pragma warning (push, 1)
|
||||||
|
#pragma warning (disable: 4702)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if !defined(KWSYS_NO_ANSI_STREAM_HEADERS)
|
||||||
|
# include <iosfwd>
|
||||||
|
#else
|
||||||
|
# if !defined(KWSYS_NO_STD_NAMESPACE)
|
||||||
|
namespace std
|
||||||
|
{
|
||||||
|
# endif
|
||||||
|
class fstream;
|
||||||
|
class ifstream;
|
||||||
|
class ios;
|
||||||
|
class istream;
|
||||||
|
class ofstream;
|
||||||
|
class ostream;
|
||||||
|
# if !defined(KWSYS_NO_STD_NAMESPACE)
|
||||||
|
}
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef _MSC_VER
|
||||||
|
#pragma warning(pop)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif
|
52
Source/kwsys/kwsys_std_iostream.h.in
Normal file
52
Source/kwsys/kwsys_std_iostream.h.in
Normal file
@ -0,0 +1,52 @@
|
|||||||
|
/*=========================================================================
|
||||||
|
|
||||||
|
Program: KWSys - Kitware System Library
|
||||||
|
Module: $RCSfile$
|
||||||
|
Language: C++
|
||||||
|
Date: $Date$
|
||||||
|
Version: $Revision$
|
||||||
|
|
||||||
|
Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved.
|
||||||
|
See http://www.cmake.org/HTML/Copyright.html 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 notices for more information.
|
||||||
|
|
||||||
|
=========================================================================*/
|
||||||
|
#ifndef @KWSYS_NAMESPACE@_std_iostream
|
||||||
|
#define @KWSYS_NAMESPACE@_std_iostream
|
||||||
|
|
||||||
|
#include <@KWSYS_NAMESPACE@/Configure.hxx>
|
||||||
|
|
||||||
|
#ifdef _MSC_VER
|
||||||
|
#pragma warning (push, 1)
|
||||||
|
#pragma warning (disable: 4702)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if !defined(KWSYS_NO_ANSI_STREAM_HEADERS)
|
||||||
|
# include <iostream>
|
||||||
|
#else
|
||||||
|
# include <iostream.h>
|
||||||
|
# if !defined(KWSYS_NO_STD_NAMESPACE)
|
||||||
|
|
||||||
|
namespace std
|
||||||
|
{
|
||||||
|
using ::ostream;
|
||||||
|
using ::istream;
|
||||||
|
using ::ios;
|
||||||
|
using ::cout;
|
||||||
|
using ::cerr;
|
||||||
|
using ::cin;
|
||||||
|
using ::endl;
|
||||||
|
using ::flush;
|
||||||
|
}
|
||||||
|
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef _MSC_VER
|
||||||
|
#pragma warning(pop)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif
|
125
Source/kwsys/kwsys_std_sstream.h.in
Normal file
125
Source/kwsys/kwsys_std_sstream.h.in
Normal file
@ -0,0 +1,125 @@
|
|||||||
|
/*=========================================================================
|
||||||
|
|
||||||
|
Program: KWSys - Kitware System Library
|
||||||
|
Module: $RCSfile$
|
||||||
|
Language: C++
|
||||||
|
Date: $Date$
|
||||||
|
Version: $Revision$
|
||||||
|
|
||||||
|
Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved.
|
||||||
|
See http://www.cmake.org/HTML/Copyright.html 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 notices for more information.
|
||||||
|
|
||||||
|
=========================================================================*/
|
||||||
|
#ifndef @KWSYS_NAMESPACE@_std_sstream
|
||||||
|
#define @KWSYS_NAMESPACE@_std_sstream
|
||||||
|
|
||||||
|
#include <@KWSYS_NAMESPACE@/Configure.hxx>
|
||||||
|
|
||||||
|
#if !defined(KWSYS_NO_ANSI_STRING_STREAM)
|
||||||
|
# ifdef _MSC_VER
|
||||||
|
# pragma warning (push, 1)
|
||||||
|
# pragma warning (disable: 4702)
|
||||||
|
# endif
|
||||||
|
# include <sstream>
|
||||||
|
# ifdef _MSC_VER
|
||||||
|
# pragma warning(pop)
|
||||||
|
# endif
|
||||||
|
#else
|
||||||
|
# ifdef _MSC_VER
|
||||||
|
# pragma warning (push, 1)
|
||||||
|
# pragma warning (disable: 4702)
|
||||||
|
# endif
|
||||||
|
# if !defined(KWSYS_NO_ANSI_STREAM_HEADERS)
|
||||||
|
# include <strstream>
|
||||||
|
# else
|
||||||
|
# include <strstream.h>
|
||||||
|
# if !defined(KWSYS_NO_STD_NAMESPACE)
|
||||||
|
|
||||||
|
namespace std
|
||||||
|
{
|
||||||
|
using ::ostream;
|
||||||
|
using ::istream;
|
||||||
|
using ::istrstream;
|
||||||
|
using ::ostrstream;
|
||||||
|
using ::ios;
|
||||||
|
using ::endl;
|
||||||
|
using ::ends;
|
||||||
|
using ::flush;
|
||||||
|
}
|
||||||
|
|
||||||
|
# endif
|
||||||
|
# endif
|
||||||
|
# ifdef _MSC_VER
|
||||||
|
# pragma warning(pop)
|
||||||
|
# endif
|
||||||
|
|
||||||
|
// Only have old std::strstream classes. Wrap them to look like new
|
||||||
|
// ostringstream and istringstream classes.
|
||||||
|
|
||||||
|
# include <@KWSYS_NAMESPACE@/std/string>
|
||||||
|
|
||||||
|
# if !defined(KWSYS_NO_STD_NAMESPACE)
|
||||||
|
namespace std
|
||||||
|
{
|
||||||
|
# endif
|
||||||
|
|
||||||
|
class ostringstream_cleanup
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
ostringstream_cleanup(kwsys_std::ostrstream& ostr): m_OStrStream(ostr) {}
|
||||||
|
~ostringstream_cleanup() { m_OStrStream.rdbuf()->freeze(0); }
|
||||||
|
static void IgnoreUnusedVariable(const ostringstream_cleanup&) {}
|
||||||
|
protected:
|
||||||
|
kwsys_std::ostrstream& m_OStrStream;
|
||||||
|
};
|
||||||
|
|
||||||
|
class ostringstream: public kwsys_std::ostrstream
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
typedef kwsys_std::ostrstream Superclass;
|
||||||
|
ostringstream() {}
|
||||||
|
kwsys_std::string str()
|
||||||
|
{
|
||||||
|
ostringstream_cleanup cleanup(*this);
|
||||||
|
ostringstream_cleanup::IgnoreUnusedVariable(cleanup);
|
||||||
|
int pcount = this->pcount();
|
||||||
|
const char* ptr = this->Superclass::str();
|
||||||
|
return kwsys_std::string(ptr?ptr:"", pcount);
|
||||||
|
}
|
||||||
|
private:
|
||||||
|
ostringstream(const ostringstream&);
|
||||||
|
void operator=(const ostringstream&);
|
||||||
|
};
|
||||||
|
|
||||||
|
class istringstream: private kwsys_std::string, public kwsys_std::istrstream
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
typedef kwsys_std::string StdString;
|
||||||
|
typedef kwsys_std::istrstream IStrStream;
|
||||||
|
istringstream(): StdString(), IStrStream(StdString::c_str()) {}
|
||||||
|
istringstream(const kwsys_std::string& s):
|
||||||
|
StdString(s), IStrStream(StdString::c_str()) {}
|
||||||
|
kwsys_std::string str() const { return *this; }
|
||||||
|
void str(const kwsys_std::string& s)
|
||||||
|
{
|
||||||
|
// Very dangerous. If this throws, the object is hosed. When the
|
||||||
|
// destructor is later called, the program is hosed too.
|
||||||
|
this->~istringstream();
|
||||||
|
new (this) istringstream(s);
|
||||||
|
}
|
||||||
|
private:
|
||||||
|
istringstream(const istringstream&);
|
||||||
|
void operator=(const istringstream&);
|
||||||
|
};
|
||||||
|
|
||||||
|
# if !defined(KWSYS_NO_STD_NAMESPACE)
|
||||||
|
}
|
||||||
|
# endif
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif
|
Loading…
x
Reference in New Issue
Block a user