diff --git a/include/stdex/parser.hpp b/include/stdex/parser.hpp index 3ecef8868..07cdb4881 100644 --- a/include/stdex/parser.hpp +++ b/include/stdex/parser.hpp @@ -143,7 +143,7 @@ namespace stdex // Entity end utf32_t buf32[2]; size_t n = chr_end - start - 1; - auto entity_w = utf32_to_wstr(sgml2uni(text + start + 1, n, buf32), buf); + auto entity_w = utf32_to_wstr(sgml2uni(&text[start + 1], n, buf32), buf); if (entity_w) { chr_end++; return entity_w; @@ -834,8 +834,8 @@ namespace stdex m = m_str.size(), n = std::min(end - start, m); bool r = ((flags & match_case_insensitive) ? - stdex::strnicmp(text + start, n, m_str.data(), m, this->m_locale) : - stdex::strncmp(text + start, n, m_str.data(), m)) == 0; + stdex::strnicmp(&text[start], n, m_str.data(), m, this->m_locale) : + stdex::strncmp(&text[start], n, m_str.data(), m)) == 0; if (r) { this->interval.end = (this->interval.start = start) + n; return true; @@ -4527,7 +4527,7 @@ namespace stdex m_rparenthesis->invalidate(); if (m_plus_sign && m_plus_sign->match(text, this->interval.end, end, flags)) { - value.append(text + m_plus_sign->interval.start, text + m_plus_sign->interval.end); + value.append(&text[m_plus_sign->interval.start], &text[m_plus_sign->interval.end]); safe_value_size = value.size(); this->interval.end = m_plus_sign->interval.end; } @@ -4538,7 +4538,7 @@ namespace stdex break; if (m_digit->match(text, this->interval.end, end, flags)) { // Digit - value.append(text + m_digit->interval.start, text + m_digit->interval.end); + value.append(&text[m_digit->interval.start], &text[m_digit->interval.end]); this->interval.end = m_digit->interval.end; if (!in_parentheses) { safe_digit_end = this->interval.end; @@ -4554,7 +4554,7 @@ namespace stdex m_lparenthesis->match(text, this->interval.end, end, flags)) { // Left parenthesis - value.append(text + m_lparenthesis->interval.start, m_lparenthesis->interval.size()); + value.append(&text[m_lparenthesis->interval.start], m_lparenthesis->interval.size()); this->interval.end = m_lparenthesis->interval.end; in_parentheses = true; after_digit = false; @@ -4567,7 +4567,7 @@ namespace stdex m_lparenthesis->hit_offset == m_rparenthesis->hit_offset) // Left and right parentheses must match { // Right parenthesis - value.append(text + m_rparenthesis->interval.start, text + m_rparenthesis->interval.end); + value.append(&text[m_rparenthesis->interval.start], &text[m_rparenthesis->interval.end]); this->interval.end = m_rparenthesis->interval.end; safe_digit_end = this->interval.end; safe_value_size = value.size(); @@ -5257,57 +5257,57 @@ namespace stdex this->part1.interval.size() <= 12 && this->part2.interval.size() <= 12 && this->part3.interval.size() <= 12 && this->part1.interval.size() + this->part2.interval.size() + this->part3.interval.size() <= 20 && check11( - text + this->part1.interval.start, this->part1.interval.size(), - text + this->part2.interval.start, this->part2.interval.size(), - text + this->part3.interval.start, this->part3.interval.size()) : + &text[this->part1.interval.start], this->part1.interval.size(), + &text[this->part2.interval.start], this->part2.interval.size(), + &text[this->part3.interval.start], this->part3.interval.size()) : this->part2.interval ? this->part1.interval.size() <= 12 && this->part2.interval.size() <= 12 && this->part1.interval.size() + this->part2.interval.size() <= 20 && check11( - text + this->part1.interval.start, this->part1.interval.size(), - text + this->part2.interval.start, this->part2.interval.size()) : + &text[this->part1.interval.start], this->part1.interval.size(), + &text[this->part2.interval.start], this->part2.interval.size()) : this->part1.interval ? this->part1.interval.size() <= 12 && - check11(text + this->part1.interval.start, this->part1.interval.size()) : + check11(&text[this->part1.interval.start], this->part1.interval.size()) : false; else if (this->model[0] == '0' && this->model[1] == '2') is_valid = this->part3.interval ? this->part1.interval.size() <= 12 && this->part2.interval.size() <= 12 && this->part3.interval.size() <= 12 && this->part1.interval.size() + this->part2.interval.size() + this->part3.interval.size() <= 20 && - check11(text + this->part2.interval.start, this->part2.interval.size()) && - check11(text + this->part3.interval.start, this->part3.interval.size()) : + check11(&text[this->part2.interval.start], this->part2.interval.size()) && + check11(&text[this->part3.interval.start], this->part3.interval.size()) : false; else if (this->model[0] == '0' && this->model[1] == '3') is_valid = this->part3.interval ? this->part1.interval.size() <= 12 && this->part2.interval.size() <= 12 && this->part3.interval.size() <= 12 && this->part1.interval.size() + this->part2.interval.size() + this->part3.interval.size() <= 20 && - check11(text + this->part1.interval.start, this->part1.interval.size()) && - check11(text + this->part2.interval.start, this->part2.interval.size()) && - check11(text + this->part3.interval.start, this->part3.interval.size()) : + check11(&text[this->part1.interval.start], this->part1.interval.size()) && + check11(&text[this->part2.interval.start], this->part2.interval.size()) && + check11(&text[this->part3.interval.start], this->part3.interval.size()) : false; else if (this->model[0] == '0' && this->model[1] == '4') is_valid = this->part3.interval ? this->part1.interval.size() <= 12 && this->part2.interval.size() <= 12 && this->part3.interval.size() <= 12 && this->part1.interval.size() + this->part2.interval.size() + this->part3.interval.size() <= 20 && - check11(text + this->part1.interval.start, this->part1.interval.size()) && - check11(text + this->part3.interval.start, this->part3.interval.size()) : + check11(&text[this->part1.interval.start], this->part1.interval.size()) && + check11(&text[this->part3.interval.start], this->part3.interval.size()) : false; else if ((this->model[0] == '0' || this->model[0] == '5') && this->model[1] == '5') is_valid = this->part3.interval ? this->part1.interval.size() <= 12 && this->part2.interval.size() <= 12 && this->part3.interval.size() <= 12 && this->part1.interval.size() + this->part2.interval.size() + this->part3.interval.size() <= 20 && - check11(text + this->part1.interval.start, this->part1.interval.size()) : + check11(&text[this->part1.interval.start], this->part1.interval.size()) : this->part2.interval ? this->part1.interval.size() <= 12 && this->part2.interval.size() <= 12 && this->part1.interval.size() + this->part2.interval.size() <= 20 && - check11(text + this->part1.interval.start, this->part1.interval.size()) : + check11(&text[this->part1.interval.start], this->part1.interval.size()) : this->part1.interval ? this->part1.interval.size() <= 12 && - check11(text + this->part1.interval.start, this->part1.interval.size()) : + check11(&text[this->part1.interval.start], this->part1.interval.size()) : false; else if (this->model[0] == '0' && this->model[1] == '6') is_valid = @@ -5315,23 +5315,23 @@ namespace stdex this->part1.interval.size() <= 12 && this->part2.interval.size() <= 12 && this->part3.interval.size() <= 12 && this->part1.interval.size() + this->part2.interval.size() + this->part3.interval.size() <= 20 && check11( - text + this->part2.interval.start, this->part2.interval.size(), - text + this->part3.interval.start, this->part3.interval.size()) : + &text[this->part2.interval.start], this->part2.interval.size(), + &text[this->part3.interval.start], this->part3.interval.size()) : this->part2.interval ? this->part1.interval.size() <= 12 && this->part2.interval.size() <= 12 && this->part1.interval.size() + this->part2.interval.size() <= 20 && - check11(text + this->part2.interval.start, this->part2.interval.size()) : + check11(&text[this->part2.interval.start], this->part2.interval.size()) : false; else if (this->model[0] == '0' && this->model[1] == '7') is_valid = this->part3.interval ? this->part1.interval.size() <= 12 && this->part2.interval.size() <= 12 && this->part3.interval.size() <= 12 && this->part1.interval.size() + this->part2.interval.size() + this->part3.interval.size() <= 20 && - check11(text + this->part2.interval.start, this->part2.interval.size()) : + check11(&text[this->part2.interval.start], this->part2.interval.size()) : this->part2.interval ? this->part1.interval.size() <= 12 && this->part2.interval.size() <= 12 && this->part1.interval.size() + this->part2.interval.size() <= 20 && - check11(text + this->part2.interval.start, this->part2.interval.size()) : + check11(&text[this->part2.interval.start], this->part2.interval.size()) : false; else if (this->model[0] == '0' && this->model[1] == '8') is_valid = @@ -5339,9 +5339,9 @@ namespace stdex this->part1.interval.size() <= 12 && this->part2.interval.size() <= 12 && this->part3.interval.size() <= 12 && this->part1.interval.size() + this->part2.interval.size() + this->part3.interval.size() <= 20 && check11( - text + this->part1.interval.start, this->part1.interval.size(), - text + this->part2.interval.start, this->part2.interval.size()) && - check11(text + this->part3.interval.start, this->part3.interval.size()) : + &text[this->part1.interval.start], this->part1.interval.size(), + &text[this->part2.interval.start], this->part2.interval.size()) && + check11(&text[this->part3.interval.start], this->part3.interval.size()) : false; else if (this->model[0] == '0' && this->model[1] == '9') is_valid = @@ -5349,32 +5349,32 @@ namespace stdex this->part1.interval.size() <= 12 && this->part2.interval.size() <= 12 && this->part3.interval.size() <= 12 && this->part1.interval.size() + this->part2.interval.size() + this->part3.interval.size() <= 20 && check11( - text + this->part1.interval.start, this->part1.interval.size(), - text + this->part2.interval.start, this->part2.interval.size()) : + &text[this->part1.interval.start], this->part1.interval.size(), + &text[this->part2.interval.start], this->part2.interval.size()) : this->part2.interval ? this->part1.interval.size() <= 12 && this->part2.interval.size() <= 12 && this->part1.interval.size() + this->part2.interval.size() <= 20 && check11( - text + this->part1.interval.start, this->part1.interval.size(), - text + this->part2.interval.start, this->part2.interval.size()) : + &text[this->part1.interval.start], this->part1.interval.size(), + &text[this->part2.interval.start], this->part2.interval.size()) : this->part1.interval ? this->part1.interval.size() <= 12 && - check11(text + this->part1.interval.start, this->part1.interval.size()) : + check11(&text[this->part1.interval.start], this->part1.interval.size()) : false; else if (this->model[0] == '1' && this->model[1] == '0') is_valid = this->part3.interval ? this->part1.interval.size() <= 12 && this->part2.interval.size() <= 12 && this->part3.interval.size() <= 12 && this->part1.interval.size() + this->part2.interval.size() + this->part3.interval.size() <= 20 && - check11(text + this->part1.interval.start, this->part1.interval.size()) && + check11(&text[this->part1.interval.start], this->part1.interval.size()) && check11( - text + this->part2.interval.start, this->part2.interval.size(), - text + this->part3.interval.start, this->part3.interval.size()) : + &text[this->part2.interval.start], this->part2.interval.size(), + &text[this->part3.interval.start], this->part3.interval.size()) : this->part2.interval ? this->part1.interval.size() <= 12 && this->part2.interval.size() <= 12 && this->part1.interval.size() + this->part2.interval.size() <= 20 && - check11(text + this->part1.interval.start, this->part1.interval.size()) && - check11(text + this->part2.interval.start, this->part2.interval.size()) : + check11(&text[this->part1.interval.start], this->part1.interval.size()) && + check11(&text[this->part2.interval.start], this->part2.interval.size()) : false; else if ( (this->model[0] == '1' && (this->model[1] == '1' || this->model[1] == '8' || this->model[1] == '9')) || @@ -5385,13 +5385,13 @@ namespace stdex this->part3.interval ? this->part1.interval.size() <= 12 && this->part2.interval.size() <= 12 && this->part3.interval.size() <= 12 && this->part1.interval.size() + this->part2.interval.size() + this->part3.interval.size() <= 20 && - check11(text + this->part1.interval.start, this->part1.interval.size()) && - check11(text + this->part2.interval.start, this->part2.interval.size()) : + check11(&text[this->part1.interval.start], this->part1.interval.size()) && + check11(&text[this->part2.interval.start], this->part2.interval.size()) : this->part2.interval ? this->part1.interval.size() <= 12 && this->part2.interval.size() <= 12 && this->part1.interval.size() + this->part2.interval.size() <= 20 && - check11(text + this->part1.interval.start, this->part1.interval.size()) && - check11(text + this->part2.interval.start, this->part2.interval.size()) : + check11(&text[this->part1.interval.start], this->part1.interval.size()) && + check11(&text[this->part2.interval.start], this->part2.interval.size()) : false; else if (this->model[0] == '1' && this->model[1] == '2') is_valid = @@ -5399,7 +5399,7 @@ namespace stdex this->part2.interval ? false : this->part1.interval ? this->part1.interval.size() <= 13 && - check11(text + this->part1.interval.start, this->part1.interval.size()) : + check11(&text[this->part1.interval.start], this->part1.interval.size()) : false; else if ((this->model[0] == '2' || this->model[0] == '3') && this->model[1] == '1') is_valid = @@ -5407,7 +5407,7 @@ namespace stdex this->part2.interval ? this->part1.interval.size() <= 12 && this->part2.interval.size() <= 12 && this->part1.interval.size() + this->part2.interval.size() <= 20 && - check11(text + this->part1.interval.start, this->part1.interval.size()) : + check11(&text[this->part1.interval.start], this->part1.interval.size()) : false; else is_valid = true; // Assume models we don't handle as valid @@ -6314,7 +6314,7 @@ namespace stdex stdex_assert(text || start >= end); this->interval.end = start; - if (this->interval.end + 7 <= end && stdex::strnicmp(text + this->interval.end, 7, "http://", SIZE_MAX, m_locale) == 0) { + if (this->interval.end + 7 <= end && stdex::strnicmp(&text[this->interval.end], 7, "http://", SIZE_MAX, m_locale) == 0) { this->interval.end += 7; if (server.match(text, this->interval.end, end, flags)) this->interval.end = server.interval.end; @@ -6342,7 +6342,6 @@ namespace stdex goto error; params.clear(); - if (this->interval.end < end && text[this->interval.end] == '?') { this->interval.end++; for (;;) { @@ -6880,8 +6879,8 @@ namespace stdex if (stdex::isspace(text[this->interval.end])) { version_min.end = this->interval.end; version = - (uint16_t)strtoui(text + version_maj.start, version_maj.size(), nullptr, 10) * 0x100 + - (uint16_t)strtoui(text + version_min.start, version_min.size(), nullptr, 10); + (uint16_t)strtoui(&text[version_maj.start], version_maj.size(), nullptr, 10) * 0x100 + + (uint16_t)strtoui(&text[version_min.start], version_min.size(), nullptr, 10); break; } else @@ -6896,7 +6895,7 @@ namespace stdex version_maj.end = this->interval.end; version_min.start = 1; version_min.end = 0; - version = (uint16_t)strtoui(text + version_maj.start, version_maj.size(), nullptr, 10) * 0x100; + version = (uint16_t)strtoui(&text[version_maj.start], version_maj.size(), nullptr, 10) * 0x100; break; } else @@ -7312,7 +7311,7 @@ namespace stdex } } if (m_chr->match(text, this->interval.end, end, flags)) { - value.append(text + m_chr->interval.start, m_chr->interval.size()); + value.append(&text[m_chr->interval.start], m_chr->interval.size()); this->interval.end = m_chr->interval.end; continue; }