Index: src/libchcore/TStringArray.cpp =================================================================== diff -u -N -r633a533cb6e741d44fe28aa56339e1d2709b1b27 -re9926b6e83984d0f30bf2008b93874c7c483d95c --- src/libchcore/TStringArray.cpp (.../TStringArray.cpp) (revision 633a533cb6e741d44fe28aa56339e1d2709b1b27) +++ src/libchcore/TStringArray.cpp (.../TStringArray.cpp) (revision e9926b6e83984d0f30bf2008b93874c7c483d95c) @@ -75,6 +75,55 @@ } /////////////////////////////////////////////////////////////////////////////////////////////////////// +// class TStringArrayConstIterator + +TStringArrayConstIterator::TStringArrayConstIterator(std::vector::const_iterator iterArray) : + m_iterArray(iterArray) +{ +} + +TStringArrayConstIterator::TStringArrayConstIterator() +{ +} + +TStringArrayConstIterator::~TStringArrayConstIterator() +{ +} + +TStringArrayConstIterator TStringArrayConstIterator::operator++(int) +{ + TStringArrayConstIterator iterCurrent = *this; + ++m_iterArray; + return iterCurrent; +} + +TStringArrayConstIterator& TStringArrayConstIterator::operator++() +{ + ++m_iterArray; + return *this; +} + +bool TStringArrayConstIterator::operator==(const TStringArrayConstIterator& rSrc) const +{ + return m_iterArray == rSrc.m_iterArray; +} + +bool TStringArrayConstIterator::operator!=(const TStringArrayConstIterator& rSrc) const +{ + return m_iterArray != rSrc.m_iterArray; +} + +const TString& TStringArrayConstIterator::operator*() +{ + return *m_iterArray; +} + +const TString& TStringArrayConstIterator::operator*() const +{ + return *m_iterArray; +} + +/////////////////////////////////////////////////////////////////////////////////////////////////////// // class TStringArray TStringArray::TStringArray() { @@ -91,16 +140,25 @@ void TStringArray::InsertAt(size_t stIndex, const TString& str) { + if(stIndex >= m_vItems.size()) + THROW_CORE_EXCEPTION(eErr_BoundsExceeded); + m_vItems.insert(m_vItems.begin() + stIndex, str); } void TStringArray::SetAt(size_t stIndex, const TString& str) { + if(stIndex >= m_vItems.size()) + THROW_CORE_EXCEPTION(eErr_BoundsExceeded); + m_vItems[stIndex] = str; } void TStringArray::RemoveAt(size_t stIndex) { + if(stIndex >= m_vItems.size()) + THROW_CORE_EXCEPTION(eErr_BoundsExceeded); + m_vItems.erase(m_vItems.begin() + stIndex); } @@ -111,6 +169,9 @@ const TString& TStringArray::GetAt(size_t stIndex) const { + if(stIndex >= m_vItems.size()) + THROW_CORE_EXCEPTION(eErr_BoundsExceeded); + return m_vItems.at(stIndex); } @@ -129,4 +190,14 @@ return TStringArrayIterator(m_vItems.end()); } +TStringArrayConstIterator TStringArray::Begin() const +{ + return TStringArrayConstIterator(m_vItems.begin()); +} + +TStringArrayConstIterator TStringArray::End() const +{ + return TStringArrayConstIterator(m_vItems.end()); +} + END_CHCORE_NAMESPACE