4#ifndef _Stroika_Foundation_IO_Network_URI_h_
5#define _Stroika_Foundation_IO_Network_URI_h_ 1
7#include "Stroika/Foundation/StroikaPreComp.h"
13#include "Stroika/Foundation/Common/Common.h"
15#include "Stroika/Foundation/Containers/Mapping.h"
28 using Characters::String;
99 static constexpr auto eDecoded = StringPCTEncodedFlag::eDecoded;
100 static constexpr auto ePCTEncoded = StringPCTEncodedFlag::ePCTEncoded;
123 template <Characters::IConvertibleToString STRISH_TYPE>
125 URI (
const URI&) =
default;
346 template <Common::IAnyOf<String,
string> T>
356 nonvirtual
explicit operator bool ()
const;
383 nonvirtual
bool operator== (
const URI&
rhs)
const;
405 static_assert (totally_ordered<URI>);
#define Stroika_Define_Enum_Bounds(FIRST_ITEM, LAST_ITEM)
#define qStroika_ATTRIBUTE_NO_UNIQUE_ADDRESS_VCFORCE
[[msvc::no_unique_address]] isn't always broken in MSVC. Annotate with this on things where its not b...
String is like std::u32string, except it is much easier to use, often much more space efficient,...
NOT a real mutex - just a debugging infrastructure support tool so in debug builds can be assured thr...
nonvirtual String GetAuthorityRelativeResourceDir() const
Return the path component, excluding any text after the final /.
static URI Parse(const String &rawURL)
nonvirtual String ToString() const
nonvirtual URI GetSchemeAndAuthority() const
nonvirtual T As(optional< StringPCTEncodedFlag > pctEncoded={}) const
nonvirtual optional< SchemeType > GetScheme() const
nonvirtual void SetPath(const String &path)
nonvirtual URI Combine(const URI &overridingURI) const
Combine overridingURI possibly relative url with this base url, to produce a new URI.
nonvirtual RETURN_VALUE GetAbsPath() const
Return the GetPath () value, but assuring its an absolute path.
nonvirtual PortType GetPortValue() const
static URI ParseRelative(const String &rawRelativeURL)
nonvirtual optional< Authority > GetAuthority() const
nonvirtual URI Normalize(NormalizationStyle normalization=NormalizationStyle::eDefault) const
Produce a normalized representation of the URI.
nonvirtual void SetScheme(const optional< SchemeType > &scheme)
nonvirtual bool IsRelativeReference() const
nonvirtual optional< String > LookupQueryArg(const String &arg) const
shortcut for url.GetQuery<Query> ()? url.GetQuery<Query> ()->Lookup (arg): nullopt;
nonvirtual RETURN_TYPE GetAuthorityRelativeResource() const
Return the (PCT etc encoded if a string) data AFTER the authority, but not including the fragment.