|
Ada 3.4.0
Fast spec-compliant URL parser
|
Stores byte offsets for URL components within a buffer. More...
#include <url_components.h>
Public Member Functions | |
| url_components ()=default | |
| url_components (const url_components &u)=default | |
| url_components (url_components &&u) noexcept=default | |
| url_components & | operator= (url_components &&u) noexcept=default |
| url_components & | operator= (const url_components &u)=default |
| ~url_components ()=default | |
| constexpr bool | check_offset_consistency () const noexcept |
| std::string | to_string () const |
Public Attributes | |
| uint32_t | protocol_end {0} |
| uint32_t | username_end {0} |
| uint32_t | host_start {0} |
| uint32_t | host_end {0} |
| uint32_t | port {omitted} |
| uint32_t | pathname_start {0} |
| uint32_t | search_start {omitted} |
| uint32_t | hash_start {omitted} |
Static Public Attributes | |
| static constexpr uint32_t | omitted = uint32_t(-1) |
Stores byte offsets for URL components within a buffer.
The url_components struct uses 32-bit offsets to track the boundaries of each URL component within a single string buffer. This enables efficient component extraction without additional memory allocations.
Component layout in a URL:
omitted (UINT32_MAX) indicates the component is not present. Definition at line 39 of file url_components.h.
|
default |
Referenced by operator=(), operator=(), url_components(), and url_components().
|
default |
References url_components().
|
defaultnoexcept |
References url_components().
|
default |
|
nodiscardconstexprnoexcept |
Validates that offsets are in ascending order and consistent. Useful for debugging to detect internal corruption.
true if offsets are consistent, false otherwise. https://user:[email protected]:1234/foo/bar?baz#quux | | | | ^^^^| | | | | | | | | | ----- hash_start | | | | | |------— search_start | | | | | ----------------- pathname_start | | | |------------------— port | | | ----------------------- host_end | |-------------------------------— host_start | --------------------------------------- username_end ------------------------------------------— protocol_end
Definition at line 12 of file url_components-inl.h.
References hash_start, host_start, omitted, pathname_start, port, protocol_end, search_start, and username_end.
|
default |
References url_components().
|
defaultnoexcept |
References url_components().
|
nodiscard |
Returns a JSON string representation of the offsets for debugging.
Definition at line 9 of file url_components.cpp.
References hash_start, host_end, host_start, pathname_start, port, protocol_end, search_start, and username_end.
| uint32_t ada::url_components::hash_start {omitted} |
Offset of the '#' starting the fragment, or omitted if no fragment.
Definition at line 75 of file url_components.h.
Referenced by check_offset_consistency(), and to_string().
| uint32_t ada::url_components::host_end {0} |
Offset of the end of the host.
Definition at line 63 of file url_components.h.
Referenced by to_string().
| uint32_t ada::url_components::host_start {0} |
Offset of the start of the host.
Definition at line 60 of file url_components.h.
Referenced by check_offset_consistency(), and to_string().
|
staticconstexpr |
Sentinel value indicating a component is not present.
Definition at line 41 of file url_components.h.
Referenced by check_offset_consistency(), ada::url_aggregator::clear_hash(), ada::url_aggregator::clear_port(), ada::url_aggregator::clear_search(), ada::url_aggregator::get_hash(), ada::url_aggregator::get_pathname(), ada::url_aggregator::get_pathname_length(), ada::url_aggregator::get_port(), ada::url_aggregator::get_search(), ada::url_aggregator::has_hash(), ada::url_aggregator::has_search(), ada::url_aggregator::set_hash(), ada::url_aggregator::to_diagram(), ada::url_aggregator::to_string(), and ada::url_aggregator::validate().
| uint32_t ada::url_components::pathname_start {0} |
Offset of the start of the pathname.
Definition at line 69 of file url_components.h.
Referenced by check_offset_consistency(), and to_string().
| uint32_t ada::url_components::port {omitted} |
Port number, or omitted if no port is specified.
Definition at line 66 of file url_components.h.
Referenced by check_offset_consistency(), and to_string().
| uint32_t ada::url_components::protocol_end {0} |
Offset of the end of the protocol/scheme (position of ':').
Definition at line 51 of file url_components.h.
Referenced by check_offset_consistency(), ada::url::get_components(), and to_string().
| uint32_t ada::url_components::search_start {omitted} |
Offset of the '?' starting the query, or omitted if no query.
Definition at line 72 of file url_components.h.
Referenced by check_offset_consistency(), and to_string().
| uint32_t ada::url_components::username_end {0} |
Offset of the end of the username. Initialized to 0 (not omitted) to simplify username/password getters.
Definition at line 57 of file url_components.h.
Referenced by check_offset_consistency(), and to_string().