Itasca C++ Interface
istringlist.h
1 #pragma once
2 #include "istring.h"
3 #include "idef.h"
4 
5 class QStringList;
6 template <typename T> class QList;
7 class IStringList : public IList<IString> {
8 public:
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);
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 
52 inline StringList toStringList(const IStringList &sl) { return sl; }
53 inline 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
POPWARNING QDataStream & operator<<(QDataStream &ds, const Orientation2 &o)
This is an overloaded member function, provided for convenience. It differs from the above function o...
Definition: basetoqt.cpp:107
#define BASE_EXPORT
Definition: basedef.h:24