OrcaSlicer latest
OrcaSlicer
Loading...
Searching...
No Matches
Slic3r::ScopedPluginAuditContext Class Reference

#include </home/runner/work/OrcaSlicer/OrcaSlicer/src/slic3r/plugin/PluginAuditManager.hpp>

Collaboration diagram for Slic3r::ScopedPluginAuditContext:

Public Member Functions

 ScopedPluginAuditContext (const std::string &plugin_key, const std::string &capability_name={})
 ~ScopedPluginAuditContext ()
 ScopedPluginAuditContext (const ScopedPluginAuditContext &)=delete
ScopedPluginAuditContext & operator= (const ScopedPluginAuditContext &)=delete

Private Attributes

std::string m_plugin_key
std::string m_capability
std::string m_previous_id
std::string m_previous_capability
std::vector< AllowedRoot > m_previous_scoped_roots
std::vector< PyObject * > m_previous_root_frames

Detailed Description

Constructor & Destructor Documentation

◆ ScopedPluginAuditContext() [1/2]

Slic3r::ScopedPluginAuditContext::ScopedPluginAuditContext ( const std::string & plugin_key,
const std::string & capability_name = {} )
explicit
493 : m_plugin_key(plugin_key)
494 , m_capability(capability_name)
495 , m_previous_id(PluginAuditManager::instance().current_plugin())
499{
504}
static std::vector< AllowedRoot > m_scoped_allowed_roots
Definition PluginAuditManager.hpp:245
void set_current_plugin(const std::string &plugin_key)
Definition PluginAuditManager.cpp:541
static PluginAuditManager & instance()
Definition PluginAuditManager.cpp:535
void set_current_capability(const std::string &capability_name)
Definition PluginAuditManager.cpp:547
static std::vector< PyObject * > m_root_frames
Definition PluginAuditManager.hpp:246
std::string m_plugin_key
Definition PluginAuditManager.hpp:280
std::string m_capability
Definition PluginAuditManager.hpp:281
std::string m_previous_capability
Definition PluginAuditManager.hpp:283
std::vector< AllowedRoot > m_previous_scoped_roots
Definition PluginAuditManager.hpp:284
std::string m_previous_id
Definition PluginAuditManager.hpp:282
std::vector< PyObject * > m_previous_root_frames
Definition PluginAuditManager.hpp:285

References Slic3r::PluginAuditManager::instance(), m_capability, m_plugin_key, m_previous_capability, m_previous_id, m_previous_root_frames, m_previous_scoped_roots, Slic3r::PluginAuditManager::m_root_frames, Slic3r::PluginAuditManager::m_scoped_allowed_roots, Slic3r::PluginAuditManager::set_current_capability(), and Slic3r::PluginAuditManager::set_current_plugin().

Referenced by ScopedPluginAuditContext(), and operator=().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ~ScopedPluginAuditContext()

Slic3r::ScopedPluginAuditContext::~ScopedPluginAuditContext ( )
507{
508 PluginAuditManager& mgr = PluginAuditManager::instance();
509
510 // Let this scope's root frames go while it is still the current context, and as its own
511 // plugin: the trampoline's denial path clears the key before the scope ends, and a finalizer
512 // must never be judged as the outer plugin, or bypass the audit when there is none. A
513 // finalizer may record a new root frame, so repeat until none is held.
515 assert(PyGILState_Check());
516 mgr.set_current_plugin(m_plugin_key);
517 mgr.set_current_capability(m_capability);
519 std::vector<PyObject*> frames = std::move(PluginAuditManager::m_root_frames);
521 mgr.release_frames(frames);
522 }
523 }
524
525 mgr.set_current_plugin(m_previous_id);
526 mgr.set_current_capability(m_previous_capability);
529}
bool empty(const BoundingBoxBase< PointType, PointsType > &bb)
Definition BoundingBox.hpp:273

References Slic3r::empty(), Slic3r::PluginAuditManager::instance(), m_capability, m_plugin_key, m_previous_capability, m_previous_id, m_previous_root_frames, m_previous_scoped_roots, Slic3r::PluginAuditManager::m_root_frames, Slic3r::PluginAuditManager::m_scoped_allowed_roots, Slic3r::PluginAuditManager::release_frames(), Slic3r::PluginAuditManager::set_current_capability(), and Slic3r::PluginAuditManager::set_current_plugin().

Here is the call graph for this function:

◆ ScopedPluginAuditContext() [2/2]

Slic3r::ScopedPluginAuditContext::ScopedPluginAuditContext ( const ScopedPluginAuditContext & )
delete

References ScopedPluginAuditContext().

Here is the call graph for this function:

Member Function Documentation

◆ operator=()

ScopedPluginAuditContext & Slic3r::ScopedPluginAuditContext::operator= ( const ScopedPluginAuditContext & )
delete

References ScopedPluginAuditContext().

Here is the call graph for this function:

Member Data Documentation

◆ m_capability

std::string Slic3r::ScopedPluginAuditContext::m_capability
private

◆ m_plugin_key

std::string Slic3r::ScopedPluginAuditContext::m_plugin_key
private

◆ m_previous_capability

std::string Slic3r::ScopedPluginAuditContext::m_previous_capability
private

◆ m_previous_id

std::string Slic3r::ScopedPluginAuditContext::m_previous_id
private

◆ m_previous_root_frames

std::vector<PyObject*> Slic3r::ScopedPluginAuditContext::m_previous_root_frames
private

◆ m_previous_scoped_roots

std::vector<AllowedRoot> Slic3r::ScopedPluginAuditContext::m_previous_scoped_roots
private

The documentation for this class was generated from the following files: