14 friend class ParameterCommands;
20 std::optional<std::string> get_init_error();
21 const std::string &get_code()
const;
22 std::optional<std::string> set_code(
const std::string &s);
24 std::optional<std::string> run(
const ParameterSet &pset = {});
25 using Stack = std::vector<int64_t>;
26 const auto &get_stack()
const
36 enum class Type { INT, CMD, STR,
UUID };
37 Token(Type ty) : type(ty)
47 virtual std::unique_ptr<Token> clone()
const = 0;
58 std::unique_ptr<Token> clone()
const override
60 return std::make_unique<TokenInt>(*
this);
72 std::transform(other.arguments.begin(), other.arguments.end(), std::back_inserter(arguments),
73 [](
auto &x) { return x->clone(); });
76 const std::string command;
77 std::vector<std::unique_ptr<Token>> arguments;
79 std::unique_ptr<Token> clone()
const override
81 return std::make_unique<TokenCommand>(*
this);
91 const std::string string;
93 std::unique_ptr<Token> clone()
const override
95 return std::make_unique<TokenString>(*
this);
101 TokenUUID(
const std::string &str) :
Token(Token::Type::UUID), string(str)
105 const std::string string;
107 std::unique_ptr<Token> clone()
const override
109 return std::make_unique<TokenUUID>(*
this);
114 virtual CommandHandler get_command(
const std::string &cmd);
116 std::vector<int64_t> stack;
121 std::optional<std::string> compile();
122 std::optional<std::string> init_error;
123 std::vector<std::unique_ptr<Token>> tokens;
125 std::optional<std::string> cmd_dump(
const TokenCommand &cmd);
126 std::optional<std::string> cmd_math1(
const TokenCommand &cmd);
127 std::optional<std::string> cmd_math2(
const TokenCommand &cmd);
128 std::optional<std::string> cmd_math3(
const TokenCommand &cmd);
Definition: program.hpp:64
Definition: program.hpp:50
Definition: program.hpp:85
Definition: program.hpp:99
Definition: program.hpp:34
Definition: program.hpp:13
This class encapsulates a UUID and allows it to be uses as a value type.
Definition: uuid.hpp:16
zip_int64_t int64_t
zip_int64_t typedef.
Definition: zip.hpp:103