bullet3/examples/ThirdPartyLibs/Gwen/Utility.cpp
erwincoumans ab8f16961e Code-style consistency improvement:
Apply clang-format-all.sh using the _clang-format file through all the cpp/.h files.
make sure not to apply it to certain serialization structures, since some parser expects the * as part of the name, instead of type.
This commit contains no other changes aside from adding and applying clang-format-all.sh
2018-09-23 14:17:31 -07:00

101 lines
2.3 KiB
C++

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