MCPcopy Create free account
hub / github.com/emscripten-core/emscripten / string_token

Function string_token

system/lib/llvm-libc/src/string/string_utils.h:184–213  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

182// terminating character is reached, returns a nullptr.
183template <bool SkipDelim = true>
184LIBC_INLINE char *string_token(char *__restrict src,
185 const char *__restrict delimiter_string,
186 char **__restrict saveptr) {
187 // Return nullptr immediately if both src AND saveptr are nullptr
188 if (LIBC_UNLIKELY(src == nullptr && ((src = *saveptr) == nullptr)))
189 return nullptr;
190
191 static_assert(CHAR_BIT == 8, "bitset of 256 assumes char is 8 bits");
192 cpp::bitset<256> delimiter_set;
193 for (; *delimiter_string != '\0'; ++delimiter_string)
194 delimiter_set.set(static_cast<size_t>(*delimiter_string));
195
196 if constexpr (SkipDelim)
197 for (; *src != '\0' && delimiter_set.test(static_cast<size_t>(*src)); ++src)
198 ;
199 if (*src == '\0') {
200 *saveptr = src;
201 return nullptr;
202 }
203 char *token = src;
204 for (; *src != '\0'; ++src) {
205 if (delimiter_set.test(static_cast<size_t>(*src))) {
206 *src = '\0';
207 ++src;
208 break;
209 }
210 }
211 *saveptr = src;
212 return token;
213}
214
215LIBC_INLINE size_t strlcpy(char *__restrict dst, const char *__restrict src,
216 size_t size) {

Callers 2

LLVM_LIBC_FUNCTIONFunction · 0.85
LLVM_LIBC_FUNCTIONFunction · 0.85

Calls 2

setMethod · 0.65
testMethod · 0.45

Tested by

no test coverage detected