(no comment)
This commit is contained in:
parent
2781f09626
commit
9d34354a80
35
source/engine/mrbffi.c
Normal file
35
source/engine/mrbffi.c
Normal file
|
@ -0,0 +1,35 @@
|
|||
#include "mrbffi.h"
|
||||
|
||||
#include "mruby.h"
|
||||
#include "mruby/compile.h"
|
||||
|
||||
#include "script.h"
|
||||
|
||||
extern mrb_state *mrb;
|
||||
|
||||
int fib(int n) {
|
||||
if (n < 2) return n;
|
||||
|
||||
return fib(n-1) + fib(n-2);
|
||||
}
|
||||
|
||||
/* FFI */
|
||||
|
||||
mrb_value mrb_fib(mrb_state *mrb, mrb_value self) {
|
||||
int n;
|
||||
mrb_get_args(mrb, "i", &n);
|
||||
return mrb_fixnum_value(fib(n));
|
||||
}
|
||||
|
||||
mrb_value mrb_load(mrb_state *mrb, mrb_value self) {
|
||||
char *path;
|
||||
mrb_get_args(mrb, "z!", &path);
|
||||
script_dofile(path);
|
||||
return self;
|
||||
}
|
||||
|
||||
void ffi_load() {
|
||||
mrb_define_method(mrb, mrb->object_class, "fib", mrb_fib, MRB_ARGS_REQ(1));
|
||||
mrb_define_method(mrb, mrb->object_class, "load", mrb_load, MRB_ARGS_REQ(1));
|
||||
}
|
||||
|
6
source/engine/mrbffi.h
Normal file
6
source/engine/mrbffi.h
Normal file
|
@ -0,0 +1,6 @@
|
|||
#ifndef MRBFFI_H
|
||||
#define MRBFFI_H
|
||||
|
||||
void ffi_load();
|
||||
|
||||
#endif
|
Loading…
Reference in a new issue