chore: split monolithic header to proper program files, add vec2 ruby class to proxy element position etc., other cleanup

This commit is contained in:
2026-06-01 22:13:50 +01:00
parent 872d878ddc
commit dcb8b46245
21 changed files with 3153 additions and 2037 deletions
+68
View File
@@ -0,0 +1,68 @@
#include "app/app.h"
#include "bindings/definitions.h"
namespace {
void Params_free(mrb_state *mrb, void *ptr) {
UNUSED(mrb);
uint64_t id = ((Wrapper *)ptr)->id;
app::element_pool.release(id);
delete (Wrapper *)ptr;
}
const struct mrb_data_type Params_type = {"Params", Params_free};
mrb_value Params_init(mrb_state *mrb, mrb_value self) {
Wrapper *old = (Wrapper *)DATA_PTR(self);
if (old)
mrb_free(mrb, old);
mrb_data_init(self, nullptr, &Params_type);
Wrapper *s = new Wrapper();
mrb_int id;
mrb_get_args(mrb, "z", &id);
app::element_pool.use(id);
s->id = id;
mrb_data_init(self, s, &Params_type);
return self;
}
mrb_value params_get(mrb_state *mrb, mrb_value self) {
mrb_sym key;
mrb_get_args(mrb, "n", &key);
uint64_t id = ((Wrapper *)DATA_PTR(self))->id;
app::element_pool.use(id);
app::EText *element = (app::EText *)app::element_pool[id];
auto it = element->params.find(mrb_sym2name(mrb, key));
if (it == element->params.end())
return mrb_nil_value();
return mrb_str_new_cstr(mrb, it->second.c_str());
}
mrb_value params_set(mrb_state *mrb, mrb_value self) {
mrb_sym key;
mrb_value value;
mrb_get_args(mrb, "no", &key, &value);
uint64_t id = ((Wrapper *)DATA_PTR(self))->id;
app::element_pool.use(id);
app::EText *element = (app::EText *)app::element_pool[id];
element->params[mrb_sym2name(mrb, key)] = mrb_str_to_cstr(mrb, mrb_obj_as_string(mrb, value));
element->reload_text();
return mrb_nil_value();
}
} // namespace
namespace definitions {
void register_params() {
DEF_CLASS(Params, MRB_ARGS_REQ(1));
ADD_METHOD(Params, "[]", params_get, MRB_ARGS_REQ(1));
ADD_METHOD(Params, "[]=", params_set, MRB_ARGS_REQ(2));
bindings.Params = {Params_class, &Params_type};
}
} // namespace definitions