123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111 |
- /*
- 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[ 4096 ];
- 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;
- }
|