From 9cc8e876e412056ed22d364538f0da3d5d71946d Mon Sep 17 00:00:00 2001 From: Sebastian Falbesoner Date: Sat, 11 Sep 2021 13:02:47 +0200 Subject: refactor: introduce single-separator split helper `SplitString` This helper uses spanparsing::Split internally and enables to replace all calls to boost::split where only a single separator is passed. Co-authored-by: Martin Ankerl Co-authored-by: MarcoFalke --- src/util/spanparsing.h | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) (limited to 'src/util/spanparsing.h') diff --git a/src/util/spanparsing.h b/src/util/spanparsing.h index fa2e698e6d..ebec8714a7 100644 --- a/src/util/spanparsing.h +++ b/src/util/spanparsing.h @@ -43,7 +43,22 @@ Span Expr(Span& sp); * Note that this function does not care about braces, so splitting * "foo(bar(1),2),3) on ',' will return {"foo(bar(1)", "2)", "3)"}. */ -std::vector> Split(const Span& sp, char sep); +template > +std::vector Split(const Span& sp, char sep) +{ + std::vector ret; + auto it = sp.begin(); + auto start = it; + while (it != sp.end()) { + if (*it == sep) { + ret.emplace_back(start, it); + start = it + 1; + } + ++it; + } + ret.emplace_back(start, it); + return ret; +} } // namespace spanparsing -- cgit v1.2.3