OrcaSlicer latest
OrcaSlicer
Loading...
Searching...
No Matches
Slic3r::CachedObject< T > Class Template Reference

A wrapper class around arbitrary object that needs thread safe caching. More...

#include </home/runner/work/OrcaSlicer/OrcaSlicer/src/libslic3r/MTUtils.hpp>

Inheritance diagram for Slic3r::CachedObject< T >:
Collaboration diagram for Slic3r::CachedObject< T >:

Public Types

using Setter = std::function<void(T &)>

Public Member Functions

template<class... Args>
 CachedObject (Setter &&fn, Args &&... args)
template<class Fn>
void invalidate (Fn &&fn)
const T & get ()

Private Attributes

T m_obj
bool m_valid
SpinMutex m_lck
std::function< void(T &)> m_setter

Detailed Description

template<class T>
class Slic3r::CachedObject< T >

A wrapper class around arbitrary object that needs thread safe caching.

Member Typedef Documentation

◆ Setter

template<class T>
using Slic3r::CachedObject< T >::Setter = std::function<void(T &)>

Constructor & Destructor Documentation

◆ CachedObject()

template<class T>
template<class... Args>
Slic3r::CachedObject< T >::CachedObject ( Setter && fn,
Args &&... args )
inline
54 {}
A wrapper class around arbitrary object that needs thread safe caching.
Definition MTUtils.hpp:35
T m_obj
Definition MTUtils.hpp:41
std::function< void(T &)> m_setter
Definition MTUtils.hpp:47
bool m_valid
Definition MTUtils.hpp:42

References m_obj, m_setter, and m_valid.

Member Function Documentation

◆ get()

template<class T>
const T & Slic3r::CachedObject< T >::get ( )
inline
69 {
71 if (!m_valid) {
73 m_valid = true;
74 }
75 return m_obj;
76 }
SpinMutex m_lck
Definition MTUtils.hpp:43

References m_lck, m_obj, m_setter, and m_valid.

◆ invalidate()

template<class T>
template<class Fn>
void Slic3r::CachedObject< T >::invalidate ( Fn && fn)
inline
61 {
63 fn();
64 m_valid = false;
65 }

References m_lck, and m_valid.

Member Data Documentation

◆ m_lck

template<class T>
SpinMutex Slic3r::CachedObject< T >::m_lck
private

Referenced by get(), and invalidate().

◆ m_obj

template<class T>
T Slic3r::CachedObject< T >::m_obj
private

Referenced by CachedObject(), and get().

◆ m_setter

template<class T>
std::function<void(T &)> Slic3r::CachedObject< T >::m_setter
private

Referenced by CachedObject(), and get().

◆ m_valid

template<class T>
bool Slic3r::CachedObject< T >::m_valid
private

Referenced by CachedObject(), get(), and invalidate().


The documentation for this class was generated from the following file:
  • /home/runner/work/OrcaSlicer/OrcaSlicer/src/libslic3r/MTUtils.hpp