xsi_string.h Source File
 
 
 
xsi_string.h
Go to the documentation of this file.
00001 //*****************************************************************************
00011 //*****************************************************************************
00012 
00013 #if (_MSC_VER > 1000) || defined(SGI_COMPILER)
00014 #pragma once
00015 #endif
00016 
00017 #ifndef __XSISTRING_H__
00018 #define __XSISTRING_H__
00019 
00020 #include "sicppsdk.h"
00021 #include <stdlib.h>
00022 
00023 namespace XSI {
00024 
00025 class CStatus;
00026 class CValue;
00027 class CStringArray;
00028 
00029 //*****************************************************************************
00074 //*****************************************************************************
00075 
00076 class SICPPSDKDECL CString
00077 {
00078 public:
00080         CString();
00081 
00083         virtual ~CString();
00084 
00088         CString(const CString& in_str);
00089 
00094         CString(const wchar_t * in_str );
00095 
00101         CString(const wchar_t* in_str, ULONG in_nCount );
00102 
00108         CString( const char* in_str );
00109 
00115         CString(const char* in_str, ULONG in_nCount );
00116 
00134         explicit CString( const CValue& in_val );
00135 
00156         const wchar_t * GetWideString() const ;
00157 
00182         const char* GetAsciiString() const ;
00183 
00216         CStatus PutAsciiString(const char* in_pszStr);
00217 
00222         ULONG Length() const ;
00223 
00227         bool IsEmpty() const ;
00228 
00231         void Clear() ;
00232 
00237         CString& operator=(const CString& in_rhs) ;
00238 
00243         CString& operator=(const wchar_t * in_rhs) ;
00244 
00250         CString& operator=(const char* in_rhs) ;
00251 
00257         bool operator==(const CString& in_refStr) const;
00258 
00263         bool operator==(const wchar_t* in_pwstr) const;
00264 
00270         bool operator==(const char* in_pstr) const;
00271 
00288         bool IsEqualNoCase( const CString& in_rhs ) const ;
00289 
00294         bool IsEqualNoCase( const wchar_t* in_pwstr ) const ;
00295 
00302         bool IsEqualNoCase( const char* in_pstr ) const ;
00303 
00310         CStringArray Split( const CString& in_strDel ) const;
00311 
00317         bool operator!=(const CString& in_refStr) const;
00318 
00324         bool operator!=(const wchar_t* in_pwstr) const;
00325 
00332         bool operator!=(const char* in_pstr) const;
00333 
00347         CString& operator+=(const CString& in_refStr);
00348 
00353         CString& operator+=(const wchar_t* in_pwstr);
00354 
00360         CString& operator+=(const char* in_pstr);
00361 
00366         CString& operator+=(const wchar_t in_wchar);
00367 
00373         CString& operator+=(const char in_char);
00374 
00379         CString operator+(const CString& in_refStr) const;
00380 
00385         CString operator+(const wchar_t* in_pwstr) const;
00386 
00392         CString operator+(const char* in_pstr) const;
00393 
00398         CString operator+(const wchar_t in_wchar) const;
00399 
00405         CString operator+(const char in_char) const;
00406 
00415         wchar_t operator [] (ULONG in_index) const;
00416 
00426         char GetAt(ULONG in_index) const;
00427 
00434         bool operator < ( const CString& in_str) const;
00435 
00442         bool operator > ( const CString& in_str) const;
00443 
00478         ULONG FindString( const CString& in_str, ULONG in_nOffset = 0 ) const;
00479 
00512         ULONG ReverseFindString( const CString& in_str, ULONG in_nOffset = UINT_MAX ) const;
00513 
00543         CString GetSubString( ULONG in_nOffset = 0, ULONG in_nCount = UINT_MAX ) const;
00544 
00549         void Lower();
00550 
00555         void Upper();
00556 
00586         void TrimLeft( const CString& in_target = CString() );
00587 
00617         void TrimRight( const CString& in_target = CString() );
00618 
00619 private:
00620 
00621         //*************************************************************************
00626         //*************************************************************************
00627         struct StringData
00628         {
00629                 void * m_pImpl ;
00630 
00632 
00636                 wchar_t* m_pWDebugStr;
00637                 char* m_pDebugStr;
00638         };
00640         StringData* m_pData;
00641 };
00642 
00646 SICPPSDKDECL CString operator+( const wchar_t* in_pwstr, const CString& in_refStr ) ;
00647 
00651 SICPPSDKDECL CString operator+( const wchar_t in_wchar, const CString& in_refStr ) ;
00652 
00657 SICPPSDKDECL CString operator+( const char* in_pstr, const CString& in_refStr ) ;
00658 
00663 SICPPSDKDECL CString operator+( const char in_char, const CString& in_refStr ) ;
00664 
00665 //*************************************************************************
00674 //*************************************************************************
00675 class SICPPSDKDECL CStringArray
00676 {
00677 public:
00683         CStringArray( LONG in_size=0);
00684 
00688         CStringArray(const CStringArray& in_array );
00689 
00691         ~CStringArray();
00692 
00697         CStringArray& operator=( const CStringArray& in_array );
00698 
00702         LONG GetCount() const;
00703 
00708         CStatus Add( const CString& in_item );
00709 
00713         CStatus Clear();
00714 
00721         CStatus Resize( LONG in_size);
00722 
00728         const CString& operator[]( LONG in_index ) const;
00729 
00735         CString& operator[]( LONG in_index );
00736 
00742         bool operator==(const CStringArray& in_array) const;
00743 
00749         bool operator!=(const CStringArray& in_array) const;
00750 
00751 private:
00752         void* m_ptr;
00753 };
00754 
00755 };
00756 
00757 #endif // __XSISTRING_H__