42 lines
946 B
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 ()
|