diff options
| author | realtradam <[email protected]> | 2023-05-25 15:02:05 -0400 |
|---|---|---|
| committer | realtradam <[email protected]> | 2023-05-25 15:02:05 -0400 |
| commit | 87727cdfbcb3d93f2a3216ab8dc20f40d5cfe985 (patch) | |
| tree | 86ead27df419c9e8a9aa35177f2dfd2ce1a43bdc /ideas/stuff.rb | |
| parent | 9f43631fa25346db798ebe3c3358ff4ae4377601 (diff) | |
| download | FelBind-87727cdfbcb3d93f2a3216ab8dc20f40d5cfe985.tar.gz FelBind-87727cdfbcb3d93f2a3216ab8dc20f40d5cfe985.zip | |
basic params
Diffstat (limited to 'ideas/stuff.rb')
| -rw-r--r-- | ideas/stuff.rb | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/ideas/stuff.rb b/ideas/stuff.rb new file mode 100644 index 0000000..276a101 --- /dev/null +++ b/ideas/stuff.rb @@ -0,0 +1,80 @@ +# frozen_string_literal:true + +# --- + +mgem = FelBind::BindGem.new(gem_name: "basic_example") + +mgem.add_class("BasicExample") + +mgem.add_function(class_name: "BasicExample", function_name: "say_hello") do |func| + func.content = "printf(\"Hello World\n\");" + func.return_call do |rc| + rc.type = "nil" + end +end + +puts mgem.build + +# --- + +mgem = FelBind::BindGem.new + +mgem.add_class("ArgumentsAndReturnExample") + +mgem.add_function(class: "ArgumentsAndReturnExample", name: "multiply_numbers") do |func| + func.get_args do |args| + args.int "first_input" + args.int "second_input" + end + + func.return_call do |rc| + rc.type = "int" + rc.val = "#{func.arg("first_input")} * #{func.arg("second_input")}" + end +end + +# --- + +mgem = BindGem.new + +mgem.add_class("KeywordArgumentsExample") + +mgem.add_function(class: "KeywordArgumentsExample", name: "multiply_numbers") do |func| + func.get_kwargs do |kwargs| + kwargs.args x: "int", y: "int" + end + + func.return_call do |rc| + rc.rtype = "int" + rc.val = "#{func.kwarg("x")} * #{func.kwarg("y")}" + end +end + +# --- + +mgem = BindGem.new + +mgem.add_class("Color") + +mgem.add_struct(class: "Color") do |struct| + struct.initializer = true + struct.member( + name: "r", + ctype: "char", + rtype: "int", + accessor: true + ) + struct.member( + name: "g", + ctype: "char", + rtype: "int", + accessor: true + ) + struct.member( + name: "b", + ctype: "char", + rtype: "int", + accessor: true + ) +end + |
