/* PIP - Platform Independent Primitives Strings array class Ivan Pelipenko peri4ko@yandex.ru, Andrey Bychkov work.a.b@yandex.ru This program is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program. If not, see . */ #include "pistringlist.h" //! \~\class PIStringList pistringlist.h //! \~\details //! //! \details //! \~english Example: //! \~russian Пример: //! \~\code //! PIStringList sl("1", "2"); //! sl << "3"; //! piCout << sl.join(" < "); // 1 < 2 < 3 //! \endcode PIString PIStringList::join(const PIString & delim) const { PIString s; for (uint i = 0; i < size(); ++i) { s += at(i); if (i < size() - 1) s += delim; } return s; } //! \details //! \~english Example: //! \~russian Пример: //! \~\code //! PIStringList sl("1", "2"); //! sl << "1" << "2" << "3"; //! piCout << sl; // {"1", "2", "1", "2", "3"} //! piCout << sl.removeStrings("1"); // {"2", "2", "3"} //! \endcode PIStringList & PIStringList::removeStrings(const PIString & value) { for (uint i = 0; i < size(); ++i) { if (at(i) == value) { remove(i); --i; } } return *this; } //! \details //! \~english Example: //! \~russian Пример: //! \~\code //! PIStringList sl("1", "2"); //! sl << "1" << "2" << "3"; //! piCout << sl; // {"1", "2", "1", "2", "3"} //! piCout << sl.removeDuplicates(); // {"1", "2", "3"} //! \endcode PIStringList& PIStringList::removeDuplicates() { PIStringList l; PIString s; bool ae; for (int i = 0; i < size_s(); ++i) { ae = false; s = at(i); for (int j = 0; j < l.size_s(); ++j) { if (s != l[j]) continue; ae = true; break; } if (!ae) { l << s; continue; } remove(i); --i; } return *this; } //! \details //! \~english Example: //! \~russian Пример: //! \~\code //! PIStringList sl(" 1 ", "\t2", " 3\n"); //! piCout << sl; // {" 1 ", " 2", " 3\n"} //! piCout << sl.trim(); // {"1", "2", "3"} //! \endcode PIStringList & PIStringList::trim() { for (uint i = 0; i < size(); ++i) (*this)[i].trim(); return *this; }