Index: src/libstring/TStringArray.h =================================================================== diff -u -N -r0d5b67ee96b435d63f7bf075dc8e28603793b187 -rfadd6c9c628de875716d96c3a497b5bc6c8dca8a --- src/libstring/TStringArray.h (.../TStringArray.h) (revision 0d5b67ee96b435d63f7bf075dc8e28603793b187) +++ src/libstring/TStringArray.h (.../TStringArray.h) (revision fadd6c9c628de875716d96c3a497b5bc6c8dca8a) @@ -26,92 +26,24 @@ #include "TString.h" #include "libstring.h" #include +#include "../common/GenericTemplates/RandomAccessIterators.h" +#include "../common/GenericTemplates/RandomAccessContainerWrapper.h" namespace string { - class LIBSTRING_API TStringArrayIterator + template class LIBSTRING_API RandomAccessIteratorWrapper; + class LIBSTRING_API TStringArrayIterator : public RandomAccessIteratorWrapper { - protected: - explicit TStringArrayIterator(std::vector::iterator iterArray); - - public: - TStringArrayIterator(); - ~TStringArrayIterator(); - - TStringArrayIterator operator++(int); - TStringArrayIterator& operator++(); - - bool operator==(const TStringArrayIterator& rSrc) const; - bool operator!=(const TStringArrayIterator& rSrc) const; - - TString& operator*(); - const TString& operator*() const; - - private: -#pragma warning(push) -#pragma warning(disable: 4251) - std::vector::iterator m_iterArray; -#pragma warning(pop) - - friend class TStringArray; }; - class LIBSTRING_API TStringArrayConstIterator + template class LIBSTRING_API RandomAccessConstIteratorWrapper; + class LIBSTRING_API TStringArrayConstIterator : public RandomAccessConstIteratorWrapper { - protected: - explicit TStringArrayConstIterator(std::vector::const_iterator iterArray); - - public: - TStringArrayConstIterator(); - ~TStringArrayConstIterator(); - - TStringArrayConstIterator operator++(int); - TStringArrayConstIterator& operator++(); - - bool operator==(const TStringArrayConstIterator& rSrc) const; - bool operator!=(const TStringArrayConstIterator& rSrc) const; - - const TString& operator*(); - const TString& operator*() const; - - private: -#pragma warning(push) -#pragma warning(disable: 4251) - std::vector::const_iterator m_iterArray; -#pragma warning(pop) - - friend class TStringArray; }; - class LIBSTRING_API TStringArray + template class LIBSTRING_API RandomAccessContainerWrapper; + class LIBSTRING_API TStringArray : public RandomAccessContainerWrapper { - public: - typedef TStringArrayIterator iterator; - typedef TStringArrayConstIterator const_iterator; - - public: - bool operator==(const TStringArray& rSrc) const; - bool operator!=(const TStringArray& rSrc) const; - - void Add(const TString& str); - void InsertAt(size_t stIndex, const TString& str); - void SetAt(size_t stIndex, const TString& str); - void RemoveAt(size_t stIndex); - void Clear(); - - const TString& GetAt(size_t stIndex) const; - size_t GetCount() const; - - TStringArrayIterator Begin(); - TStringArrayIterator End(); - TStringArrayConstIterator Begin() const; - TStringArrayConstIterator End() const; - - private: -#pragma warning(push) -#pragma warning(disable: 4251) - std::vector m_vItems; -#pragma warning(pop) }; }