MCPcopy Create free account
hub / github.com/CLIUtils/CLI11 / size_t close_sequence

Method size_t close_sequence

include/CLI/impl/StringTools_inl.hpp:331–380  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

329}
330
331CLI11_INLINE std::size_t close_sequence(const std::string &str, std::size_t start, char closure_char) {
332
333 auto bracket_loc = matchBracketChars.find(closure_char);
334 switch(bracket_loc) {
335 case 0:
336 return close_string_quote(str, start, closure_char);
337 case 1:
338 case 2:
339#if defined(_MSC_VER) && _MSC_VER < 1920
340 case(std::size_t)-1:
341#else
342 case std::string::npos:
343#endif
344 return close_literal_quote(str, start, closure_char);
345 default:
346 break;
347 }
348
349 std::string closures(1, closure_char);
350 auto loc = start + 1;
351
352 while(loc < str.size()) {
353 if(str[loc] == closures.back()) {
354 closures.pop_back();
355 if(closures.empty()) {
356 return loc;
357 }
358 }
359 bracket_loc = bracketChars.find(str[loc]);
360 if(bracket_loc != std::string::npos) {
361 switch(bracket_loc) {
362 case 0:
363 loc = close_string_quote(str, loc, str[loc]);
364 break;
365 case 1:
366 case 2:
367 loc = close_literal_quote(str, loc, str[loc]);
368 break;
369 default:
370 closures.push_back(matchBracketChars[bracket_loc]);
371 break;
372 }
373 }
374 ++loc;
375 }
376 if(loc > str.size()) {
377 loc = str.size();
378 }
379 return loc;
380}
381
382CLI11_INLINE std::vector<std::string> split_up(std::string str, char delimiter) {
383

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected