Last active
May 11, 2022 20:14
-
-
Save hfabre/4f037bc09eede14da8349dfc8085fd6a to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
pub const Color = struct { | |
a: u8, | |
r: u8, | |
g: u8, | |
b: u8 | |
}; | |
var new_mrb = mruby.open(); | |
var mrb_color_class = new_mrb.define_class("Color", new_mrb.object_class()); | |
new_mrb.define_method(mrb_color_class, "initialize", mrb_initialize_color, .{ .req = 3 }); | |
const mrb_color_descriptor = mruby.mrb_data_type { | |
.struct_name = "Color", | |
.dfree = mruby.mrb_free | |
}; | |
pub export fn mrb_initialize_color(mrb: *mruby.mrb_state, self: mruby.mrb_value) mruby.mrb_value { | |
var r = 0; | |
var g = 0; | |
var b = 0; | |
var color_data = @ptrCast(*Color, mruby.mrb_alloc(mrb, @sizeOf(Color))); | |
const num_args = mrb.get_args("iii", .{ &r, &g, &b }); | |
color_data.* = Color { | |
.r = @intCast(u8, r), | |
.g = @intCast(u8, g), | |
.b = @intCast(u8, b), | |
.a = @intCast(u8, 0), | |
}; | |
const data_obj = try mrb.data_object_alloc(mrb_color_class, color_data, &mrb_color_descriptor); | |
var instance = data_obj_to_value(); // Not sure how to do this | |
return instance; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment