#include #include "loader/component_loader.hpp" #include "gsc.hpp" #include namespace string { class component final : public component_interface { public: void post_unpack() override { gsc::function::add("toupper", [](const gsc::function_args& args) { return utils::string::to_upper(args[0].as()); }); gsc::function::add("getchar", [](const gsc::function_args& args) { auto index = 0; if (args.size() > 1) { index = args[1].as(); } const auto string = args[0].as(); if (index >= static_cast(string.size())) { throw std::runtime_error("Char index out of bounds"); } return static_cast(string[index]); }); gsc::function::add("chartostring", [](const gsc::function_args& args) { const auto char_ = static_cast(args[0].as()); return std::string(1, char_); }); } }; } REGISTER_COMPONENT(string::component)