DNDSR 0.1.0.dev1+gcd065ad
Distributed Numeric Data Structure for CFV
Loading...
Searching...
No Matches
ObjectUtils.hpp File Reference

Tiny reflection-style helpers (MemberRef, MemberPtr) and for_each_member_* visitors used by config / serializer code to iterate struct members with their names. More...

#include "Defines.hpp"
#include <tuple>
Include dependency graph for ObjectUtils.hpp:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  DNDS::MemberRef< T >
 Simple {reference, name} bundle for a struct member. More...
 
struct  DNDS::MemberPtr< Class, T >
 Pointer-to-member wrapper with a symbolic name; the pointer-based cousin of MemberRef used when the object is known only at visit time. More...
 

Namespaces

namespace  DNDS
 the host side operators are provided as implemented
 

Macros

#define DNDS_MAKE_1_MEMBER_REF(x)    MemberRef { x, #x }
 Construct a MemberRef capturing x and its stringified name.
 
#define DNDS_MAKE_1_MEMBER_PTR(Class, member)    MemberPtr { &Class::member, #member }
 Build a MemberPtr for Class::member.
 
#define DNDS_MAKE_1_MEMBER_PTR_SELF(member)    MemberPtr { &t_self::member, #member }
 Like DNDS_MAKE_1_MEMBER_PTR but uses the surrounding t_self alias, common in DNDSR member definitions (using t_self = ...;).
 

Functions

template<typename TList , typename F >
void DNDS::for_each_member_list (TList &&obj_member_list, F &&f)
 Invoke f(member) for every element of a std::tuple of members.
 
template<typename T >
 DNDS::MemberRef (T &, const char *) -> MemberRef< T >
 
template<typename Class , typename TList , typename F >
void DNDS::for_each_member_ptr_list (Class &obj, TList &&obj_member_ptr_list, F &&f)
 Invoke f(name, obj.*ptr) for every member in a list of MemberPtr.
 
template<typename TList , typename F >
void DNDS::for_each_member_ptr_list_raw (TList &&obj_member_ptr_list, F &&f)
 Low-level variant that passes each MemberPtr object through to f directly (for callers that need access to both ptr and name).
 
template<typename Class , typename T >
 DNDS::MemberPtr (T Class::*, const char *) -> MemberPtr< Class, T >
 

Detailed Description

Tiny reflection-style helpers (MemberRef, MemberPtr) and for_each_member_* visitors used by config / serializer code to iterate struct members with their names.

Definition in file ObjectUtils.hpp.

Macro Definition Documentation

◆ DNDS_MAKE_1_MEMBER_PTR

#define DNDS_MAKE_1_MEMBER_PTR (   Class,
  member 
)     MemberPtr { &Class::member, #member }

Build a MemberPtr for Class::member.

Definition at line 71 of file ObjectUtils.hpp.

◆ DNDS_MAKE_1_MEMBER_PTR_SELF

#define DNDS_MAKE_1_MEMBER_PTR_SELF (   member)     MemberPtr { &t_self::member, #member }

Like DNDS_MAKE_1_MEMBER_PTR but uses the surrounding t_self alias, common in DNDSR member definitions (using t_self = ...;).

Definition at line 76 of file ObjectUtils.hpp.

◆ DNDS_MAKE_1_MEMBER_REF

#define DNDS_MAKE_1_MEMBER_REF (   x)     MemberRef { x, #x }

Construct a MemberRef capturing x and its stringified name.

Definition at line 37 of file ObjectUtils.hpp.