See More

#include "stringBuffer.h" //#include "base/libnumber.h" #include #include "libalgo.incl" //__USING_STL_NS //__WILLOW_BEGIN_NAMESPACE //-------------------------------------------------------------------------- // Capacity methods //-------------------------------------------------------------------------- StringBuffer::StringBuffer(){} StringBuffer::StringBuffer(const string& str):m_cache_str(str){} StringBuffer::StringBuffer(const char* __s) { m_cache_str.assign(__s,strlen(__s)); } StringBuffer::StringBuffer(const char* __s,size_t length) { m_cache_str.assign(__s,length); } StringBuffer::StringBuffer(const StringBuffer& str):m_cache_str(str.m_cache_str){} //-------------------------------------------------------------------------- // Capacity methods //-------------------------------------------------------------------------- size_t StringBuffer::length() const { return m_cache_str.length(); } size_t StringBuffer::capacity() const { return m_cache_str.capacity(); } void StringBuffer::resize(size_t __n) { m_cache_str.resize(__n); } void StringBuffer::clear() { m_cache_str.clear(); } bool StringBuffer::empty() const { return m_cache_str.empty(); } //-------------------------------------------------------------------------- // Element access //-------------------------------------------------------------------------- const char& StringBuffer::operator[] (size_t __pos) const { return m_cache_str[__pos]; } char& StringBuffer::operator[](size_t __pos) { return m_cache_str[__pos]; } const char& StringBuffer::at(size_t __n) const { return m_cache_str.at(__n); } char& StringBuffer::at(size_t __n) { return m_cache_str.at(__n); } const string& StringBuffer::str() const { return m_cache_str; } string StringBuffer::toString() const { return m_cache_str; } //-------------------------------------------------------------------------- // Modifiers methods (+=) //-------------------------------------------------------------------------- StringBuffer& StringBuffer::operator+=(const StringBuffer& __str) { return this->append(__str); } StringBuffer& StringBuffer::operator+=(const string& __str) { return this->append(__str); } StringBuffer& StringBuffer::operator+=(const char* __s) { return this->append(__s); } StringBuffer& StringBuffer::operator+=(const char& __c) { return this->append(__c); } StringBuffer& StringBuffer::operator+=(const bool& __n) { return this->append(__n); } StringBuffer& StringBuffer::operator+=(const short& __n) { return this->append(__n); } StringBuffer& StringBuffer::operator+=(const unsigned short& __n) { return this->append(__n); } StringBuffer& StringBuffer::operator+=(const int& __n) { return this->append(__n); } StringBuffer& StringBuffer::operator+=(const unsigned int& __n) { return this->append(__n); } StringBuffer& StringBuffer::operator+=(const long& __n) { return this->append(__n); } StringBuffer& StringBuffer::operator+=(const unsigned long& __n) { return this->append(__n); } #if defined(LONG_LONG_IS_LONG) StringBuffer& StringBuffer::operator+=(const long long & __n) { return this->append(__n); } StringBuffer& StringBuffer::operator+=(const unsigned long long & __n) { return this->append(__n); } #else StringBuffer& StringBuffer::operator+=(const long long & __n) { return this->append(__n); } StringBuffer& StringBuffer::operator+=(const unsigned long long & __n) { return this->append(__n); } #endif StringBuffer& StringBuffer::operator+=(const float& __n) { return this->append(__n); } StringBuffer& StringBuffer::operator+=(const double& __n) { return this->append(__n); } //-------------------------------------------------------------------------- // Modifiers methods (<<) //-------------------------------------------------------------------------- StringBuffer& StringBuffer::operator<<(const StringBuffer& __str) { return this->append(__str); } StringBuffer& StringBuffer::operator<<(const string& __str) { return this->append(__str); } StringBuffer& StringBuffer::operator<<(const char* __s) { return this->append(__s); } StringBuffer& StringBuffer::operator<<(const char& __c) { return this->append(__c); } StringBuffer& StringBuffer::operator<<(const bool& __n) { return this->append(__n); } StringBuffer& StringBuffer::operator<<(const short& __n) { return this->append(__n); } StringBuffer& StringBuffer::operator<<(const unsigned short& __n) { return this->append(__n); } StringBuffer& StringBuffer::operator<<(const int& __n) { return this->append(__n); } StringBuffer& StringBuffer::operator<<(const unsigned int& __n) { return this->append(__n); } StringBuffer& StringBuffer::operator<<(const long& __n) { return this->append(__n); } StringBuffer& StringBuffer::operator<<(const unsigned long& __n) { return this->append(__n); } #if defined(LONG_LONG_IS_LONG) StringBuffer& StringBuffer::operator<<(const long long & __n) { return this->append(__n); } StringBuffer& StringBuffer::operator<<(const unsigned long long & __n) { return this->append(__n); } #else StringBuffer& StringBuffer::operator<<(const long long & __n) { return this->append(__n); } StringBuffer& StringBuffer::operator<<(const unsigned long long & __n) { return this->append(__n); } #endif StringBuffer& StringBuffer::operator<<(const float& __n) { return this->append(__n); } StringBuffer& StringBuffer::operator<<(const double& __n) { return this->append(__n); } //-------------------------------------------------------------------------- // Modifiers methods (StringBuffer::append) //-------------------------------------------------------------------------- StringBuffer& StringBuffer::append(const StringBuffer& __str) { m_cache_str.append(__str.m_cache_str); return *this; } StringBuffer& StringBuffer::append(const string& __str) { m_cache_str.append(__str); return *this; } StringBuffer& StringBuffer::append(const char* __s) { m_cache_str.append(__s); return *this; } StringBuffer& StringBuffer::append(const char& __c) { m_cache_str.append(&__c,1); return *this; } StringBuffer& StringBuffer::append(const bool& __n) { return this->insert(length(),__n); } StringBuffer& StringBuffer::append(const short& __n) { return this->insert(length(),__n); } StringBuffer& StringBuffer::append(const unsigned short& __n) { return this->insert(length(),__n); } StringBuffer& StringBuffer::append(const int& __n) { return this->insert(length(),__n); } StringBuffer& StringBuffer::append(const unsigned int& __n) { return this->insert(length(),__n); } StringBuffer& StringBuffer::append(const long& __n) { return this->insert(length(),__n); } StringBuffer& StringBuffer::append(const unsigned long& __n) { return this->insert(length(),__n); } #if defined(LONG_LONG_IS_LONG) StringBuffer& StringBuffer::append(const long long & __n) { return this->insert(length(),__n); } StringBuffer& StringBuffer::append(const unsigned long long & __n) { return this->insert(length(),__n); } #else StringBuffer& StringBuffer::append(const long long & __n) { return this->insert(length(),__n); } StringBuffer& StringBuffer::append(const unsigned long long & __n) { return this->insert(length(),__n); } #endif StringBuffer& StringBuffer::append(const float& __n) { return this->insert(length(),__n); } StringBuffer& StringBuffer::append(const double& __n) { return this->insert(length(),__n); } //-------------------------------------------------------------------------- // Modifiers methods (StringBuffer::insert) //-------------------------------------------------------------------------- StringBuffer& StringBuffer::insert(size_t __pos,const StringBuffer& __str) { m_cache_str.insert(__pos,__str.m_cache_str); return *this; } StringBuffer& StringBuffer::insert(size_t __pos,const string& __str) { m_cache_str.insert(__pos,__str); return *this; } StringBuffer& StringBuffer::insert(size_t __pos,const char* __s) { m_cache_str.insert(__pos,__s); return *this; } StringBuffer& StringBuffer::insert(size_t __pos,const char& __c) { m_cache_str.insert(__pos,&__c,1); return *this; } StringBuffer& StringBuffer::insert(size_t __pos,const bool& __c) { if(__c) { m_cache_str.insert(__pos,"true"); } else { m_cache_str.insert(__pos,"false"); } return *this; } StringBuffer& StringBuffer::insert(size_t __pos,const short& __n) { //m_cache_str.insert(__pos,Number::toString((int)__n)); m_cache_str.insert(__pos,number_to_str(__n)) ; return *this; } StringBuffer& StringBuffer::insert(size_t __pos,const unsigned short& __n) { //m_cache_str.insert(__pos,Number::toString((unsigned int)__n)); m_cache_str.insert(__pos,number_to_str(__n)) ; return *this; } StringBuffer& StringBuffer::insert(size_t __pos,const int& __n) { //m_cache_str.insert(__pos,Number::toString(__n)); m_cache_str.insert(__pos,number_to_str(__n)) ; return *this; } StringBuffer& StringBuffer::insert(size_t __pos,const unsigned int& __n) { //m_cache_str.insert(__pos,Number::toString(__n)); m_cache_str.insert(__pos,number_to_str(__n)) ; return *this; } StringBuffer& StringBuffer::insert(size_t __pos,const long& __n) { //m_cache_str.insert(__pos,Number::toString((long long)__n)); m_cache_str.insert(__pos,number_to_str(__n)) ; return *this; } StringBuffer& StringBuffer::insert(size_t __pos,const unsigned long& __n) { //m_cache_str.insert(__pos,Number::toString((unsigned long long)__n)); m_cache_str.insert(__pos,number_to_str(__n)) ; return *this; } #if defined(LONG_LONG_IS_LONG) StringBuffer& StringBuffer::insert(size_t __pos,const long long & __n) { //m_cache_str.insert(__pos,Number::toString(__n)); m_cache_str.insert(__pos,number_to_str(__n)) ; return *this; } StringBuffer& StringBuffer::insert(size_t __pos,const unsigned long long & __n) { //m_cache_str.insert(__pos,Number::toString(__n)); m_cache_str.insert(__pos,number_to_str(__n)) ; return *this; } #else StringBuffer& StringBuffer::insert(size_t __pos,const long long & __n) { //m_cache_str.insert(__pos,Number::toString(__n)); m_cache_str.insert(__pos,number_to_str(__n)) ; return *this; } StringBuffer& StringBuffer::insert(size_t __pos,const unsigned long long & __n) { //m_cache_str.insert(__pos,Number::toString(__n)); m_cache_str.insert(__pos,number_to_str(__n)) ; return *this; } #endif StringBuffer& StringBuffer::insert(size_t __pos,const float& __n) { //m_cache_str.insert(__pos,Number::toString(__n)); m_cache_str.insert(__pos,float_to_str(__n)) ; return *this; } StringBuffer& StringBuffer::insert(size_t __pos,const double& __n) { //m_cache_str.insert(__pos,Number::toString(__n)); m_cache_str.insert(__pos,float_to_str(__n)) ; return *this; } //-------------------------------------------------------------------------- // Modifiers methods (delete) //-------------------------------------------------------------------------- StringBuffer& StringBuffer::erase(size_t __pos,size_t __n) { m_cache_str.erase(__pos,__n); return *this; } //-------------------------------------------------------------------------- // Modifiers methods (replace) //-------------------------------------------------------------------------- StringBuffer& StringBuffer::replace(size_t __pos, size_t __n, const string& __str) { m_cache_str.replace(__pos,__n,__str); return *this; } StringBuffer& StringBuffer::replaceAll(size_t __pos,const string& __src, const string& __dst) { size_t prevPos = __pos; size_t newPos = 0; while((newPos = m_cache_str.find(__src,prevPos)) != string::npos) { //if(newPos == prevPos) //{ // break; //} prevPos = newPos; m_cache_str.replace(newPos,__src.length(),__dst); } return *this; } //-------------------------------------------------------------------------- // Finders methods (substring) //-------------------------------------------------------------------------- size_t StringBuffer::indexOf(const string& __str) const { return m_cache_str.find_first_of(__str); } size_t StringBuffer::indexOf(const string& __str,size_t __pos) const { return m_cache_str.find_first_of(__str,__pos); } size_t StringBuffer::lastIndexOf(const string& __str) const { return m_cache_str.find_last_of(__str); } size_t StringBuffer::lastIndexOf(const string& __str,size_t __pos) const { return m_cache_str.find_last_of(__str,__pos); } size_t StringBuffer::indexOf(int ch) const { return m_cache_str.find_first_of((char)ch); } size_t StringBuffer::indexOf(int ch,size_t __pos) const { return m_cache_str.find_first_of((char)ch,__pos); } size_t StringBuffer::lastIndexOf(int ch) const { return m_cache_str.find_last_of((char)ch); } size_t StringBuffer::lastIndexOf(int ch,size_t __pos) const { return m_cache_str.find_last_of((char)ch,__pos); } //-------------------------------------------------------------------------- // substring methods //-------------------------------------------------------------------------- StringBuffer StringBuffer::substring(size_t __pos, size_t __n ) const { StringBuffer temp; temp += m_cache_str.substr(__pos,__n); return temp; } //-------------------------------------------------------------------------- // //-------------------------------------------------------------------------- int StringBuffer::compare(const StringBuffer& __str) const { return m_cache_str.compare(__str.m_cache_str); } int StringBuffer::compare(const string& __str) const { return m_cache_str.compare(__str); } int StringBuffer::compare(const char* __s) const { return m_cache_str.compare(__s); } //-------------------------------------------------------------------------- // //-------------------------------------------------------------------------- void StringBuffer::swap(StringBuffer& sh) { m_cache_str.swap(sh.m_cache_str); } void StringBuffer::swap(string& str) { m_cache_str.swap(str); } //=============================================================== //=============================================================== const StringBuffer operator+(const StringBuffer& lhs,const StringBuffer& __str) { StringBuffer temp(lhs); temp += __str; return temp; } const StringBuffer operator+(const StringBuffer& lhs,const string& __str) { StringBuffer temp(lhs); temp += __str; return temp; } const StringBuffer operator+(const StringBuffer& lhs,const char* __s) { StringBuffer temp(lhs); temp += __s; return temp; } const StringBuffer operator+(const StringBuffer& lhs,const char& __c) { StringBuffer temp(lhs); temp += __c; return temp; } const StringBuffer operator+(const StringBuffer& lhs,const bool& __n) { StringBuffer temp(lhs); temp += __n; return temp; } const StringBuffer operator+(const StringBuffer& lhs,const short& __n) { StringBuffer temp(lhs); temp += __n; return temp; } const StringBuffer operator+(const StringBuffer& lhs,const unsigned short& __n) { StringBuffer temp(lhs); temp += __n; return temp; } const StringBuffer operator+(const StringBuffer& lhs,const int& __n) { StringBuffer temp(lhs); temp += __n; return temp; } const StringBuffer operator+(const StringBuffer& lhs,const unsigned int& __n) { StringBuffer temp(lhs); temp += __n; return temp; } const StringBuffer operator+(const StringBuffer& lhs,const long& __n) { StringBuffer temp(lhs); temp += __n; return temp; } const StringBuffer operator+(const StringBuffer& lhs,const unsigned long& __n) { StringBuffer temp(lhs); temp += __n; return temp; } #if defined(LONG_LONG_IS_LONG) const StringBuffer operator+(const StringBuffer& lhs,const long long& __n) { StringBuffer temp(lhs); temp += __n; return temp; } const StringBuffer operator+(const StringBuffer& lhs,const unsigned long long& __n) { StringBuffer temp(lhs); temp += __n; return temp; } #else const StringBuffer operator+(const StringBuffer& lhs,const long long& __n) { StringBuffer temp(lhs); temp += __n; return temp; } const StringBuffer operator+(const StringBuffer& lhs,const unsigned long long& __n) { StringBuffer temp(lhs); temp += __n; return temp; } #endif const StringBuffer operator+(const StringBuffer& lhs,const float& __n) { StringBuffer temp(lhs); temp += __n; return temp; } const StringBuffer operator+(const StringBuffer& lhs,const double& __n) { StringBuffer temp(lhs); temp += __n; return temp; } //__WILLOW_END_NAMESPACE