Ada 3.4.4
Fast spec-compliant URL parser
Loading...
Searching...
No Matches
ada::url_components Struct Reference

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_componentsoperator= (url_components &&u) noexcept=default
 
url_componentsoperator= (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)
 

Detailed Description

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:

https://user:pass@example.com:1234/foo/bar?baz#quux
| | | | ^^^^| | |
| | | | | | | `----- hash_start
| | | | | | `--------- search_start
| | | | | `----------------- pathname_start
| | | | `--------------------- port
| | | `----------------------- host_end
| | `---------------------------------- host_start
| `--------------------------------------- username_end
`--------------------------------------------- protocol_end
ada_warn_unused ada::result< result_type > parse(std::string_view input, const result_type *base_url=nullptr)
Note
The 32-bit offsets limit URLs to 4GB in length.
A value of omitted (UINT32_MAX) indicates the component is not present.

Definition at line 39 of file url_components.h.

Constructor & Destructor Documentation

◆ url_components() [1/3]

ada::url_components::url_components ( )
default

◆ url_components() [2/3]

ada::url_components::url_components ( const url_components u)
default

◆ url_components() [3/3]

ada::url_components::url_components ( url_components &&  u)
defaultnoexcept

◆ ~url_components()

ada::url_components::~url_components ( )
default

Member Function Documentation

◆ check_offset_consistency()

constexpr bool ada::url_components::check_offset_consistency ( ) const
constexprnoexcept

Validates that offsets are in ascending order and consistent. Useful for debugging to detect internal corruption.

Returns
true if offsets are consistent, false otherwise.

https://user:pass@example.com: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, ada::parse(), pathname_start, port, protocol_end, search_start, and username_end.

Referenced by ada::url_aggregator::validate().

◆ operator=() [1/2]

url_components & ada::url_components::operator= ( const url_components u)
default

◆ operator=() [2/2]

url_components & ada::url_components::operator= ( url_components &&  u)
defaultnoexcept

◆ to_string()

std::string ada::url_components::to_string ( ) const

Returns a JSON string representation of the offsets for debugging.

Returns
A JSON-formatted string with all offset values.

Definition at line 9 of file url_components.cpp.

References hash_start, host_end, host_start, ada::parse(), pathname_start, port, protocol_end, search_start, and username_end.

Referenced by ada::url_aggregator::clear_hash(), and ada::url_aggregator::clear_search().

Member Data Documentation

◆ hash_start

◆ host_end

◆ host_start

◆ omitted

◆ pathname_start

◆ port

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(), ada::url_aggregator::clear_port(), ada::url_aggregator::get_port(), ada::url_aggregator::set_port(), and to_string().

◆ protocol_end

◆ search_start

◆ username_end


The documentation for this struct was generated from the following files: