//+------------------------------------------------------------------------- // // Microsoft Windows // // Copyright (C) Microsoft Corporation, 1997 - 1997 // // File: bnstr.h // //-------------------------------------------------------------------------- // // BNSTR.HXX: Generic string class. // #if !defined(_BNSTR_HXX_) #define _BNSTR_HXX_ #include "basics.h" class BNSTR { public: BNSTR ( const BNSTR & str ) ; BNSTR ( SZC sz = NULL ) ; ~ BNSTR () ; SZC Szc () const { return _sz ; } // Allow use of a BNSTR anywhere an SZC is allowed operator const char * () const { return _sz ; } // Prefix or suffix the string with the given string or character SZC Prefix ( SZC szPrefix ) ; SZC Suffix ( SZC szSuffix ) ; SZC Suffix ( char chSuffix ); // Clear the string to empty void Reset () ; // Return the current length of the string UINT Length () const { return _cchStr ; } // Return the maximum allowable length of the string UINT Max () const { return _cchMax ; } // Truncate the string to the given length. void Trunc ( UINT cchLen ) ; // Destructive assignment: release the current buffer and reset the BNSTR SZ Transfer () ; void Transfer ( BNSTR & str ) ; // Assignment operators BNSTR & operator = ( const BNSTR & str ) { Update( str ); return *this ; } BNSTR & operator = ( SZC szSource ) { Update( szSource ) ; return *this; } // Assignment function (for error checking) bool Assign ( SZC szcSource ) { return Update( szcSource ) ; } bool Assign ( SZC szcData, UINT cchLen ) ; // Concatenation operators BNSTR & operator += ( SZC szSource ) { Suffix( szSource ) ; return *this ; } BNSTR & operator += ( char chSource ) { Suffix( chSource ) ; return *this ; } // Comparison: functions and operators // Standard low/eq/high plus case comparator. INT Compare ( SZC szSource, bool bIgnoreCase = false ) const ; bool operator == ( SZC szSource ) const ; bool operator != ( SZC szSource ) const ; char operator [] ( UINT iChar ) const ; // Formating bool Vsprintf ( SZC szcFmt, va_list valist ) ; bool Sprintf ( SZC szcFmt, ... ) ; bool SprintfAppend ( SZC szcFmt, ... ) ; // Cr/Lf expansion or contraction bool ExpandNl () ; bool ContractNl () ; bool ExpandEscaped (); bool ContractEscaped (); // Expand the string to the given length; make it a blank, null terminated // string. bool Pad ( UINT cchLength ) ; // Change all alphabetic characters to the given case void UpCase ( bool bToUpper = true ) ; bool ReplaceSymName ( SZC szcSymName, SZC szcSymNameNew, bool bCaseInsensitive = true ); // Find the next occurrence of the given character in the string; // Return -1 if not found. INT Index ( char chFind, UINT uiOffset = 0 ) const ; // Convert the string to a floating-point number. double Atof ( UINT uiOffset = 0 ) const ; UINT CbyteCPT() const { return _cchMax + 1 ; } protected: bool Update ( SZC szc ) ; bool Grow ( UINT cchNewSize = 0, SZ * ppszNew = NULL ) ; UINT _cchMax ; UINT _cchStr ; SZ _sz ; private: void DeleteSz () ; static SZC _pmt ; }; #endif // !defined(_STR_HXX_) // End of BNSTR.HXX