diff options
author | Jean-Francois Mauguit <jfmauguit@mac.com> | 2024-09-24 09:03:25 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-09-24 09:03:25 -0400 |
commit | bab614c421ed7ae329d26bf028c4a3b1d2450f5a (patch) | |
tree | 12f17f78986871dd2cfb0a56e5e93b545c1ae0d0 /Src/external_dependencies/openmpt-trunk/common/mptStringParse.cpp | |
parent | 4bde6044fddf053f31795b9eaccdd2a5a527d21f (diff) | |
parent | 20d28e80a5c861a9d5f449ea911ab75b4f37ad0d (diff) | |
download | winamp-bab614c421ed7ae329d26bf028c4a3b1d2450f5a.tar.gz |
Merge pull request #5 from WinampDesktop/community
Merge to main
Diffstat (limited to 'Src/external_dependencies/openmpt-trunk/common/mptStringParse.cpp')
-rw-r--r-- | Src/external_dependencies/openmpt-trunk/common/mptStringParse.cpp | 98 |
1 files changed, 98 insertions, 0 deletions
diff --git a/Src/external_dependencies/openmpt-trunk/common/mptStringParse.cpp b/Src/external_dependencies/openmpt-trunk/common/mptStringParse.cpp new file mode 100644 index 00000000..a4306f32 --- /dev/null +++ b/Src/external_dependencies/openmpt-trunk/common/mptStringParse.cpp @@ -0,0 +1,98 @@ +/* + * mptStringParse.cpp + * ------------------ + * Purpose: Convert strings to other types. + * Notes : (currently none) + * Authors: OpenMPT Devs + * The OpenMPT source code is released under the BSD license. Read LICENSE for more details. + */ + + +#include "stdafx.h" +#include "mptStringParse.h" + +#include "mpt/parse/parse.hpp" + + +OPENMPT_NAMESPACE_BEGIN + + +template<typename T> +inline T ConvertStrToHelper(const std::string &str) +{ + return mpt::ConvertStringTo<T>(str); +} +template<> inline bool ConvertStrToHelper(const std::string &str) { return ConvertStrToHelper<int>(str)?true:false; } +template<> inline signed char ConvertStrToHelper(const std::string &str) { return static_cast<signed char>(ConvertStrToHelper<signed int>(str)); } +template<> inline unsigned char ConvertStrToHelper(const std::string &str) { return static_cast<unsigned char>(ConvertStrToHelper<unsigned int>(str)); } + +#if MPT_WSTRING_FORMAT +template<typename T> +inline T ConvertStrToHelper(const std::wstring &str) +{ + return mpt::ConvertStringTo<T>(str); +} +template<> inline bool ConvertStrToHelper(const std::wstring &str) { return ConvertStrToHelper<int>(str)?true:false; } +template<> inline signed char ConvertStrToHelper(const std::wstring &str) { return static_cast<signed char>(ConvertStrToHelper<signed int>(str)); } +template<> inline unsigned char ConvertStrToHelper(const std::wstring &str) { return static_cast<unsigned char>(ConvertStrToHelper<unsigned int>(str)); } +#endif + +bool ConvertStrToBool(const std::string &str) { return ConvertStrToHelper<bool>(str); } +signed char ConvertStrToSignedChar(const std::string &str) { return ConvertStrToHelper<signed char>(str); } +unsigned char ConvertStrToUnsignedChar(const std::string &str) { return ConvertStrToHelper<unsigned char>(str); } +signed short ConvertStrToSignedShort(const std::string &str) { return ConvertStrToHelper<signed short>(str); } +unsigned short ConvertStrToUnsignedShort(const std::string &str) { return ConvertStrToHelper<unsigned short>(str); } +signed int ConvertStrToSignedInt(const std::string &str) { return ConvertStrToHelper<signed int>(str); } +unsigned int ConvertStrToUnsignedInt(const std::string &str) { return ConvertStrToHelper<unsigned int>(str); } +signed long ConvertStrToSignedLong(const std::string &str) { return ConvertStrToHelper<signed long>(str); } +unsigned long ConvertStrToUnsignedLong(const std::string &str) { return ConvertStrToHelper<unsigned long>(str); } +signed long long ConvertStrToSignedLongLong(const std::string &str) { return ConvertStrToHelper<signed long long>(str); } +unsigned long long ConvertStrToUnsignedLongLong(const std::string &str) { return ConvertStrToHelper<unsigned long long>(str); } +float ConvertStrToFloat(const std::string &str) { return ConvertStrToHelper<float>(str); } +double ConvertStrToDouble(const std::string &str) { return ConvertStrToHelper<double>(str); } +long double ConvertStrToLongDouble(const std::string &str) { return ConvertStrToHelper<long double>(str); } + +#if MPT_WSTRING_FORMAT +bool ConvertStrToBool(const std::wstring &str) { return ConvertStrToHelper<bool>(str); } +signed char ConvertStrToSignedChar(const std::wstring &str) { return ConvertStrToHelper<signed char>(str); } +unsigned char ConvertStrToUnsignedChar(const std::wstring &str) { return ConvertStrToHelper<unsigned char>(str); } +signed short ConvertStrToSignedShort(const std::wstring &str) { return ConvertStrToHelper<signed short>(str); } +unsigned short ConvertStrToUnsignedShort(const std::wstring &str) { return ConvertStrToHelper<unsigned short>(str); } +signed int ConvertStrToSignedInt(const std::wstring &str) { return ConvertStrToHelper<signed int>(str); } +unsigned int ConvertStrToUnsignedInt(const std::wstring &str) { return ConvertStrToHelper<unsigned int>(str); } +signed long ConvertStrToSignedLong(const std::wstring &str) { return ConvertStrToHelper<signed long>(str); } +unsigned long ConvertStrToUnsignedLong(const std::wstring &str) { return ConvertStrToHelper<unsigned long>(str); } +signed long long ConvertStrToSignedLongLong(const std::wstring &str) { return ConvertStrToHelper<signed long long>(str); } +unsigned long long ConvertStrToUnsignedLongLong(const std::wstring &str) { return ConvertStrToHelper<unsigned long long>(str); } +float ConvertStrToFloat(const std::wstring &str) { return ConvertStrToHelper<float>(str); } +double ConvertStrToDouble(const std::wstring &str) { return ConvertStrToHelper<double>(str); } +long double ConvertStrToLongDouble(const std::wstring &str) { return ConvertStrToHelper<long double>(str); } +#endif + + +namespace mpt +{ +namespace String +{ +namespace Parse +{ + +template<typename T> +T HexToHelper(const std::string &str) +{ + return mpt::ConvertHexStringTo<T>(str); +} +template<> unsigned char HexToHelper(const std::string &str) { return static_cast<unsigned char>(HexToHelper<unsigned int>(str)); } + +unsigned char HexToUnsignedChar(const std::string &str) { return HexToHelper<unsigned char>(str); } +unsigned short HexToUnsignedShort(const std::string &str) { return HexToHelper<unsigned short>(str); } +unsigned int HexToUnsignedInt(const std::string &str) { return HexToHelper<unsigned int>(str); } +unsigned long HexToUnsignedLong(const std::string &str) { return HexToHelper<unsigned long>(str); } +unsigned long long HexToUnsignedLongLong(const std::string &str) { return HexToHelper<unsigned long long>(str); } + +} // namespace Parse +} // namespace String +} // namespace mpt + + +OPENMPT_NAMESPACE_END |