extern crate qjs_ng;
extern crate qjs_ng_sys;
use std::ffi::CStr;
use qjs_ng::value::Runtime;
use qjs_ng_sys::{JS_Eval, JS_NewContext, JS_NewRuntime, JS_EVAL_TYPE_GLOBAL};
fn add(a: i32, b: i32) -> i32 {
a + b
}
fn print(s: String) -> i32 {
println!("print rs: {}", s);
s.len() as i32
}
fn inc(a: i32) -> i32 {
println!("inc: {}", a);
add(a, 1)
}
fn main() {
let rt = Runtime::new();
let ctx = rt.new_context();
let code = r#"
let c = add(1, 2);
print('js: '+ c +"");
print('js: '+ inc(c) +"");
"#;
ctx.add_callback("add", add);
ctx.add_callback("inc", inc);
ctx.add_callback("print", print);
ctx.eval(code, "<test.js>", 0 as i32);
}