repr 0.1
Reconstructable string representations and more
Loading...
Searching...
No Matches
librepr::detail Namespace Reference

Namespaces

namespace  msvc
 

Classes

struct  ArityImpl
 
struct  make_reftuple_impl
 
struct  MemberName
 
struct  MemberName< info >
 
struct  MemberName< ptr >
 
struct  Overload
 
struct  StringBuffer
 
struct  TemplateInfo
 
struct  TemplateInfo< U< Ts... > >
 
struct  TupleImpl
 
struct  TupleImpl< std::integer_sequence< int, Idx... >, Ts... >
 
struct  TupleLeaf
 
struct  Universal
 
struct  VariantDetector
 
struct  VariantDetector< Variant< Ts... > >
 
struct  VariantDetector< Variant< Ts... > const >
 

Concepts

concept  pair_like
 
concept  has_repr_member
 
concept  is_scoped_enum
 
concept  is_tuple_element
 
concept  tuple_like
 
concept  string_like
 
concept  ref_convertible_to
 

Typedefs

using DemangleBuffer = std::array< char, REPR_DEMANGLE_MAX >
 
template<class CharT >
using StrFormatter = REPR_FORMAT_NS::formatter< std::string, CharT >
 

Functions

void unreachable ()
 
LIBREPR_HINT_INLINE std::string denoise_name (std::string_view name)
 
template<typename T >
constexpr auto get_member_names ()
 
template<typename T >
requires (std::is_aggregate_v<std::remove_cvref_t<T>> && !std::is_array_v<std::remove_cvref_t<T>>)
auto to_reftuple (T &&object)
 
template<typename T >
requires (std::is_aggregate_v<std::remove_cvref_t<T>> && !std::is_array_v<std::remove_cvref_t<T>>)
constexpr auto to_tuple (T &&object)
 
template<typename T >
requires (std::is_aggregate_v<std::remove_cvref_t<T>> && !std::is_array_v<std::remove_cvref_t<T>>)
constexpr auto to_addr_tuple (T &&object)
 
template<typename T , typename V >
requires (std::is_aggregate_v<std::remove_cvref_t<T>> && !std::is_array_v<std::remove_cvref_t<T>>)
constexpr auto visit_aggregate (V &&visitor, T &&object)
 
template<int V, typename T >
constexpr T & get_impl (TupleLeaf< V, T > &node) noexcept
 
template<int V, typename T >
constexpr T constget_impl (TupleLeaf< V, T > const &node) noexcept
 
template<typename... Fs>
 Overload (Fs...) -> Overload< Fs... >
 
template<std::size_t N>
constexpr std::size_t strsize (const char(&)[N])
 
constexpr std::size_t strsize (const char *str)
 
template<string_like T>
constexpr std::size_t strsize (T &&t)
 
template<class U >
constexpr Uconvert_ref (U &ref) noexcept
 
template<class U >
void convert_ref (U &&)=delete
 
void replace_all (std::string &text, std::string_view needle, std::string_view replacement)
 

Variables

template<typename T , std::size_t Idx>
LIBREPR_WARNING_PUSH constexpr auto raw_member_name
 
template<typename T >
LIBREPR_WARNING_POP constexpr auto raw_member_names
 
template<auto Accessor>
constexpr auto custom_member_name = MemberName<Accessor>::value
 
template<typename T >
constexpr std::size_t arity = ArityImpl<T>::arity()
 
template<typename T >
const Wrap< T > fake_obj
 

Detailed Description

Some of these functions are unused, but I'm leaving them in so it's easier to extend later.

Typedef Documentation

◆ DemangleBuffer

◆ StrFormatter

template<class CharT >
using librepr::detail::StrFormatter = typedef REPR_FORMAT_NS::formatter<std::string, CharT>

Function Documentation

◆ convert_ref() [1/2]

template<class U >
void librepr::detail::convert_ref ( U &&  )
delete

◆ convert_ref() [2/2]

template<class U >
constexpr U & librepr::detail::convert_ref ( U ref)
constexprnoexcept

◆ denoise_name()

LIBREPR_HINT_INLINE std::string librepr::detail::denoise_name ( std::string_view  name)

Formats undecorated symbols to match itanium's symbols.

◆ get_impl() [1/2]

template<int V, typename T >
constexpr T & librepr::detail::get_impl ( TupleLeaf< V, T > &  node)
constexprnoexcept

◆ get_impl() [2/2]

template<int V, typename T >
constexpr T const & librepr::detail::get_impl ( TupleLeaf< V, T > const node)
constexprnoexcept

◆ get_member_names()

template<typename T >
constexpr auto librepr::detail::get_member_names ( )
constexpr

◆ Overload()

template<typename... Fs>
librepr::detail::Overload ( Fs...  ) -> Overload< Fs... >

◆ replace_all()

void librepr::detail::replace_all ( std::string text,
std::string_view  needle,
std::string_view  replacement 
)
inline

◆ strsize() [1/3]

constexpr std::size_t librepr::detail::strsize ( const char str)
constexpr

◆ strsize() [2/3]

template<std::size_t N>
constexpr std::size_t librepr::detail::strsize ( const   char(&)[N])
constexpr

◆ strsize() [3/3]

template<string_like T>
constexpr std::size_t librepr::detail::strsize ( T &&  t)
constexpr

◆ to_addr_tuple()

constexpr auto librepr::detail::to_addr_tuple ( T &&  object)
constexpr

◆ to_reftuple()

auto librepr::detail::to_reftuple ( T &&  object)

◆ to_tuple()

constexpr auto librepr::detail::to_tuple ( T &&  object)
constexpr

◆ unreachable()

void librepr::detail::unreachable ( )
inline

◆ visit_aggregate()

constexpr auto librepr::detail::visit_aggregate ( V &&  visitor,
T &&  object 
)
constexpr

Variable Documentation

◆ arity

template<typename T >
constexpr std::size_t librepr::detail::arity = ArityImpl<T>::arity()
inlineconstexpr

◆ custom_member_name

template<auto Accessor>
constexpr auto librepr::detail::custom_member_name = MemberName<Accessor>::value
inlineconstexpr

◆ fake_obj

template<typename T >
const Wrap<T> librepr::detail::fake_obj
extern

◆ raw_member_name

template<typename T , std::size_t Idx>
LIBREPR_WARNING_PUSH constexpr auto librepr::detail::raw_member_name
inlineconstexpr
Initial value:
=
librepr::ctvi::detail::name_from_subobject<T, LIBREPR_SUBOBJECT_PTR(get<Idx>(to_addr_tuple(fake_obj<T>.value)))>()
constexpr auto to_addr_tuple(T &&object)
Definition to_tuple.h:20

◆ raw_member_names

template<typename T >
LIBREPR_WARNING_POP constexpr auto librepr::detail::raw_member_names
inlineconstexpr