#ifndef DEFINITIONS_H #define DEFINITIONS_H #include "bindings/ruby.h" namespace definitions { struct Binding { RClass *cls; const mrb_data_type *type; }; inline struct RubyBindings { Binding Vec2; Binding Params; Binding Font; Binding Image; Binding Animation; Binding ElementText; Binding ElementRect; Binding ElementImage; Binding Scene; } bindings; inline mrb_value wrap(Binding binding, uint64_t id) { RBasic *obj_b = mrb_obj_alloc(Ruby::mrb, MRB_TT_DATA, binding.cls); mrb_value obj = mrb_obj_value(obj_b); Wrapper *w = new Wrapper(); w->id = id; mrb_data_init(obj, w, binding.type); return obj; } mrb_value Vec2_wrap(uint64_t id, Vec2 *vec); void register_vec2(); void register_params(); void register_font(); void register_image(); void register_animation(); void register_element_text(); void register_element_rect(); void register_element_image(); void register_scene(); void register_app(); inline void setup() { register_vec2(); register_params(); register_font(); register_image(); register_animation(); register_element_text(); register_element_rect(); register_element_image(); register_scene(); register_app(); } } // namespace definitions #endif