template <class T>
class vtb::guile::Wrapper

Foreign object wrapper.

Types
  • using value_type = Aspect< T >
Methods
template <class T>
class vtb::guile::Aspect

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.

  • When C++ object is destroyed, a pointer to this object in the corresponding wrapper object is cleared.
  • When Guile object is destroyed by garbage collector and its finilizer is called, the corresponding C++ object is deleted.

Methods
template <class T>
make_object(SCM type, Aspect< T > * ptr) -> SCM
template <class T>
make_type(const char * name) -> SCM
template <class T>
to_wrapper(SCM object) -> Wrapper< T > *
make_object(SCM type, std::any && any) -> SCM
make_wrapper(const std::any & any) -> Wrapper< std::any > *
make_object(SCM type, const std::any & any) -> SCM
template <class T>
make_object(SCM type, Wrapper< T > * wrapper) -> SCM
make_wrapper(std::any && any) -> Wrapper< std::any > *
template <class T>
make_object(SCM type) -> SCM
template <class T>
finalize(SCM object) -> void
template <class T>
define_type(const char * name) -> SCM
template <class T>
make_wrapper(Aspect< T > * ptr) -> Wrapper< T > *
template <class T>
make_wrapper(std::unique_ptr< T > && ptr) -> Wrapper< std::unique_ptr< T > > *
template <class T>
make_wrapper() -> Wrapper< T > *
template <class T>
make_object(SCM type, std::unique_ptr< T > && ptr) -> SCM