diff --git a/libaegisub/ass/time.cpp b/libaegisub/ass/time.cpp index 7b0596f00..a0ecbdaa5 100644 --- a/libaegisub/ass/time.cpp +++ b/libaegisub/ass/time.cpp @@ -18,10 +18,10 @@ #include #include +#include #include #include -#include namespace agi { Time::Time(int time) : time(util::mid(0, time, 10 * 60 * 60 * 1000 - 1)) { } @@ -94,7 +94,7 @@ std::string SmpteFormatter::ToSMPTE(Time time) const { Time SmpteFormatter::FromSMPTE(std::string const& str) const { std::vector toks; - boost::split(toks, str, [=](char c) { return c == sep; }); + Split(toks, str, sep); if (toks.size() != 4) return 0; int h, m, s, f; diff --git a/libaegisub/common/thesaurus.cpp b/libaegisub/common/thesaurus.cpp index b56aac054..9d914be77 100644 --- a/libaegisub/common/thesaurus.cpp +++ b/libaegisub/common/thesaurus.cpp @@ -22,8 +22,8 @@ #include "libaegisub/file_mapping.h" #include "libaegisub/line_iterator.h" #include "libaegisub/make_unique.h" +#include "libaegisub/split.h" -#include #include namespace agi { @@ -76,15 +76,14 @@ std::vector Thesaurus::Lookup(std::string const& word) { // First line is the word and meaning count std::vector header; - boost::split(header, *read_line(temp), [](char c) { return c == '|'; }); + agi::Split(header, *read_line(temp), '|'); if (header.size() != 2) return out; int meanings = atoi(header[1].c_str()); out.reserve(meanings); + std::vector line; for (int i = 0; i < meanings; ++i) { - std::vector line; - boost::split(line, *read_line(temp), [](char c) { return c == '|'; }); - + agi::Split(line, *read_line(temp), '|'); if (line.size() < 2) continue; diff --git a/libaegisub/include/libaegisub/split.h b/libaegisub/include/libaegisub/split.h index 9183e3a02..0b152b224 100644 --- a/libaegisub/include/libaegisub/split.h +++ b/libaegisub/include/libaegisub/split.h @@ -91,12 +91,19 @@ namespace agi { return split_iterator(); } + static inline std::string str(StringRange const& r) { + return std::string(r.begin(), r.end()); + } + template split_iterator Split(Str const& str, Char delim) { return split_iterator(begin(str), end(str), delim); } - static inline std::string str(StringRange const& r) { - return std::string(r.begin(), r.end()); + template + void Split(Cont& out, Str const& str, Char delim) { + out.clear(); + for (auto const& tok : Split(str, delim)) + out.emplace_back(begin(tok), end(tok)); } } diff --git a/src/dialog_version_check.cpp b/src/dialog_version_check.cpp index 62e7daede..6dea7e3b6 100644 --- a/src/dialog_version_check.cpp +++ b/src/dialog_version_check.cpp @@ -43,9 +43,9 @@ #include #include #include +#include #include -#include #include #include #include @@ -321,7 +321,7 @@ void DoCheck(bool interactive) { if (line.empty()) continue; std::vector parsed; - boost::split(parsed, line, [](char c) { return c == '|'; }); + agi::Split(parsed, line, '|'); if (parsed.size() != 6) continue; if (atoi(parsed[1].c_str()) <= GetSVNRevision()) diff --git a/src/video_provider_dummy.cpp b/src/video_provider_dummy.cpp index b74341aca..b68b206b7 100644 --- a/src/video_provider_dummy.cpp +++ b/src/video_provider_dummy.cpp @@ -39,10 +39,10 @@ #include #include +#include #include #include -#include #include #include #include @@ -106,7 +106,7 @@ std::unique_ptr CreateDummyVideoProvider(agi::fs::path const& fil std::vector toks; auto const& fields = filename.string().substr(7); - boost::split(toks, fields, [](char c) { return c == ':'; }); + agi::Split(toks, fields, ':'); if (toks.size() != 8) throw VideoOpenError("Too few fields in dummy video parameter list");