13 friend class ParameterCommands;
19 std::optional<std::string> get_init_error();
20 const std::string &get_code()
const;
21 std::optional<std::string> set_code(
const std::string &s);
23 std::optional<std::string> run(
const ParameterSet &pset = {});
24 using Stack = std::vector<int64_t>;
25 const auto &get_stack()
const
35 enum class Type { INT, CMD, STR,
UUID };
36 Token(Type ty) : type(ty)
46 virtual std::unique_ptr<Token> clone()
const = 0;
57 std::unique_ptr<Token> clone()
const override
59 return std::make_unique<TokenInt>(*
this);
71 std::transform(other.arguments.begin(), other.arguments.end(), std::back_inserter(arguments),
72 [](
auto &x) { return x->clone(); });
75 const std::string command;
76 std::vector<std::unique_ptr<Token>> arguments;
78 std::unique_ptr<Token> clone()
const override
80 return std::make_unique<TokenCommand>(*
this);
90 const std::string string;
92 std::unique_ptr<Token> clone()
const override
94 return std::make_unique<TokenString>(*
this);
100 TokenUUID(
const std::string &str) :
Token(Token::Type::UUID), string(str)
104 const std::string string;
106 std::unique_ptr<Token> clone()
const override
108 return std::make_unique<TokenUUID>(*
this);
113 virtual CommandHandler get_command(
const std::string &cmd);
115 std::vector<int64_t> stack;
120 std::optional<std::string> compile();
121 std::optional<std::string> init_error;
122 std::vector<std::unique_ptr<Token>> tokens;
124 std::optional<std::string> cmd_dump(
const TokenCommand &cmd);
125 std::optional<std::string> cmd_math1(
const TokenCommand &cmd);
126 std::optional<std::string> cmd_math2(
const TokenCommand &cmd);
127 std::optional<std::string> cmd_math3(
const TokenCommand &cmd);
Definition: program.hpp:63
Definition: program.hpp:49
Definition: program.hpp:84
Definition: program.hpp:98
Definition: program.hpp:33
Definition: program.hpp:12
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