%module{Slic3r::XS};

%{
#include <xsinit.h>
#include <vector>
#include "libslic3r/PlaceholderParser.hpp"
%}

%name{Slic3r::GCode::PlaceholderParser} class PlaceholderParser {
    PlaceholderParser();
    ~PlaceholderParser();
    Clone<PlaceholderParser> clone()
        %code{% RETVAL = THIS; %};
    
    void update_timestamp();
    void apply_env_variables();
    void apply_config(DynamicPrintConfig *config)
        %code%{ THIS->apply_config(*config); %};
    void set(std::string key, std::string value);
    %name{set_multiple} void set(std::string key, std::vector<std::string> values);
    std::string process(std::string str) const;
};