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

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

Inheritance diagram for Slic3r::StaticPrintConfig::StaticCache< T >:
Collaboration diagram for Slic3r::StaticPrintConfig::StaticCache< T >:

Public Member Functions

 StaticCache ()
 ~StaticCache ()
bool initialized () const
ConfigOption * optptr (const std::string &name, T *owner) const
const ConfigOption * optptr (const std::string &name, const T *owner) const
const std::vector< std::string > & keys () const
const T & defaults () const
void finalize (T *defaults, const ConfigDef *defs)
template<typename T>
void opt_add (const std::string &name, const char *base_ptr, const T &opt)

Protected Attributes

std::map< std::string, ptrdiff_t > m_map_name_to_offset

Private Attributes

T * m_defaults
std::vector< std::string > m_keys

Detailed Description

template<typename T>
class Slic3r::StaticPrintConfig::StaticCache< T >

Constructor & Destructor Documentation

◆ StaticCache()

template<typename T>
Slic3r::StaticPrintConfig::StaticCache< T >::StaticCache ( )
inline
1081: m_defaults(nullptr) {}
T * m_defaults
Definition PrintConfig.hpp:1125

References m_defaults.

◆ ~StaticCache()

template<typename T>
Slic3r::StaticPrintConfig::StaticCache< T >::~StaticCache ( )
inline
1082{ delete m_defaults; m_defaults = nullptr; }

References m_defaults.

Member Function Documentation

◆ defaults()

template<typename T>
const T & Slic3r::StaticPrintConfig::StaticCache< T >::defaults ( ) const
inline
1099{ return *m_defaults; }

References m_defaults.

Referenced by finalize().

Here is the caller graph for this function:

◆ finalize()

template<typename T>
void Slic3r::StaticPrintConfig::StaticCache< T >::finalize ( T * defaults,
const ConfigDef * defs )
inline
1105 {
1106 assert(defs != nullptr);
1108 m_keys.clear();
1109 m_keys.reserve(m_map_name_to_offset.size());
1110 for (const auto &kvp : defs->options) {
1111 // Find the option given the option name kvp.first by an offset from (char*)m_defaults.
1112 ConfigOption *opt = this->optptr(kvp.first, m_defaults);
1113 if (opt == nullptr)
1114 // This option is not defined by the ConfigBase of type T.
1115 continue;
1116 m_keys.emplace_back(kvp.first);
1117 const ConfigOptionDef *def = defs->get(kvp.first);
1118 assert(def != nullptr);
1119 if (def->default_value)
1120 opt->set(def->default_value.get());
1121 }
1122 }
std::map< std::string, ptrdiff_t > m_map_name_to_offset
Definition PrintConfig.hpp:1072
Definition PrintConfig.hpp:1078
ConfigOption * optptr(const std::string &name, T *owner) const
Definition PrintConfig.hpp:1086
const T & defaults() const
Definition PrintConfig.hpp:1099
std::vector< std::string > m_keys
Definition PrintConfig.hpp:1126

References Slic3r::StaticPrintConfig::def(), defaults(), Slic3r::ConfigDef::get(), m_defaults, m_keys, Slic3r::StaticPrintConfig::StaticCacheBase::m_map_name_to_offset, Slic3r::ConfigDef::options, and optptr().

Here is the call graph for this function:

◆ initialized()

template<typename T>
bool Slic3r::StaticPrintConfig::StaticCache< T >::initialized ( ) const
inline
1084{ return ! m_keys.empty(); }

References m_keys.

◆ keys()

template<typename T>
const std::vector< std::string > & Slic3r::StaticPrintConfig::StaticCache< T >::keys ( ) const
inline
1098{ return m_keys; }

References m_keys.

◆ opt_add()

template<typename T>
void Slic3r::StaticPrintConfig::StaticCacheBase::opt_add ( const std::string & name,
const char * base_ptr,
const T & opt )
inlineinherited
1066 {
1067 assert(m_map_name_to_offset.find(name) == m_map_name_to_offset.end());
1068 m_map_name_to_offset[name] = (const char*)&opt - base_ptr;
1069 }

References m_map_name_to_offset.

◆ optptr() [1/2]

template<typename T>
const ConfigOption * Slic3r::StaticPrintConfig::StaticCache< T >::optptr ( const std::string & name,
const T * owner ) const
inline
1093 {
1094 const auto it = m_map_name_to_offset.find(name);
1095 return (it == m_map_name_to_offset.end()) ? nullptr : reinterpret_cast<const ConfigOption*>((const char*)owner + it->second);
1096 }

References Slic3r::StaticPrintConfig::StaticCacheBase::m_map_name_to_offset.

◆ optptr() [2/2]

template<typename T>
ConfigOption * Slic3r::StaticPrintConfig::StaticCache< T >::optptr ( const std::string & name,
T * owner ) const
inline
1087 {
1088 const auto it = m_map_name_to_offset.find(name);
1089 return (it == m_map_name_to_offset.end()) ? nullptr : reinterpret_cast<ConfigOption*>((char*)owner + it->second);
1090 }

References Slic3r::StaticPrintConfig::StaticCacheBase::m_map_name_to_offset.

Referenced by finalize().

Here is the caller graph for this function:

Member Data Documentation

◆ m_defaults

template<typename T>
T* Slic3r::StaticPrintConfig::StaticCache< T >::m_defaults
private

◆ m_keys

template<typename T>
std::vector<std::string> Slic3r::StaticPrintConfig::StaticCache< T >::m_keys
private

Referenced by finalize(), initialized(), and keys().

◆ m_map_name_to_offset

std::map<std::string, ptrdiff_t> Slic3r::StaticPrintConfig::StaticCacheBase::m_map_name_to_offset
protectedinherited

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