MCPcopy Create free account
hub / github.com/NativeScript/android / parse_port

Method parse_port

test-app/runtime/src/main/cpp/ada/ada.h:6806–6839  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

6804}
6805
6806ada_really_inline size_t url::parse_port(std::string_view view,
6807 bool check_trailing_content) noexcept {
6808 ada_log("parse_port('", view, "') ", view.size());
6809 if (!view.empty() && view[0] == '-') {
6810 ada_log("parse_port: view[0] == '0' && view.size() > 1");
6811 is_valid = false;
6812 return 0;
6813 }
6814 uint16_t parsed_port{};
6815 auto r = std::from_chars(view.data(), view.data() + view.size(), parsed_port);
6816 if (r.ec == std::errc::result_out_of_range) {
6817 ada_log("parse_port: r.ec == std::errc::result_out_of_range");
6818 is_valid = false;
6819 return 0;
6820 }
6821 ada_log("parse_port: ", parsed_port);
6822 const auto consumed = size_t(r.ptr - view.data());
6823 ada_log("parse_port: consumed ", consumed);
6824 if (check_trailing_content) {
6825 is_valid &=
6826 (consumed == view.size() || view[consumed] == '/' ||
6827 view[consumed] == '?' || (is_special() && view[consumed] == '\\'));
6828 }
6829 ada_log("parse_port: is_valid = ", is_valid);
6830 if (is_valid) {
6831 // scheme_default_port can return 0, and we should allow 0 as a base port.
6832 auto default_port = scheme_default_port();
6833 bool is_port_valid = (default_port == 0 && parsed_port == 0) ||
6834 (default_port != parsed_port);
6835 port = (r.ec == std::errc() && is_port_valid) ? std::optional(parsed_port)
6836 : std::nullopt;
6837 }
6838 return consumed;
6839}
6840
6841} // namespace ada
6842

Callers 1

parse_url_implFunction · 0.45

Calls 4

is_specialFunction · 0.85
sizeMethod · 0.45
emptyMethod · 0.45
dataMethod · 0.45

Tested by

no test coverage detected