| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328 |
- /*
- ** Command & Conquer Generals Zero Hour(tm)
- ** Copyright 2025 Electronic Arts Inc.
- **
- ** This program is free software: you can redistribute it and/or modify
- ** it under the terms of the GNU General Public License as published by
- ** the Free Software Foundation, either version 3 of the License, or
- ** (at your option) any later version.
- **
- ** This program is distributed in the hope that it will be useful,
- ** but WITHOUT ANY WARRANTY; without even the implied warranty of
- ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- ** GNU General Public License for more details.
- **
- ** You should have received a copy of the GNU General Public License
- ** along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
- ////////////////////////////////////////////////////////////////////////////////
- // //
- // (c) 2001-2003 Electronic Arts Inc. //
- // //
- ////////////////////////////////////////////////////////////////////////////////
- //----------------------------------------------------------------------------
- //
- // Westwood Studios Pacific.
- //
- // Confidential Information
- // Copyright (C) 2001 - All Rights Reserved
- //
- //----------------------------------------------------------------------------
- //
- // Project: WSYS Library
- //
- // Module: String
- //
- // File name: WSYS_String.cpp
- //
- // Created: 11/5/01 TR
- //
- //----------------------------------------------------------------------------
- //----------------------------------------------------------------------------
- // Includes
- //----------------------------------------------------------------------------
- #include "PreRTS.h"
- #include <stdio.h>
- #include <stdlib.h>
- #include <stdarg.h>
- #include <string.h>
- #include "Common/string.h"
- // 'assignment within condition expression'.
- #pragma warning(disable : 4706)
- //----------------------------------------------------------------------------
- // Externals
- //----------------------------------------------------------------------------
- //----------------------------------------------------------------------------
- // Defines
- //----------------------------------------------------------------------------
- //----------------------------------------------------------------------------
- // Private Types
- //----------------------------------------------------------------------------
- //----------------------------------------------------------------------------
- // Private Data
- //----------------------------------------------------------------------------
- //----------------------------------------------------------------------------
- // Public Data
- //----------------------------------------------------------------------------
- //----------------------------------------------------------------------------
- // Private Prototypes
- //----------------------------------------------------------------------------
- //----------------------------------------------------------------------------
- // Private Functions
- //----------------------------------------------------------------------------
- //----------------------------------------------------------------------------
- // Public Functions
- //----------------------------------------------------------------------------
- //============================================================================
- // WSYS_String::WSYS_String
- //============================================================================
- WSYS_String::WSYS_String(const Char *string)
- : m_data(NULL)
- {
- set(string);
- }
- //============================================================================
- // WSYS_String::~WSYS_String
- //============================================================================
- WSYS_String::~WSYS_String()
- {
- delete [] m_data;
- }
- //============================================================================
- // WSYS_String::operator==
- //============================================================================
- Bool WSYS_String::operator== (const char *rvalue) const
- {
- return strcmp( get(), rvalue) == 0;
- }
- //============================================================================
- // WSYS_String::operator!=
- //============================================================================
- Bool WSYS_String::operator!= (const char *rvalue) const
- {
- return strcmp( get(), rvalue) != 0;
- }
- //============================================================================
- // WSYS_String::operator=
- //============================================================================
- const WSYS_String& WSYS_String::operator= (const WSYS_String &string)
- {
- set( string.get());
- return (*this);
- }
- //============================================================================
- // WSYS_String::operator=
- //============================================================================
- const WSYS_String& WSYS_String::operator= (const Char *string)
- {
- set( string );
- return (*this);
- }
- //============================================================================
- // WSYS_String::operator+=
- //============================================================================
- const WSYS_String& WSYS_String::operator+= (const WSYS_String &string)
- {
- Char *buffer = MSGNEW("WSYS_String") Char [ length() + string.length() + 1 ]; // pool[]ify
- if ( buffer != NULL )
- {
- strcpy( buffer, m_data );
- strcat( buffer, string.get() );
- delete [] m_data;
- m_data = buffer;
- }
- return (*this);
- }
- //============================================================================
- // WSYS_String::operator+=
- //============================================================================
- const WSYS_String& WSYS_String::operator+= (const Char *string)
- {
- if ( string != NULL )
- {
- Char *buffer = MSGNEW("WSYS_String") Char [ length() + strlen( string ) + 1 ];
- if ( buffer != NULL )
- {
- strcpy( buffer, m_data );
- strcat( buffer, string );
- delete [] m_data;
- m_data = buffer;
- }
- }
- return (*this);
- }
- //============================================================================
- // operator+ (const WSYS_String &string1, const WSYS_String &string2)
- //============================================================================
- WSYS_String operator+ (const WSYS_String &string1, const WSYS_String &string2)
- {
- WSYS_String temp(string1);
- temp += string2;
- return temp;
- }
- //============================================================================
- // operator+ (const Char *string1, const WSYS_String &string2)
- //============================================================================
- WSYS_String operator+ (const Char *string1, const WSYS_String &string2)
- {
- WSYS_String temp(string1);
- temp += string2;
- return temp;
- }
- //============================================================================
- // operator+ (const WSYS_String &string1, const Char *string2)
- //============================================================================
- WSYS_String operator+ (const WSYS_String &string1, const Char *string2)
- {
- WSYS_String temp(string1);
- temp += string2;
- return temp;
- }
- //============================================================================
- // WSYS_String::length
- //============================================================================
- Int WSYS_String::length(void) const
- {
- return strlen( m_data );
- }
- //============================================================================
- // WSYS_String::isEmpty
- //============================================================================
- Bool WSYS_String::isEmpty(void) const
- {
- return m_data[0] == 0;
- }
- //============================================================================
- // WSYS_String::format
- //============================================================================
- Int _cdecl WSYS_String::format(const Char *format, ...)
- {
- Int result = 0;
- char *buffer = MSGNEW("WSYS_String") char[100*1024];
- if ( buffer )
- {
- va_list args;
- va_start( args, format ); /* Initialize variable arguments. */
- result = vsprintf ( buffer, format, args );
- va_end( args );
- set( buffer );
- delete [] buffer;
- }
- else
- {
- set("");
- }
- return result;
- }
- //============================================================================
- // WSYS_String::set
- //============================================================================
- void WSYS_String::set( const Char *string )
- {
- delete [] m_data;
- if ( string == NULL )
- {
- string = "";
- }
- m_data = MSGNEW("WSYS_String") Char [ strlen(string) + 1];
- strcpy ( m_data, string );
- }
- //============================================================================
- // WSYS_String::makeUpperCase
- //============================================================================
- void WSYS_String::makeUpperCase( void )
- {
- Char *chr = m_data;
- Char ch;
- while( (ch = *chr) )
- {
- *chr++ = (Char) toupper( ch );
- }
- }
- //============================================================================
- // WSYS_String::makeLowerCase
- //============================================================================
- void WSYS_String::makeLowerCase( void )
- {
- Char *chr = m_data;
- Char ch;
- while( (ch = *chr) )
- {
- *chr++ = (Char) tolower( ch );
- }
- }
|