Rev 179 | Blame | Compare with Previous | Last modification | View Log | RSS feed
#include "StringList.h"#include "spkdef.h"namespace Utils {CStringList::CStringList(){_lList = new CList<SStringList>();}CStringList::~CStringList(){delete _lList;}void CStringList::pushBack(const SString &str, const SString &data){SStringList *strNode = new SStringList;strNode->str = str;strNode->data = data;_lList->push_back(strNode);}void CStringList::popFront(){if (!_lList->empty()){delete _lList->front();_lList->removeAt(0);}}void CStringList::popBack(){if (!_lList->empty()){delete _lList->back();_lList->pop_back();}}void CStringList::pushBack(const SString &str){pushBack(str, "");}void CStringList::pushFront(const SString &str, const SString &data){SStringList *strNode = new SStringList;strNode->str = str;strNode->data = data;_lList->push_front(strNode);}void CStringList::pushFront(const SString &str){pushFront(str, "");}void CStringList::insertAt(int at, const SString& str, const SString& data){SStringList* strNode = new SStringList;strNode->str = str;strNode->data = data;_lList->insertAt(at, strNode);}void CStringList::insertAt(int at, const SString& str){insertAt(at, str, "");}void CStringList::clear(){_lList->clear();}void CStringList::tokenise(const SString &str, const SString &token){int max = 0;Utils::SString *strs = str.tokenise(token, &max);for ( int i = 0; i < max; i++ ) {this->pushBack(strs[i], Utils::SString::Null());}CLEANSPLIT(strs, max);}Utils::SString CStringList::firstString(){SStringList *node = _lList->first();if ( node ) return node->str;return Utils::SString::Null();}Utils::SString CStringList::nextString(){SStringList *node = _lList->next();if ( node ) return node->str;return Utils::SString::Null();}Utils::SStringList *CStringList::first(){return _lList->first();}Utils::SStringList *CStringList::next(){return _lList->next();}CStringListIterator CStringList::begin() const{return _lList->begin();}CStringListIterator CStringList::end() const{return _lList->end();}Utils::SString CStringList::front() const{auto front = _lList->front();if (front)return front->str;return Utils::SString::Null();}Utils::SString CStringList::back() const{auto front = _lList->back();if (front)return front->str;return Utils::SString::Null();}Utils::SStringList *CStringList::get(int i) const{return _lList->get(i);}Utils::SString CStringList::findData(const Utils::SString &data, bool bIgnoreCase) const{for (CList<SStringList>::iterator itr = _lList->begin(); itr != _lList->end(); itr++) {if ((*itr)->data.Compare(data, !bIgnoreCase))return (*itr)->str;}return SString::Null();}Utils::SString CStringList::findString(const Utils::SString &str, bool bIgnoreCase) const{for (CList<SStringList>::iterator itr = _lList->begin(); itr != _lList->end(); itr++) {if ((*itr)->str.Compare(str, !bIgnoreCase))return (*itr)->data;}return SString::Null();}int CStringList::findStringAndData(const Utils::SString& str, const Utils::SString& data, bool bIgnoreCase) const{size_t pos = 0;for (CList<SStringList>::iterator itr = _lList->begin(); itr != _lList->end(); itr++, pos++) {if ((*itr)->str.Compare(str, !bIgnoreCase)){if ((*itr)->data.Compare(data, !bIgnoreCase))return static_cast<int>(pos);}}return -1;}int CStringList::findPos(const Utils::SString& str, bool bIgnoreCase) const{size_t pos = 0;for (CList<SStringList>::iterator itr = _lList->begin(); itr != _lList->end(); itr++, pos++) {if ((*itr)->str.Compare(str, !bIgnoreCase))return static_cast<int>(pos);}return -1;}bool CStringList::containsStringAndData(const Utils::SString& str, const Utils::SString& data, bool bIgnoreCase) const{size_t pos = 0;for (CList<SStringList>::iterator itr = _lList->begin(); itr != _lList->end(); itr++, pos++) {if ((*itr)->str.Compare(str, !bIgnoreCase)){if ((*itr)->data.Compare(data, !bIgnoreCase))return true;}}return false;}bool CStringList::containsData(const Utils::SString &data, bool bIgnoreCase) const{for (CList<SStringList>::iterator itr = _lList->begin(); itr != _lList->end(); itr++) {if ((*itr)->data.Compare(data, !bIgnoreCase))return true;}return false;}bool CStringList::changeData(const Utils::SString &str, const Utils::SString &data, bool bIgnoreCase){for (CList<SStringList>::iterator itr = _lList->begin(); itr != _lList->end(); itr++) {if ((*itr)->str.Compare(str, !bIgnoreCase)){(*itr)->data = data;return true;}}return false;}bool CStringList::contains(const Utils::SString &str, bool bIgnoreCase) const{for (CList<SStringList>::iterator itr = _lList->begin(); itr != _lList->end(); itr++) {if ((*itr)->str.Compare(str, !bIgnoreCase))return true;}return false;}void CStringList::removeAt(int at){if (!_lList->empty()){auto var = _lList->get(at);if (var)delete var;_lList->removeAt(at);}}CStringListIterator CStringList::remove(CStringListIterator itr){return _lList->remove(itr);}bool CStringList::remove(const Utils::SString &str, bool single){bool removed = false;CList<Utils::SStringList>::iterator itr = _lList->begin();while (itr != _lList->end()){Utils::SStringList *node = *itr;if (node->str == str){itr = _lList->remove(itr);if (single)break;}else++itr;}return removed;}size_t CStringList::size() const{return _lList->size();}bool CStringList::empty() const{return _lList->empty();}const Utils::SStringList* CStringList::operator[](int num) const{return _lList->get(num);}}