Skip to content

Commit 2d24c10

Browse files
committed
delete unsafe stringmanip funcs
1 parent 0f5a4d0 commit 2d24c10

File tree

2 files changed

+19
-5
lines changed

2 files changed

+19
-5
lines changed

src/include/sndx/utility/stringmanip.hpp

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,9 @@ namespace sndx::utility {
3636
return strip(sv<CharT>(str), strips);
3737
}
3838

39+
template <class CharT = char>
40+
constexpr sv<CharT> strip(Str<CharT>&&, sv<CharT> = defaultStrip<CharT>) = delete;
41+
3942
constexpr sv<char> strip(std::nullptr_t, sv<char> = defaultStrip<char>) = delete;
4043

4144
[[nodiscard]]
@@ -66,6 +69,9 @@ namespace sndx::utility {
6669
return splitFirst(sv<CharT>(str), delim, strips);
6770
}
6871

72+
template <class CharT = char>
73+
constexpr std::pair<sv<char>, sv<char>> splitFirst(Str<CharT>&&, CharT, sv<CharT> = defaultStrip<char>) = delete;
74+
6975
constexpr std::pair<sv<char>, sv<char>> splitFirst(std::nullptr_t, char, sv<char> = defaultStrip<char>) = delete;
7076

7177
[[nodiscard]]
@@ -99,10 +105,13 @@ namespace sndx::utility {
99105
}
100106

101107
template <class Chr = char> [[nodiscard]]
102-
inline auto splitStrip(Str<Chr> str, Chr delim, sv<Chr> strips = sv<Chr>{ " \t\r" }) {
108+
inline auto splitStrip(const Str<Chr>& str, Chr delim, sv<Chr> strips = sv<Chr>{ " \t\r" }) {
103109
return splitStrip(sv<Chr>{str}, delim, strips);
104110
}
105111

112+
template <class Chr = char>
113+
inline auto splitStrip(Str<Chr>&&, Chr, sv<Chr> = sv<Chr>{ " \t\r" }) = delete;
114+
106115
inline std::vector<sv<char>> splitStrip(std::nullptr_t, char, sv<char> = defaultStrip<char>) = delete;
107116

108117
[[nodiscard]]

src/tests/utility/stringmanip.cpp

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,13 @@ using str = sv<char>;
99
TEST(StringManip, Strip) {
1010
EXPECT_EQ(strip(""), "");
1111
EXPECT_EQ(strip(" "), "");
12-
EXPECT_EQ(strip(std::string(" ")), "");
12+
EXPECT_EQ(strip(" "), "");
1313
EXPECT_EQ(strip(" \t "), "");
1414
EXPECT_EQ(strip(" \r\t\r \t \r"), "");
1515

16-
EXPECT_EQ(strip("apple"), "apple");
16+
std::string apple = "apple";
17+
18+
EXPECT_EQ(strip(apple), "apple");
1719
EXPECT_EQ(strip(" apple\r"), "apple");
1820
EXPECT_EQ(strip("app le\r"), "app le");
1921
EXPECT_EQ(strip("\t a p\r ple\t "), "a p\r ple");
@@ -33,7 +35,9 @@ TEST(StringManip, SplitFirst) {
3335
EXPECT_EQ(splitFirst("a a = b b ", '='), pair("a a", "b b"));
3436
EXPECT_EQ(splitFirst("a a = b b = c c\r", '='), pair("a a", "b b = c c"));
3537

36-
EXPECT_EQ(splitFirst(" apple ", 'w'), pair("apple", ""));
38+
std::string apple = " apple ";
39+
40+
EXPECT_EQ(splitFirst(apple, 'w'), pair("apple", ""));
3741
}
3842

3943
TEST(StringManip, SplitStrip) {
@@ -56,7 +60,8 @@ TEST(StringManip, SplitStrip) {
5660

5761
EXPECT_TRUE(t.empty());
5862

59-
t = splitStrip("apple", ',');
63+
std::string apple = "apple";
64+
t = splitStrip(apple, ',');
6065

6166
EXPECT_EQ(t.size(), 1);
6267
EXPECT_EQ(t[0], "apple");

0 commit comments

Comments
 (0)