CommonLib
Loading...
Searching...
No Matches
StringTypes.h File Reference
#include <concepts>
#include <string>
#include <tuple>
#include <type_traits>
#include "StringTypes.inl"

Go to the source code of this file.

Classes

struct  hedgedev::csl::ut::expr::GetCharType< std::basic_string< TChar, TTraits > >
struct  hedgedev::csl::ut::expr::GetCharType< std::basic_string_view< TChar, TTraits > >
struct  hedgedev::csl::ut::expr::GetCharType< T * >
struct  hedgedev::csl::ut::expr::GetCharType< T(&)[Count]>
struct  hedgedev::csl::ut::expr::IsBasicString< T >
struct  hedgedev::csl::ut::expr::IsBasicString< std::basic_string< TChar, TTraits > >
struct  hedgedev::csl::ut::expr::IsBasicStringView< T >
struct  hedgedev::csl::ut::expr::IsBasicStringView< std::basic_string_view< TChar, TTraits > >

Namespaces

namespace  hedgedev
namespace  hedgedev::csl
namespace  hedgedev::csl::ut
namespace  hedgedev::csl::ut::expr

Concepts

concept  hedgedev::csl::ut::expr::CStringA
concept  hedgedev::csl::ut::expr::CStringW
concept  hedgedev::csl::ut::expr::CString
concept  hedgedev::csl::ut::expr::BasicString
concept  hedgedev::csl::ut::expr::BasicStringView
concept  hedgedev::csl::ut::expr::AnyString

Typedefs

template<typename T>
using hedgedev::csl::ut::expr::GetCharType_t = typename GetCharType<std::decay_t<T>>::Type
template<AnyString T>
using hedgedev::csl::ut::expr::InferredString = std::basic_string<GetCharType_t<T>>
template<AnyString T>
using hedgedev::csl::ut::expr::InferredStringView = std::basic_string_view<GetCharType_t<T>>
template<AnyString T>
using hedgedev::csl::ut::expr::InferredStringOrView = std::conditional_t<CString<T>, InferredStringView<T>, InferredString<T>>
template<AnyString... TArgs>
using hedgedev::csl::ut::expr::PrecedentString = std::tuple_element_t<GetStringTypePrecedence<TArgs...>(), std::tuple<TArgs...>>
template<AnyString... TArgs>
using hedgedev::csl::ut::expr::PrecedentInferredString = InferredString<PrecedentString<TArgs...>>
template<AnyString... TArgs>
using hedgedev::csl::ut::expr::PrecedentInferredStringView = InferredStringView<PrecedentString<TArgs...>>
template<AnyString... TArgs>
using hedgedev::csl::ut::expr::PrecedentInferredStringOrView

Functions

template<AnyString TDst, AnyString TSrc>
constexpr TDst hedgedev::csl::ut::expr::CreateInferredString (const TSrc &in_rStr)
template<AnyString... TArgs>
constexpr size_t hedgedev::csl::ut::expr::GetStringTypePrecedence ()

Variables

template<typename T>
constexpr bool hedgedev::csl::ut::expr::IsBasicString_v = IsBasicString<std::remove_cvref_t<std::decay_t<T>>>::value
template<typename T>
constexpr bool hedgedev::csl::ut::expr::IsBasicStringView_v = IsBasicStringView<std::remove_cvref_t<std::decay_t<T>>>::value
template<AnyString T1, AnyString T2>
constexpr bool hedgedev::csl::ut::expr::IsSameUnderlyingCharType = std::is_same_v<GetCharType_t<T1>, GetCharType_t<T2>>