Foreign object wrapper.
using value_type = Aspect< T >
copy() -> value_type *
clear() -> void
release() -> void
set(value_type * rhs) -> void
get() const -> const T *
get() -> T *
ptr() -> value_type *
Aspect that extends Guile-unaware classes and provides a pointer to the corresponding wrapper object.
Wrapper/aspect technique is described in Guile manual. In our implementation it boils down to the following two rules.
wrapper() const -> const wrapper_type *
wrapper() -> wrapper_type *
wrapper(wrapper_type * rhs) -> void
~Aspect()
Aspect(T && rhs)
Aspect(const T & rhs)
template <class T>
make_object(SCM type, Aspect< T > * ptr) -> SCM
template <class T>
to_wrapper(SCM object) -> Wrapper< T > *
make_wrapper(const std::any & any) -> Wrapper< std::any > *
template <class T>
make_object(SCM type, Wrapper< T > * wrapper) -> SCM
make_wrapper(std::any && any) -> Wrapper< std::any > *
template <class T>
make_wrapper(std::unique_ptr< T > && ptr) -> Wrapper< std::unique_ptr< T > > *
template <class T>
make_wrapper() -> Wrapper< T > *