Itasca C++ Interface
Loading...
Searching...
No Matches
istringlist.h
1#pragma once
2#include "istring.h"
3#include "idef.h"
4
5class QStringList;
6template <typename T> class QList;
7class IStringList : public IList<IString> {
8public:
10 IStringList(const IList<IString> &in) : IList<IString>(in) { }
11 IStringList(std::vector<string> &&in) { reserve(in.size()); for (auto &&v : in) emplace_back(v); in.clear(); }
12 IStringList(const std::vector<string> &in) { reserve(in.size()); for (auto &v : in) emplace_back(v); }
13 IStringList(const StringList &in) { reserve(in.size()); for (auto &v : in) emplace_back(v); }
14 explicit IStringList(const IString &s) : IList<IString>({s}) { }
15 BASE_EXPORT operator StringList() const;
16
17 // Temporary Conversion
18 BASE_EXPORT IStringList(const QStringList &sl);
19 BASE_EXPORT IStringList(const QList<IString> &q);
20 BASE_EXPORT operator QList<IString>() const;
21 BASE_EXPORT operator QStringList() const;
22
23 void operator+=(const string &s) { push_back(s); }
24 void operator+=(const QString &s) { push_back(s); }
25 void operator+=(const char *str) { push_back(string(str)); }
26 BASE_EXPORT void operator+=(const StringList &s);
27 BASE_EXPORT void operator+=(const QStringList &s);
28 BASE_EXPORT void operator+=(const IStringList &s);
29 BASE_EXPORT void operator+=(const std::vector<string> &s);
30 BASE_EXPORT IStringList operator+(const IStringList &in) { IStringList out(*this); out += in; return out; }
31
32 IStringList &operator<<(const string &s) { push_back(s); return *this; }
33 BASE_EXPORT IStringList &operator<<(const std::vector<string> &s);
34 BASE_EXPORT IStringList &operator<<(const QStringList &s);
35
36 BASE_EXPORT void insert(int index,const IString &s);
37 void append(const IString &s) { push_back(s); }
38 BASE_EXPORT void append(const IStringList &);
39 BASE_EXPORT int removeDuplicates();
40 BASE_EXPORT void sort();
41 BASE_EXPORT IString takeFirst();
42
43 int length() const { return size(); }
44 int size() const { return to<int>(std::vector<IString>::size()); }
45 int count() const { return size(); }
46 IString value(int index,const IString &def={}) const { if (index<0 or index>=to<int>(size())) return def; return at(index); }
47 IString join(const IString &sep) const { return ::join(*this,sep); }
48 BASE_EXPORT bool contains(const IString &sep,IString::Case c=IString::Case::Sensitive) const;
49 BASE_EXPORT int indexOf(const IString &val) const;
50};
51
52inline StringList toStringList(const IStringList &sl) { return sl; }
53inline IStringList toIStringList(const StringList &sl) { return IStringList(sl); }
Definition idef.h:53
Definition istring.h:14
Definition istringlist.h:7
Definition idef.h:50
Definition basestring.h:77
#define BASE_EXPORT
Definition basedef.h:24
constexpr D to(const T &t)
This template function serves as an alternative to static_cast<T>().
Definition to.h:28