11#include <promeki/config.h>
12#if PROMEKI_ENABLE_CORE
19PROMEKI_NAMESPACE_BEGIN
38class StringList :
public List<String> {
40 PROMEKI_DATATYPE(StringList, DataTypeStringList, 1)
43 Error writeToStream(DataStream &s) const;
45 template <uint32_t V> static Result<StringList> readFromStream(DataStream &s);
48 using List::operator+=;
49 using List::operator=;
52 using Ptr = SharedPtr<StringList>;
61 StringList *_promeki_clone()
const {
return new StringList(*
this); }
68 StringList(
size_t ct,
const char **list) {
70 for (
size_t i = 0; i < ct; ++i) pushToBack(list[i]);
78 String join(
const String &delimiter)
const {
80 for (
auto it = constBegin(); it != constEnd(); ++it) {
82 if (it + 1 != constEnd()) result += delimiter;
92 String toString()
const {
return join(
","); }
101 static Result<StringList> fromString(
const String &s) {
103 if (s.isEmpty())
return makeResult(std::move(out));
105 return makeResult(std::move(out));
113 StringList filter(TestFunc func)
const {
115 for (
const auto &item : *this) {
116 if (func(item)) result.pushToBack(item);