Lines Matching refs:components
1266 * This struct is used to extract components from a single 'href'.
4658 * normalized URL (the href), and it makes available the components, mostly
4846 url_components components{};
5080 * Unlike the url_aggregator, the ada::url represents the different components
5083 * components from the parsed URL, a new std::string is typically constructed.
5138 * further processing on the resource the URL's other components identify. It
5783 uint32_t diff = components.host_start - components.protocol_end;
5785 buffer.erase(components.protocol_end,
5786 components.host_start - components.protocol_end);
5787 components.username_end = components.protocol_end;
5792 buffer.insert(components.protocol_end, "//");
5793 components.username_end += 2;
5805 buffer.insert(components.protocol_end + diff, username);
5807 buffer.insert(components.protocol_end + diff, ":");
5808 components.username_end = components.protocol_end + diff;
5809 buffer.insert(components.protocol_end + diff + 1, password);
5813 buffer.insert(components.protocol_end + diff, input);
5814 components.username_end =
5815 components.protocol_end + diff + uint32_t(input.size());
5819 components.host_start += diff;
5822 buffer.insert(components.host_start, "@");
5825 components.host_end += diff;
5826 components.pathname_start += diff;
5827 if (components.search_start != url_components::omitted) {
5828 components.search_start += diff;
5830 if (components.hash_start != url_components::omitted) {
5831 components.hash_start += diff;
5838 " bytes] components.hash_start = ", components.hash_start);
5841 if (components.hash_start != url_components::omitted) {
5842 buffer.resize(components.hash_start);
5844 components.hash_start = uint32_t(buffer.size());
5888 bool has_credentials = components.protocol_end + 2 < components.host_start;
5890 replace_and_resize(components.host_start, components.host_end, input);
5893 buffer.insert(components.host_start, "@");
5896 components.host_end += new_difference;
5897 components.pathname_start += new_difference;
5898 if (components.search_start != url_components::omitted) {
5899 components.search_start += new_difference;
5901 if (components.hash_start != url_components::omitted) {
5902 components.hash_start += new_difference;
5911 if (components.search_start != url_components::omitted) {
5912 ending_index = components.search_start;
5913 } else if (components.hash_start != url_components::omitted) {
5914 ending_index = components.hash_start;
5916 return ending_index - components.pathname_start;
5921 return buffer.size() == components.pathname_start;
5937 if (components.hash_start == url_components::omitted) {
5938 if (components.search_start == url_components::omitted) {
5939 components.search_start = uint32_t(buffer.size());
5942 buffer.resize(components.search_start + 1);
5947 if (components.search_start == url_components::omitted) {
5948 components.search_start = components.hash_start;
5950 buffer.erase(components.search_start,
5951 components.hash_start - components.search_start);
5952 components.hash_start = components.search_start;
5955 buffer.insert(components.search_start, "?");
5956 buffer.insert(components.search_start + 1, input);
5957 components.hash_start += uint32_t(input.size() + 1); // Do not forget `?`
5970 if (components.hash_start == url_components::omitted) {
5971 if (components.search_start == url_components::omitted) {
5972 components.search_start = uint32_t(buffer.size());
5975 buffer.resize(components.search_start + 1);
5986 if (components.search_start == url_components::omitted) {
5987 components.search_start = components.hash_start;
5989 buffer.erase(components.search_start,
5990 components.hash_start - components.search_start);
5991 components.hash_start = components.search_start;
5994 buffer.insert(components.search_start, "?");
5998 buffer.insert(components.search_start + 1, input);
5999 components.hash_start += uint32_t(input.size() + 1); // Do not forget `?`
6001 buffer.insert(components.search_start + 1, input, 0, idx);
6007 buffer.insert(components.search_start + idx + 1, encoded);
6008 components.hash_start +=
6034 buffer.insert(components.pathname_start, "/.");
6035 components.pathname_start += 2;
6039 components.pathname_start,
6040 components.pathname_start + get_pathname_length(), input);
6041 if (components.search_start != url_components::omitted) {
6042 components.search_start += difference;
6044 if (components.hash_start != url_components::omitted) {
6045 components.hash_start += difference;
6063 if (components.search_start != url_components::omitted) {
6064 ending_index = components.search_start;
6065 } else if (components.hash_start != url_components::omitted) {
6066 ending_index = components.hash_start;
6070 if (components.search_start != url_components::omitted) {
6071 components.search_start += uint32_t(input.size());
6073 if (components.hash_start != url_components::omitted) {
6074 components.hash_start += uint32_t(input.size());
6094 bool host_starts_with_at = buffer.size() > components.host_start &&
6095 buffer[components.host_start] == '@';
6096 uint32_t diff = replace_and_resize(components.protocol_end + 2,
6097 components.username_end, input);
6099 components.username_end += diff;
6100 components.host_start += diff;
6103 buffer.insert(components.host_start, "@");
6108 buffer.erase(components.host_start, 1);
6112 components.host_end += diff;
6113 components.pathname_start += diff;
6114 if (components.search_start != url_components::omitted) {
6115 components.search_start += diff;
6117 if (components.hash_start != url_components::omitted) {
6118 components.hash_start += diff;
6140 buffer.insert(components.username_end, input);
6141 components.username_end += difference;
6142 components.host_start += difference;
6144 if (buffer[components.host_start] != '@' &&
6145 components.host_start != components.host_end) {
6146 buffer.insert(components.host_start, "@");
6150 components.host_end += difference;
6151 components.pathname_start += difference;
6152 if (components.search_start != url_components::omitted) {
6153 components.search_start += difference;
6155 if (components.hash_start != url_components::omitted) {
6156 components.hash_start += difference;
6174 uint32_t diff = components.host_start - components.username_end;
6175 buffer.erase(components.username_end, diff);
6176 components.host_start -= diff;
6177 components.host_end -= diff;
6178 components.pathname_start -= diff;
6179 if (components.search_start != url_components::omitted) {
6180 components.search_start -= diff;
6182 if (components.hash_start != url_components::omitted) {
6183 components.hash_start -= diff;
6211 components.host_start - components.username_end - 1;
6212 buffer.erase(components.username_end + 1, current_length);
6215 buffer.insert(components.username_end, ":");
6219 buffer.insert(components.username_end + 1, input);
6220 components.host_start += difference;
6225 if (buffer[components.host_start] != '@') {
6226 buffer.insert(components.host_start, "@");
6230 components.host_end += difference;
6231 components.pathname_start += difference;
6232 if (components.search_start != url_components::omitted) {
6233 components.search_start += difference;
6235 if (components.hash_start != url_components::omitted) {
6236 components.hash_start += difference;
6260 buffer.insert(components.host_start, input);
6263 buffer.insert(components.username_end, ":");
6264 buffer.insert(components.username_end + 1, input);
6266 components.host_start += difference;
6271 if (buffer[components.host_start] != '@') {
6272 buffer.insert(components.host_start, "@");
6276 components.host_end += difference;
6277 components.pathname_start += difference;
6278 if (components.search_start != url_components::omitted) {
6279 components.search_start += difference;
6281 if (components.hash_start != url_components::omitted) {
6282 components.hash_start += difference;
6305 if (components.port != url_components::omitted) {
6306 difference -= components.pathname_start - components.host_end;
6307 buffer.erase(components.host_end,
6308 components.pathname_start - components.host_end);
6311 buffer.insert(components.host_end, value);
6312 components.pathname_start += difference;
6313 if (components.search_start != url_components::omitted) {
6314 components.search_start += difference;
6316 if (components.hash_start != url_components::omitted) {
6317 components.hash_start += difference;
6319 components.port = input;
6326 if (components.port == url_components::omitted) {
6329 uint32_t length = components.pathname_start - components.host_end;
6330 buffer.erase(components.host_end, length);
6331 components.pathname_start -= length;
6332 if (components.search_start != url_components::omitted) {
6333 components.search_start -= length;
6335 if (components.hash_start != url_components::omitted) {
6336 components.hash_start -= length;
6338 components.port = url_components::omitted;
6344 return components.port;
6350 if (components.search_start == url_components::omitted) {
6354 if (components.hash_start == url_components::omitted) {
6355 buffer.resize(components.search_start);
6357 buffer.erase(components.search_start,
6358 components.hash_start - components.search_start);
6359 components.hash_start = components.search_start;
6362 components.search_start = url_components::omitted;
6367 " with " + components.to_string() + "\n" + to_diagram());
6375 if (components.hash_start == url_components::omitted) {
6378 buffer.resize(components.hash_start);
6379 components.hash_start = url_components::omitted;
6384 " with " + components.to_string() + "\n" + to_diagram());
6393 if (components.search_start != url_components::omitted) {
6394 ending_index = components.search_start;
6395 } else if (components.hash_start != url_components::omitted) {
6396 ending_index = components.hash_start;
6398 uint32_t pathname_length = ending_index - components.pathname_start;
6399 buffer.erase(components.pathname_start, pathname_length);
6401 if (components.pathname_start == components.host_end + 2 &&
6402 buffer[components.host_end] == '/' &&
6403 buffer[components.host_end + 1] == '.') {
6404 components.pathname_start -= 2;
6405 buffer.erase(components.host_end, 2);
6408 if (components.search_start != url_components::omitted) {
6409 components.search_start -= difference;
6411 if (components.hash_start != url_components::omitted) {
6412 components.hash_start -= difference;
6418 " with " + components.to_string() + "\n" + to_diagram());
6432 uint32_t hostname_length = components.host_end - components.host_start;
6433 uint32_t start = components.host_start;
6441 components.host_end = start;
6442 components.pathname_start -= hostname_length;
6443 if (components.search_start != url_components::omitted) {
6444 components.search_start -= hostname_length;
6446 if (components.hash_start != url_components::omitted) {
6447 components.hash_start -= hostname_length;
6452 " with " + components.to_string() + "\n" + to_diagram());
6457 " with " + components.to_string() + "\n" + to_diagram());
6463 return components.hash_start != url_components::omitted;
6468 return components.search_start != url_components::omitted;
6479 components.host_start == components.host_end;
6484 return components;
6491 return components.protocol_end + 2 <= components.host_start &&
6492 helpers::substring(buffer, components.protocol_end,
6493 components.protocol_end + 2) == "//";
6505 // Performance: the common case is components.protocol_end == buffer.size()
6508 buffer.insert(components.protocol_end, "//");
6509 components.username_end += 2;
6510 components.host_start += 2;
6511 components.host_end += 2;
6512 components.pathname_start += 2;
6513 if (components.search_start != url_components::omitted) {
6514 components.search_start += 2;
6516 if (components.hash_start != url_components::omitted) {
6517 components.hash_start += 2;
6528 return components.protocol_end + 2 < components.username_end;
6533 return components.host_start - components.username_end > 0;
6539 return components.host_start > components.username_end &&
6540 buffer[components.username_end] == ':';
6547 if (components.host_start == components.host_end) {
6550 if (components.host_end > components.host_start + 1) {
6553 return components.username_end != components.host_start;
6564 return has_hostname() && components.pathname_start != components.host_end;
6576 if (components.pathname_start == components.host_end + 2) {
6577 ADA_ASSERT_TRUE((buffer[components.host_end] == '/' &&
6578 buffer[components.host_end + 1] == '.') ||
6579 (buffer[components.host_end] == ':' &&
6580 checkers::is_digit(buffer[components.host_end + 1])));
6582 if (components.pathname_start == components.host_end + 2 &&
6583 buffer[components.host_end] == '/' &&
6584 buffer[components.host_end + 1] == '.') {
6585 ADA_ASSERT_TRUE(components.pathname_start + 1 < buffer.size());
6586 ADA_ASSERT_TRUE(buffer[components.pathname_start] == '/');
6587 ADA_ASSERT_TRUE(buffer[components.pathname_start + 1] == '/');
6590 // Performance: it should be uncommon for components.pathname_start ==
6591 // components.host_end + 2 to be true. So we put this check first in the
6594 return components.pathname_start == components.host_end + 2 &&
6595 !has_opaque_path && buffer[components.host_end] == '/' &&
6596 buffer[components.host_end + 1] == '.';
6645 uint32_t new_difference = 5 - components.protocol_end;
6650 buffer.erase(0, components.protocol_end);
6653 components.protocol_end = 5;
6655 // Update the rest of the components.
6656 components.username_end += new_difference;
6657 components.host_start += new_difference;
6658 components.host_end += new_difference;
6659 components.pathname_start += new_difference;
6660 if (components.search_start != url_components::omitted) {
6661 components.search_start += new_difference;
6663 if (components.hash_start != url_components::omitted) {
6664 components.hash_start += new_difference;
7101 * components.