cpp-reflect
C++ Reflection and Annotations Library
|
Exported Modules | |
module | std |
module | std |
module | std |
module | std |
Concepts | |
concept | refl::is_type_info |
concept | refl::Reflected |
Classes | |
struct | refl::is_std_array< T > |
struct | refl::is_std_array< std::array< T, N > > |
struct | refl::visitor< Derived > |
struct | refl::detail::type_name_holder< T > |
struct | refl::detail::type_name_holder_pack< Pack > |
struct | refl::detail::type_name_holder_pack_1t1i< Pack > |
struct | refl::detail::pack_type_id< T > |
struct | refl::detail::pack_type_id< Pack< Ts... > > |
struct | refl::detail::pack_type_id< Pack< T, I > > |
struct | refl::field< T, I > |
struct | refl::method< T, I > |
struct | refl_pack< T > |
struct | refl_int_pack< T > |
class | refl::any |
class | refl::any_ref |
struct | refl::field_info |
struct | refl::field_path |
struct | refl::method_info |
struct | refl::get_pack_param_ids< T > |
struct | refl::get_pack_param_ids< Pack< Args... > > |
struct | refl::get_pack_param_ids< Pack< T, I > > |
class | refl::type_info |
struct | std::hash< refl::field_path > |
class | refl::archive |
Enumerations | |
enum class | refl::access_spec : unsigned char { NONE = 0U , PRIVATE = 1U , PROTECTED = 2U , PUBLIC = 3U } |
enum | refl::eq_policy::policy_e { refl::eq_policy::shallow , refl::eq_policy::deep , refl::eq_policy::skip } |
Typedefs | |
using | type = typename packtl::get<I, typename static_type_info<T>::field_types>::type |
template<std::size_t J> | |
using | metadata_type |
using | type = typename packtl::get<I, typename static_type_info<T>::method_types>::type |
template<typename T> | |
using | refl::static_type_info = typename T::__type_info__ |
using | refl::type_id_t = std::size_t |
template<typename... T> | |
using | refl_tuple = std::tuple<T...> |
Functions | |
visitor ()=default | |
virtual | ~visitor () |
template<Reflected R> | |
void | visit (const R &obj) |
template<typename T> | |
void | visit_value (const T &obj) |
template<typename T> | |
void | visit_reference (const T &obj) |
template<typename T> | |
void | visit_pointer (const T *obj) |
template<refl::Reflected R> | |
void | visit_obj (const R &obj) |
template<refl::Reflected R, typename Field> | |
void | visit_obj_field (const R &obj) |
template<typename T> | |
void | visit_iterable (const T &iterable) |
template<typename T> | |
void | visit_iterable_element (const T &item) |
template<typename T> | |
void | visit_tuple (const T &it) |
template<typename T> | |
void | visit_tuple_element (const T &item) |
template<typename T> | |
void | visit_any (const T &it) |
template<std::size_t... Is> | |
constexpr auto | refl::detail::substring_as_array (std::string_view s, std::index_sequence< Is... >) |
template<typename T> | |
constexpr auto | refl::detail::type_name_array () |
template<template< typename... > typename Pack> | |
constexpr auto | refl::detail::type_name_array_pack () |
template<template< typename T, std::size_t I > typename Pack> | |
constexpr auto | refl::detail::type_name_array_pack_1t1i () |
template<typename T> | |
constexpr auto | refl::detail::type_name_str () |
template<template< typename... > typename Pack> | |
constexpr auto | refl::detail::type_name_str_pack () |
template<template< typename T, std::size_t I > typename Pack> | |
constexpr auto | refl::detail::type_name_str_pack_1t1i () |
constexpr std::uint64_t | refl::detail::fnv1a_partial (std::uint64_t partial, std::string_view s) |
constexpr std::uint64_t | refl::detail::fnv1a_append (std::uint64_t partial, std::string_view s) |
constexpr std::uint64_t | refl::detail::fnv1a (std::string_view s) |
template<typename MetadataType, std::size_t StartFrom> requires (not has_metadata<MetadataType>) | |
static int | find_metadata () |
template<typename MetadataType, std::size_t StartFrom> requires (has_metadata<MetadataType> and StartFrom < metadata_count) | |
static consteval MetadataType | find_metadata () |
static const std::remove_reference_t< type > & | from_instance (const T &instance) |
static std::remove_reference_t< type > & | from_instance (T &instance) |
template<Reflected R, template< Reflected, typename > typename Fun, typename... Args> | |
auto | refl::for_each_field (Args &&... args) |
template<Reflected R> | |
bool | refl::deep_eq (const R &lhs, const R &rhs) |
any () | |
template<typename T> requires (not std::same_as<std::remove_reference_t<T>, any>) | |
any (const T &t) | |
template<typename T> requires (not std::same_as<std::remove_reference_t<T>, any>) | |
any (T &&t) | |
template<typename T, typename... Args> requires (not std::is_reference_v<T>) | |
static any | make (Args &&... args) |
template<typename T> requires (not std::same_as<std::remove_reference_t<T>, any>) | |
static any | make (const T &value) |
static any | make (const refl::type_info &t_info, void *ptr) |
~any () | |
any (const any &other) | |
any & | operator= (const any &other) |
template<typename T> | |
bool | is () const |
bool | is (const refl::type_info &tinfo) const |
template<typename T> | |
T & | as () |
template<typename T> | |
const T & | as () const |
const type_info & | type () const |
bool | is_null () const |
void * | data () |
const void * | data () const |
bool | operator== (const any &other) const |
any_ref () | |
template<typename T> requires (not std::same_as<std::remove_reference_t<T>, any_ref> and not std::same_as< std::remove_reference_t<T>, any>) | |
any_ref (T &t) | |
template<typename T> requires (not std::same_as<std::remove_reference_t<T>, any_ref> and not std::same_as< std::remove_reference_t<T>, any>) | |
any_ref (T *t) | |
any_ref (const refl::type_info &t_info, void *ptr) | |
any_ref (refl::any &owner_any) | |
~any_ref () | |
any_ref (const any_ref &other) | |
any_ref & | operator= (const any_ref &other) |
template<typename T> | |
bool | is () const |
bool | is (const refl::type_info &tinfo) const |
template<typename T> | |
T & | as () |
template<typename T> | |
const T & | as () const |
const type_info & | type () const |
bool | is_null () const |
void * | data () |
const void * | data () const |
type_id_t | refl::get_id_from_info_getter (const type_info &(*tif)()) |
void * | get_ptr (void *obj) const |
template<typename T> | |
T & | get_ref (void *obj) const |
template<typename MetadataType> | |
bool | has_metadata () const |
template<typename MetadataType> | |
const MetadataType & | get_metadata () const |
field_path (const field_info *field) | |
field_path (std::initializer_list< const field_info * > fields) | |
const type_info & | type () const |
void * | get_ptr (void *obj) const |
template<typename T> | |
T & | get_ref (void *obj) const |
bool | operator== (const field_path &other) const |
static std::vector< type_id_t > | vector () |
static std::vector< type_id_t > | vector () |
static std::vector< type_id_t > | vector () |
template<typename T> | |
static const type_info & | from () |
const std::string & | name () const |
const auto & | fields () const |
std::optional< const field_info * > | field_by_name (const std::string &name) const |
std::optional< const field_info * > | field_by_offset (const std::size_t &offset) const |
std::size_t | hash_code () const |
std::size_t | id () const |
template<typename T> | |
bool | is_type () const |
template<template< typename... > typename Pack> | |
bool | is_pack () const |
template<template< typename T, std::size_t S > typename Pack> | |
bool | is_pack_1t1i () const |
bool | is_const () const |
bool | is_indirect () const |
bool | is_rval_ref () const |
bool | is_lval_ref () const |
bool | is_ptr () const |
const type_info & | indirect_type () const |
std::vector< const type_info * > | pack_parameter_types () const |
void * | make_copy_of (const void *ptr) const |
void | assign_copy_of (const void *src, void *dest) const |
bool | equality (const void *lhs, const void *rhs) const |
std::size_t | operator() (const refl::field_path &path) const |
archive ()=default | |
any & | operator[] (const std::string &path) |
any & | at (const std::string &path) |
const any & | at (const std::string &path) const |
bool | contains (const std::string &path) const |
Variables | |
static constexpr auto | value = type_name_array<T>() |
static constexpr auto | value = type_name_array_pack<Pack>() |
static constexpr auto | value = type_name_array_pack_1t1i<Pack>() |
template<typename T> | |
constexpr auto | refl::type_name = detail::type_name_str<T>() |
template<template< typename... > typename Pack> | |
constexpr auto | refl::pack_name = detail::type_name_str_pack<Pack>() |
template<template< typename T, std::size_t I > typename Pack> | |
constexpr auto | refl::pack_1t1i_name = detail::type_name_str_pack_1t1i<Pack>() |
template<typename T> | |
constexpr type_id_t | refl::type_id = detail::fnv1a(type_name<T>) |
template<template< typename... > typename Pack> | |
constexpr type_id_t | refl::pack_id = detail::fnv1a(pack_name<Pack>) |
template<template< typename T, std::size_t I > typename Pack> | |
constexpr type_id_t | refl::pack_1t1i_id = detail::fnv1a(pack_1t1i_name<Pack>) |
static constexpr type_id_t | value = type_id<T> |
static constexpr type_id_t | value = pack_id<Pack> |
static constexpr type_id_t | value = pack_1t1i_id<Pack> |
template<typename T> | |
constexpr type_id_t | refl::pack_type_id = detail::pack_type_id<T>::value |
static constexpr std::size_t | index = I |
static constexpr const char * | name = static_type_info<T>::field_names[I] |
static constexpr type_id_t | type_id = refl::type_id<type> |
static constexpr std::size_t | size |
static constexpr std::size_t | offset |
static constexpr access_spec | access |
static constexpr bool | is_reference = std::is_reference_v<type> |
static constexpr bool | is_pointer = std::is_pointer_v<type> |
static constexpr std::size_t | metadata_offset |
static constexpr std::size_t | metadata_count |
template<std::size_t J> | |
static constexpr decltype(std::get< metadata_offset+J >(static_type_info< T >::field_metadata)) | metadata_item = std::get<metadata_offset + J>(static_type_info<T>::field_metadata) |
template<typename MetadataType> | |
static constexpr bool | has_metadata |
template<typename MetadataType> | |
static constexpr MetadataType | get_metadata = find_metadata<MetadataType, 0>() |
template<refl::Reflected T> | |
constexpr std::size_t | refl::field_count |
template<refl::Reflected T, std::size_t I> | |
constexpr decltype(std::get< I >(static_type_info< T >::field_metadata)) | refl::field_meta |
static constexpr std::size_t | index = I |
static constexpr const char * | name = static_type_info<T>::method_names[I] |
static constexpr access_spec | access |
template<refl::Reflected T> | |
constexpr std::size_t | refl::method_count |
std::map< type_id_t, type_info > | refl::type_registry {} |
std::size_t | index |
std::string | name |
std::size_t | size |
std::size_t | offset |
access_spec | access_type |
type_id_t | type_id |
const type_info &(* | type )() |
std::vector< std::pair< const type_info &(*)(), void * > > | metadata |
std::size_t | index |
std::string | name |
access_spec | access_type |
Files | |
file | src/refl.cppm |
! | |
file | src/_types.cppm |
! | |
file | src/accessors.cppm |
! | |
file | src/any.cppm |
! | |
file | src/archive.cppm |
file | src/equality.cppm |
file | src/type_info.cppm |
file | src/type_name.cppm |
! | |
file | src/visitor.cppm |