/* GWEN Copyright (c) 2010 Facepunch Studios See license in Gwen.h */ #include "Gwen/ToolTip.h" #include "Gwen/Utility.h" using namespace Gwen; #ifdef _MSC_VER #pragma warning(disable : 4267) // conversion from 'size_t' to 'int', possible loss of data #endif UnicodeString Gwen::Utility::Format(const wchar_t* fmt, ...) { wchar_t strOut[2048]; va_list s; va_start(s, fmt); GwenUtil_VSWPrintFSafeSized(strOut, fmt, s); va_end(s); UnicodeString str = strOut; return str; } void Gwen::Utility::Strings::Split(const Gwen::String& str, const Gwen::String& seperator, Strings::List& outbits, bool bLeave) { int iOffset = 0; int iLength = str.length(); int iSepLen = seperator.length(); size_t i = str.find(seperator, 0); while (i != std::string::npos) { outbits.push_back(str.substr(iOffset, i - iOffset)); iOffset = i + iSepLen; i = str.find(seperator, iOffset); if (bLeave) iOffset -= iSepLen; } outbits.push_back(str.substr(iOffset, iLength - iOffset)); } void Gwen::Utility::Strings::Split(const Gwen::UnicodeString& str, const Gwen::UnicodeString& seperator, Strings::UnicodeList& outbits, bool bLeave) { int iOffset = 0; int iLength = str.length(); int iSepLen = seperator.length(); size_t i = str.find(seperator, 0); while (i != std::wstring::npos) { outbits.push_back(str.substr(iOffset, i - iOffset)); iOffset = i + iSepLen; i = str.find(seperator, iOffset); if (bLeave) iOffset -= iSepLen; } outbits.push_back(str.substr(iOffset, iLength - iOffset)); } int Gwen::Utility::Strings::To::Int(const Gwen::String& str) { if (str == "") return 0; return atoi(str.c_str()); } float Gwen::Utility::Strings::To::Float(const Gwen::String& str) { if (str == "") return 0.0f; return (float)atof(str.c_str()); } bool Gwen::Utility::Strings::To::Bool(const Gwen::String& str) { if (str.size() == 0) return false; if (str[0] == 'T' || str[0] == 't' || str[0] == 'y' || str[0] == 'Y') return true; if (str[0] == 'F' || str[0] == 'f' || str[0] == 'n' || str[0] == 'N') return false; if (str[0] == '0') return false; return true; } bool Gwen::Utility::Strings::To::Floats(const Gwen::String& str, float* f, size_t iCount) { Strings::List lst; Strings::Split(str, " ", lst); if (lst.size() != iCount) return false; for (size_t i = 0; i < iCount; i++) { f[i] = Strings::To::Float(lst[i]); } return true; }