summaryrefslogtreecommitdiffhomepage
path: root/ideas/stuff.rb
diff options
context:
space:
mode:
authorrealtradam <[email protected]>2023-05-25 15:02:05 -0400
committerrealtradam <[email protected]>2023-05-25 15:02:05 -0400
commit87727cdfbcb3d93f2a3216ab8dc20f40d5cfe985 (patch)
tree86ead27df419c9e8a9aa35177f2dfd2ce1a43bdc /ideas/stuff.rb
parent9f43631fa25346db798ebe3c3358ff4ae4377601 (diff)
downloadFelBind-87727cdfbcb3d93f2a3216ab8dc20f40d5cfe985.tar.gz
FelBind-87727cdfbcb3d93f2a3216ab8dc20f40d5cfe985.zip
basic params
Diffstat (limited to 'ideas/stuff.rb')
-rw-r--r--ideas/stuff.rb80
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
+