diff 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
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/foosdk/sdk/pfc/splitString2.cpp	Mon Jan 05 02:15:46 2026 -0500
@@ -0,0 +1,56 @@
+#include "pfc-lite.h"
+#include "pfc.h"
+#include "splitString.h"
+#include "splitString2.h"
+
+namespace {
+	class counter_t {
+	public:
+		size_t count = 0;
+		inline void operator+=(pfc::string_part_ref const& p) { (void)p; ++count; }
+	};
+	template<typename ret_t>
+	class wrapper_t {
+	public:
+		ret_t * ret;
+
+		inline void operator+=(pfc::string_part_ref const & p) {
+			ret->emplace_back(p);
+		}
+	};
+}
+
+namespace pfc {
+	
+	std::list<pfc::string8> splitString2(const char* str, const char* delim) {
+		std::list<pfc::string8> ret;
+		wrapper_t<decltype(ret)> w; w.ret = &ret;
+		pfc::splitStringBySubstring(w, str, delim);
+		return ret;
+	}
+	std::list<pfc::string8> splitStringByLines2(const char* str) {
+		std::list<pfc::string8> ret;
+		wrapper_t<decltype(ret)> w; w.ret = &ret;
+		pfc::splitStringByLines(w, str);
+		return ret;
+	}
+
+	std::vector<pfc::string8> splitString2v(const char* str, const char* delim) {
+		counter_t counter;
+		pfc::splitStringBySubstring(counter, str, delim);
+		std::vector<pfc::string8> ret; ret.reserve(counter.count);
+		wrapper_t<decltype(ret)> w; w.ret = &ret;
+		pfc::splitStringBySubstring(w, str, delim);
+		return ret;
+
+	}
+	std::vector<pfc::string8> splitStringByLines2v(const char* str) {
+		counter_t counter;
+		pfc::splitStringByLines(counter, str);
+		std::vector<pfc::string8> ret; ret.reserve(counter.count);
+		wrapper_t<decltype(ret)> w; w.ret = &ret;
+		pfc::splitStringByLines(w, str);
+		return ret;
+	}
+
+}
\ No newline at end of file