Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/prusa3d/PrusaSlicer.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'src/libslic3r/PlaceholderParser.hpp')
-rw-r--r--src/libslic3r/PlaceholderParser.hpp50
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