diff --git a/xs/src/libslic3r/PrintConfig.cpp b/xs/src/libslic3r/PrintConfig.cpp index 189fc57e1..c8a87022e 100644 --- a/xs/src/libslic3r/PrintConfig.cpp +++ b/xs/src/libslic3r/PrintConfig.cpp @@ -1973,11 +1973,11 @@ std::string FullPrintConfig::validate() } // Declare the static caches for each StaticPrintConfig derived class. -StaticPrintConfig::StaticCache PrintObjectConfig::s_cache; -StaticPrintConfig::StaticCache PrintRegionConfig::s_cache; -StaticPrintConfig::StaticCache GCodeConfig::s_cache; -StaticPrintConfig::StaticCache PrintConfig::s_cache; -StaticPrintConfig::StaticCache HostConfig::s_cache; -StaticPrintConfig::StaticCache FullPrintConfig::s_cache; +StaticPrintConfig::StaticCache PrintObjectConfig::s_cache_PrintObjectConfig; +StaticPrintConfig::StaticCache PrintRegionConfig::s_cache_PrintRegionConfig; +StaticPrintConfig::StaticCache GCodeConfig::s_cache_GCodeConfig; +StaticPrintConfig::StaticCache PrintConfig::s_cache_PrintConfig; +StaticPrintConfig::StaticCache HostConfig::s_cache_HostConfig; +StaticPrintConfig::StaticCache FullPrintConfig::s_cache_FullPrintConfig; } diff --git a/xs/src/libslic3r/PrintConfig.hpp b/xs/src/libslic3r/PrintConfig.hpp index 1f3354923..a62944881 100644 --- a/xs/src/libslic3r/PrintConfig.hpp +++ b/xs/src/libslic3r/PrintConfig.hpp @@ -251,27 +251,27 @@ protected: public: \ /* Overrides ConfigBase::optptr(). Find ando/or create a ConfigOption instance for a given name. */ \ ConfigOption* optptr(const t_config_option_key &opt_key, bool create = false) override \ - { return s_cache.optptr(opt_key, this); } \ + { return s_cache_##CLASS_NAME.optptr(opt_key, this); } \ /* Overrides ConfigBase::keys(). Collect names of all configuration values maintained by this configuration store. */ \ - t_config_option_keys keys() const override { return s_cache.keys(); } \ - static const CLASS_NAME& defaults() { initialize_cache(); return s_cache.defaults(); } \ -protected: \ + t_config_option_keys keys() const override { return s_cache_##CLASS_NAME.keys(); } \ + static const CLASS_NAME& defaults() { initialize_cache(); return s_cache_##CLASS_NAME.defaults(); } \ +private: \ static void initialize_cache() \ { \ - if (! s_cache.initialized()) { \ + if (! s_cache_##CLASS_NAME.initialized()) { \ CLASS_NAME *inst = new CLASS_NAME(1); \ - inst->initialize(s_cache, (const char*)inst); \ - s_cache.finalize(inst, inst->def()); \ + inst->initialize(s_cache_##CLASS_NAME, (const char*)inst); \ + s_cache_##CLASS_NAME.finalize(inst, inst->def()); \ } \ } \ /* Cache object holding a key/option map, a list of option keys and a copy of this static config initialized with the defaults. */ \ - static StaticCache s_cache; + static StaticCache s_cache_##CLASS_NAME; #define STATIC_PRINT_CONFIG_CACHE(CLASS_NAME) \ STATIC_PRINT_CONFIG_CACHE_BASE(CLASS_NAME) \ public: \ /* Public default constructor will initialize the key/option cache and the default object copy if needed. */ \ - CLASS_NAME() { initialize_cache(); *this = s_cache.defaults(); } \ + CLASS_NAME() { initialize_cache(); *this = s_cache_##CLASS_NAME.defaults(); } \ protected: \ /* Protected constructor to be called when compounded. */ \ CLASS_NAME(int) {} @@ -540,7 +540,7 @@ protected: class PrintConfig : public GCodeConfig { STATIC_PRINT_CONFIG_CACHE_DERIVED(PrintConfig) - PrintConfig() : GCodeConfig(0) { initialize_cache(); *this = s_cache.defaults(); } + PrintConfig() : GCodeConfig(0) { initialize_cache(); *this = s_cache_PrintConfig.defaults(); } public: double min_object_distance() const; static double min_object_distance(const ConfigBase *config); @@ -697,7 +697,7 @@ class FullPrintConfig : public HostConfig { STATIC_PRINT_CONFIG_CACHE_DERIVED(FullPrintConfig) - FullPrintConfig() : PrintObjectConfig(0), PrintRegionConfig(0), PrintConfig(0), HostConfig(0) { initialize_cache(); *this = s_cache.defaults(); } + FullPrintConfig() : PrintObjectConfig(0), PrintRegionConfig(0), PrintConfig(0), HostConfig(0) { initialize_cache(); *this = s_cache_FullPrintConfig.defaults(); } public: // Validate the FullPrintConfig. Returns an empty string on success, otherwise an error message is returned.