/*============================================================================ KWSys - Kitware System Library Copyright 2000-2009 Kitware, Inc., Insight Software Consortium Distributed under the OSI-approved BSD License (the "License"); see accompanying file Copyright.txt for details. This software is distributed WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the License for more information. ============================================================================*/ #ifndef @KWSYS_NAMESPACE@_Encoding_hxx #define @KWSYS_NAMESPACE@_Encoding_hxx #include <@KWSYS_NAMESPACE@/Configure.hxx> #include #include namespace @KWSYS_NAMESPACE@ { class @KWSYS_NAMESPACE@_EXPORT Encoding { public: // Container class for argc/argv. class CommandLineArguments { public: // On Windows, get the program command line arguments // in this Encoding module's 8 bit encoding. // On other platforms the given argc/argv is used, and // to be consistent, should be the argc/argv from main(). static CommandLineArguments Main(int argc, char const* const* argv); // Construct CommandLineArguments with the given // argc/argv. It is assumed that the string is already // in the encoding used by this module. CommandLineArguments(int argc, char const* const* argv); // Construct CommandLineArguments with the given // argc and wide argv. This is useful if wmain() is used. CommandLineArguments(int argc, wchar_t const* const* argv); ~CommandLineArguments(); CommandLineArguments(const CommandLineArguments&); CommandLineArguments& operator=(const CommandLineArguments&); int argc() const; char const* const* argv() const; protected: std::vector argv_; }; /** * Convert between char and wchar_t */ #if @KWSYS_NAMESPACE@_STL_HAS_WSTRING // Convert a narrow string to a wide string. // On Windows, UTF-8 is assumed, and on other platforms, // the current locale is assumed. static std::wstring ToWide(const std::string& str); static std::wstring ToWide(const char* str); // Convert a wide string to a narrow string. // On Windows, UTF-8 is assumed, and on other platforms, // the current locale is assumed. static std::string ToNarrow(const std::wstring& str); static std::string ToNarrow(const wchar_t* str); #endif // @KWSYS_NAMESPACE@_STL_HAS_WSTRING }; // class Encoding } // namespace @KWSYS_NAMESPACE@ #endif