|  | /*!**************************************************************************** | 
|  |  | 
|  | @file         PVRTString.h | 
|  | @copyright    Copyright (c) Imagination Technologies Limited. | 
|  | @brief        A string class that can be used as drop-in replacement for | 
|  | std::string on platforms/compilers that don't provide a full C++ | 
|  | standard library. | 
|  |  | 
|  | ******************************************************************************/ | 
|  | #ifndef _PVRTSTRING_H_ | 
|  | #define _PVRTSTRING_H_ | 
|  |  | 
|  | #include <stdio.h> | 
|  | #define _USING_PVRTSTRING_ | 
|  |  | 
|  | /*!*************************************************************************** | 
|  | @class CPVRTString | 
|  | @brief A string class | 
|  | *****************************************************************************/ | 
|  |  | 
|  | #if defined(_WINDLL_EXPORT) | 
|  | class __declspec(dllexport) CPVRTString | 
|  | #elif defined(_WINDLL_IMPORT) | 
|  | class __declspec(dllimport) CPVRTString | 
|  | #else | 
|  | class CPVRTString | 
|  | #endif | 
|  | { | 
|  |  | 
|  | private: | 
|  |  | 
|  | // Checking printf and scanf format strings | 
|  | #if defined(_CC_GNU_) || defined(__GNUG__) || defined(__GNUC__) | 
|  | #define FX_PRINTF(fmt,arg) __attribute__((format(printf,fmt,arg))) | 
|  | #define FX_SCANF(fmt,arg)  __attribute__((format(scanf,fmt,arg))) | 
|  | #else | 
|  | #define FX_PRINTF(fmt,arg) | 
|  | #define FX_SCANF(fmt,arg) | 
|  | #endif | 
|  |  | 
|  | public: | 
|  | typedef	size_t	size_type; | 
|  | typedef	char value_type; | 
|  | typedef	char& reference; | 
|  | typedef	const char& const_reference; | 
|  |  | 
|  | static const size_type npos; | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | /*!*********************************************************************** | 
|  | @brief      		CPVRTString constructor | 
|  | @param[in]				_Ptr	A string | 
|  | @param[in]				_Count	Length of _Ptr | 
|  | ************************************************************************/ | 
|  | CPVRTString(const char* _Ptr, size_t _Count = npos); | 
|  |  | 
|  | /*!*********************************************************************** | 
|  | @brief      		CPVRTString constructor | 
|  | @param[in]				_Right	A string | 
|  | @param[in]				_Roff	Offset into _Right | 
|  | @param[in]				_Count	Number of chars from _Right to assign to the new string | 
|  | ************************************************************************/ | 
|  | CPVRTString(const CPVRTString& _Right, size_t _Roff = 0, size_t _Count = npos); | 
|  |  | 
|  | /*!*********************************************************************** | 
|  | @brief      		CPVRTString constructor | 
|  | @param[in]				_Count	Length of new string | 
|  | @param[in]				_Ch		A char to fill it with | 
|  | *************************************************************************/ | 
|  | CPVRTString(size_t _Count, const char _Ch); | 
|  |  | 
|  | /*!*********************************************************************** | 
|  | @brief      		Constructor | 
|  | @param[in]				_Ch	A char | 
|  | *************************************************************************/ | 
|  | CPVRTString(const char _Ch); | 
|  |  | 
|  | /*!*********************************************************************** | 
|  | @brief      		Constructor | 
|  | ************************************************************************/ | 
|  | CPVRTString(); | 
|  |  | 
|  | /*!*********************************************************************** | 
|  | @brief      		Destructor | 
|  | ************************************************************************/ | 
|  | virtual ~CPVRTString(); | 
|  |  | 
|  | /*!*********************************************************************** | 
|  | @brief      		Appends a string | 
|  | @param[in]			_Ptr	A string | 
|  | @return 			Updated string | 
|  | *************************************************************************/ | 
|  | CPVRTString& append(const char* _Ptr); | 
|  |  | 
|  | /*!*********************************************************************** | 
|  | @brief      		Appends a string of length _Count | 
|  | @param[in]			_Ptr	A string | 
|  | @param[in]			_Count	String length | 
|  | @return 			Updated string | 
|  | *************************************************************************/ | 
|  | CPVRTString& append(const char* _Ptr, size_t _Count); | 
|  |  | 
|  | /*!*********************************************************************** | 
|  | @brief      		Appends a string | 
|  | @param[in]			_Str	A string | 
|  | @return 			Updated string | 
|  | *************************************************************************/ | 
|  | CPVRTString& append(const CPVRTString& _Str); | 
|  |  | 
|  | /*!*********************************************************************** | 
|  | @brief      		Appends _Count letters of _Str from _Off in _Str | 
|  | @param[in]			_Str	A string | 
|  | @param[in]			_Off	A position in string | 
|  | @param[in]			_Count	Number of letters to append | 
|  | @return 			Updated string | 
|  | *************************************************************************/ | 
|  | CPVRTString& append(const CPVRTString& _Str, size_t _Off, size_t _Count); | 
|  |  | 
|  | /*!*********************************************************************** | 
|  | @brief      		Appends _Ch _Count times | 
|  | @param[in]				_Ch		A char | 
|  | @param[in]				_Count	Number of times to append _Ch | 
|  | @return 			Updated string | 
|  | *************************************************************************/ | 
|  | CPVRTString& append(size_t _Count, const char _Ch); | 
|  |  | 
|  | //template<class InputIterator> CPVRTString& append(InputIterator _First, InputIterator _Last); | 
|  |  | 
|  | /*!*********************************************************************** | 
|  | @brief      		Assigns the string to the string _Ptr | 
|  | @param[in]			_Ptr A string | 
|  | @return 			Updated string | 
|  | *************************************************************************/ | 
|  | CPVRTString& assign(const char* _Ptr); | 
|  |  | 
|  | /*!*********************************************************************** | 
|  | @brief      		Assigns the string to the string _Ptr | 
|  | @param[in]			_Ptr A string | 
|  | @param[in]			_Count Length of _Ptr | 
|  | @return 			Updated string | 
|  | *************************************************************************/ | 
|  | CPVRTString& assign(const char* _Ptr, size_t _Count); | 
|  |  | 
|  | /*!*********************************************************************** | 
|  | @brief      		Assigns the string to the string _Str | 
|  | @param[in]			_Str A string | 
|  | @return 			Updated string | 
|  | *************************************************************************/ | 
|  | CPVRTString& assign(const CPVRTString& _Str); | 
|  |  | 
|  | /*!*********************************************************************** | 
|  | @brief      		Assigns the string to _Count characters in string _Str starting at _Off | 
|  | @param[in]			_Str A string | 
|  | @param[in]			_Off First char to start assignment from | 
|  | @param[in]			_Count Length of _Str | 
|  | @return 			Updated string | 
|  | *************************************************************************/ | 
|  | CPVRTString& assign(const CPVRTString& _Str, size_t _Off, size_t _Count=npos); | 
|  |  | 
|  | /*!*********************************************************************** | 
|  | @brief      		Assigns the string to _Count copies of _Ch | 
|  | @param[in]			_Ch A string | 
|  | @param[in]			_Count Number of times to repeat _Ch | 
|  | @return 			Updated string | 
|  | *************************************************************************/ | 
|  | CPVRTString& assign(size_t _Count, char _Ch); | 
|  |  | 
|  | //template<class InputIterator> CPVRTString& assign(InputIterator _First, InputIterator _Last); | 
|  |  | 
|  | //const_reference at(size_t _Off) const; | 
|  | //reference at(size_t _Off); | 
|  |  | 
|  | // const_iterator begin() const; | 
|  | // iterator begin(); | 
|  |  | 
|  | /*!*********************************************************************** | 
|  | @brief      		Returns a const char* pointer of the string | 
|  | @return 			const char* pointer of the string | 
|  | *************************************************************************/ | 
|  | const char* c_str() const; | 
|  |  | 
|  | /*!*********************************************************************** | 
|  | @brief      		Returns the size of the character array reserved | 
|  | @return 			The size of the character array reserved | 
|  | *************************************************************************/ | 
|  | size_t capacity() const; | 
|  |  | 
|  | /*!*********************************************************************** | 
|  | @brief      		Clears the string | 
|  | *************************************************************************/ | 
|  | void clear(); | 
|  |  | 
|  | /*!*********************************************************************** | 
|  | @brief      		Compares the string with _Str | 
|  | @param[in]			_Str A string to compare with | 
|  | @return 			0 if the strings match | 
|  | *************************************************************************/ | 
|  | int compare(const CPVRTString& _Str) const; | 
|  |  | 
|  | /*!*********************************************************************** | 
|  | @brief      		Compares the string with _Str | 
|  | @param[in]			_Pos1	Position to start comparing from | 
|  | @param[in]			_Num1	Number of chars to compare | 
|  | @param[in]			_Str 	A string to compare with | 
|  | @return 			0 if the strings match | 
|  | *************************************************************************/ | 
|  | int compare(size_t _Pos1, size_t _Num1, const CPVRTString& _Str) const; | 
|  |  | 
|  | /*!*********************************************************************** | 
|  | @brief      		Compares the string with _Str | 
|  | @param[in]			_Pos1	Position to start comparing from | 
|  | @param[in]			_Num1	Number of chars to compare | 
|  | @param[in]			_Str 	A string to compare with | 
|  | @param[in]			_Off 	Position in _Str to compare from | 
|  | @param[in]			_Count	Number of chars in _Str to compare with | 
|  | @return 			0 if the strings match | 
|  | *************************************************************************/ | 
|  | int compare(size_t _Pos1, size_t _Num1, const CPVRTString& _Str, size_t _Off, size_t _Count) const; | 
|  |  | 
|  | /*!*********************************************************************** | 
|  | @brief      		Compares the string with _Ptr | 
|  | @param[in]			_Ptr A string to compare with | 
|  | @return 			0 if the strings match | 
|  | *************************************************************************/ | 
|  | int compare(const char* _Ptr) const; | 
|  |  | 
|  | /*!*********************************************************************** | 
|  | @brief      		Compares the string with _Ptr | 
|  | @param[in]			_Pos1	Position to start comparing from | 
|  | @param[in]			_Num1	Number of chars to compare | 
|  | @param[in]			_Ptr 	A string to compare with | 
|  | @return 			0 if the strings match | 
|  | *************************************************************************/ | 
|  | int compare(size_t _Pos1, size_t _Num1, const char* _Ptr) const; | 
|  |  | 
|  | /*!*********************************************************************** | 
|  | @brief      		Compares the string with _Str | 
|  | @param[in]			_Pos1	Position to start comparing from | 
|  | @param[in]			_Num1	Number of chars to compare | 
|  | @param[in]			_Ptr 	A string to compare with | 
|  | @param[in]			_Count	Number of chars to compare | 
|  | @return 			0 if the strings match | 
|  | *************************************************************************/ | 
|  | int compare(size_t _Pos1, size_t _Num1, const char* _Ptr, size_t _Count) const; | 
|  |  | 
|  | /*!*********************************************************************** | 
|  | @brief      		Less than operator | 
|  | @param[in]			_Str A string to compare with | 
|  | @return 			True on success | 
|  | *************************************************************************/ | 
|  | bool operator<(const CPVRTString & _Str) const; | 
|  |  | 
|  | /*!*********************************************************************** | 
|  | @brief      	== Operator | 
|  | @param[in]		_Str 	A string to compare with | 
|  | @return 		True if they match | 
|  | *************************************************************************/ | 
|  | bool operator==(const CPVRTString& _Str) const; | 
|  |  | 
|  | /*!*********************************************************************** | 
|  | @brief      	== Operator | 
|  | @param[in]		_Ptr 	A string to compare with | 
|  | @return 		True if they match | 
|  | *************************************************************************/ | 
|  | bool operator==(const char* const _Ptr) const; | 
|  |  | 
|  | /*!*********************************************************************** | 
|  | @brief      		!= Operator | 
|  | @param[in]				_Str 	A string to compare with | 
|  | @return 			True if they don't match | 
|  | *************************************************************************/ | 
|  | bool operator!=(const CPVRTString& _Str) const; | 
|  |  | 
|  | /*!*********************************************************************** | 
|  | @brief      		!= Operator | 
|  | @param[in]			_Ptr 	A string to compare with | 
|  | @return 			True if they don't match | 
|  | *************************************************************************/ | 
|  | bool operator!=(const char* const _Ptr) const; | 
|  |  | 
|  | /*!*********************************************************************** | 
|  | @fn       			copy | 
|  | @param[in,out]		_Ptr 	A string to copy to | 
|  | @param[in]			_Count	Size of _Ptr | 
|  | @param[in]			_Off	Position to start copying from | 
|  | @return 			Number of bytes copied | 
|  | @brief      		Copies the string to _Ptr | 
|  | *************************************************************************/ | 
|  | size_t copy(char* _Ptr, size_t _Count, size_t _Off = 0) const; | 
|  |  | 
|  | /*!*********************************************************************** | 
|  | @fn       			data | 
|  | @return 			A const char* version of the string | 
|  | @brief      		Returns a const char* version of the string | 
|  | *************************************************************************/ | 
|  | const char* data( ) const; | 
|  |  | 
|  | /*!*********************************************************************** | 
|  | @fn       			empty | 
|  | @return 			True if the string is empty | 
|  | @brief      		Returns true if the string is empty | 
|  | *************************************************************************/ | 
|  | bool empty() const; | 
|  |  | 
|  | // const_iterator end() const; | 
|  | // iterator end(); | 
|  |  | 
|  | //iterator erase(iterator _First, iterator _Last); | 
|  | //iterator erase(iterator _It); | 
|  |  | 
|  | /*!*********************************************************************** | 
|  | @brief      		Erases a portion of the string | 
|  | @param[in]			_Pos	The position to start erasing from | 
|  | @param[in]			_Count	Number of chars to erase | 
|  | @return 			An updated string | 
|  | *************************************************************************/ | 
|  | CPVRTString& erase(size_t _Pos = 0, size_t _Count = npos); | 
|  |  | 
|  | /*!*********************************************************************** | 
|  | @brief      		Erases a portion of the string | 
|  | @param[in]			_src	Character to search | 
|  | @param[in]			_subDes	Character to substitute for | 
|  | @param[in]			_all	Substitute all | 
|  | @return 			An updated string | 
|  | *************************************************************************/ | 
|  | CPVRTString& substitute(char _src,char _subDes, bool _all = true); | 
|  |  | 
|  | /*!*********************************************************************** | 
|  | @brief      		Erases a portion of the string | 
|  | @param[in]			_src	Character to search | 
|  | @param[in]			_subDes	Character to substitute for | 
|  | @param[in]			_all	Substitute all | 
|  | @return 			An updated string | 
|  | *************************************************************************/ | 
|  | CPVRTString& substitute(const char* _src, const char* _subDes, bool _all = true); | 
|  |  | 
|  | //size_t find(char _Ch, size_t _Off = 0) const; | 
|  | //size_t find(const char* _Ptr, size_t _Off = 0) const; | 
|  |  | 
|  | /*!*********************************************************************** | 
|  | @brief      		Finds a substring within this string. | 
|  | @param[in]			_Ptr	String to search. | 
|  | @param[in]			_Off	Offset to search from. | 
|  | @param[in]			_Count	Number of characters in this string. | 
|  | @return 			Position of the first matched string. | 
|  | *************************************************************************/ | 
|  | size_t find(const char* _Ptr, size_t _Off, size_t _Count) const; | 
|  |  | 
|  | /*!*********************************************************************** | 
|  | @brief      		Finds a substring within this string. | 
|  | @param[in]			_Str	String to search. | 
|  | @param[in]			_Off	Offset to search from. | 
|  | @return 			Position of the first matched string. | 
|  | *************************************************************************/ | 
|  | size_t find(const CPVRTString& _Str, size_t _Off = 0) const; | 
|  |  | 
|  | /*!*********************************************************************** | 
|  | @brief      		Returns the position of the first char that is not _Ch | 
|  | @param[in]			_Ch		A char | 
|  | @param[in]			_Off	Start position of the find | 
|  | @return 			Position of the first char that is not _Ch | 
|  | *************************************************************************/ | 
|  | size_t find_first_not_of(char _Ch, size_t _Off = 0) const; | 
|  |  | 
|  | /*!*********************************************************************** | 
|  | @brief      		Returns the position of the first char that is not in _Ptr | 
|  | @param[in]			_Ptr	A string | 
|  | @param[in]			_Off	Start position of the find | 
|  | @return 			Position of the first char that is not in _Ptr | 
|  | *************************************************************************/ | 
|  | size_t find_first_not_of(const char* _Ptr, size_t _Off = 0) const; | 
|  |  | 
|  | /*!*********************************************************************** | 
|  | @brief      		Returns the position of the first char that is not in _Ptr | 
|  | @param[in]			_Ptr	A string | 
|  | @param[in]			_Off	Start position of the find | 
|  | @param[in]			_Count	Number of chars in _Ptr | 
|  | @return 			Position of the first char that is not in _Ptr | 
|  | *************************************************************************/ | 
|  | size_t find_first_not_of(const char* _Ptr, size_t _Off, size_t _Count) const; | 
|  |  | 
|  | /*!*********************************************************************** | 
|  | @brief      		Returns the position of the first char that is not in _Str | 
|  | @param[in]			_Str	A string | 
|  | @param[in]			_Off	Start position of the find | 
|  | @return 			Position of the first char that is not in _Str | 
|  | *************************************************************************/ | 
|  | size_t find_first_not_of(const CPVRTString& _Str, size_t _Off = 0) const; | 
|  |  | 
|  | /*!*********************************************************************** | 
|  | @brief      		Returns the position of the first char that is _Ch | 
|  | @param[in]			_Ch		A char | 
|  | @param[in]			_Off	Start position of the find | 
|  | @return 			Position of the first char that is _Ch | 
|  | *************************************************************************/ | 
|  | size_t find_first_of(char _Ch, size_t _Off = 0) const; | 
|  |  | 
|  | /*!*********************************************************************** | 
|  | @brief      		Returns the position of the first char that matches a char in _Ptr | 
|  | @param[in]			_Ptr	A string | 
|  | @param[in]			_Off	Start position of the find | 
|  | @return 			Position of the first char that matches a char in _Ptr | 
|  | *************************************************************************/ | 
|  | size_t find_first_of(const char* _Ptr, size_t _Off = 0) const; | 
|  |  | 
|  | /*!*********************************************************************** | 
|  | @brief      		Returns the position of the first char that matches a char in _Ptr | 
|  | @param[in]			_Ptr	A string | 
|  | @param[in]			_Off	Start position of the find | 
|  | @param[in]			_Count	Size of _Ptr | 
|  | @return 			Position of the first char that matches a char in _Ptr | 
|  | *************************************************************************/ | 
|  | size_t find_first_of(const char* _Ptr, size_t _Off, size_t _Count) const; | 
|  |  | 
|  | /*!*********************************************************************** | 
|  | @brief      		Returns the position of the first char that matches all chars in _Ptr | 
|  | @param[in]			_Ptr	A string | 
|  | @param[in]			_Off	Start position of the find | 
|  | @param[in]			_Count	Size of _Ptr | 
|  | @return 			Position of the first char that matches a char in _Ptr | 
|  | *************************************************************************/ | 
|  | size_t find_first_ofn(const char* _Ptr, size_t _Off, size_t _Count) const; | 
|  |  | 
|  |  | 
|  | /*!*********************************************************************** | 
|  | @brief      		Returns the position of the first char that matches a char in _Str | 
|  | @param[in]			_Str	A string | 
|  | @param[in]			_Off	Start position of the find | 
|  | @return 			Position of the first char that matches a char in _Str | 
|  | *************************************************************************/ | 
|  | size_t find_first_of(const CPVRTString& _Str, size_t _Off = 0) const; | 
|  |  | 
|  | /*!*********************************************************************** | 
|  | @brief      		Returns the position of the last char that is not _Ch | 
|  | @param[in]			_Ch		A char | 
|  | @param[in]			_Off	Start position of the find | 
|  | @return 			Position of the last char that is not _Ch | 
|  | *************************************************************************/ | 
|  | size_t find_last_not_of(char _Ch, size_t _Off = 0) const; | 
|  |  | 
|  | /*!*********************************************************************** | 
|  | @brief      		Returns the position of the last char that is not in _Ptr | 
|  | @param[in]			_Ptr	A string | 
|  | @param[in]			_Off	Start position of the find | 
|  | @return 			Position of the last char that is not in _Ptr | 
|  | *************************************************************************/ | 
|  | size_t find_last_not_of(const char* _Ptr, size_t _Off = 0) const; | 
|  |  | 
|  | /*!*********************************************************************** | 
|  | @brief      		Returns the position of the last char that is not in _Ptr | 
|  | @param[in]			_Ptr	A string | 
|  | @param[in]			_Off	Start position of the find | 
|  | @param[in]			_Count	Length of _Ptr | 
|  | @return 			Position of the last char that is not in _Ptr | 
|  | *************************************************************************/ | 
|  | size_t find_last_not_of(const char* _Ptr, size_t _Off, size_t _Count) const; | 
|  |  | 
|  | /*!*********************************************************************** | 
|  | @brief      		Returns the position of the last char that is not in _Str | 
|  | @param[in]			_Str	A string | 
|  | @param[in]			_Off	Start position of the find | 
|  | @return 			Position of the last char that is not in _Str | 
|  | *************************************************************************/ | 
|  | size_t find_last_not_of(const CPVRTString& _Str, size_t _Off = 0) const; | 
|  |  | 
|  | /*!*********************************************************************** | 
|  | @brief      		Returns the position of the last char that is _Ch | 
|  | @param[in]			_Ch		A char | 
|  | @param[in]			_Off	Start position of the find | 
|  | @return 			Position of the last char that is _Ch | 
|  | *************************************************************************/ | 
|  | size_t find_last_of(char _Ch, size_t _Off = 0) const; | 
|  |  | 
|  | /*!*********************************************************************** | 
|  | @brief      		Returns the position of the last char that is in _Ptr | 
|  | @param[in]			_Ptr	A string | 
|  | @param[in]			_Off	Start position of the find | 
|  | @return 			Position of the last char that is in _Ptr | 
|  | *************************************************************************/ | 
|  | size_t find_last_of(const char* _Ptr, size_t _Off = 0) const; | 
|  |  | 
|  | /*!*********************************************************************** | 
|  | @brief      		Returns the position of the last char that is in _Ptr | 
|  | @param[in]			_Ptr	A string | 
|  | @param[in]			_Off	Start position of the find | 
|  | @param[in]			_Count	Length of _Ptr | 
|  | @return 			Position of the last char that is in _Ptr | 
|  | *************************************************************************/ | 
|  | size_t find_last_of(const char* _Ptr, size_t _Off, size_t _Count) const; | 
|  |  | 
|  | /*!*********************************************************************** | 
|  | @brief      		Returns the position of the last char that is in _Str | 
|  | @param[in]			_Str	A string | 
|  | @param[in]			_Off	Start position of the find | 
|  | @return 			Position of the last char that is in _Str | 
|  | *************************************************************************/ | 
|  | size_t find_last_of(const CPVRTString& _Str, size_t _Off = 0) const; | 
|  |  | 
|  | /*!*********************************************************************** | 
|  | @brief      		Returns the number of occurances of _Ch in the parent string. | 
|  | @param[in]			_Ch		A char | 
|  | @param[in]			_Off	Start position of the find | 
|  | @return 			Number of occurances of _Ch in the parent string. | 
|  | *************************************************************************/ | 
|  | size_t find_number_of(char _Ch, size_t _Off = 0) const; | 
|  |  | 
|  | /*!*********************************************************************** | 
|  | @brief      		Returns the number of occurances of _Ptr in the parent string. | 
|  | @param[in]			_Ptr	A string | 
|  | @param[in]			_Off	Start position of the find | 
|  | @return 			Number of occurances of _Ptr in the parent string. | 
|  | *************************************************************************/ | 
|  | size_t find_number_of(const char* _Ptr, size_t _Off = 0) const; | 
|  |  | 
|  | /*!*********************************************************************** | 
|  | @brief      		Returns the number of occurances of _Ptr in the parent string. | 
|  | @param[in]			_Ptr	A string | 
|  | @param[in]			_Off	Start position of the find | 
|  | @param[in]			_Count	Size of _Ptr | 
|  | @return 			Number of occurances of _Ptr in the parent string. | 
|  | *************************************************************************/ | 
|  | size_t find_number_of(const char* _Ptr, size_t _Off, size_t _Count) const; | 
|  |  | 
|  | /*!*********************************************************************** | 
|  | @brief      		Returns the number of occurances of _Str in the parent string. | 
|  | @param[in]			_Str	A string | 
|  | @param[in]			_Off	Start position of the find | 
|  | @return 			Number of occurances of _Str in the parent string. | 
|  | *************************************************************************/ | 
|  | size_t find_number_of(const CPVRTString& _Str, size_t _Off = 0) const; | 
|  |  | 
|  | /*!*********************************************************************** | 
|  | @brief      		Returns the next occurance of _Ch in the parent string | 
|  | after or at _Off.	If not found, returns the length of the string. | 
|  | @param[in]			_Ch		A char | 
|  | @param[in]			_Off	Start position of the find | 
|  | @return 			Next occurance of _Ch in the parent string. | 
|  | *************************************************************************/ | 
|  | int find_next_occurance_of(char _Ch, size_t _Off = 0) const; | 
|  |  | 
|  | /*!*********************************************************************** | 
|  | @brief      		Returns the next occurance of _Ptr in the parent string | 
|  | after or at _Off.	If not found, returns the length of the string. | 
|  | @param[in]			_Ptr	A string | 
|  | @param[in]			_Off	Start position of the find | 
|  | @return 			Next occurance of _Ptr in the parent string. | 
|  | *************************************************************************/ | 
|  | int find_next_occurance_of(const char* _Ptr, size_t _Off = 0) const; | 
|  |  | 
|  | /*!*********************************************************************** | 
|  | @brief      		Returns the next occurance of _Ptr in the parent string | 
|  | after or at _Off.	If not found, returns the length of the string. | 
|  | @param[in]			_Ptr	A string | 
|  | @param[in]			_Off	Start position of the find | 
|  | @param[in]			_Count	Size of _Ptr | 
|  | @return 			Next occurance of _Ptr in the parent string. | 
|  | *************************************************************************/ | 
|  | int find_next_occurance_of(const char* _Ptr, size_t _Off, size_t _Count) const; | 
|  |  | 
|  | /*!*********************************************************************** | 
|  | @brief      		Returns the next occurance of _Str in the parent string | 
|  | after or at _Off.	If not found, returns the length of the string. | 
|  | @param[in]			_Str	A string | 
|  | @param[in]			_Off	Start position of the find | 
|  | @return 			Next occurance of _Str in the parent string. | 
|  | *************************************************************************/ | 
|  | int find_next_occurance_of(const CPVRTString& _Str, size_t _Off = 0) const; | 
|  |  | 
|  | /*!*********************************************************************** | 
|  | @brief      		Returns the previous occurance of _Ch in the parent string | 
|  | before _Off.	If not found, returns -1. | 
|  | @param[in]			_Ch		A char | 
|  | @param[in]			_Off	Start position of the find | 
|  | @return 			Previous occurance of _Ch in the parent string. | 
|  | *************************************************************************/ | 
|  | int find_previous_occurance_of(char _Ch, size_t _Off = 0) const; | 
|  |  | 
|  | /*!*********************************************************************** | 
|  | @brief      		Returns the previous occurance of _Ptr in the parent string | 
|  | before _Off.	If not found, returns -1. | 
|  | @param[in]			_Ptr	A string | 
|  | @param[in]			_Off	Start position of the find | 
|  | @return 			Previous occurance of _Ptr in the parent string. | 
|  | *************************************************************************/ | 
|  | int find_previous_occurance_of(const char* _Ptr, size_t _Off = 0) const; | 
|  |  | 
|  | /*!*********************************************************************** | 
|  | @brief      		Returns the previous occurance of _Ptr in the parent string | 
|  | before _Off.	If not found, returns -1. | 
|  | @param[in]			_Ptr	A string | 
|  | @param[in]			_Off	Start position of the find | 
|  | @param[in]			_Count	Size of _Ptr | 
|  | @return 			Previous occurance of _Ptr in the parent string. | 
|  | *************************************************************************/ | 
|  | int find_previous_occurance_of(const char* _Ptr, size_t _Off, size_t _Count) const; | 
|  |  | 
|  | /*!*********************************************************************** | 
|  | @brief      		Returns the previous occurance of _Str in the parent string | 
|  | before _Off.	If not found, returns -1. | 
|  | @param[in]			_Str	A string | 
|  | @param[in]			_Off	Start position of the find | 
|  | @return 			Previous occurance of _Str in the parent string. | 
|  | *************************************************************************/ | 
|  | int find_previous_occurance_of(const CPVRTString& _Str, size_t _Off = 0) const; | 
|  |  | 
|  | /*!*********************************************************************** | 
|  | @fn       			left | 
|  | @param[in]			iSize	number of characters to return (excluding null character) | 
|  | @return 			The leftmost 'iSize' characters of the string. | 
|  | @brief      		Returns the leftmost characters of the string (excluding | 
|  | the null character) in a new CPVRTString. If iSize is | 
|  | larger than the string, a copy of the original string is returned. | 
|  | *************************************************************************/ | 
|  | CPVRTString left(size_t iSize) const; | 
|  |  | 
|  | /*!*********************************************************************** | 
|  | @fn       			right | 
|  | @param[in]			iSize	number of characters to return (excluding null character) | 
|  | @return 			The rightmost 'iSize' characters of the string. | 
|  | @brief      		Returns the rightmost characters of the string (excluding | 
|  | the null character) in a new CPVRTString. If iSize is | 
|  | larger than the string, a copy of the original string is returned. | 
|  | *************************************************************************/ | 
|  | CPVRTString right(size_t iSize) const; | 
|  |  | 
|  | //allocator_type get_allocator( ) const; | 
|  |  | 
|  | //CPVRTString& insert(size_t _P0, const char* _Ptr); | 
|  | //CPVRTString& insert(size_t _P0, const char* _Ptr, size_t _Count); | 
|  | //CPVRTString& insert(size_t _P0, const CPVRTString& _Str); | 
|  | //CPVRTString& insert(size_t _P0, const CPVRTString& _Str, size_t _Off, size_t _Count); | 
|  | //CPVRTString& insert(size_t _P0, size_t _Count, char _Ch); | 
|  | //iterator insert(iterator _It, char _Ch = char()); | 
|  | //template<class InputIterator> void insert(iterator _It, InputIterator _First, InputIterator _Last); | 
|  | //void insert(iterator _It, size_t _Count, char _Ch); | 
|  |  | 
|  | /*!*********************************************************************** | 
|  | @fn       			length | 
|  | @return 			Length of the string | 
|  | @brief      		Returns the length of the string | 
|  | *************************************************************************/ | 
|  | size_t length() const; | 
|  |  | 
|  | /*!*********************************************************************** | 
|  | @fn       			max_size | 
|  | @return 			The maximum number of chars that the string can contain | 
|  | @brief      		Returns the maximum number of chars that the string can contain | 
|  | *************************************************************************/ | 
|  | size_t max_size() const; | 
|  |  | 
|  | /*!*********************************************************************** | 
|  | @fn       			push_back | 
|  | @param[in]			_Ch A char to append | 
|  | @brief      		Appends _Ch to the string | 
|  | *************************************************************************/ | 
|  | void push_back(char _Ch); | 
|  |  | 
|  | // const_reverse_iterator rbegin() const; | 
|  | // reverse_iterator rbegin(); | 
|  |  | 
|  | // const_reverse_iterator rend() const; | 
|  | // reverse_iterator rend(); | 
|  |  | 
|  | //CPVRTString& replace(size_t _Pos1, size_t _Num1, const char* _Ptr); | 
|  | //CPVRTString& replace(size_t _Pos1, size_t _Num1, const CPVRTString& _Str); | 
|  | //CPVRTString& replace(size_t _Pos1, size_t _Num1, const char* _Ptr, size_t _Num2); | 
|  | //CPVRTString& replace(size_t _Pos1, size_t _Num1, const CPVRTString& _Str, size_t _Pos2, size_t _Num2); | 
|  | //CPVRTString& replace(size_t _Pos1, size_t _Num1, size_t _Count, char _Ch); | 
|  |  | 
|  | //CPVRTString& replace(iterator _First0, iterator _Last0, const char* _Ptr); | 
|  | //CPVRTString& replace(iterator _First0, iterator _Last0, const CPVRTString& _Str); | 
|  | //CPVRTString& replace(iterator _First0, iterator _Last0, const char* _Ptr, size_t _Num2); | 
|  | //CPVRTString& replace(iterator _First0, iterator _Last0, size_t _Num2, char _Ch); | 
|  | //template<class InputIterator> CPVRTString& replace(iterator _First0, iterator _Last0, InputIterator _First, InputIterator _Last); | 
|  |  | 
|  | /*!*********************************************************************** | 
|  | @fn       			reserve | 
|  | @param[in]			_Count Size of string to reserve | 
|  | @brief      		Reserves space for _Count number of chars | 
|  | *************************************************************************/ | 
|  | void reserve(size_t _Count = 0); | 
|  |  | 
|  | /*!*********************************************************************** | 
|  | @fn       			resize | 
|  | @param[in]			_Count 	Size of string to resize to | 
|  | @param[in]			_Ch		Character to use to fill any additional space | 
|  | @brief      		Resizes the string to _Count in length | 
|  | *************************************************************************/ | 
|  | void resize(size_t _Count, char _Ch = char()); | 
|  |  | 
|  | //size_t rfind(char _Ch, size_t _Off = npos) const; | 
|  | //size_t rfind(const char* _Ptr, size_t _Off = npos) const; | 
|  | //size_t rfind(const char* _Ptr, size_t _Off = npos, size_t _Count) const; | 
|  | //size_t rfind(const CPVRTString& _Str, size_t _Off = npos) const; | 
|  |  | 
|  | /*!*********************************************************************** | 
|  | @fn       			size | 
|  | @return 			Size of the string | 
|  | @brief      		Returns the size of the string | 
|  | *************************************************************************/ | 
|  | size_t size() const; | 
|  |  | 
|  | /*!*********************************************************************** | 
|  | @fn       			substr | 
|  | @param[in]			_Off	Start of the substring | 
|  | @param[in]			_Count	Length of the substring | 
|  | @return 			A substring of the string | 
|  | @brief      		Returns the size of the string | 
|  | *************************************************************************/ | 
|  | CPVRTString substr(size_t _Off = 0, size_t _Count = npos) const; | 
|  |  | 
|  | /*!*********************************************************************** | 
|  | @fn       			swap | 
|  | @param[in]			_Str	A string to swap with | 
|  | @brief      		Swaps the contents of the string with _Str | 
|  | *************************************************************************/ | 
|  | void swap(CPVRTString& _Str); | 
|  |  | 
|  | /*!*********************************************************************** | 
|  | @fn       			toLower | 
|  | @return 			An updated string | 
|  | @brief      		Converts the string to lower case | 
|  | *************************************************************************/ | 
|  | CPVRTString& toLower(); | 
|  |  | 
|  | /*!*********************************************************************** | 
|  | @fn       			toUpper | 
|  | @return 			An updated string | 
|  | @brief      		Converts the string to upper case | 
|  | *************************************************************************/ | 
|  | CPVRTString& toUpper(); | 
|  |  | 
|  | /*!*********************************************************************** | 
|  | @fn       			format | 
|  | @param[in]			pFormat A string containing the formating | 
|  | @return 			A formatted string | 
|  | @brief      		return the formatted string | 
|  | ************************************************************************/ | 
|  | CPVRTString format(const char *pFormat, ...); | 
|  |  | 
|  | /*!*********************************************************************** | 
|  | @brief      		+= Operator | 
|  | @param[in]			_Ch A char | 
|  | @return 			An updated string | 
|  | *************************************************************************/ | 
|  | CPVRTString& operator+=(char _Ch); | 
|  |  | 
|  | /*!*********************************************************************** | 
|  | @brief      		+= Operator | 
|  | @param[in]			_Ptr A string | 
|  | @return 			An updated string | 
|  | *************************************************************************/ | 
|  | CPVRTString& operator+=(const char* _Ptr); | 
|  |  | 
|  | /*!*********************************************************************** | 
|  | @brief      		+= Operator | 
|  | @param[in]			_Right A string | 
|  | @return 			An updated string | 
|  | *************************************************************************/ | 
|  | CPVRTString& operator+=(const CPVRTString& _Right); | 
|  |  | 
|  | /*!*********************************************************************** | 
|  | @brief      		= Operator | 
|  | @param[in]			_Ch A char | 
|  | @return 			An updated string | 
|  | *************************************************************************/ | 
|  | CPVRTString& operator=(char _Ch); | 
|  |  | 
|  | /*!*********************************************************************** | 
|  | @brief      		= Operator | 
|  | @param[in]			_Ptr A string | 
|  | @return 			An updated string | 
|  | *************************************************************************/ | 
|  | CPVRTString& operator=(const char* _Ptr); | 
|  |  | 
|  | /*!*********************************************************************** | 
|  | @brief      		= Operator | 
|  | @param[in]			_Right A string | 
|  | @return 			An updated string | 
|  | *************************************************************************/ | 
|  | CPVRTString& operator=(const CPVRTString& _Right); | 
|  |  | 
|  | /*!*********************************************************************** | 
|  | @brief      		[] Operator | 
|  | @param[in]			_Off An index into the string | 
|  | @return 			A character | 
|  | *************************************************************************/ | 
|  | const_reference operator[](size_t _Off) const; | 
|  |  | 
|  | /*!*********************************************************************** | 
|  | @brief      		[] Operator | 
|  | @param[in]			_Off An index into the string | 
|  | @return 			A character | 
|  | *************************************************************************/ | 
|  | reference operator[](size_t _Off); | 
|  |  | 
|  | /*!*********************************************************************** | 
|  | @brief      		+ Operator | 
|  | @param[in]			_Left A string | 
|  | @param[in]			_Right A string | 
|  | @return 			An updated string | 
|  | *************************************************************************/ | 
|  | friend CPVRTString operator+ (const CPVRTString& _Left, const CPVRTString& _Right); | 
|  |  | 
|  | /*!*********************************************************************** | 
|  | @brief      		+ Operator | 
|  | @param[in]			_Left A string | 
|  | @param[in]			_Right A string | 
|  | @return 			An updated string | 
|  | *************************************************************************/ | 
|  | friend CPVRTString operator+ (const CPVRTString& _Left, const char* _Right); | 
|  |  | 
|  | /*!*********************************************************************** | 
|  | @brief      		+ Operator | 
|  | @param[in]			_Left A string | 
|  | @param[in]			_Right A string | 
|  | @return 			An updated string | 
|  | *************************************************************************/ | 
|  | friend CPVRTString operator+ (const CPVRTString& _Left, const char _Right); | 
|  |  | 
|  | /*!*********************************************************************** | 
|  | @brief      		+ Operator | 
|  | @param[in]			_Left A string | 
|  | @param[in]			_Right A string | 
|  | @return 			An updated string | 
|  | *************************************************************************/ | 
|  | friend CPVRTString operator+ (const char* _Left, const CPVRTString& _Right); | 
|  |  | 
|  |  | 
|  | /*!*********************************************************************** | 
|  | @brief      		+ Operator | 
|  | @param[in]			_Left A string | 
|  | @param[in]			_Right A string | 
|  | @return 			An updated string | 
|  | *************************************************************************/ | 
|  | friend CPVRTString operator+ (const char _Left, const CPVRTString& _Right); | 
|  |  | 
|  | protected: | 
|  | char* m_pString; | 
|  | size_t m_Size; | 
|  | size_t m_Capacity; | 
|  | }; | 
|  |  | 
|  | /************************************************************************* | 
|  | * MISCELLANEOUS UTILITY FUNCTIONS | 
|  | *************************************************************************/ | 
|  | /*!*********************************************************************** | 
|  | @fn       			PVRTStringGetFileExtension | 
|  | @param[in]			strFilePath A string | 
|  | @return 			Extension | 
|  | @brief      		Extracts the file extension from a file path. | 
|  | Returns an empty CPVRTString if no extension is found. | 
|  | ************************************************************************/ | 
|  | CPVRTString PVRTStringGetFileExtension(const CPVRTString& strFilePath); | 
|  |  | 
|  | /*!*********************************************************************** | 
|  | @fn       			PVRTStringGetContainingDirectoryPath | 
|  | @param[in]			strFilePath A string | 
|  | @return 			Directory | 
|  | @brief      		Extracts the directory portion from a file path. | 
|  | ************************************************************************/ | 
|  | CPVRTString PVRTStringGetContainingDirectoryPath(const CPVRTString& strFilePath); | 
|  |  | 
|  | /*!*********************************************************************** | 
|  | @fn       			PVRTStringGetFileName | 
|  | @param[in]			strFilePath A string | 
|  | @return 			FileName | 
|  | @brief      		Extracts the name and extension portion from a file path. | 
|  | ************************************************************************/ | 
|  | CPVRTString PVRTStringGetFileName(const CPVRTString& strFilePath); | 
|  |  | 
|  | /*!*********************************************************************** | 
|  | @fn       			PVRTStringStripWhiteSpaceFromStartOf | 
|  | @param[in]			strLine A string | 
|  | @return 			Result of the white space stripping | 
|  | @brief      		strips white space characters from the beginning of a CPVRTString. | 
|  | ************************************************************************/ | 
|  | CPVRTString PVRTStringStripWhiteSpaceFromStartOf(const CPVRTString& strLine); | 
|  |  | 
|  | /*!*********************************************************************** | 
|  | @fn       			PVRTStringStripWhiteSpaceFromEndOf | 
|  | @param[in]			strLine A string | 
|  | @return 			Result of the white space stripping | 
|  | @brief      		strips white space characters from the end of a CPVRTString. | 
|  | ************************************************************************/ | 
|  | CPVRTString PVRTStringStripWhiteSpaceFromEndOf(const CPVRTString& strLine); | 
|  |  | 
|  | /*!*********************************************************************** | 
|  | @fn       			PVRTStringFromFormattedStr | 
|  | @param[in]			pFormat A string containing the formating | 
|  | @return 			A formatted string | 
|  | @brief      		Creates a formatted string | 
|  | ************************************************************************/ | 
|  | CPVRTString PVRTStringFromFormattedStr(const char *pFormat, ...); | 
|  |  | 
|  | #endif // _PVRTSTRING_H_ | 
|  |  | 
|  |  | 
|  | /***************************************************************************** | 
|  | End of file (PVRTString.h) | 
|  | *****************************************************************************/ | 
|  |  |