diff --git a/Source/kwsys/CMakeLists.txt b/Source/kwsys/CMakeLists.txt index 5c30dbd3b..3953b6bf5 100644 --- a/Source/kwsys/CMakeLists.txt +++ b/Source/kwsys/CMakeLists.txt @@ -47,13 +47,13 @@ # SET(KWSYS_LIBRARY_INSTALL_DIR /lib) # SET(KWSYS_HEADER_INSTALL_DIR /include) # -# KWSYS_FORCE_OLD_STREAMS = Force use of old non-ANSI C++ streams even if -# new streams are available. This may be used -# by projects that cannot configure their -# streams library. +# KWSYS_IOS_FORCE_OLD = Force use of old non-ANSI C++ streams even if +# new streams are available. This may be used +# by projects that cannot configure their +# streams library. # Example: # -# SET(KWSYS_FORCE_OLD_STREAMS 1) +# SET(KWSYS_IOS_FORCE_OLD 1) # # Once configured, kwsys should be used as follows from C or C++ code: @@ -109,36 +109,43 @@ ENDIF(CMAKE_ANSI_CFLAGS) #----------------------------------------------------------------------------- # Configure the standard library header wrappers based on compiler's -# capabilities and parent project's request. -INCLUDE(${CMAKE_ROOT}/Modules/CheckIncludeFileCXX.cmake) -INCLUDE(${CMAKE_ROOT}/Modules/TestForSTDNamespace.cmake) -CHECK_INCLUDE_FILE_CXX("sstream" CMAKE_HAS_ANSI_STRING_STREAM) -CHECK_INCLUDE_FILE_CXX("iosfwd" CMAKE_ANSI_IOSFWD_HEADER) +# capabilities and parent project's request. Enforce 0/1 as only +# possible values for configuration into Configure.hxx. +INCLUDE(${CMAKE_CURRENT_SOURCE_DIR}/kwsysPlatformCxxTests.cmake) -# Enforce 0/1 as only possible values. Needed for the means by which -# Configure.hxx is implemented. -IF(CMAKE_NO_STD_NAMESPACE) - SET(CMAKE_NO_STD_NAMESPACE 1) -ELSE(CMAKE_NO_STD_NAMESPACE) - SET(CMAKE_NO_STD_NAMESPACE 0) -ENDIF(CMAKE_NO_STD_NAMESPACE) +KWSYS_PLATFORM_CXX_TEST(KWSYS_STL_HAVE_STD + "Checking whether STL classes are in std namespace" DIRECT) -IF(CMAKE_ANSI_IOSFWD_HEADER) - SET(CMAKE_NO_ANSI_STREAM_HEADERS 0) -ELSE(CMAKE_ANSI_IOSFWD_HEADER) - SET(CMAKE_NO_ANSI_STREAM_HEADERS 1) -ENDIF(CMAKE_ANSI_IOSFWD_HEADER) +IF(KWSYS_IOS_FORCE_OLD) + SET(KWSYS_IOS_HAVE_ANSI 0) +ELSE(KWSYS_IOS_FORCE_OLD) + KWSYS_PLATFORM_CXX_TEST(KWSYS_IOS_HAVE_ANSI + "Checking whether ANSI stream headers are available" DIRECT) +ENDIF(KWSYS_IOS_FORCE_OLD) -IF(CMAKE_HAS_ANSI_STRING_STREAM) - SET(CMAKE_NO_ANSI_STRING_STREAM 0) -ELSE(CMAKE_HAS_ANSI_STRING_STREAM) - SET(CMAKE_NO_ANSI_STRING_STREAM 1) -ENDIF(CMAKE_HAS_ANSI_STRING_STREAM) +IF(KWSYS_IOS_HAVE_ANSI) + KWSYS_PLATFORM_CXX_TEST(KWSYS_IOS_HAVE_STD + "Checking whether ANSI streams are in std namespace" DIRECT) + KWSYS_PLATFORM_CXX_TEST(KWSYS_IOS_HAVE_SSTREAM + "Checking whether ANSI string stream is available" DIRECT) +ELSE(KWSYS_IOS_HAVE_ANSI) + SET(KWSYS_IOS_HAVE_STD 0) + SET(KWSYS_IOS_HAVE_SSTREAM 0) +ENDIF(KWSYS_IOS_HAVE_ANSI) -IF(KWSYS_FORCE_OLD_STREAMS) - SET(CMAKE_NO_ANSI_STREAM_HEADERS 1) - SET(CMAKE_NO_ANSI_STRING_STREAM 1) -ENDIF(KWSYS_FORCE_OLD_STREAMS) +IF(KWSYS_IOS_HAVE_SSTREAM) + SET(KWSYS_IOS_HAVE_STRSTREAM_H 0) + SET(KWSYS_IOS_HAVE_STRSTREA_H 0) +ELSE(KWSYS_IOS_HAVE_SSTREAM) + KWSYS_PLATFORM_CXX_TEST(KWSYS_IOS_HAVE_STRSTREAM_H + "Checking whether strstream.h is available" DIRECT) + IF(KWSYS_IOS_HAVE_STRSTREAM_H) + SET(KWSYS_IOS_HAVE_STRSTREA_H 0) + ELSE(KWSYS_IOS_HAVE_STRSTREAM_H) + KWSYS_PLATFORM_CXX_TEST(KWSYS_IOS_HAVE_STRSTREA_H + "Checking whether strstrea.h is available" DIRECT) + ENDIF(KWSYS_IOS_HAVE_STRSTREAM_H) +ENDIF(KWSYS_IOS_HAVE_SSTREAM) IF(KWSYS_NAMESPACE MATCHES "^kwsys$") SET(KWSYS_NAME_IS_KWSYS 1) @@ -146,12 +153,6 @@ ELSE(KWSYS_NAMESPACE MATCHES "^kwsys$") SET(KWSYS_NAME_IS_KWSYS 0) ENDIF(KWSYS_NAMESPACE MATCHES "^kwsys$") -# Set names that are used in creating Configure.hxx for these test -# results. -SET(KWSYS_NO_STD_NAMESPACE ${CMAKE_NO_STD_NAMESPACE}) -SET(KWSYS_NO_ANSI_STREAM_HEADERS ${CMAKE_NO_ANSI_STREAM_HEADERS}) -SET(KWSYS_NO_ANSI_STRING_STREAM ${CMAKE_NO_ANSI_STRING_STREAM}) - # Choose default shared/static build if not specified. IF(KWSYS_BUILD_SHARED MATCHES "^KWSYS_BUILD_SHARED$") SET(KWSYS_BUILD_SHARED ${BUILD_SHARED_LIBS}) @@ -179,14 +180,14 @@ FOREACH(header algorithm deque iterator list map numeric queue set stack string utility vector) # Configure the header wrapper. SET(KWSYS_STL_HEADER "${header}") - CONFIGURE_FILE(${PROJECT_SOURCE_DIR}/kwsys_std.h.in - ${KWSYS_HEADER_DIR}/std/${header} + CONFIGURE_FILE(${PROJECT_SOURCE_DIR}/kwsys_stl.h.in + ${KWSYS_HEADER_DIR}/stl/${header} @ONLY IMMEDIATE) # Create an install target for the header wrapper. IF(KWSYS_HEADER_INSTALL_DIR) - INSTALL_FILES(${KWSYS_HEADER_INSTALL_DIR}/${KWSYS_NAMESPACE}/std - FILES ${KWSYS_HEADER_DIR}/std/${header}) + INSTALL_FILES(${KWSYS_HEADER_INSTALL_DIR}/${KWSYS_NAMESPACE}/stl + FILES ${KWSYS_HEADER_DIR}/stl/${header}) ENDIF(KWSYS_HEADER_INSTALL_DIR) ENDFOREACH(header) @@ -195,14 +196,14 @@ ENDFOREACH(header) # may be included. FOREACH(header iostream fstream sstream iosfwd) # Configure the header wrapper. - CONFIGURE_FILE(${PROJECT_SOURCE_DIR}/kwsys_std_${header}.h.in - ${KWSYS_HEADER_DIR}/std/${header} + CONFIGURE_FILE(${PROJECT_SOURCE_DIR}/kwsys_ios_${header}.h.in + ${KWSYS_HEADER_DIR}/ios/${header} @ONLY IMMEDIATE) # Create an install target for the header wrapper. IF(KWSYS_HEADER_INSTALL_DIR) - INSTALL_FILES(${KWSYS_HEADER_INSTALL_DIR}/${KWSYS_NAMESPACE}/std - FILES ${KWSYS_HEADER_DIR}/std/${header}) + INSTALL_FILES(${KWSYS_HEADER_INSTALL_DIR}/${KWSYS_NAMESPACE}/ios + FILES ${KWSYS_HEADER_DIR}/ios/${header}) ENDIF(KWSYS_HEADER_INSTALL_DIR) ENDFOREACH(header) @@ -366,8 +367,10 @@ ENDIF(KWSYS_USE_Process) # Setup testing if not being built as part of another project. IF(KWSYS_STANDALONE) INCLUDE_DIRECTORIES(${KWSYS_HEADER_ROOT}) + ADD_EXECUTABLE(testIOS testIOS.cxx) ADD_EXECUTABLE(testProcess testProcess.c) ADD_EXECUTABLE(test1 test1.cxx) + TARGET_LINK_LIBRARIES(testIOS ${KWSYS_NAMESPACE}) TARGET_LINK_LIBRARIES(testProcess ${KWSYS_NAMESPACE}) TARGET_LINK_LIBRARIES(test1 ${KWSYS_NAMESPACE}) ENDIF(KWSYS_STANDALONE) diff --git a/Source/kwsys/Configure.hxx.in b/Source/kwsys/Configure.hxx.in index bb506b4cd..21627bd77 100644 --- a/Source/kwsys/Configure.hxx.in +++ b/Source/kwsys/Configure.hxx.in @@ -14,53 +14,60 @@ #ifndef @KWSYS_NAMESPACE@_Configure_hxx #define @KWSYS_NAMESPACE@_Configure_hxx -/* Defined if kwsys namespace is "kwsys". */ -#if @KWSYS_NAME_IS_KWSYS@ -# define @KWSYS_NAMESPACE@_NAME_IS_KWSYS -#endif +/* Whether kwsys namespace is "kwsys". */ +#define @KWSYS_NAMESPACE@_NAME_IS_KWSYS @KWSYS_NAME_IS_KWSYS@ -/* Defined if no ANSI C++ stream headers are present. */ -#if @KWSYS_NO_ANSI_STREAM_HEADERS@ -# define @KWSYS_NAMESPACE@_NO_ANSI_STREAM_HEADERS -#endif +/* Whether ANSI C++ stream headers are to be used. */ +#define @KWSYS_NAMESPACE@_IOS_HAVE_ANSI @KWSYS_IOS_HAVE_ANSI@ -/* Defined if no ANSI C++ header is present. */ -#if @KWSYS_NO_ANSI_STRING_STREAM@ -# define @KWSYS_NAMESPACE@_NO_ANSI_STRING_STREAM -#endif +/* Whether ANSI C++ streams are in std namespace. */ +#define @KWSYS_NAMESPACE@_IOS_HAVE_STD @KWSYS_IOS_HAVE_STD@ -/* Defined if no std namespace is present. */ -#if @KWSYS_NO_STD_NAMESPACE@ -# define @KWSYS_NAMESPACE@_NO_STD_NAMESPACE -#endif +/* Whether ANSI C++ header is to be used. */ +#define @KWSYS_NAMESPACE@_IOS_HAVE_SSTREAM @KWSYS_IOS_HAVE_SSTREAM@ -/* Defined if std namespace is the GCC hack. */ -#if defined(__GNUC__) && (__GNUC__ < 3) -# define @KWSYS_NAMESPACE@_FAKE_STD_NAMESPACE -#endif +/* Whether old C++ header is to be used. */ +#define @KWSYS_NAMESPACE@_IOS_HAVE_STRSTREAM_H @KWSYS_IOS_HAVE_STRSTREAM_H@ -/* Define the std namespace macro. */ -#if defined(@KWSYS_NAMESPACE@_NO_STD_NAMESPACE) -# define @KWSYS_NAMESPACE@_std +/* Whether old C++ header is to be used. */ +#define @KWSYS_NAMESPACE@_IOS_HAVE_STRSTREA_H @KWSYS_IOS_HAVE_STRSTREA_H@ + +/* Whether STL is in std namespace. */ +#define @KWSYS_NAMESPACE@_STL_HAVE_STD @KWSYS_STL_HAVE_STD@ + +/* Define the stl namespace macro. */ +#if @KWSYS_NAMESPACE@_STL_HAVE_STD +# define @KWSYS_NAMESPACE@_stl std #else -# define @KWSYS_NAMESPACE@_std std +# define @KWSYS_NAMESPACE@_stl +#endif + +/* Define the ios namespace macro. */ +#if @KWSYS_NAMESPACE@_IOS_HAVE_STD +# define @KWSYS_NAMESPACE@_ios_namespace std +#else +# define @KWSYS_NAMESPACE@_ios_namespace +#endif +#if @KWSYS_NAMESPACE@_IOS_HAVE_SSTREAM +# define @KWSYS_NAMESPACE@_ios @KWSYS_NAMESPACE@_ios_namespace +#else +# define @KWSYS_NAMESPACE@_ios @KWSYS_NAMESPACE@_ios #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) -# if !defined(@KWSYS_NAMESPACE@_NAME_IS_KWSYS) -# define kwsys_std @KWSYS_NAMESPACE@_std -# endif -# if defined(@KWSYS_NAMESPACE@_NO_STD_NAMESPACE) -# define KWSYS_NO_STD_NAMESPACE -# endif -# if defined(@KWSYS_NAMESPACE@_NO_ANSI_STREAM_HEADERS) -# define KWSYS_NO_ANSI_STREAM_HEADERS -# endif -# if defined(@KWSYS_NAMESPACE@_NO_ANSI_STRING_STREAM) -# define KWSYS_NO_ANSI_STRING_STREAM +# if !@KWSYS_NAMESPACE@_NAME_IS_KWSYS +# define kwsys_stl @KWSYS_NAMESPACE@_stl +# define kwsys_ios @KWSYS_NAMESPACE@_ios # endif +# define KWSYS_NAME_IS_KWSYS @KWSYS_NAMESPACE@_NAME_IS_KWSYS +# define KWSYS_IOS_HAVE_ANSI @KWSYS_NAMESPACE@_IOS_HAVE_ANSI +# define KWSYS_IOS_HAVE_STD @KWSYS_NAMESPACE@_IOS_HAVE_STD +# define KWSYS_IOS_HAVE_SSTREAM @KWSYS_NAMESPACE@_IOS_HAVE_SSTREAM +# define KWSYS_IOS_HAVE_STRSTREAM_H @KWSYS_NAMESPACE@_IOS_HAVE_STRSTREAM_H +# define KWSYS_IOS_HAVE_STRSTREA_H @KWSYS_NAMESPACE@_IOS_HAVE_STRSTREA_H +# define KWSYS_STL_HAVE_STD @KWSYS_NAMESPACE@_STL_HAVE_STD #endif #endif diff --git a/Source/kwsys/Directory.cxx b/Source/kwsys/Directory.cxx index 0d1f374ec..29c7d67a1 100644 --- a/Source/kwsys/Directory.cxx +++ b/Source/kwsys/Directory.cxx @@ -16,8 +16,8 @@ #include KWSYS_HEADER(Configure.hxx) -#include KWSYS_HEADER(std/string) -#include KWSYS_HEADER(std/vector) +#include KWSYS_HEADER(stl/string) +#include KWSYS_HEADER(stl/vector) namespace KWSYS_NAMESPACE { @@ -27,10 +27,10 @@ class DirectoryInternals { public: // Array of Files - kwsys_std::vector Files; + kwsys_stl::vector Files; // Path to Open'ed directory - kwsys_std::string Path; + kwsys_stl::string Path; }; //---------------------------------------------------------------------------- diff --git a/Source/kwsys/RegularExpression.cxx b/Source/kwsys/RegularExpression.cxx index 726edc33a..5a2a5e8fd 100644 --- a/Source/kwsys/RegularExpression.cxx +++ b/Source/kwsys/RegularExpression.cxx @@ -840,7 +840,7 @@ void regdump (); static char* regprop (); #endif -bool RegularExpression::find (kwsys_std::string const& s) +bool RegularExpression::find (kwsys_stl::string const& s) { return find(s.c_str()); } diff --git a/Source/kwsys/RegularExpression.hxx.in b/Source/kwsys/RegularExpression.hxx.in index 9677cc063..3cc338c10 100644 --- a/Source/kwsys/RegularExpression.hxx.in +++ b/Source/kwsys/RegularExpression.hxx.in @@ -35,11 +35,11 @@ #include <@KWSYS_NAMESPACE@/Configure.h> #include <@KWSYS_NAMESPACE@/Configure.hxx> -#include <@KWSYS_NAMESPACE@/std/string> +#include <@KWSYS_NAMESPACE@/stl/string> /* Define this macro temporarily to keep the code readable. */ -#if !defined (KWSYS_NAMESPACE) && !defined(@KWSYS_NAMESPACE@_NAME_IS_KWSYS) -# define kwsys_std @KWSYS_NAMESPACE@_std +#if !defined (KWSYS_NAMESPACE) && !@KWSYS_NAMESPACE@_NAME_IS_KWSYS +# define kwsys_stl @KWSYS_NAMESPACE@_stl #endif namespace @KWSYS_NAMESPACE@ @@ -221,17 +221,17 @@ public: * Matches the regular expression to the given std string. * Returns true if found, and sets start and end indexes accordingly. */ - bool find (kwsys_std::string const&); + bool find (kwsys_stl::string const&); /** * Index to start of first find. */ - inline kwsys_std::string::size_type start() const; + inline kwsys_stl::string::size_type start() const; /** * Index to end of first find. */ - inline kwsys_std::string::size_type end() const; + inline kwsys_stl::string::size_type end() const; /** * Returns true if two regular expressions have the same @@ -265,9 +265,9 @@ public: * Destructor. */ // awf added - kwsys_std::string::size_type start(int n) const; - kwsys_std::string::size_type end(int n) const; - kwsys_std::string match(int n) const; + kwsys_stl::string::size_type start(int n) const; + kwsys_stl::string::size_type end(int n) const; + kwsys_stl::string match(int n) const; enum { NSUBEXP = 10 }; private: @@ -316,7 +316,7 @@ inline RegularExpression::~RegularExpression () /** * Set the start position for the regular expression. */ -inline kwsys_std::string::size_type RegularExpression::start () const +inline kwsys_stl::string::size_type RegularExpression::start () const { return(this->startp[0] - searchstring); } @@ -325,7 +325,7 @@ inline kwsys_std::string::size_type RegularExpression::start () const /** * Returns the start/end index of the last item found. */ -inline kwsys_std::string::size_type RegularExpression::end () const +inline kwsys_stl::string::size_type RegularExpression::end () const { return(this->endp[0] - searchstring); } @@ -360,7 +360,7 @@ inline void RegularExpression::set_invalid () /** * Return start index of nth submatch. start(0) is the start of the full match. */ -inline kwsys_std::string::size_type RegularExpression::start(int n) const +inline kwsys_stl::string::size_type RegularExpression::start(int n) const { return this->startp[n] - searchstring; } @@ -369,7 +369,7 @@ inline kwsys_std::string::size_type RegularExpression::start(int n) const /** * Return end index of nth submatch. end(0) is the end of the full match. */ -inline kwsys_std::string::size_type RegularExpression::end(int n) const +inline kwsys_stl::string::size_type RegularExpression::end(int n) const { return this->endp[n] - searchstring; } @@ -377,16 +377,16 @@ inline kwsys_std::string::size_type RegularExpression::end(int n) const /** * Return nth submatch as a string. */ -inline kwsys_std::string RegularExpression::match(int n) const +inline kwsys_stl::string RegularExpression::match(int n) const { - return kwsys_std::string(this->startp[n], this->endp[n] - this->startp[n]); + return kwsys_stl::string(this->startp[n], this->endp[n] - this->startp[n]); } } // namespace @KWSYS_NAMESPACE@ /* Undefine temporary macro. */ -#if !defined (KWSYS_NAMESPACE) && !defined(@KWSYS_NAMESPACE@_NAME_IS_KWSYS) -# undef kwsys_std +#if !defined (KWSYS_NAMESPACE) && !@KWSYS_NAMESPACE@_NAME_IS_KWSYS +# undef kwsys_stl #endif #endif diff --git a/Source/kwsys/SystemTools.cxx b/Source/kwsys/SystemTools.cxx index 2f7a54e85..8edc134b2 100644 --- a/Source/kwsys/SystemTools.cxx +++ b/Source/kwsys/SystemTools.cxx @@ -15,8 +15,8 @@ #include KWSYS_HEADER(SystemTools.hxx) #include KWSYS_HEADER(Directory.hxx) -#include KWSYS_HEADER(std/iostream) -#include KWSYS_HEADER(std/fstream) +#include KWSYS_HEADER(ios/iostream) +#include KWSYS_HEADER(ios/fstream) #ifdef _MSC_VER # pragma warning (disable: 4786) @@ -155,25 +155,25 @@ SystemTools::GetTime(void) } // adds the elements of the env variable path to the arg passed in -void SystemTools::GetPath(kwsys_std::vector& path) +void SystemTools::GetPath(kwsys_stl::vector& path) { #if defined(_WIN32) && !defined(__CYGWIN__) const char* pathSep = ";"; #else const char* pathSep = ":"; #endif - kwsys_std::string pathEnv = getenv("PATH"); + kwsys_stl::string pathEnv = getenv("PATH"); // A hack to make the below algorithm work. if(pathEnv[pathEnv.length()-1] != ':') { pathEnv += pathSep; } - kwsys_std::string::size_type start =0; + kwsys_stl::string::size_type start =0; bool done = false; while(!done) { - kwsys_std::string::size_type endpos = pathEnv.find(pathSep, start); - if(endpos != kwsys_std::string::npos) + kwsys_stl::string::size_type endpos = pathEnv.find(pathSep, start); + if(endpos != kwsys_stl::string::npos) { path.push_back(pathEnv.substr(start, endpos-start)); start = endpos+1; @@ -183,7 +183,7 @@ void SystemTools::GetPath(kwsys_std::vector& path) done = true; } } - for(kwsys_std::vector::iterator i = path.begin(); + for(kwsys_stl::vector::iterator i = path.begin(); i != path.end(); ++i) { SystemTools::ConvertToUnixSlashes(*i); @@ -195,7 +195,7 @@ const char* SystemTools::GetEnv(const char* key) return getenv(key); } -bool SystemTools::GetEnv(const char* key, kwsys_std::string& result) +bool SystemTools::GetEnv(const char* key, kwsys_stl::string& result) { const char* v = getenv(key); if(v) @@ -225,20 +225,20 @@ bool SystemTools::MakeDirectory(const char* path) { return true; } - kwsys_std::string dir = path; + kwsys_stl::string dir = path; if(dir.size() == 0) { return false; } SystemTools::ConvertToUnixSlashes(dir); - kwsys_std::string::size_type pos = dir.find(':'); - if(pos == kwsys_std::string::npos) + kwsys_stl::string::size_type pos = dir.find(':'); + if(pos == kwsys_stl::string::npos) { pos = 0; } - kwsys_std::string topdir; - while((pos = dir.find('/', pos)) != kwsys_std::string::npos) + kwsys_stl::string topdir; + while((pos = dir.find('/', pos)) != kwsys_stl::string::npos) { topdir = dir.substr(0, pos); Mkdir(topdir.c_str()); @@ -273,7 +273,7 @@ bool SystemTools::MakeDirectory(const char* path) // replace replace with with as many times as it shows up in source. // write the result into source. -void SystemTools::ReplaceString(kwsys_std::string& source, +void SystemTools::ReplaceString(kwsys_stl::string& source, const char* replace, const char* with) { @@ -318,21 +318,21 @@ void SystemTools::ReplaceString(kwsys_std::string& source, // => will return the data of the "Root" value of the key #if defined(_WIN32) && !defined(__CYGWIN__) -bool SystemTools::ReadRegistryValue(const char *key, kwsys_std::string &value) +bool SystemTools::ReadRegistryValue(const char *key, kwsys_stl::string &value) { - kwsys_std::string primary = key; - kwsys_std::string second; - kwsys_std::string valuename; + kwsys_stl::string primary = key; + kwsys_stl::string second; + kwsys_stl::string valuename; size_t start = primary.find("\\"); - if (start == kwsys_std::string::npos) + if (start == kwsys_stl::string::npos) { return false; } size_t valuenamepos = primary.find(";"); - if (valuenamepos != kwsys_std::string::npos) + if (valuenamepos != kwsys_stl::string::npos) { valuename = primary.substr(valuenamepos+1); } @@ -393,7 +393,7 @@ bool SystemTools::ReadRegistryValue(const char *key, kwsys_std::string &value) return false; } #else -bool SystemTools::ReadRegistryValue(const char *, kwsys_std::string &) +bool SystemTools::ReadRegistryValue(const char *, kwsys_stl::string &) { return false; } @@ -410,18 +410,18 @@ bool SystemTools::ReadRegistryValue(const char *, kwsys_std::string &) #if defined(_WIN32) && !defined(__CYGWIN__) bool SystemTools::WriteRegistryValue(const char *key, const char *value) { - kwsys_std::string primary = key; - kwsys_std::string second; - kwsys_std::string valuename; + kwsys_stl::string primary = key; + kwsys_stl::string second; + kwsys_stl::string valuename; size_t start = primary.find("\\"); - if (start == kwsys_std::string::npos) + if (start == kwsys_stl::string::npos) { return false; } size_t valuenamepos = primary.find(";"); - if (valuenamepos != kwsys_std::string::npos) + if (valuenamepos != kwsys_stl::string::npos) { valuename = primary.substr(valuenamepos+1); } @@ -494,18 +494,18 @@ bool SystemTools::WriteRegistryValue(const char *, const char *) #if defined(_WIN32) && !defined(__CYGWIN__) bool SystemTools::DeleteRegistryValue(const char *key) { - kwsys_std::string primary = key; - kwsys_std::string second; - kwsys_std::string valuename; + kwsys_stl::string primary = key; + kwsys_stl::string second; + kwsys_stl::string valuename; size_t start = primary.find("\\"); - if (start == kwsys_std::string::npos) + if (start == kwsys_stl::string::npos) { return false; } size_t valuenamepos = primary.find(";"); - if (valuenamepos != kwsys_std::string::npos) + if (valuenamepos != kwsys_stl::string::npos) { valuename = primary.substr(valuenamepos+1); } @@ -640,9 +640,9 @@ bool SystemTools::FileExists(const char* filename) // Return a capitalized string (i.e the first letter is uppercased, all other // are lowercased) -kwsys_std::string SystemTools::Capitalized(const kwsys_std::string& s) +kwsys_stl::string SystemTools::Capitalized(const kwsys_stl::string& s) { - kwsys_std::string n; + kwsys_stl::string n; n.resize(s.size()); n[0] = toupper(s[0]); for (size_t i = 1; i < s.size(); i++) @@ -654,9 +654,9 @@ kwsys_std::string SystemTools::Capitalized(const kwsys_std::string& s) // Return a lower case string -kwsys_std::string SystemTools::LowerCase(const kwsys_std::string& s) +kwsys_stl::string SystemTools::LowerCase(const kwsys_stl::string& s) { - kwsys_std::string n; + kwsys_stl::string n; n.resize(s.size()); for (size_t i = 0; i < s.size(); i++) { @@ -666,9 +666,9 @@ kwsys_std::string SystemTools::LowerCase(const kwsys_std::string& s) } // Return a lower case string -kwsys_std::string SystemTools::UpperCase(const kwsys_std::string& s) +kwsys_stl::string SystemTools::UpperCase(const kwsys_stl::string& s) { - kwsys_std::string n; + kwsys_stl::string n; n.resize(s.size()); for (size_t i = 0; i < s.size(); i++) { @@ -679,10 +679,10 @@ kwsys_std::string SystemTools::UpperCase(const kwsys_std::string& s) // convert windows slashes to unix slashes -void SystemTools::ConvertToUnixSlashes(kwsys_std::string& path) +void SystemTools::ConvertToUnixSlashes(kwsys_stl::string& path) { - kwsys_std::string::size_type pos = 0; - while((pos = path.find('\\', pos)) != kwsys_std::string::npos) + kwsys_stl::string::size_type pos = 0; + while((pos = path.find('\\', pos)) != kwsys_stl::string::npos) { path[pos] = '/'; pos++; @@ -696,7 +696,7 @@ void SystemTools::ConvertToUnixSlashes(kwsys_std::string& path) start_find = 1; #endif - while((pos = path.find("//", start_find)) != kwsys_std::string::npos) + while((pos = path.find("//", start_find)) != kwsys_stl::string::npos) { SystemTools::ReplaceString(path, "//", "/"); } @@ -712,7 +712,7 @@ void SystemTools::ConvertToUnixSlashes(kwsys_std::string& path) { if (getenv("HOME")) { - path = kwsys_std::string(getenv("HOME")) + path.substr(1); + path = kwsys_stl::string(getenv("HOME")) + path.substr(1); } } @@ -724,20 +724,20 @@ void SystemTools::ConvertToUnixSlashes(kwsys_std::string& path) } // change // to /, and escape any spaces in the path -kwsys_std::string SystemTools::ConvertToUnixOutputPath(const char* path) +kwsys_stl::string SystemTools::ConvertToUnixOutputPath(const char* path) { - kwsys_std::string ret = path; + kwsys_stl::string ret = path; // remove // except at the beginning might be a cygwin drive - kwsys_std::string::size_type pos = 1; - while((pos = ret.find("//", pos)) != kwsys_std::string::npos) + kwsys_stl::string::size_type pos = 1; + while((pos = ret.find("//", pos)) != kwsys_stl::string::npos) { ret.erase(pos, 1); } // now escape spaces if there is a space in the path - if(ret.find(" ") != kwsys_std::string::npos) + if(ret.find(" ") != kwsys_stl::string::npos) { - kwsys_std::string result = ""; + kwsys_stl::string result = ""; char lastch = 1; for(const char* ch = ret.c_str(); *ch != '\0'; ++ch) { @@ -754,7 +754,7 @@ kwsys_std::string SystemTools::ConvertToUnixOutputPath(const char* path) return ret; } -kwsys_std::string SystemTools::ConvertToOutputPath(const char* path) +kwsys_stl::string SystemTools::ConvertToOutputPath(const char* path) { #if defined(_WIN32) && !defined(__CYGWIN__) return SystemTools::ConvertToWindowsOutputPath(path); @@ -764,12 +764,12 @@ kwsys_std::string SystemTools::ConvertToOutputPath(const char* path) } // remove double slashes not at the start -kwsys_std::string SystemTools::ConvertToWindowsOutputPath(const char* path) +kwsys_stl::string SystemTools::ConvertToWindowsOutputPath(const char* path) { - kwsys_std::string ret = path; - kwsys_std::string::size_type pos = 0; + kwsys_stl::string ret = path; + kwsys_stl::string::size_type pos = 0; // first convert all of the slashes - while((pos = ret.find('/', pos)) != kwsys_std::string::npos) + while((pos = ret.find('/', pos)) != kwsys_stl::string::npos) { ret[pos] = '\\'; pos++; @@ -791,16 +791,16 @@ kwsys_std::string SystemTools::ConvertToWindowsOutputPath(const char* path) return ret; } } - while((pos = ret.find("\\\\", pos)) != kwsys_std::string::npos) + while((pos = ret.find("\\\\", pos)) != kwsys_stl::string::npos) { ret.erase(pos, 1); } // now double quote the path if it has spaces in it // and is not already double quoted - if(ret.find(" ") != kwsys_std::string::npos + if(ret.find(" ") != kwsys_stl::string::npos && ret[0] != '\"') { - kwsys_std::string result; + kwsys_stl::string result; result = "\"" + ret + "\""; ret = result; } @@ -845,13 +845,13 @@ bool SystemTools::FilesDiffer(const char* source, } #if defined(_WIN32) || defined(__CYGWIN__) - kwsys_std::ifstream finSource(source, (kwsys_std::ios::binary | - kwsys_std::ios::in)); - kwsys_std::ifstream finDestination(destination, (kwsys_std::ios::binary | - kwsys_std::ios::in)); + kwsys_ios::ifstream finSource(source, (kwsys_ios::ios::binary | + kwsys_ios::ios::in)); + kwsys_ios::ifstream finDestination(destination, (kwsys_ios::ios::binary | + kwsys_ios::ios::in)); #else - kwsys_std::ifstream finSource(source); - kwsys_std::ifstream finDestination(destination); + kwsys_ios::ifstream finSource(source); + kwsys_ios::ifstream finDestination(destination); #endif if(!finSource || !finDestination) { @@ -894,31 +894,31 @@ bool SystemTools::CopyFileAlways(const char* source, const char* destination) // If destination is a directory, try to create a file with the same // name as the source in that directory. - kwsys_std::string new_destination; + kwsys_stl::string new_destination; if(SystemTools::FileExists(destination) && SystemTools::FileIsDirectory(destination)) { new_destination = destination; SystemTools::ConvertToUnixSlashes(new_destination); new_destination += '/'; - kwsys_std::string source_name = source; + kwsys_stl::string source_name = source; new_destination += SystemTools::GetFilenameName(source_name); destination = new_destination.c_str(); } // Create destination directory - kwsys_std::string destination_dir = destination; + kwsys_stl::string destination_dir = destination; destination_dir = SystemTools::GetFilenamePath(destination_dir); SystemTools::MakeDirectory(destination_dir.c_str()); // Open files #if defined(_WIN32) || defined(__CYGWIN__) - kwsys_std::ifstream fin(source, - kwsys_std::ios::binary | kwsys_std::ios::in); + kwsys_ios::ifstream fin(source, + kwsys_ios::ios::binary | kwsys_ios::ios::in); #else - kwsys_std::ifstream fin(source); + kwsys_ios::ifstream fin(source); #endif if(!fin) { @@ -926,11 +926,11 @@ bool SystemTools::CopyFileAlways(const char* source, const char* destination) } #if defined(_WIN32) || defined(__CYGWIN__) - kwsys_std::ofstream fout(destination, - kwsys_std::ios::binary | kwsys_std::ios::out | kwsys_std::ios::trunc); + kwsys_ios::ofstream fout(destination, + kwsys_ios::ios::binary | kwsys_ios::ios::out | kwsys_ios::ios::trunc); #else - kwsys_std::ofstream fout(destination, - kwsys_std::ios::out | kwsys_std::ios::trunc); + kwsys_ios::ofstream fout(destination, + kwsys_ios::ios::out | kwsys_ios::ios::trunc); #endif if(!fout) { @@ -1021,7 +1021,7 @@ long int SystemTools::ModifiedTime(const char* filename) } -kwsys_std::string SystemTools::GetLastSystemError() +kwsys_stl::string SystemTools::GetLastSystemError() { int e = errno; return strerror(e); @@ -1042,7 +1042,7 @@ bool SystemTools::RemoveADirectory(const char* source) if (strcmp(dir.GetFile(static_cast(fileNum)),".") && strcmp(dir.GetFile(static_cast(fileNum)),"..")) { - kwsys_std::string fullPath = source; + kwsys_stl::string fullPath = source; fullPath += "/"; fullPath += dir.GetFile(static_cast(fileNum)); if(SystemTools::FileIsDirectory(fullPath.c_str())) @@ -1070,17 +1070,17 @@ bool SystemTools::RemoveADirectory(const char* source) * the system search path. Returns the full path to the file if it is * found. Otherwise, the empty string is returned. */ -kwsys_std::string SystemTools::FindFile(const char* name, - const kwsys_std::vector& userPaths) +kwsys_stl::string SystemTools::FindFile(const char* name, + const kwsys_stl::vector& userPaths) { // Add the system search path to our path first - kwsys_std::vector path; + kwsys_stl::vector path; SystemTools::GetPath(path); // now add the additional paths path.insert(path.end(), userPaths.begin(), userPaths.end()); // now look for the file - kwsys_std::string tryPath; - for(kwsys_std::vector::const_iterator p = path.begin(); + kwsys_stl::string tryPath; + for(kwsys_stl::vector::const_iterator p = path.begin(); p != path.end(); ++p) { tryPath = *p; @@ -1101,9 +1101,9 @@ kwsys_std::string SystemTools::FindFile(const char* name, * the system search path. Returns the full path to the executable if it is * found. Otherwise, the empty string is returned. */ -kwsys_std::string SystemTools::FindProgram( +kwsys_stl::string SystemTools::FindProgram( const char* name, - const kwsys_std::vector& userPaths, + const kwsys_stl::vector& userPaths, bool no_system_path) { if(!name) @@ -1116,7 +1116,7 @@ kwsys_std::string SystemTools::FindProgram( { return SystemTools::CollapseFullPath(name); } - kwsys_std::string tryPath = name; + kwsys_stl::string tryPath = name; tryPath += SystemTools::GetExecutableExtension(); if(SystemTools::FileExists(tryPath.c_str()) && !SystemTools::FileIsDirectory(tryPath.c_str())) @@ -1125,7 +1125,7 @@ kwsys_std::string SystemTools::FindProgram( } // Add the system search path to our path. - kwsys_std::vector path; + kwsys_stl::vector path; if (!no_system_path) { SystemTools::GetPath(path); @@ -1133,7 +1133,7 @@ kwsys_std::string SystemTools::FindProgram( // now add the additional paths path.insert(path.end(), userPaths.begin(), userPaths.end()); - for(kwsys_std::vector::const_iterator p = path.begin(); + for(kwsys_stl::vector::const_iterator p = path.begin(); p != path.end(); ++p) { tryPath = *p; @@ -1173,8 +1173,8 @@ kwsys_std::string SystemTools::FindProgram( * the system search path. Returns the full path to the library if it is * found. Otherwise, the empty string is returned. */ -kwsys_std::string SystemTools::FindLibrary(const char* name, - const kwsys_std::vector& userPaths) +kwsys_stl::string SystemTools::FindLibrary(const char* name, + const kwsys_stl::vector& userPaths) { // See if the executable exists as written. if(SystemTools::FileExists(name) && @@ -1184,12 +1184,12 @@ kwsys_std::string SystemTools::FindLibrary(const char* name, } // Add the system search path to our path. - kwsys_std::vector path; + kwsys_stl::vector path; SystemTools::GetPath(path); // now add the additional paths path.insert(path.end(), userPaths.begin(), userPaths.end()); - kwsys_std::string tryPath; - for(kwsys_std::vector::const_iterator p = path.begin(); + kwsys_stl::string tryPath; + for(kwsys_stl::vector::const_iterator p = path.begin(); p != path.end(); ++p) { #if defined(_WIN32) && !defined(__CYGWIN__) @@ -1263,23 +1263,23 @@ int SystemTools::ChangeDirectory(const char *dir) return Chdir(dir); } -kwsys_std::string SystemTools::GetCurrentWorkingDirectory() +kwsys_stl::string SystemTools::GetCurrentWorkingDirectory() { char buf[2048]; - kwsys_std::string path = Getcwd(buf, 2048); + kwsys_stl::string path = Getcwd(buf, 2048); return path; } -kwsys_std::string SystemTools::GetProgramPath(const char* in_name) +kwsys_stl::string SystemTools::GetProgramPath(const char* in_name) { - kwsys_std::string dir, file; + kwsys_stl::string dir, file; SystemTools::SplitProgramPath(in_name, dir, file); return dir; } bool SystemTools::SplitProgramPath(const char* in_name, - kwsys_std::string& dir, - kwsys_std::string& file, + kwsys_stl::string& dir, + kwsys_stl::string& file, bool) { dir = in_name; @@ -1288,8 +1288,8 @@ bool SystemTools::SplitProgramPath(const char* in_name, if(!SystemTools::FileIsDirectory(dir.c_str())) { - kwsys_std::string::size_type slashPos = dir.rfind("/"); - if(slashPos != kwsys_std::string::npos) + kwsys_stl::string::size_type slashPos = dir.rfind("/"); + if(slashPos != kwsys_stl::string::npos) { file = dir.substr(slashPos+1); dir = dir.substr(0, slashPos); @@ -1302,7 +1302,7 @@ bool SystemTools::SplitProgramPath(const char* in_name, } if(!(dir == "") && !SystemTools::FileIsDirectory(dir.c_str())) { - kwsys_std::string oldDir = in_name; + kwsys_stl::string oldDir = in_name; SystemTools::ConvertToUnixSlashes(oldDir); dir = in_name; return false; @@ -1310,19 +1310,19 @@ bool SystemTools::SplitProgramPath(const char* in_name, return true; } -kwsys_std::string SystemTools::CollapseFullPath(const char* in_relative) +kwsys_stl::string SystemTools::CollapseFullPath(const char* in_relative) { return SystemTools::CollapseFullPath(in_relative, 0); } -kwsys_std::string SystemTools::CollapseFullPath(const char* in_relative, +kwsys_stl::string SystemTools::CollapseFullPath(const char* in_relative, const char* in_base) { - kwsys_std::string dir, file; + kwsys_stl::string dir, file; SystemTools::SplitProgramPath(in_relative, dir, file, false); // Save original working directory. - kwsys_std::string orig = SystemTools::GetCurrentWorkingDirectory(); + kwsys_stl::string orig = SystemTools::GetCurrentWorkingDirectory(); // Change to base of relative path. if(in_base) @@ -1338,7 +1338,7 @@ kwsys_std::string SystemTools::CollapseFullPath(const char* in_relative, } // Get the resulting directory. - kwsys_std::string newDir = SystemTools::GetCurrentWorkingDirectory(); + kwsys_stl::string newDir = SystemTools::GetCurrentWorkingDirectory(); // Add the file back on to the directory. SystemTools::ConvertToUnixSlashes(newDir); @@ -1354,7 +1354,7 @@ kwsys_std::string SystemTools::CollapseFullPath(const char* in_relative, # endif // Resolve relative path. - kwsys_std::string newDir; + kwsys_stl::string newDir; if(!(dir == "")) { realpath(dir.c_str(), resolved_name); @@ -1375,7 +1375,7 @@ kwsys_std::string SystemTools::CollapseFullPath(const char* in_relative, Chdir(orig.c_str()); // Construct and return the full path. - kwsys_std::string newPath = newDir; + kwsys_stl::string newPath = newDir; if(!(file == "")) { newPath += "/"; @@ -1384,14 +1384,14 @@ kwsys_std::string SystemTools::CollapseFullPath(const char* in_relative, return newPath; } -bool SystemTools::Split(const char* str, kwsys_std::vector& lines) +bool SystemTools::Split(const char* str, kwsys_stl::vector& lines) { - kwsys_std::string data(str); - kwsys_std::string::size_type lpos = 0; + kwsys_stl::string data(str); + kwsys_stl::string::size_type lpos = 0; while(lpos < data.length()) { - kwsys_std::string::size_type rpos = data.find_first_of("\n", lpos); - if(rpos == kwsys_std::string::npos) + kwsys_stl::string::size_type rpos = data.find_first_of("\n", lpos); + if(rpos == kwsys_stl::string::npos) { // Line ends at end of string without a newline. lines.push_back(data.substr(lpos)); @@ -1416,13 +1416,13 @@ bool SystemTools::Split(const char* str, kwsys_std::vector& l * Return path of a full filename (no trailing slashes). * Warning: returned path is converted to Unix slashes format. */ -kwsys_std::string SystemTools::GetFilenamePath(const kwsys_std::string& filename) +kwsys_stl::string SystemTools::GetFilenamePath(const kwsys_stl::string& filename) { - kwsys_std::string fn = filename; + kwsys_stl::string fn = filename; SystemTools::ConvertToUnixSlashes(fn); - kwsys_std::string::size_type slash_pos = fn.rfind("/"); - if(slash_pos != kwsys_std::string::npos) + kwsys_stl::string::size_type slash_pos = fn.rfind("/"); + if(slash_pos != kwsys_stl::string::npos) { return fn.substr(0, slash_pos); } @@ -1436,13 +1436,13 @@ kwsys_std::string SystemTools::GetFilenamePath(const kwsys_std::string& filename /** * Return file name of a full filename (i.e. file name without path). */ -kwsys_std::string SystemTools::GetFilenameName(const kwsys_std::string& filename) +kwsys_stl::string SystemTools::GetFilenameName(const kwsys_stl::string& filename) { - kwsys_std::string fn = filename; + kwsys_stl::string fn = filename; SystemTools::ConvertToUnixSlashes(fn); - kwsys_std::string::size_type slash_pos = fn.rfind("/"); - if(slash_pos != kwsys_std::string::npos) + kwsys_stl::string::size_type slash_pos = fn.rfind("/"); + if(slash_pos != kwsys_stl::string::npos) { return fn.substr(slash_pos + 1); } @@ -1457,11 +1457,11 @@ kwsys_std::string SystemTools::GetFilenameName(const kwsys_std::string& filename * Return file extension of a full filename (dot included). * Warning: this is the longest extension (for example: .tar.gz) */ -kwsys_std::string SystemTools::GetFilenameExtension(const kwsys_std::string& filename) +kwsys_stl::string SystemTools::GetFilenameExtension(const kwsys_stl::string& filename) { - kwsys_std::string name = SystemTools::GetFilenameName(filename); - kwsys_std::string::size_type dot_pos = name.find("."); - if(dot_pos != kwsys_std::string::npos) + kwsys_stl::string name = SystemTools::GetFilenameName(filename); + kwsys_stl::string::size_type dot_pos = name.find("."); + if(dot_pos != kwsys_stl::string::npos) { return name.substr(dot_pos); } @@ -1475,11 +1475,11 @@ kwsys_std::string SystemTools::GetFilenameExtension(const kwsys_std::string& fil * Return file extension of a full filename (dot included). * Warning: this is the shortest extension (for example: .tar.gz) */ -kwsys_std::string SystemTools::GetFilenameLastExtension(const kwsys_std::string& filename) +kwsys_stl::string SystemTools::GetFilenameLastExtension(const kwsys_stl::string& filename) { - kwsys_std::string name = SystemTools::GetFilenameName(filename); - kwsys_std::string::size_type dot_pos = name.rfind("."); - if(dot_pos != kwsys_std::string::npos) + kwsys_stl::string name = SystemTools::GetFilenameName(filename); + kwsys_stl::string::size_type dot_pos = name.rfind("."); + if(dot_pos != kwsys_stl::string::npos) { return name.substr(dot_pos); } @@ -1493,11 +1493,11 @@ kwsys_std::string SystemTools::GetFilenameLastExtension(const kwsys_std::string& * Return file name without extension of a full filename (i.e. without path). * Warning: it considers the longest extension (for example: .tar.gz) */ -kwsys_std::string SystemTools::GetFilenameWithoutExtension(const kwsys_std::string& filename) +kwsys_stl::string SystemTools::GetFilenameWithoutExtension(const kwsys_stl::string& filename) { - kwsys_std::string name = SystemTools::GetFilenameName(filename); - kwsys_std::string::size_type dot_pos = name.find("."); - if(dot_pos != kwsys_std::string::npos) + kwsys_stl::string name = SystemTools::GetFilenameName(filename); + kwsys_stl::string::size_type dot_pos = name.find("."); + if(dot_pos != kwsys_stl::string::npos) { return name.substr(0, dot_pos); } @@ -1513,12 +1513,12 @@ kwsys_std::string SystemTools::GetFilenameWithoutExtension(const kwsys_std::stri * Warning: it considers the last extension (for example: removes .gz * from .tar.gz) */ -kwsys_std::string -SystemTools::GetFilenameWithoutLastExtension(const kwsys_std::string& filename) +kwsys_stl::string +SystemTools::GetFilenameWithoutLastExtension(const kwsys_stl::string& filename) { - kwsys_std::string name = SystemTools::GetFilenameName(filename); - kwsys_std::string::size_type dot_pos = name.rfind("."); - if(dot_pos != kwsys_std::string::npos) + kwsys_stl::string name = SystemTools::GetFilenameName(filename); + kwsys_stl::string::size_type dot_pos = name.rfind("."); + if(dot_pos != kwsys_stl::string::npos) { return name.substr(0, dot_pos); } @@ -1530,7 +1530,7 @@ SystemTools::GetFilenameWithoutLastExtension(const kwsys_std::string& filename) bool SystemTools::FileIsFullPath(const char* in_name) { - kwsys_std::string name = in_name; + kwsys_stl::string name = in_name; #if defined(_WIN32) // On Windows, the name must be at least two characters long. if(name.length() < 2) @@ -1562,7 +1562,7 @@ bool SystemTools::FileIsFullPath(const char* in_name) return false; } -bool SystemTools::GetShortPath(const char* path, kwsys_std::string& shortPath) +bool SystemTools::GetShortPath(const char* path, kwsys_stl::string& shortPath) { #if defined(WIN32) && !defined(__CYGWIN__) const int size = int(strlen(path)) +1; // size of return @@ -1604,7 +1604,7 @@ bool SystemTools::GetShortPath(const char* path, kwsys_std::string& shortPath) } void SystemTools::SplitProgramFromArgs(const char* path, - kwsys_std::string& program, kwsys_std::string& args) + kwsys_stl::string& program, kwsys_stl::string& args) { if(SystemTools::FileExists(path)) { @@ -1612,25 +1612,25 @@ void SystemTools::SplitProgramFromArgs(const char* path, args = ""; return; } - kwsys_std::vector e; - kwsys_std::string findProg = SystemTools::FindProgram(path, e); + kwsys_stl::vector e; + kwsys_stl::string findProg = SystemTools::FindProgram(path, e); if(findProg.size()) { program = findProg; args = ""; return; } - kwsys_std::string dir = path; - kwsys_std::string::size_type spacePos = dir.rfind(' '); - if(spacePos == kwsys_std::string::npos) + kwsys_stl::string dir = path; + kwsys_stl::string::size_type spacePos = dir.rfind(' '); + if(spacePos == kwsys_stl::string::npos) { program = ""; args = ""; return; } - while(spacePos != kwsys_std::string::npos) + while(spacePos != kwsys_stl::string::npos) { - kwsys_std::string tryProg = dir.substr(0, spacePos); + kwsys_stl::string tryProg = dir.substr(0, spacePos); if(SystemTools::FileExists(tryProg.c_str())) { program = tryProg; @@ -1650,7 +1650,7 @@ void SystemTools::SplitProgramFromArgs(const char* path, args = ""; } -kwsys_std::string SystemTools::GetCurrentDateTime(const char* format) +kwsys_stl::string SystemTools::GetCurrentDateTime(const char* format) { char buf[1024]; time_t t; @@ -1659,20 +1659,20 @@ kwsys_std::string SystemTools::GetCurrentDateTime(const char* format) return buf; } -kwsys_std::string SystemTools::MakeCindentifier(const char* s) +kwsys_stl::string SystemTools::MakeCindentifier(const char* s) { - kwsys_std::string str(s); + kwsys_stl::string str(s); if (str.find_first_of("0123456789") == 0) { str = "_" + str; } - kwsys_std::string permited_chars("_" + kwsys_stl::string permited_chars("_" "abcdefghijklmnopqrstuvwxyz" "ABCDEFGHIJKLMNOPQRSTUVWXYZ" "0123456789"); - kwsys_std::string::size_type pos = 0; - while ((pos = str.find_first_not_of(permited_chars, pos)) != kwsys_std::string::npos) + kwsys_stl::string::size_type pos = 0; + while ((pos = str.find_first_not_of(permited_chars, pos)) != kwsys_stl::string::npos) { str[pos] = '_'; } @@ -1682,7 +1682,7 @@ kwsys_std::string SystemTools::MakeCindentifier(const char* s) // Due to a buggy stream library on the HP and another on Mac OSX, we // need this very carefully written version of getline. Returns true // if any data were read before the end-of-file was reached. -bool SystemTools::GetLineFromStream(kwsys_std::istream& is, kwsys_std::string& line, +bool SystemTools::GetLineFromStream(kwsys_ios::istream& is, kwsys_stl::string& line, bool *has_newline /* = 0 */) { const int bufferSize = 1024; @@ -1714,7 +1714,7 @@ bool SystemTools::GetLineFromStream(kwsys_std::istream& is, kwsys_std::string& l } // The fail bit may be set. Clear it. - is.clear(is.rdstate() & ~kwsys_std::ios::failbit); + is.clear(is.rdstate() & ~kwsys_ios::ios::failbit); } return haveData; } diff --git a/Source/kwsys/SystemTools.hxx.in b/Source/kwsys/SystemTools.hxx.in index b238c7e4b..fc6acf09d 100644 --- a/Source/kwsys/SystemTools.hxx.in +++ b/Source/kwsys/SystemTools.hxx.in @@ -14,15 +14,16 @@ #ifndef @KWSYS_NAMESPACE@_SystemTools_hxx #define @KWSYS_NAMESPACE@_SystemTools_hxx -#include <@KWSYS_NAMESPACE@/std/iosfwd> -#include <@KWSYS_NAMESPACE@/std/string> -#include <@KWSYS_NAMESPACE@/std/vector> +#include <@KWSYS_NAMESPACE@/ios/iosfwd> +#include <@KWSYS_NAMESPACE@/stl/string> +#include <@KWSYS_NAMESPACE@/stl/vector> #include <@KWSYS_NAMESPACE@/Configure.h> -/* Define this macro temporarily to keep the code readable. */ -#if !defined (KWSYS_NAMESPACE) && !defined(@KWSYS_NAMESPACE@_NAME_IS_KWSYS) -# define kwsys_std @KWSYS_NAMESPACE@_std +/* Define these macros temporarily to keep the code readable. */ +#if !defined (KWSYS_NAMESPACE) && !@KWSYS_NAMESPACE@_NAME_IS_KWSYS +# define kwsys_stl @KWSYS_NAMESPACE@_stl +# define kwsys_ios @KWSYS_NAMESPACE@_ios #endif namespace @KWSYS_NAMESPACE@ @@ -41,7 +42,7 @@ public: * then an underscore is prepended. Note that this can produce * identifiers that the standard reserves (_[A-Z].* and __.*). */ - static kwsys_std::string MakeCindentifier(const char* s); + static kwsys_stl::string MakeCindentifier(const char* s); /** * Make a new directory if it is not there. This function @@ -63,14 +64,14 @@ public: * Replace replace all occurances of the string in * the source string. */ - static void ReplaceString(kwsys_std::string& source, + static void ReplaceString(kwsys_stl::string& source, const char* replace, const char* with); /** * Read a registry value */ - static bool ReadRegistryValue(const char *key, kwsys_std::string &value); + static bool ReadRegistryValue(const char *key, kwsys_stl::string &value); /** * Write a registry value @@ -86,17 +87,17 @@ public: * Return a capitalized string (i.e the first letter is uppercased, * all other are lowercased). */ - static kwsys_std::string Capitalized(const kwsys_std::string&); + static kwsys_stl::string Capitalized(const kwsys_stl::string&); /** * Return a lower case string */ - static kwsys_std::string LowerCase(const kwsys_std::string&); + static kwsys_stl::string LowerCase(const kwsys_stl::string&); /** * Return a lower case string */ - static kwsys_std::string UpperCase(const kwsys_std::string&); + static kwsys_stl::string UpperCase(const kwsys_stl::string&); /** * do a case-independent string comparison @@ -106,13 +107,13 @@ public: /** * Replace Windows file system slashes with Unix-style slashes. */ - static void ConvertToUnixSlashes(kwsys_std::string& path); + static void ConvertToUnixSlashes(kwsys_stl::string& path); /** * For windows this calles ConvertToWindowsOutputPath and for unix * it calls ConvertToUnixOutputPath */ - static kwsys_std::string ConvertToOutputPath(const char*); + static kwsys_stl::string ConvertToOutputPath(const char*); /** Return true if a file exists in the current directory. */ static bool FileExists(const char* filename); @@ -122,11 +123,11 @@ public: * Add the paths from the environment variable PATH to the * string vector passed in. */ - static void GetPath(kwsys_std::vector& path); + static void GetPath(kwsys_stl::vector& path); /** Read an environment variable. */ static const char* GetEnv(const char* key); - static bool GetEnv(const char* key, kwsys_std::string& result); + static bool GetEnv(const char* key, kwsys_stl::string& result); /** * Get the file extension (including ".") needed for an executable @@ -158,32 +159,32 @@ public: static bool RemoveADirectory(const char* source); ///! Find a file in the system PATH, with optional extra paths. - static kwsys_std::string FindFile(const char* name, - const kwsys_std::vector& path= kwsys_std::vector()); + static kwsys_stl::string FindFile(const char* name, + const kwsys_stl::vector& path= kwsys_stl::vector()); ///! Find an executable in the system PATH, with optional extra paths. - static kwsys_std::string FindProgram(const char* name, - const kwsys_std::vector& path = kwsys_std::vector(), + static kwsys_stl::string FindProgram(const char* name, + const kwsys_stl::vector& path = kwsys_stl::vector(), bool no_system_path = false); ///! Find a library in the system PATH, with optional extra paths. - static kwsys_std::string FindLibrary(const char* name, - const kwsys_std::vector& path); + static kwsys_stl::string FindLibrary(const char* name, + const kwsys_stl::vector& path); ///! return true if the file is a directory. static bool FileIsDirectory(const char* name); - static kwsys_std::string GetCurrentWorkingDirectory(); + static kwsys_stl::string GetCurrentWorkingDirectory(); /** * Given the path to a program executable, get the directory part of * the path with the file stripped off. If there is no directory * part, the empty string is returned. */ - static kwsys_std::string GetProgramPath(const char*); + static kwsys_stl::string GetProgramPath(const char*); static bool SplitProgramPath(const char* in_name, - kwsys_std::string& dir, - kwsys_std::string& file, + kwsys_stl::string& dir, + kwsys_stl::string& file, bool errorReport = true); /** @@ -192,32 +193,32 @@ public: * (which defaults to the current working directory). The full path * is returned. */ - static kwsys_std::string CollapseFullPath(const char* in_relative); - static kwsys_std::string CollapseFullPath(const char* in_relative, + static kwsys_stl::string CollapseFullPath(const char* in_relative); + static kwsys_stl::string CollapseFullPath(const char* in_relative, const char* in_base); ///! return path of a full filename (no trailing slashes). - static kwsys_std::string GetFilenamePath(const kwsys_std::string&); + static kwsys_stl::string GetFilenamePath(const kwsys_stl::string&); ///! return file name of a full filename (i.e. file name without path). - static kwsys_std::string GetFilenameName(const kwsys_std::string&); + static kwsys_stl::string GetFilenameName(const kwsys_stl::string&); ///! Split a program from its arguments and handle spaces in the paths. static void SplitProgramFromArgs(const char* path, - kwsys_std::string& program, kwsys_std::string& args); + kwsys_stl::string& program, kwsys_stl::string& args); ///! return longest file extension of a full filename (dot included). - static kwsys_std::string GetFilenameExtension(const kwsys_std::string&); + static kwsys_stl::string GetFilenameExtension(const kwsys_stl::string&); ///! return shortest file extension of a full filename (dot included). - static kwsys_std::string GetFilenameLastExtension(const kwsys_std::string& filename); + static kwsys_stl::string GetFilenameLastExtension(const kwsys_stl::string& filename); ///! return file name without extension of a full filename. - static kwsys_std::string GetFilenameWithoutExtension(const kwsys_std::string&); + static kwsys_stl::string GetFilenameWithoutExtension(const kwsys_stl::string&); ///! return file name without its last (shortest) extension. - static kwsys_std::string GetFilenameWithoutLastExtension(const kwsys_std::string&); + static kwsys_stl::string GetFilenameWithoutLastExtension(const kwsys_stl::string&); /** Return whether the path represents a full path (not relative). */ static bool FileIsFullPath(const char*); @@ -225,19 +226,19 @@ public: static long int ModifiedTime(const char* filename); ///! for windows return the short path for the given path, unix just a pass through - static bool GetShortPath(const char* path, kwsys_std::string& result); + static bool GetShortPath(const char* path, kwsys_stl::string& result); ///! change directory the the directory specified static int ChangeDirectory(const char* dir); /** Split a string on its newlines into multiple lines. Returns false only if the last line stored had no newline. */ - static bool Split(const char* s, kwsys_std::vector& l); + static bool Split(const char* s, kwsys_stl::vector& l); - static kwsys_std::string GetCurrentDateTime(const char* format); + static kwsys_stl::string GetCurrentDateTime(const char* format); /** Get the result of strerror(errno). */ - static kwsys_std::string GetLastSystemError(); + static kwsys_stl::string GetLastSystemError(); /** When building DEBUG with MSVC, this enables a hook that prevents * error dialogs from popping up if the program is being run from @@ -252,7 +253,7 @@ public: * end-of-file was reached. If the has_newline argument is specified, it will * be true when the line read had a newline character. */ - static bool GetLineFromStream(kwsys_std::istream& istr, kwsys_std::string& line, + static bool GetLineFromStream(kwsys_ios::istream& istr, kwsys_stl::string& line, bool* has_newline=0); protected: @@ -261,7 +262,7 @@ protected: * Convert the path to a string that can be used in a unix makefile. * double slashes are removed, and spaces are escaped. */ - static kwsys_std::string ConvertToUnixOutputPath(const char*); + static kwsys_stl::string ConvertToUnixOutputPath(const char*); /** * Convert the path to string that can be used in a windows project or @@ -269,14 +270,15 @@ protected: * the string, the slashes are converted to windows style backslashes, and * if there are spaces in the string it is double quoted. */ - static kwsys_std::string ConvertToWindowsOutputPath(const char*); + static kwsys_stl::string ConvertToWindowsOutputPath(const char*); }; } // namespace @KWSYS_NAMESPACE@ -/* Undefine temporary macro. */ -#if !defined (KWSYS_NAMESPACE) && !defined(@KWSYS_NAMESPACE@_NAME_IS_KWSYS) -# undef kwsys_std +/* Undefine temporary macros. */ +#if !defined (KWSYS_NAMESPACE) && !@KWSYS_NAMESPACE@_NAME_IS_KWSYS +# undef kwsys_stl +# undef kwsys_ios #endif #endif diff --git a/Source/kwsys/kwsysPlatformCxxTests.cmake b/Source/kwsys/kwsysPlatformCxxTests.cmake new file mode 100644 index 000000000..faf7633c2 --- /dev/null +++ b/Source/kwsys/kwsysPlatformCxxTests.cmake @@ -0,0 +1,43 @@ +MACRO(KWSYS_PLATFORM_CXX_TEST var description invert) + IF("${var}_COMPILED" MATCHES "^${var}_COMPILED$") + MESSAGE(STATUS "${description}") + TRY_COMPILE(${var}_COMPILED + ${CMAKE_CURRENT_BINARY_DIR} + ${CMAKE_CURRENT_SOURCE_DIR}/kwsysPlatformCxxTests.cxx + COMPILE_DEFINITIONS -DTEST_${var} + OUTPUT_VARIABLE OUTPUT) + IF(${var}_COMPILED) + FILE(APPEND ${CMAKE_CURRENT_BINARY_DIR}/CMakeOutput.log + "${description} compiled with the following output:\n${OUTPUT}\n\n") + ELSE(${var}_COMPILED) + FILE(APPEND ${CMAKE_CURRENT_BINARY_DIR}/CMakeError.log + "${description} failed to compile with the following output:\n${OUTPUT}\n\n") + ENDIF(${var}_COMPILED) + IF(${invert} MATCHES INVERT) + IF(${var}_COMPILED) + MESSAGE(STATUS "${description} - no") + ELSE(${var}_COMPILED) + MESSAGE(STATUS "${description} - yes") + ENDIF(${var}_COMPILED) + ELSE(${invert} MATCHES INVERT) + IF(${var}_COMPILED) + MESSAGE(STATUS "${description} - yes") + ELSE(${var}_COMPILED) + MESSAGE(STATUS "${description} - no") + ENDIF(${var}_COMPILED) + ENDIF(${invert} MATCHES INVERT) + ENDIF("${var}_COMPILED" MATCHES "^${var}_COMPILED$") + IF(${invert} MATCHES INVERT) + IF(${var}_COMPILED) + SET(${var} 0) + ELSE(${var}_COMPILED) + SET(${var} 1) + ENDIF(${var}_COMPILED) + ELSE(${invert} MATCHES INVERT) + IF(${var}_COMPILED) + SET(${var} 1) + ELSE(${var}_COMPILED) + SET(${var} 0) + ENDIF(${var}_COMPILED) + ENDIF(${invert} MATCHES INVERT) +ENDMACRO(KWSYS_PLATFORM_CXX_TEST) diff --git a/Source/kwsys/kwsysPlatformCxxTests.cxx b/Source/kwsys/kwsysPlatformCxxTests.cxx new file mode 100644 index 000000000..b2c016b09 --- /dev/null +++ b/Source/kwsys/kwsysPlatformCxxTests.cxx @@ -0,0 +1,31 @@ +#ifdef TEST_KWSYS_STL_HAVE_STD +#include +void f(std::list*) {} +int main() { return 0; } +#endif + +#ifdef TEST_KWSYS_IOS_HAVE_ANSI +#include +int main() { return 0; } +#endif + +#ifdef TEST_KWSYS_IOS_HAVE_STD +#include +void f(std::ostream*) {} +int main() { return 0; } +#endif + +#ifdef TEST_KWSYS_IOS_HAVE_SSTREAM +#include +int main() { return 0; } +#endif + +#ifdef TEST_KWSYS_IOS_HAVE_STRSTREAM_H +#include +int main() { return 0; } +#endif + +#ifdef TEST_KWSYS_IOS_HAVE_STRSTREA_H +#include +int main() { return 0; } +#endif diff --git a/Source/kwsys/kwsys_ios_fstream.h.in b/Source/kwsys/kwsys_ios_fstream.h.in new file mode 100644 index 000000000..f97e619b3 --- /dev/null +++ b/Source/kwsys/kwsys_ios_fstream.h.in @@ -0,0 +1,47 @@ +/*========================================================================= + + Program: KWSys - Kitware System Library + Module: $RCSfile$ + + Copyright (c) Kitware, Inc., Insight Consortium. 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 notices for more information. + +=========================================================================*/ +#ifndef @KWSYS_NAMESPACE@_ios_fstream +#define @KWSYS_NAMESPACE@_ios_fstream + +#include <@KWSYS_NAMESPACE@/Configure.hxx> + +#ifdef _MSC_VER +#pragma warning (push, 1) +#pragma warning (disable: 4702) +#endif + +#if @KWSYS_NAMESPACE@_IOS_HAVE_ANSI +# include +#else +# include +#endif + +#if !@KWSYS_NAMESPACE@_IOS_HAVE_SSTREAM +namespace @KWSYS_NAMESPACE@_ios +{ + using @KWSYS_NAMESPACE@_ios_namespace::ostream; + using @KWSYS_NAMESPACE@_ios_namespace::istream; + using @KWSYS_NAMESPACE@_ios_namespace::ofstream; + using @KWSYS_NAMESPACE@_ios_namespace::ifstream; + using @KWSYS_NAMESPACE@_ios_namespace::ios; + using @KWSYS_NAMESPACE@_ios_namespace::endl; + using @KWSYS_NAMESPACE@_ios_namespace::flush; +} +#endif + +#ifdef _MSC_VER +#pragma warning(pop) +#endif + +#endif diff --git a/Source/kwsys/kwsys_ios_iosfwd.h.in b/Source/kwsys/kwsys_ios_iosfwd.h.in new file mode 100644 index 000000000..ec0a939a8 --- /dev/null +++ b/Source/kwsys/kwsys_ios_iosfwd.h.in @@ -0,0 +1,51 @@ +/*========================================================================= + + Program: KWSys - Kitware System Library + Module: $RCSfile$ + + Copyright (c) Kitware, Inc., Insight Consortium. 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 notices for more information. + +=========================================================================*/ +#ifndef @KWSYS_NAMESPACE@_ios_iosfwd +#define @KWSYS_NAMESPACE@_ios_iosfwd + +#include <@KWSYS_NAMESPACE@/Configure.hxx> + +#ifdef _MSC_VER +#pragma warning (push, 1) +#pragma warning (disable: 4702) +#endif + +#if @KWSYS_NAMESPACE@_IOS_HAVE_ANSI +# include +#else +class fstream; +class ifstream; +class ios; +class istream; +class ofstream; +class ostream; +#endif + +#if !@KWSYS_NAMESPACE@_IOS_HAVE_SSTREAM +namespace @KWSYS_NAMESPACE@_ios +{ + using @KWSYS_NAMESPACE@_ios_namespace::fstream; + using @KWSYS_NAMESPACE@_ios_namespace::ifstream; + using @KWSYS_NAMESPACE@_ios_namespace::ios; + using @KWSYS_NAMESPACE@_ios_namespace::istream; + using @KWSYS_NAMESPACE@_ios_namespace::ofstream; + using @KWSYS_NAMESPACE@_ios_namespace::ostream; +} +#endif + +#ifdef _MSC_VER +#pragma warning(pop) +#endif + +#endif diff --git a/Source/kwsys/kwsys_ios_iostream.h.in b/Source/kwsys/kwsys_ios_iostream.h.in new file mode 100644 index 000000000..08411cd57 --- /dev/null +++ b/Source/kwsys/kwsys_ios_iostream.h.in @@ -0,0 +1,48 @@ +/*========================================================================= + + Program: KWSys - Kitware System Library + Module: $RCSfile$ + + Copyright (c) Kitware, Inc., Insight Consortium. 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 notices for more information. + +=========================================================================*/ +#ifndef @KWSYS_NAMESPACE@_ios_iostream +#define @KWSYS_NAMESPACE@_ios_iostream + +#include <@KWSYS_NAMESPACE@/Configure.hxx> + +#ifdef _MSC_VER +#pragma warning (push, 1) +#pragma warning (disable: 4702) +#endif + +#if @KWSYS_NAMESPACE@_IOS_HAVE_ANSI +# include +#else +# include +#endif + +#if !@KWSYS_NAMESPACE@_IOS_HAVE_SSTREAM +namespace @KWSYS_NAMESPACE@_ios +{ + using @KWSYS_NAMESPACE@_ios_namespace::ostream; + using @KWSYS_NAMESPACE@_ios_namespace::istream; + using @KWSYS_NAMESPACE@_ios_namespace::ios; + using @KWSYS_NAMESPACE@_ios_namespace::cout; + using @KWSYS_NAMESPACE@_ios_namespace::cerr; + using @KWSYS_NAMESPACE@_ios_namespace::cin; + using @KWSYS_NAMESPACE@_ios_namespace::endl; + using @KWSYS_NAMESPACE@_ios_namespace::flush; +} +#endif + +#ifdef _MSC_VER +#pragma warning(pop) +#endif + +#endif diff --git a/Source/kwsys/kwsys_ios_sstream.h.in b/Source/kwsys/kwsys_ios_sstream.h.in new file mode 100644 index 000000000..876259d95 --- /dev/null +++ b/Source/kwsys/kwsys_ios_sstream.h.in @@ -0,0 +1,122 @@ +/*========================================================================= + + Program: KWSys - Kitware System Library + Module: $RCSfile$ + + Copyright (c) Kitware, Inc., Insight Consortium. 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 notices for more information. + +=========================================================================*/ +#ifndef @KWSYS_NAMESPACE@_ios_sstream +#define @KWSYS_NAMESPACE@_ios_sstream + +#include <@KWSYS_NAMESPACE@/Configure.hxx> + +/* Define this macro temporarily to keep the code readable. */ +#if !defined (KWSYS_NAMESPACE) && !@KWSYS_NAMESPACE@_NAME_IS_KWSYS +# define kwsys_stl @KWSYS_NAMESPACE@_stl +#endif + +#if @KWSYS_NAMESPACE@_IOS_HAVE_SSTREAM +# ifdef _MSC_VER +# pragma warning (push, 1) +# pragma warning (disable: 4702) +# endif +# include +# ifdef _MSC_VER +# pragma warning(pop) +# endif +#else +# ifdef _MSC_VER +# pragma warning (push, 1) +# pragma warning (disable: 4702) +# endif +# if @KWSYS_NAMESPACE@_IOS_HAVE_ANSI +# include +# elif @KWSYS_NAMESPACE@_IOS_HAVE_STRSTREAM_H +# include +# elif @KWSYS_NAMESPACE@_IOS_HAVE_STRSTREA_H +# include +# 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@/stl/string> + +namespace @KWSYS_NAMESPACE@_ios +{ +using @KWSYS_NAMESPACE@_ios_namespace::ostream; +using @KWSYS_NAMESPACE@_ios_namespace::istream; +using @KWSYS_NAMESPACE@_ios_namespace::istrstream; +using @KWSYS_NAMESPACE@_ios_namespace::ostrstream; +using @KWSYS_NAMESPACE@_ios_namespace::ios; +using @KWSYS_NAMESPACE@_ios_namespace::endl; +using @KWSYS_NAMESPACE@_ios_namespace::ends; +using @KWSYS_NAMESPACE@_ios_namespace::flush; + +class ostringstream_cleanup +{ +public: + ostringstream_cleanup(ostrstream& ostr): m_OStrStream(ostr) {} + ~ostringstream_cleanup() { m_OStrStream.rdbuf()->freeze(0); } + static void IgnoreUnusedVariable(const ostringstream_cleanup&) {} +protected: + ostrstream& m_OStrStream; +}; + +class ostringstream: public ostrstream +{ +public: + typedef ostrstream Superclass; + ostringstream() {} + kwsys_stl::string str() + { + ostringstream_cleanup cleanup(*this); + ostringstream_cleanup::IgnoreUnusedVariable(cleanup); + int pcount = this->pcount(); + const char* ptr = this->Superclass::str(); + return kwsys_stl::string(ptr?ptr:"", pcount); + } +private: + ostringstream(const ostringstream&); + void operator=(const ostringstream&); +}; + +class istringstream: private kwsys_stl::string, public istrstream +{ +public: + typedef kwsys_stl::string StdString; + typedef istrstream IStrStream; + istringstream(): StdString(), + IStrStream(const_cast(StdString::c_str())) {} + istringstream(const kwsys_stl::string& s): + StdString(s), IStrStream(const_cast(StdString::c_str())) {} + kwsys_stl::string str() const { return *this; } + void str(const kwsys_stl::string& s) + { + this->~istringstream(); + new (this) istringstream(s); + } +private: + istringstream(const istringstream&); + void operator=(const istringstream&); +}; + +} // namespace @KWSYS_NAMESPACE@_ios + +#endif + +/* Undefine temporary macro. */ +#if !defined (KWSYS_NAMESPACE) && !@KWSYS_NAMESPACE@_NAME_IS_KWSYS +# undef kwsys_stl +#endif + +#endif diff --git a/Source/kwsys/kwsys_std.h.in b/Source/kwsys/kwsys_std.h.in index f98e9e9c6..87e266be3 100644 --- a/Source/kwsys/kwsys_std.h.in +++ b/Source/kwsys/kwsys_std.h.in @@ -1,31 +1 @@ -/*========================================================================= - - Program: KWSys - Kitware System Library - Module: $RCSfile$ - - Copyright (c) Kitware, Inc., Insight Consortium. 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 notices for more information. - -=========================================================================*/ -#ifndef @KWSYS_NAMESPACE@_std_@KWSYS_STL_HEADER@ -#define @KWSYS_NAMESPACE@_std_@KWSYS_STL_HEADER@ - -#include <@KWSYS_NAMESPACE@/Configure.hxx> - -#ifdef _MSC_VER -# pragma warning (push, 1) -# pragma warning (disable: 4702) -# pragma warning (disable: 4786) -#endif - -#include <@KWSYS_STL_HEADER@> - -#ifdef _MSC_VER -# pragma warning(pop) -#endif - -#endif +/* Empty until make dependencies are updated. */ diff --git a/Source/kwsys/kwsys_std_fstream.h.in b/Source/kwsys/kwsys_std_fstream.h.in index e3eec8a37..87e266be3 100644 --- a/Source/kwsys/kwsys_std_fstream.h.in +++ b/Source/kwsys/kwsys_std_fstream.h.in @@ -1,46 +1 @@ -/*========================================================================= - - Program: KWSys - Kitware System Library - Module: $RCSfile$ - - Copyright (c) Kitware, Inc., Insight Consortium. 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 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_NAMESPACE@_NO_ANSI_STREAM_HEADERS) -# include -#else -# include -# if !defined(@KWSYS_NAMESPACE@_NO_STD_NAMESPACE) && !defined(@KWSYS_NAMESPACE@_FAKE_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 +/* Empty until make dependencies are updated. */ diff --git a/Source/kwsys/kwsys_std_iosfwd.h.in b/Source/kwsys/kwsys_std_iosfwd.h.in index fcca75faa..87e266be3 100644 --- a/Source/kwsys/kwsys_std_iosfwd.h.in +++ b/Source/kwsys/kwsys_std_iosfwd.h.in @@ -1,50 +1 @@ -/*========================================================================= - - Program: KWSys - Kitware System Library - Module: $RCSfile$ - - Copyright (c) Kitware, Inc., Insight Consortium. 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 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_NAMESPACE@_NO_ANSI_STREAM_HEADERS) -# include -#else -class fstream; -class ifstream; -class ios; -class istream; -class ofstream; -class ostream; -# if !defined(@KWSYS_NAMESPACE@_NO_STD_NAMESPACE) && !defined(@KWSYS_NAMESPACE@_FAKE_STD_NAMESPACE) -namespace std -{ - using ::fstream; - using ::ifstream; - using ::ios; - using ::istream; - using ::ofstream; - using ::ostream; -} -# endif -#endif - -#ifdef _MSC_VER -#pragma warning(pop) -#endif - -#endif +/* Empty until make dependencies are updated. */ diff --git a/Source/kwsys/kwsys_std_iostream.h.in b/Source/kwsys/kwsys_std_iostream.h.in index 0ed353101..87e266be3 100644 --- a/Source/kwsys/kwsys_std_iostream.h.in +++ b/Source/kwsys/kwsys_std_iostream.h.in @@ -1,47 +1 @@ -/*========================================================================= - - Program: KWSys - Kitware System Library - Module: $RCSfile$ - - Copyright (c) Kitware, Inc., Insight Consortium. 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 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_NAMESPACE@_NO_ANSI_STREAM_HEADERS) -# include -#else -# include -# if !defined(@KWSYS_NAMESPACE@_NO_STD_NAMESPACE) && !defined(@KWSYS_NAMESPACE@_FAKE_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 +/* Empty until make dependencies are updated. */ diff --git a/Source/kwsys/kwsys_std_sstream.h.in b/Source/kwsys/kwsys_std_sstream.h.in index 165c3b708..87e266be3 100644 --- a/Source/kwsys/kwsys_std_sstream.h.in +++ b/Source/kwsys/kwsys_std_sstream.h.in @@ -1,130 +1 @@ -/*========================================================================= - - Program: KWSys - Kitware System Library - Module: $RCSfile$ - - Copyright (c) Kitware, Inc., Insight Consortium. 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 notices for more information. - -=========================================================================*/ -#ifndef @KWSYS_NAMESPACE@_std_sstream -#define @KWSYS_NAMESPACE@_std_sstream - -#include <@KWSYS_NAMESPACE@/Configure.hxx> - -/* Define this macro temporarily to keep the code readable. */ -#if !defined (KWSYS_NAMESPACE) && !defined(@KWSYS_NAMESPACE@_NAME_IS_KWSYS) -# define kwsys_std @KWSYS_NAMESPACE@_std -#endif - -#if !defined(@KWSYS_NAMESPACE@_NO_ANSI_STRING_STREAM) -# ifdef _MSC_VER -# pragma warning (push, 1) -# pragma warning (disable: 4702) -# endif -# include -# ifdef _MSC_VER -# pragma warning(pop) -# endif -#else -# ifdef _MSC_VER -# pragma warning (push, 1) -# pragma warning (disable: 4702) -# endif -# if !defined(@KWSYS_NAMESPACE@_NO_ANSI_STREAM_HEADERS) -# include -# else -# include -# if !defined(@KWSYS_NAMESPACE@_NO_STD_NAMESPACE) && !defined(@KWSYS_NAMESPACE@_FAKE_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_NAMESPACE@_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_NAMESPACE@_NO_STD_NAMESPACE) -} -# endif - -#endif - -/* Undefine temporary macro. */ -#if !defined (KWSYS_NAMESPACE) && !defined(@KWSYS_NAMESPACE@_NAME_IS_KWSYS) -# undef kwsys_std -#endif - -#endif +/* Empty until make dependencies are updated. */ diff --git a/Source/kwsys/kwsys_stl.h.in b/Source/kwsys/kwsys_stl.h.in new file mode 100644 index 000000000..893ce466d --- /dev/null +++ b/Source/kwsys/kwsys_stl.h.in @@ -0,0 +1,31 @@ +/*========================================================================= + + Program: KWSys - Kitware System Library + Module: $RCSfile$ + + Copyright (c) Kitware, Inc., Insight Consortium. 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 notices for more information. + +=========================================================================*/ +#ifndef @KWSYS_NAMESPACE@_stl_@KWSYS_STL_HEADER@ +#define @KWSYS_NAMESPACE@_stl_@KWSYS_STL_HEADER@ + +#include <@KWSYS_NAMESPACE@/Configure.hxx> + +#ifdef _MSC_VER +# pragma warning (push, 1) +# pragma warning (disable: 4702) +# pragma warning (disable: 4786) +#endif + +#include <@KWSYS_STL_HEADER@> + +#ifdef _MSC_VER +# pragma warning(pop) +#endif + +#endif diff --git a/Source/kwsys/test1.cxx b/Source/kwsys/test1.cxx index bd42ffb0d..4c1def5cd 100644 --- a/Source/kwsys/test1.cxx +++ b/Source/kwsys/test1.cxx @@ -13,7 +13,7 @@ =========================================================================*/ #include #include -#include +#include int main() { @@ -26,9 +26,9 @@ int main() int length = 0; while(kwsysProcess_WaitForData(kp, &data, &length, 0)) { - kwsys_std::cout.write(data, length); + kwsys_ios::cout.write(data, length); } kwsysProcess_Delete(kp); - kwsys_std::cout << kwsys_std::endl; + kwsys_ios::cout << kwsys_ios::endl; return 0; } diff --git a/Source/kwsys/testIOS.cxx b/Source/kwsys/testIOS.cxx new file mode 100644 index 000000000..f1441f6a6 --- /dev/null +++ b/Source/kwsys/testIOS.cxx @@ -0,0 +1,11 @@ +#include +#include +#include + +int main() +{ + kwsys_ios::ostringstream ostr; + ostr << "Hello, World!"; + kwsys_ios::cout << ostr.str() << kwsys_ios::endl; + return 0; +}