cgv
reflect_extern.h
1 #pragma once
2 
3 #include "reflection_traits.h"
4 
5 #include "lib_begin.h"
6 
7 namespace cgv {
8  namespace reflect {
9 
11 template <typename D, typename B>
13 {
14  static const ReflectionTraitsKind kind = RTK_EXTERNAL_SELF_REFLECT;
16  static const bool has_external = true;
20  bool has_external_implementation() const { return true; }
22  bool external_implementation(reflection_handler& rh, void* member_ptr) { return static_cast<D*>(member_ptr)->self_reflect(rh); }
23 };
24 
26 template <typename T, typename D>
27 struct extern_reflection_traits : public extern_reflection_traits_impl<D, reflection_traits<T,RTK_EXTERNAL_SELF_REFLECT,false> >
28 {
31 };
32 
34 template <typename T, typename D>
35 struct extern_string_reflection_traits : public extern_reflection_traits_impl<D, reflection_traits<T,RTK_EXTERNAL_SELF_REFLECT> >
36 {
39 };
40 
41  }
42 }
43 
44 #include <cgv/config/lib_end.h>
cgv::reflect::extern_string_reflection_traits::clone
abst_reflection_traits * clone()
clone function
Definition: reflect_extern.h:38
cgv::reflect::extern_reflection_traits_impl::has_external
static const bool has_external
compile information about external implementation
Definition: reflect_extern.h:16
cgv::reflect::abst_reflection_traits
abstract interface for type reflection with basic type management and optional string conversion
Definition: reflection_traits.h:24
cgv::reflect::extern_reflection_traits_impl::external_implementation
bool external_implementation(reflection_handler &rh, void *member_ptr)
call the external implementation
Definition: reflect_extern.h:22
cgv::reflect::extern_reflection_traits_impl
this reflection traits implementation is used by the reflect_string function
Definition: reflect_extern.h:13
cgv::reflect::ReflectionTraitsKind
ReflectionTraitsKind
different types of reflection traits
Definition: reflection_traits.h:20
cgv::reflect::extern_reflection_traits_impl::external_self_reflect_type
D external_self_reflect_type
compile time information about external type with self_reflect implementation
Definition: reflect_extern.h:18
cgv::reflect::reflection_handler
Definition: reflection_handler.h:63
cgv::reflect::extern_reflection_traits::clone
abst_reflection_traits * clone()
clone function
Definition: reflect_extern.h:30
cgv::reflect::extern_string_reflection_traits
this reflection traits implementation is used for external self_reflect implementations together with...
Definition: reflect_extern.h:36
cgv::math::reflect
vec< T > reflect(const vec< T > &v, const vec< T > &n)
calculates the reflected direction of v; n is the normal of the reflecting surface
Definition: vec.h:822
cgv::reflect::extern_reflection_traits
this reflection traits implementation is used for external self_reflect implementations of instances ...
Definition: reflect_extern.h:28
cgv::reflect::extern_reflection_traits_impl::has_external_implementation
bool has_external_implementation() const
whether type can be converted to string, defaults to false
Definition: reflect_extern.h:20
cgv
the cgv namespace
Definition: vr_calib.cxx:9