26#ifndef MYSQLSHDK_SCRIPTING_POLYGLOT_NATIVE_WRAPPERS_POLYGLOT_COLLECTABLE_H_
27#define MYSQLSHDK_SCRIPTING_POLYGLOT_NATIVE_WRAPPERS_POLYGLOT_COLLECTABLE_H_
32#include <unordered_set>
48class Polyglot_language;
49class Collectable_registry;
58 std::weak_ptr<Polyglot_language>
language);
61 std::shared_ptr<Polyglot_language>
language()
const;
78template <
typename T, Collectable_type t>
82 std::weak_ptr<Polyglot_language>
language)
93 const std::shared_ptr<T> &
data()
const {
return m_data; }
When a Polyglot wrapper for a C++ object is created, a collectable instance is created to be passed t...
Definition: polyglot_collectable.h:113
void clean()
Deletes all collectables which were marked as to be deleted.
Definition: polyglot_collectable.cc:83
void remove(ICollectable *target)
Definition: polyglot_collectable.cc:73
Collectable_registry(Collectable_registry &&)=delete
Collectable_registry()=default
std::vector< ICollectable * > m_phantom_collectables
Definition: polyglot_collectable.h:138
Collectable_registry & operator=(const Collectable_registry &)=delete
~Collectable_registry()
Definition: polyglot_collectable.cc:60
Collectable_registry & operator=(Collectable_registry &&)=delete
void add(ICollectable *target)
Definition: polyglot_collectable.cc:68
std::unordered_set< ICollectable * > m_live_collectables
Definition: polyglot_collectable.h:137
Collectable_registry(const Collectable_registry &)=delete
std::mutex m_cleanup_mutex
Definition: polyglot_collectable.h:136
void clean_unsafe()
Definition: polyglot_collectable.cc:88
Represents a data object to be associated to a Polyglot wrapper for C++ elements.
Definition: polyglot_collectable.h:79
Collectable(Collectable &&)=delete
Collectable & operator=(Collectable &&)=delete
Collectable(const std::shared_ptr< T > &d, std::weak_ptr< Polyglot_language > language)
Definition: polyglot_collectable.h:81
const std::shared_ptr< T > & data() const
Definition: polyglot_collectable.h:93
std::shared_ptr< T > m_data
Definition: polyglot_collectable.h:96
~Collectable() override=default
Collectable(const Collectable &)=delete
Collectable & operator=(const Collectable &)=delete
Base collectable interface to be able to determine the type of a collectable object without with no n...
Definition: polyglot_collectable.h:55
virtual ~ICollectable()=default
std::weak_ptr< Polyglot_language > m_language
Definition: polyglot_collectable.h:66
std::shared_ptr< Polyglot_language > language() const
Definition: polyglot_collectable.cc:54
Collectable_registry * registry() const
Definition: polyglot_collectable.cc:58
Collectable_type m_type
Definition: polyglot_collectable.h:65
Collectable_type type() const
Definition: polyglot_collectable.h:60
ICollectable(Collectable_type type, std::weak_ptr< Polyglot_language > language)
Definition: polyglot_collectable.cc:42
Collectable_registry * m_registry
Definition: polyglot_collectable.h:67
Collectable_type
Definition: polyglot_collectable.h:39
Definition: file_system_exceptions.h:34
Definition: gcs_xcom_synode.h:64