rizin/r2-bindings/luvit/init.lua

42 lines
946 B
Lua

local ffi = require ("ffi")
ffi.R = ffi.load ("r_core")
ffi.cdef([[
typedef struct r_core_t {
} RCore;
RCore *r_core_new ();
int r_core_cmd (RCore *, const char *cmd, int n);
int r_core_file_open (RCore *, const char *file, int mode);
int r_core_bin_load (RCore *, const char *file);
void r_core_free (RCore *);
void r_cons_flush ();
]])
local core = require ("core")
local RCore = core.Object:extend ()
function RCore:initialize ()
self.core = ffi.R.r_core_new ()
end
function RCore:cmd (c, log)
if not log then log = false end
ffi.R.r_core_cmd (self.core, c, log)
ffi.R.r_cons_flush ()
end
function RCore:open (f,m)
if not m then m = false end
ffi.R.r_core_file_open (self.core, f, m)
ffi.R.r_core_bin_load (self.core, f)
end
function RCore:close()
p("closin")
-- XXX leak
ffi.R.r_core_free (self.core)
self.core = nil
end
local c = RCore:new()
c:open ("/bin/ls", true)
c:cmd ("wx 9191")
c:cmd ("px")
c:close()
--c:free ()