| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 |
- /*
- 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;
- }
|