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