annotate foosdk/sdk/pfc/splitString2.cpp @ 1:20d02a178406 default tip

*: check in everything else yay
author Paper <paper@tflc.us>
date Mon, 05 Jan 2026 02:15:46 -0500
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1 #include "pfc-lite.h"
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
2 #include "pfc.h"
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
3 #include "splitString.h"
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
4 #include "splitString2.h"
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
5
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
6 namespace {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
7 class counter_t {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
8 public:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
9 size_t count = 0;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
10 inline void operator+=(pfc::string_part_ref const& p) { (void)p; ++count; }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
11 };
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
12 template<typename ret_t>
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
13 class wrapper_t {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
14 public:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
15 ret_t * ret;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
16
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
17 inline void operator+=(pfc::string_part_ref const & p) {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
18 ret->emplace_back(p);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
19 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
20 };
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
21 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
22
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
23 namespace pfc {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
24
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
25 std::list<pfc::string8> splitString2(const char* str, const char* delim) {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
26 std::list<pfc::string8> ret;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
27 wrapper_t<decltype(ret)> w; w.ret = &ret;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
28 pfc::splitStringBySubstring(w, str, delim);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
29 return ret;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
30 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
31 std::list<pfc::string8> splitStringByLines2(const char* str) {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
32 std::list<pfc::string8> ret;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
33 wrapper_t<decltype(ret)> w; w.ret = &ret;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
34 pfc::splitStringByLines(w, str);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
35 return ret;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
36 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
37
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
38 std::vector<pfc::string8> splitString2v(const char* str, const char* delim) {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
39 counter_t counter;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
40 pfc::splitStringBySubstring(counter, str, delim);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
41 std::vector<pfc::string8> ret; ret.reserve(counter.count);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
42 wrapper_t<decltype(ret)> w; w.ret = &ret;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
43 pfc::splitStringBySubstring(w, str, delim);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
44 return ret;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
45
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
46 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
47 std::vector<pfc::string8> splitStringByLines2v(const char* str) {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
48 counter_t counter;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
49 pfc::splitStringByLines(counter, str);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
50 std::vector<pfc::string8> ret; ret.reserve(counter.count);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
51 wrapper_t<decltype(ret)> w; w.ret = &ret;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
52 pfc::splitStringByLines(w, str);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
53 return ret;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
54 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
55
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
56 }