MCPcopy Create free account
hub / github.com/Serial-Studio/Serial-Studio / fastfloat_strncasecmp3

Function fastfloat_strncasecmp3

app/src/ThirdParty/fast_float.h:423–467  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

421
422template <typename UC>
423inline FASTFLOAT_CONSTEXPR14 bool
424fastfloat_strncasecmp3(UC const *actual_mixedcase,
425 UC const *expected_lowercase) {
426 uint64_t mask{0};
427 FASTFLOAT_IF_CONSTEXPR17(sizeof(UC) == 1) { mask = 0x2020202020202020; }
428 else FASTFLOAT_IF_CONSTEXPR17(sizeof(UC) == 2) {
429 mask = 0x0020002000200020;
430 }
431 else FASTFLOAT_IF_CONSTEXPR17(sizeof(UC) == 4) {
432 mask = 0x0000002000000020;
433 }
434 else {
435 return false;
436 }
437
438 uint64_t val1{0}, val2{0};
439 if (cpp20_and_in_constexpr()) {
440 for (size_t i = 0; i < 3; i++) {
441 if ((actual_mixedcase[i] | 32) != expected_lowercase[i]) {
442 return false;
443 }
444 }
445 return true;
446 } else {
447 FASTFLOAT_IF_CONSTEXPR17(sizeof(UC) == 1 || sizeof(UC) == 2) {
448 ::memcpy(&val1, actual_mixedcase, 3 * sizeof(UC));
449 ::memcpy(&val2, expected_lowercase, 3 * sizeof(UC));
450 val1 |= mask;
451 val2 |= mask;
452 return val1 == val2;
453 }
454 else FASTFLOAT_IF_CONSTEXPR17(sizeof(UC) == 4) {
455 ::memcpy(&val1, actual_mixedcase, 2 * sizeof(UC));
456 ::memcpy(&val2, expected_lowercase, 2 * sizeof(UC));
457 val1 |= mask;
458 if (val1 != val2) {
459 return false;
460 }
461 return (actual_mixedcase[2] | 32) == (expected_lowercase[2]);
462 }
463 else {
464 return false;
465 }
466 }
467}
468
469template <typename UC>
470inline FASTFLOAT_CONSTEXPR14 bool

Callers 1

Calls 2

FASTFLOAT_IF_CONSTEXPR17Function · 0.85
cpp20_and_in_constexprFunction · 0.85

Tested by

no test coverage detected