mirror of
https://github.com/Kitware/CMake.git
synced 2026-01-26 16:39:44 -06:00
* upstream-KWSys: KWSys 2017-03-24 (7e9f7b7b) Resolve conflicts in `.gitattributes` by integrating changes from both sides. Keep the `our-c-style` attribute that KWSys uses, but drop their definition of it in favor of ours (Git only allows custom attributes in the top level anyway). Then add our own attribute line to unset the `format.clang-format` attribute for KWSys sources since we do not want to format third-party code ourselves.
68 lines
2.1 KiB
C++
68 lines
2.1 KiB
C++
/* Distributed under the OSI-approved BSD 3-Clause License. See accompanying
|
|
file Copyright.txt or https://cmake.org/licensing#kwsys for details. */
|
|
#ifndef @KWSYS_NAMESPACE@_Encoding_hxx
|
|
#define @KWSYS_NAMESPACE@_Encoding_hxx
|
|
|
|
#include <@KWSYS_NAMESPACE@/Configure.hxx>
|
|
|
|
#include <string>
|
|
#include <vector>
|
|
|
|
namespace @KWSYS_NAMESPACE@ {
|
|
class @KWSYS_NAMESPACE@_EXPORT Encoding
|
|
{
|
|
public:
|
|
// Container class for argc/argv.
|
|
class @KWSYS_NAMESPACE@_EXPORT 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<char*> 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
|