blob: 2658c40c85e352cf534562afefcf1448878b5456 [file] [log] [blame]
/*!****************************************************************************
@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)
*****************************************************************************/