#include #include "pilang.hpp" using namespace Pilang3; class Std { public: static Variable set(Environment& env, Cmdargs& args) { return *env.globalVars[std::get(args[0].data)]; } static Variable get(Environment& env, Cmdargs& args) { env.globalVars[std::get(args[0].data)] = std::make_shared(args[1]); return args[1]; } static Variable concat(Environment&, Cmdargs& args) { std::ostringstream fres; for (const auto& arg : args) { switch (arg.type) { case Variable::id_integer: fres << std::get(arg.data); break; case Variable::id_string: fres << std::get(arg.data); break; case Variable::id_reference: fres << std::get(arg.data).get(); break; case Variable::id_type: fres << std::get(arg.data); break; default: fres << "'; break; } } return Variable({ Variable::id_string, fres.str() }); } Std() { Pilang3::builtinCmds["set"] = {concat, 2, {Variable::id_string, Variable::id_any}, true}; Pilang3::builtinCmds["get"] = {concat, 1, {Variable::id_string}, true}; Pilang3::builtinCmds["concat"] = {concat, 0, {}, true}; } }; static Std inst;