aboutsummaryrefslogtreecommitdiff
path: root/Src/WAT/wa_strings.cpp
diff options
context:
space:
mode:
authorJef <jef@targetspot.com>2024-09-24 08:54:57 -0400
committerJef <jef@targetspot.com>2024-09-24 08:54:57 -0400
commit20d28e80a5c861a9d5f449ea911ab75b4f37ad0d (patch)
tree12f17f78986871dd2cfb0a56e5e93b545c1ae0d0 /Src/WAT/wa_strings.cpp
parent537bcbc86291b32fc04ae4133ce4d7cac8ebe9a7 (diff)
downloadwinamp-20d28e80a5c861a9d5f449ea911ab75b4f37ad0d.tar.gz
Initial community commit
Diffstat (limited to 'Src/WAT/wa_strings.cpp')
-rw-r--r--Src/WAT/wa_strings.cpp709
1 files changed, 709 insertions, 0 deletions
diff --git a/Src/WAT/wa_strings.cpp b/Src/WAT/wa_strings.cpp
new file mode 100644
index 00000000..dedc6316
--- /dev/null
+++ b/Src/WAT/wa_strings.cpp
@@ -0,0 +1,709 @@
+#include "WAT.h"
+
+//
+// to const char*
+//
+const char *wa::strings::convert::to_char( const wchar_t *p_message )
+{
+ std::wstring l_message_w( p_message );
+ std::string l_message( l_message_w.begin(), l_message_w.end() );
+
+ return _strdup( l_message.c_str() );
+}
+
+const char *wa::strings::convert::to_char( const std::wstring p_message )
+{
+ std::string l_message = wa::strings::convert::to_string( p_message );
+
+ return _strdup( l_message.c_str() );
+}
+
+
+//
+// to const wchar_t*
+//
+const wchar_t *wa::strings::convert::to_wchar( const char *p_message )
+{
+ std::string l_message( p_message );
+ std::wstring l_message_w( l_message.begin(), l_message.end() );
+
+ return _wcsdup( l_message_w.c_str() );
+}
+
+
+//
+// to std::string
+//
+std::string wa::strings::convert::to_string( const char *p_message )
+{
+ std::string l_message( p_message );
+
+ return l_message;
+}
+
+std::string wa::strings::convert::to_string( const wchar_t *p_message )
+{
+ std::wstring l_message_w( p_message );
+ std::string l_message( l_message_w.begin(), l_message_w.end() );
+
+ return l_message;
+}
+
+std::string wa::strings::convert::to_string( const std::wstring p_message )
+{
+ std::string l_message( p_message.begin(), p_message.end() );
+
+ return l_message;
+}
+
+
+//
+// to std::wstring
+//
+std::wstring wa::strings::convert::to_wstring( const char *p_message )
+{
+ std::string l_message_w( p_message );
+ std::wstring l_message( l_message_w.begin(), l_message_w.end() );
+
+ return l_message;
+}
+
+std::wstring wa::strings::convert::to_wstring( const wchar_t *p_message )
+{
+ std::wstring l_message( p_message );
+
+ return l_message;
+}
+
+std::wstring wa::strings::convert::to_wstring( const std::string p_message )
+{
+ std::wstring l_message( p_message.begin(), p_message.end() );
+
+ return l_message;
+}
+
+
+//
+// replace
+//
+void wa::strings::replace( std::string &p_string, const std::string &p_from, const std::string &p_to )
+{
+ if ( p_from.empty() )
+ return;
+
+ size_t start_pos = p_string.find( p_from );
+
+ if ( start_pos == std::string::npos )
+ return;
+
+ p_string.replace( start_pos, p_from.length(), p_to );
+
+ return;
+}
+
+void wa::strings::replace( char *p_string, const char *p_from, const char *p_to )
+{
+ std::string l_string( p_string );
+
+ wa::strings::replace( l_string, std::string( p_from ), std::string( p_to ) );
+
+ p_string = (char *)l_string.c_str();
+}
+
+void wa::strings::replace( wchar_t *p_string, const wchar_t *p_from, const wchar_t *p_to )
+{
+ std::string l_string = wa::strings::convert::to_string( p_string );
+
+ wa::strings::replace( l_string, wa::strings::convert::to_string( p_from ), wa::strings::convert::to_string( p_to ) );
+
+ std::wstring l_wstring = wa::strings::convert::to_wstring( l_string );
+
+ p_string = (wchar_t *)( l_wstring.c_str() );
+}
+
+
+//
+// replaceAll
+//
+void wa::strings::replaceAll( std::string &p_string, const std::string &p_from, const std::string &p_to )
+{
+ if ( p_from.empty() )
+ return;
+
+ size_t start_pos = 0;
+ while ( ( start_pos = p_string.find( p_from, start_pos ) ) != std::string::npos )
+ {
+ p_string.replace( start_pos, p_from.length(), p_to );
+ start_pos += p_to.length(); // In case 'p_to' contains 'p_from', like replacing 'x' with 'yx'
+ }
+}
+
+void wa::strings::replaceAll( char *p_string, const char *p_from, const char *p_to )
+{
+ std::string l_string( p_string );
+
+ wa::strings::replaceAll( l_string, std::string( p_from ), std::string( p_to ) );
+
+ p_string = (char *)l_string.c_str();
+}
+
+void wa::strings::replaceAll( wchar_t *p_string, const wchar_t *p_from, const wchar_t *p_to )
+{
+ std::string l_string = wa::strings::convert::to_string( p_string );
+
+ wa::strings::replaceAll( l_string, wa::strings::convert::to_string( p_from ), wa::strings::convert::to_string( p_to ) );
+
+ std::wstring l_wstring = wa::strings::convert::to_wstring( l_string );
+
+ p_string = (wchar_t *)( l_wstring.c_str() );
+}
+
+
+//
+// create_string
+//
+
+std::string wa::strings::create_string( const char *Format, ... )
+{
+ char _log_message_a[ DEFAULT_STR_BUFFER_SIZE ];
+ va_list args;
+ va_start( args, Format );
+ snprintf( _log_message_a, DEFAULT_STR_BUFFER_SIZE, Format, args );
+
+ return std::string( _log_message_a );
+}
+
+std::string wa::strings::create_string( const wchar_t *Format, ... )
+{
+ wchar_t _log_message_w[ DEFAULT_STR_BUFFER_SIZE ];
+ va_list args;
+ va_start( args, Format );
+ _vsnwprintf( _log_message_w, DEFAULT_STR_BUFFER_SIZE, Format, args );
+
+ return wa::strings::convert::to_string( _log_message_w );
+}
+
+std::string wa::strings::create_string( const std::string Format, ... )
+{
+ va_list args;
+ va_start( args, Format );
+
+ return create_string( Format.c_str(), args );
+}
+
+
+
+
+
+
+//=====================================================================================================================
+//
+// wa_string::wa_string (constructor)
+//
+wa::strings::wa_string::wa_string( const char *p_initial )
+{
+ if ( p_initial == NULL )
+ _wa_string.clear();
+ else
+ _wa_string = wa::strings::convert::to_wstring( p_initial );
+}
+
+wa::strings::wa_string::wa_string( const wchar_t *p_initial )
+{
+ if ( p_initial == NULL )
+ _wa_string.clear();
+ else
+ _wa_string = std::wstring( p_initial );
+}
+
+wa::strings::wa_string::wa_string( const std::string &p_initial )
+{
+ _wa_string = wa::strings::convert::to_wstring( p_initial );
+}
+
+wa::strings::wa_string::wa_string( const std::wstring &p_initial )
+{
+ _wa_string = p_initial;
+}
+
+
+//
+// wa_string::operator=
+//
+void wa::strings::wa_string::operator=( const char *p_value )
+{
+ _wa_string = wa::strings::convert::to_wstring( p_value );
+}
+
+void wa::strings::wa_string::operator=( const wchar_t *p_value )
+{
+ _wa_string = std::wstring( p_value );
+}
+
+void wa::strings::wa_string::operator=( const std::string &p_value )
+{
+ _wa_string = wa::strings::convert::to_wstring( p_value );
+}
+
+void wa::strings::wa_string::operator=( const std::wstring &p_value )
+{
+ _wa_string = p_value;
+}
+
+
+//
+// wa_string::operator==
+//
+bool wa::strings::wa_string::operator==( const char *p_value ) const
+{
+ std::string l_wa_string( wa::strings::convert::to_string( _wa_string ) );
+
+ return l_wa_string.compare( p_value ) == 0;
+}
+
+bool wa::strings::wa_string::operator==( const wchar_t *p_value ) const
+{
+ return _wa_string.compare( p_value ) == 0;
+}
+
+bool wa::strings::wa_string::operator==( const std::string &p_value ) const
+{
+ std::string l_wa_string( wa::strings::convert::to_string( _wa_string ) );
+
+ return l_wa_string.compare( p_value ) == 0;
+}
+
+bool wa::strings::wa_string::operator==( const std::wstring &p_value ) const
+{
+ return _wa_string.compare( p_value ) == 0;
+}
+
+
+//
+// wa_string::operator!=
+//
+bool wa::strings::wa_string::operator!=( const char *p_value ) const
+{
+ std::string l_wa_string( wa::strings::convert::to_string( _wa_string ) );
+
+ return l_wa_string.compare( p_value ) != 0;
+}
+
+bool wa::strings::wa_string::operator!=( const wchar_t *p_value ) const
+{
+ return _wa_string.compare( p_value ) != 0;
+}
+
+bool wa::strings::wa_string::operator!=( const std::string &p_value ) const
+{
+ std::string l_wa_string( wa::strings::convert::to_string( _wa_string ) );
+
+ return l_wa_string.compare( p_value ) != 0;
+}
+
+bool wa::strings::wa_string::operator!=( const int p_value ) const
+{
+ return std::to_wstring( p_value ).compare( _wa_string ) != 0;
+}
+
+
+//
+// wa_string::operator+
+//
+wa::strings::wa_string wa::strings::wa_string::operator+( const char *p_value )
+{
+ _wa_string.append( wa::strings::convert::to_wstring( p_value ) );
+
+ return *this;
+}
+
+wa::strings::wa_string wa::strings::wa_string::operator+( const wchar_t *p_value )
+{
+ _wa_string.append( p_value );
+
+ return *this;
+}
+
+wa::strings::wa_string wa::strings::wa_string::operator+( const std::string &p_value )
+{
+ _wa_string.append( wa::strings::convert::to_wstring( p_value ) );
+
+ return *this;
+}
+
+wa::strings::wa_string wa::strings::wa_string::operator+( const std::wstring &p_value )
+{
+ _wa_string.append( p_value );
+
+ return *this;
+}
+
+wa::strings::wa_string wa::strings::wa_string::operator+( const int p_value )
+{
+ append( p_value );
+
+ return *this;
+}
+
+
+//
+// wa_string::append
+//
+wa::strings::wa_string wa::strings::wa_string::append( const char *p_value )
+{
+ _wa_string.append( wa::strings::convert::to_wstring( p_value ) );
+
+ return *this;
+}
+
+wa::strings::wa_string wa::strings::wa_string::append( const wchar_t *p_value )
+{
+ _wa_string.append( p_value );
+
+ return *this;
+}
+
+wa::strings::wa_string wa::strings::wa_string::append( const std::string &p_value )
+{
+ _wa_string.append( wa::strings::convert::to_wstring( p_value ) );
+
+ return *this;
+}
+
+wa::strings::wa_string wa::strings::wa_string::append( const std::wstring &p_value )
+{
+ _wa_string.append( p_value );
+
+ return *this;
+}
+
+wa::strings::wa_string wa::strings::wa_string::append( const wa_string p_value )
+{
+ _wa_string.append(p_value.GetW().c_str());
+
+ return *this;
+}
+
+wa::strings::wa_string wa::strings::wa_string::append( const int p_value )
+{
+#ifdef WIN32
+ // max size is 4294967295 is 10 character
+ wchar_t temp[ 11 ] = { 0 };
+#elif WIN64
+ // maxsize 9223372036854775807 is 19
+ wchar_t temp[ 20 ] = { 0 };
+#endif
+
+ _itow( p_value, temp, 10 );
+ _wa_string.append( temp );
+
+ return *this;
+}
+
+
+// wa_string::GetA
+const std::string wa::strings::wa_string::GetA() const
+{
+ return wa::strings::convert::to_string( _wa_string );
+}
+
+// wa_string::GetW
+const std::wstring wa::strings::wa_string::GetW() const
+{
+ return _wa_string;
+}
+
+
+//
+// wa_string::lengthA
+//
+unsigned int wa::strings::wa_string::lengthA() const
+{
+ return strlen( wa::strings::convert::to_char( _wa_string ) );
+}
+
+unsigned int wa::strings::wa_string::lengthW() const
+{
+ return wcslen( _wa_string.c_str() );
+}
+
+unsigned int wa::strings::wa_string::lengthS() const
+{
+ std::string l_wa_string = wa::strings::convert::to_string( _wa_string );
+
+ return l_wa_string.length();
+}
+
+unsigned int wa::strings::wa_string::lengthWS() const
+{
+ return _wa_string.length();
+}
+
+
+//
+// wa_string::replace
+//
+bool wa::strings::wa_string::contains( const char *p_value )
+{
+ std::string l_value( p_value );
+
+ return this->contains( l_value );
+}
+
+bool wa::strings::wa_string::contains( const wchar_t *p_value )
+{
+ std::string l_value = wa::strings::convert::to_string( p_value );
+
+ return this->contains( l_value );
+}
+
+bool wa::strings::wa_string::contains( const std::string &p_value )
+{
+ std::string l_wa_string = wa::strings::convert::to_string( _wa_string );
+
+ return ( l_wa_string.find( p_value ) != std::string::npos );
+}
+
+bool wa::strings::wa_string::contains( const std::wstring &p_value )
+{
+ std::string l_value = wa::strings::convert::to_string( p_value );
+
+ return this->contains( l_value );
+}
+
+
+//
+// wa_string::replace
+//
+wa::strings::wa_string wa::strings::wa_string::replace( const char *p_from, const char *p_to )
+{
+ std::string l_string = wa::strings::convert::to_string( _wa_string );
+
+ wa::strings::replace( l_string, std::string( p_from ), std::string( p_to ) );
+
+ _wa_string = wa::strings::convert::to_wstring( l_string );
+
+ return *this;
+}
+
+wa::strings::wa_string wa::strings::wa_string::replace( const wchar_t *p_from, const wchar_t *p_to )
+{
+ std::string l_string = wa::strings::convert::to_string( _wa_string );
+
+ wa::strings::replace( l_string, wa::strings::convert::to_string( p_from ), wa::strings::convert::to_string( p_to ) );
+
+ _wa_string = wa::strings::convert::to_wstring( l_string );
+
+ return *this;
+}
+
+wa::strings::wa_string wa::strings::wa_string::replace( const std::string &p_from, const std::string &p_to )
+{
+ std::string l_string = wa::strings::convert::to_string( _wa_string );
+
+ wa::strings::replace( l_string, p_from, p_to );
+
+ _wa_string = wa::strings::convert::to_wstring( l_string );
+
+ return *this;
+}
+
+wa::strings::wa_string wa::strings::wa_string::replace( const std::wstring &p_from, const std::wstring &p_to )
+{
+ std::string l_string = wa::strings::convert::to_string( _wa_string );
+
+ wa::strings::replace( l_string, wa::strings::convert::to_string( p_from), wa::strings::convert::to_string( p_to ) );
+
+ _wa_string = wa::strings::convert::to_wstring( l_string );
+
+ return *this;
+}
+
+
+//
+// wa_string::replaceAll
+//
+wa::strings::wa_string wa::strings::wa_string::replaceAll( const char *p_from, const char *p_to )
+{
+ std::string l_string = wa::strings::convert::to_string( _wa_string );
+
+ wa::strings::replaceAll( l_string, std::string( p_from ), std::string( p_to ) );
+
+ _wa_string = wa::strings::convert::to_wstring( l_string );
+
+ return *this;
+}
+
+wa::strings::wa_string wa::strings::wa_string::replaceAll( const wchar_t *p_from, const wchar_t *p_to )
+{
+ std::string l_string = wa::strings::convert::to_string( _wa_string );
+
+ wa::strings::replaceAll( l_string, wa::strings::convert::to_string( p_from ), wa::strings::convert::to_string( p_to ) );
+
+ _wa_string = wa::strings::convert::to_wstring( l_string );
+
+ return *this;
+}
+
+wa::strings::wa_string wa::strings::wa_string::replaceAll( const std::string &p_from, const std::string &p_to )
+{
+ std::string l_string = wa::strings::convert::to_string( _wa_string );
+
+ wa::strings::replaceAll( l_string, p_from, p_to );
+
+ _wa_string = wa::strings::convert::to_wstring( l_string );
+
+ return *this;
+}
+
+wa::strings::wa_string wa::strings::wa_string::replaceAll( const std::wstring &p_from, const std::wstring &p_to )
+{
+ std::string l_string = wa::strings::convert::to_string( _wa_string );
+
+ wa::strings::replaceAll( l_string, wa::strings::convert::to_string( p_from ), wa::strings::convert::to_string( p_to ) );
+
+ _wa_string = wa::strings::convert::to_wstring( l_string );
+
+ return *this;
+}
+
+
+//
+// wa_string::startsWith
+//
+bool wa::strings::wa_string::startsWith( const char *l_head ) const
+{
+ std::string l_string = wa::strings::convert::to_string( _wa_string );
+
+ return ( l_string.substr( 0, std::strlen( l_head ) ).compare( l_head ) == 0 );
+}
+
+bool wa::strings::wa_string::startsWith( const wchar_t *l_head ) const
+{
+ return ( _wa_string.substr( 0, wcslen( l_head ) ).compare( l_head ) == 0 );
+}
+
+bool wa::strings::wa_string::startsWith( const std::string &l_head ) const
+{
+ std::string l_string = wa::strings::convert::to_string( _wa_string );
+
+ return ( l_string.substr( 0, l_head.size() ).compare( l_head ) == 0 );
+}
+
+bool wa::strings::wa_string::startsWith( const std::wstring &l_head ) const
+{
+ return ( _wa_string.substr( 0, l_head.size() ).compare( l_head ) == 0 );
+}
+
+
+//
+// wa_string::endsWith
+//
+bool wa::strings::wa_string::endsWith( const char *l_tail ) const
+{
+ // TODO
+
+ return false;
+}
+
+bool wa::strings::wa_string::endsWith( const wchar_t *l_tail ) const
+{
+ // TODO
+
+ return false;
+}
+
+bool wa::strings::wa_string::endsWith( const std::string &l_tail ) const
+{
+ // TODO
+
+ return false;
+}
+
+bool wa::strings::wa_string::endsWith( const std::wstring &l_tail ) const
+{
+ // TODO
+
+ return false;
+}
+
+
+//
+// wa_string::findFirst
+//
+int wa::strings::wa_string::findFirst( const char *l_text ) const
+{
+ std::string l_string = wa::strings::convert::to_string( _wa_string );
+
+ return l_string.find_first_of( l_text );
+}
+
+int wa::strings::wa_string::findFirst( const wchar_t *l_text ) const
+{
+ return _wa_string.find_first_of( l_text );
+}
+
+int wa::strings::wa_string::findFirst( const std::string &l_text ) const
+{
+ std::string l_string = wa::strings::convert::to_string( _wa_string );
+
+ return l_string.find_first_of( l_text );
+}
+
+int wa::strings::wa_string::findFirst( const std::wstring &l_text ) const
+{
+ return _wa_string.find_first_of( l_text );
+}
+
+
+//
+// wa_string::findLast
+//
+int wa::strings::wa_string::findLast( const char *l_text ) const
+{
+ std::string l_string = wa::strings::convert::to_string( _wa_string );
+
+ return l_string.find_last_of( l_text );
+}
+
+int wa::strings::wa_string::findLast( const wchar_t *l_text ) const
+{
+ return _wa_string.find_last_of( l_text );
+}
+
+int wa::strings::wa_string::findLast( const std::string &l_text ) const
+{
+ std::string l_string = wa::strings::convert::to_string( _wa_string );
+
+ return l_string.find_last_of( l_text );
+}
+
+int wa::strings::wa_string::findLast( const std::wstring &l_text ) const
+{
+ return _wa_string.find_last_of( l_text );
+}
+
+
+//
+// wa_string::find
+//
+int wa::strings::wa_string::find( const std::wstring &l_text ) const
+{
+ return _wa_string.find( l_text );
+}
+
+
+// wa_string::mid
+std::wstring wa::strings::wa_string::mid( const int p_start, const int p_length ) const
+{
+ return _wa_string.substr( p_start, p_length );
+}
+
+
+// wa_string::toUpper
+wa::strings::wa_string wa::strings::wa_string::toUpper()
+{
+ std::transform( _wa_string.begin(), _wa_string.end(), _wa_string.begin(), ::toupper );
+
+ return *this;
+}