LLFIO v2.00
|
An iterated part of a path_view
.
More...
#include "path_view.hpp"
Classes | |
class | rendered_path |
Public Types | |
enum | format : uint8_t { unknown , native_format , generic_format , auto_format , binary_format } |
How to interpret separators. More... | |
enum | termination { zero_terminated , not_zero_terminated } |
The zero termination to use. More... | |
using | size_type = filesystem::path::string_type::size_type |
The size type. | |
using | byte = llfio_v2_xxx ::byte |
Character type for passthrough input. | |
using | char16_t = detail::char16_t |
template<class T > | |
using | default_rendered_path_deleter = std::default_delete< T > |
The default deleter to use. | |
template<class T = typename filesystem::path::value_type, class AllocatorOrDeleter = default_rendered_path_deleter<T[]>, size_t _internal_buffer_size = default_internal_buffer_size> | |
using | zero_terminated_rendered_path = rendered_path< termination::zero_terminated, T, AllocatorOrDeleter, _internal_buffer_size > |
Convenience type alias. | |
template<class T = typename filesystem::path::value_type, class AllocatorOrDeleter = default_rendered_path_deleter<T[]>, size_t _internal_buffer_size = default_internal_buffer_size> | |
using | not_zero_terminated_rendered_path = rendered_path< termination::not_zero_terminated, T, AllocatorOrDeleter, _internal_buffer_size > |
Convenience type alias. | |
Public Member Functions | |
constexpr | path_view_component () noexcept |
Constructs an empty path view component (DEVIATES from P1030, is not trivial due to C++ 14 compatibility) | |
constexpr | path_view_component (path_view_component p, format fmt) noexcept |
Constructs a path view component identical to the input, except with different format interpretation. | |
path_view_component (const filesystem::path &v, format fmt=auto_format) noexcept | |
template<class Char , typename std::enable_if<(is_source_chartype_acceptable< Char >), bool >::type = true> | |
constexpr | path_view_component (const std::basic_string< Char > &v, format fmt=binary_format) noexcept |
constexpr | path_view_component (const char *b, size_t l, enum termination zt, format fmt=binary_format) noexcept |
constexpr | path_view_component (const wchar_t *b, size_t l, enum termination zt, format fmt=binary_format) noexcept |
constexpr | path_view_component (const char8_t *b, size_t l, enum termination zt, format fmt=binary_format) noexcept |
constexpr | path_view_component (const char16_t *b, size_t l, enum termination zt, format fmt=binary_format) noexcept |
constexpr | path_view_component (const byte *b, size_t l, enum termination zt) noexcept |
template<class Char , typename std::enable_if<(is_source_chartype_acceptable< Char >), bool >::type = true> | |
constexpr | path_view_component (const Char *s, format fmt=binary_format) noexcept |
constexpr | path_view_component (const byte *s) noexcept |
template<class Char , typename std::enable_if<(is_source_chartype_acceptable< Char >), bool >::type = true> | |
constexpr | path_view_component (basic_string_view< Char > v, enum termination zt, format fmt=binary_format) noexcept |
constexpr | path_view_component (span< const byte > v, enum termination zt) noexcept |
template<class It , class End , typename std::enable_if<(is_source_chartype_acceptable< typename It::value_type >), bool >::type = true, typename std::enable_if<(is_source_chartype_acceptable< typename End::value_type >), bool >::type = true> | |
constexpr | path_view_component (It b, End e, enum termination zt, format fmt=binary_format) noexcept |
template<class It , class End , typename std::enable_if<(is_source_chartype_acceptable< std::decay_t< It > >), bool >::type = true, typename std::enable_if<(is_source_chartype_acceptable< std::decay_t< End > >), bool >::type = true> | |
constexpr | path_view_component (It *b, End *e, enum termination zt, format fmt=binary_format) noexcept |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. | |
template<class It , class End , typename std::enable_if<(std::is_same< typename It::value_type, byte >::value), bool >::type = true, typename std::enable_if<(std::is_same< typename End::value_type, byte >::value), bool >::type = true> | |
constexpr | path_view_component (It b, End e, enum termination zt) noexcept |
template<class It , class End , typename std::enable_if<(std::is_same< std::decay_t< It >, byte >::value), bool >::type = true, typename std::enable_if<(std::is_same< std::decay_t< End >, byte >::value), bool >::type = true> | |
constexpr | path_view_component (It *b, End *e, enum termination zt) noexcept |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. | |
path_view_component (const path_view_component &)=default | |
path_view_component (path_view_component &&)=default | |
path_view_component & | operator= (const path_view_component &)=default |
path_view_component & | operator= (path_view_component &&)=default |
const byte * | _raw_data () const noexcept |
constexpr void | swap (path_view_component &o) noexcept |
Swap the view with another. | |
constexpr bool | empty () const noexcept |
True if empty. | |
constexpr size_t | native_size () const noexcept |
Returns the size of the view in characters. | |
constexpr format | formatting () const noexcept |
How path separators shall be interpreted. | |
constexpr bool | has_null_termination () const noexcept |
True if input is declared to be null terminated. | |
constexpr enum termination | termination () const noexcept |
The zero termination during construction. | |
constexpr bool | has_stem () const noexcept |
True if stem() returns a non-empty path. | |
constexpr bool | has_extension () const noexcept |
True if extension() returns a non-empty path. | |
constexpr bool | contains_glob () const noexcept |
True if the view contains any of the characters * , ? , (POSIX only: [ or ] ). | |
constexpr path_view_component | stem () const noexcept |
Returns a view of the filename without any file extension. | |
constexpr path_view_component | extension () const noexcept |
Returns a view of the file extension part of this view. | |
filesystem::path | path () const |
Return the path view as a path. Allocates and copies memory! | |
template<class T = typename filesystem::path::value_type, class Deleter = default_rendered_path_deleter<T[]>, size_t _internal_buffer_size = default_internal_buffer_size, typename std::enable_if<(is_source_acceptable< T >), bool >::type = true> | |
constexpr int | compare (path_view_component p, const std::locale &loc) const |
template<class T = typename filesystem::path::value_type, class Deleter = default_rendered_path_deleter<T[]>, size_t _internal_buffer_size = default_internal_buffer_size, typename std::enable_if<(is_source_acceptable< T >), bool >::type = true> | |
constexpr int | compare (path_view_component p) const |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. | |
template<enum path_view_component::termination ZeroTermination, class T = typename filesystem::path::value_type, class AllocatorOrDeleter = default_rendered_path_deleter<T[]>, size_t _internal_buffer_size = default_internal_buffer_size, class... Args, typename std::enable_if<(is_source_acceptable< T >), bool >::type = true, typename = decltype( std::is_constructible<rendered_path<ZeroTermination, T, AllocatorOrDeleter, _internal_buffer_size>, path_view_component, Args...>::value )> | |
rendered_path< ZeroTermination, T, AllocatorOrDeleter, _internal_buffer_size > | render (path_view_component view, Args &&...args) const |
Convenience function. | |
template<class T = typename filesystem::path::value_type, class AllocatorOrDeleter = default_rendered_path_deleter<T[]>, size_t _internal_buffer_size = default_internal_buffer_size, class... Args, typename std::enable_if<(is_source_acceptable< T >), bool >::type = true, typename = decltype( std::is_constructible<rendered_path<termination::zero_terminated, T, AllocatorOrDeleter, _internal_buffer_size>, path_view_component, Args...>::value )> | |
rendered_path< termination::zero_terminated, T, AllocatorOrDeleter, _internal_buffer_size > | render_null_terminated (Args &&...args) const |
Convenience function. | |
template<class T = typename filesystem::path::value_type, class AllocatorOrDeleter = default_rendered_path_deleter<T[]>, size_t _internal_buffer_size = default_internal_buffer_size, class... Args, typename std::enable_if<(is_source_acceptable< T >), bool >::type = true, typename = decltype( std::is_constructible<rendered_path<termination::zero_terminated, T, AllocatorOrDeleter, _internal_buffer_size>, path_view_component, Args...>::value )> | |
rendered_path< termination::not_zero_terminated, T, AllocatorOrDeleter, _internal_buffer_size > | render_unterminated (Args &&...args) const |
Convenience function. | |
Static Public Attributes | |
static constexpr auto | preferred_separator = filesystem::path::preferred_separator |
The preferred separator type. | |
template<class Char > | |
static constexpr bool | is_source_chartype_acceptable = detail::is_source_chartype_acceptable<Char>::value |
template<class Char > | |
static constexpr bool | is_source_acceptable = detail::is_source_acceptable<Char>::value |
static constexpr size_t | default_internal_buffer_size = 1024 |
The default internal buffer size used by rendered_path . | |
Friends | |
class | path_view |
template<enum path_view_component::termination ZeroTermination, class T , class Deleter , size_t _internal_buffer_size, typename std::enable_if<(is_source_acceptable< T >), bool >::type > | |
class | rendered_path |
constexpr bool | llfio_v2_xxx::operator== (path_view_component x, path_view_component y) noexcept |
constexpr bool | llfio_v2_xxx::operator!= (path_view_component x, path_view_component y) noexcept |
constexpr bool | llfio_v2_xxx ::operator< (path_view_component x, path_view_component y) noexcept |
constexpr size_t | hash_value (path_view_component x) noexcept |
Hashes a path_view_component . | |
template<class F > | |
constexpr auto | llfio_v2_xxx::visit (path_view_component view, F &&f) |
template<class F > | |
constexpr auto | llfio_v2_xxx::visit (F &&f, path_view_component view) |
std::ostream & | llfio_v2_xxx ::operator<< (std::ostream &s, const path_view_component &v) |
An iterated part of a path_view
.
enum llfio_v2_xxx::path_view_component::format : uint8_t |
How to interpret separators.
The zero termination to use.
|
inlineconstexprnoexcept |
Constructs an empty path view component (DEVIATES from P1030, is not trivial due to C++ 14 compatibility)
|
inlineconstexprnoexcept |
Constructs a path view component identical to the input, except with different format interpretation.
|
inlinenoexcept |
Implicitly constructs a path view from a path. The input path MUST continue to exist for this view to be valid (DEVIATES from P1030 due to filesystem::path not exposing its path formatting).
|
inlineconstexprnoexcept |
Constructs from a basic string if the character type is one of char
, wchar_t
, char8_t
or char16_t
.
|
inlineconstexprnoexcept |
Constructs from a lengthed array of one of char
, wchar_t
, char8_t
or char16_t
. The input string MUST continue to exist for this view to be valid.
|
inlineconstexprnoexcept |
Constructs from a lengthed array of one of char
, wchar_t
, char8_t
or char16_t
. The input string MUST continue to exist for this view to be valid.
|
inlineconstexprnoexcept |
Constructs from a lengthed array of one of char
, wchar_t
, char8_t
or char16_t
. The input string MUST continue to exist for this view to be valid.
|
inlineconstexprnoexcept |
Constructs from a lengthed array of one of char
, wchar_t
, char8_t
or char16_t
. The input string MUST continue to exist for this view to be valid.
|
inlineconstexprnoexcept |
Constructs from a lengthed array of byte
. The input array MUST continue to exist for this view to be valid.
|
inlineconstexprnoexcept |
Implicitly constructs a path view from a zero terminated pointer to a character array, which must be one of char
, wchar_t
, char8_t
or char16_t
. The input string MUST continue to exist for this view to be valid.
|
inlineconstexprnoexcept |
Implicitly constructs a path view from a zero terminated pointer to byte array. The input array MUST continue to exist for this view to be valid.
|
inlineconstexprnoexcept |
Constructs from a basic string view if the character type is one of char
, wchar_t
, char8_t
or char16_t
.
|
inlineconstexprnoexcept |
Constructs from a span<const byte>
.
|
inlineconstexprnoexcept |
Constructs from an iterator sequence if the iterator is contiguous, if its value type is one of char
, wchar_t
, char8_t
or char16_t
.
(DEVIATES from P1030, cannot detect contiguous iterator in SFINAE in C++ 14)
|
inlineconstexprnoexcept |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
|
inlineconstexprnoexcept |
Constructs from an iterator sequence if the iterator is contiguous, if its value type is byte
.
(DEVIATES from P1030, cannot detect contiguous iterator in SFINAE in C++ 14)
|
inlineconstexprnoexcept |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
|
inlinenoexcept |
|
inlineconstexpr |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
|
inlineconstexpr |
Compares the two path views for equivalence or ordering using T
as the destination encoding, if necessary.
If the source encodings of the two path views are compatible, a lexicographical comparison is performed. If they are incompatible, either or both views are converted to the destination encoding using rendered_path<T, Delete, _internal_buffer_size>
, and then a lexicographical comparison is performed.
This can, for obvious reasons, be expensive. It can also throw exceptions, as rendered_path
does.
If the destination encoding is byte
, memcmp()
is used, and rendered_path
is never invoked as the two sources are byte compared directly.
|
inlineconstexprnoexcept |
True if the view contains any of the characters *
, ?
, (POSIX only: [
or ]
).
|
inlineconstexprnoexcept |
True if empty.
|
inlineconstexprnoexcept |
Returns a view of the file extension part of this view.
|
inlineconstexprnoexcept |
How path separators shall be interpreted.
|
inlineconstexprnoexcept |
True if extension()
returns a non-empty path.
|
inlineconstexprnoexcept |
True if input is declared to be null terminated.
|
inlineconstexprnoexcept |
True if stem()
returns a non-empty path.
|
inlineconstexprnoexcept |
Returns the size of the view in characters.
|
inline |
Return the path view as a path. Allocates and copies memory!
|
inline |
Convenience function.
|
inline |
Convenience function.
|
inline |
Convenience function.
|
inlineconstexprnoexcept |
Returns a view of the filename without any file extension.
|
inlineconstexprnoexcept |
Swap the view with another.
|
inlineconstexprnoexcept |
The zero termination during construction.
|
friend |
Hashes a path_view_component
.
const byte* llfio_v2_xxx::path_view_component::_bytestr {nullptr} |
|
staticconstexpr |
True if path views can be constructed from this source. i.e. is_source_chartype_acceptable
, or is byte
|
staticconstexpr |
True if path views can be constructed from this character type. i.e. is one of char
, wchar_t
, char8_t
, char16_t