diff options
Diffstat (limited to 'src/libslic3r/PlaceholderParser.hpp')
-rw-r--r-- | src/libslic3r/PlaceholderParser.hpp | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/src/libslic3r/PlaceholderParser.hpp b/src/libslic3r/PlaceholderParser.hpp new file mode 100644 index 000000000..49d53ec9e --- /dev/null +++ b/src/libslic3r/PlaceholderParser.hpp @@ -0,0 +1,50 @@ +#ifndef slic3r_PlaceholderParser_hpp_ +#define slic3r_PlaceholderParser_hpp_ + +#include "libslic3r.h" +#include <map> +#include <string> +#include <vector> +#include "PrintConfig.hpp" + +namespace Slic3r { + +class PlaceholderParser +{ +public: + PlaceholderParser(); + + void apply_config(const DynamicPrintConfig &config); + void apply_env_variables(); + + // Add new ConfigOption values to m_config. + void set(const std::string &key, const std::string &value) { this->set(key, new ConfigOptionString(value)); } + void set(const std::string &key, int value) { this->set(key, new ConfigOptionInt(value)); } + void set(const std::string &key, unsigned int value) { this->set(key, int(value)); } + void set(const std::string &key, bool value) { this->set(key, new ConfigOptionBool(value)); } + void set(const std::string &key, double value) { this->set(key, new ConfigOptionFloat(value)); } + void set(const std::string &key, const std::vector<std::string> &values) { this->set(key, new ConfigOptionStrings(values)); } + void set(const std::string &key, ConfigOption *opt) { m_config.set_key_value(key, opt); } + const DynamicConfig& config() const { return m_config; } + const ConfigOption* option(const std::string &key) const { return m_config.option(key); } + + // Fill in the template using a macro processing language. + // Throws std::runtime_error on syntax or runtime error. + std::string process(const std::string &templ, unsigned int current_extruder_id, const DynamicConfig *config_override = nullptr) const; + + // Evaluate a boolean expression using the full expressive power of the PlaceholderParser boolean expression syntax. + // Throws std::runtime_error on syntax or runtime error. + static bool evaluate_boolean_expression(const std::string &templ, const DynamicConfig &config, const DynamicConfig *config_override = nullptr); + + // Update timestamp, year, month, day, hour, minute, second variables at the provided config. + static void update_timestamp(DynamicConfig &config); + // Update timestamp, year, month, day, hour, minute, second variables at m_config. + void update_timestamp() { update_timestamp(m_config); } + +private: + DynamicConfig m_config; +}; + +} + +#endif |