forked from servo/rust-mozjs
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathglobal.rs
70 lines (60 loc) · 2.06 KB
/
global.rs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
#[doc = "
Handy functions for creating class objects and so forth.
"];
// Can't use spidermonkey::crust::* versions due to Rust #2440
export basic_class;
export global_class;
export debug_fns;
fn basic_class(np: name_pool, -name: str) -> JSClass {
{name: np.add(name),
flags: 0x48000_u32,
addProperty: crust::JS_PropertyStub,
delProperty: crust::JS_PropertyStub,
getProperty: crust::JS_PropertyStub,
setProperty: crust::JS_StrictPropertyStub,
enumerate: crust::JS_EnumerateStub,
resolve: crust::JS_ResolveStub,
convert: crust::JS_ConvertStub,
finalize: null(),
reserved0: null(),
checkAccess: null(),
call: null(),
construct: null(),
xdrObject: null(),
hasInstance: null(),
trace: null(),
reserved1: null(),
reserved: (null(), null(), null(), null(), null(), // 05
null(), null(), null(), null(), null(), // 10
null(), null(), null(), null(), null(), // 15
null(), null(), null(), null(), null(), // 20
null(), null(), null(), null(), null(), // 25
null(), null(), null(), null(), null(), // 30
null(), null(), null(), null(), null(), // 35
null(), null(), null(), null(), null())} // 40
}
fn global_class(np: name_pool) -> JSClass {
basic_class(np, "global")
}
crust fn debug(cx: *JSContext, argc: uintN, vp: *jsval) -> JSBool {
import io::writer_util;
#debug["debug() called with %? arguments", argc];
unsafe {
let argv = JS_ARGV(cx, vp);
for uint::range(0u, argc as uint) { |i|
let jsstr = JS_ValueToString(cx, argv[i]);
let bytes = JS_EncodeString(cx, jsstr);
let str = str::unsafe::from_c_str(bytes);
JS_free(cx, unsafe::reinterpret_cast(bytes));
#debug["%s", str];
}
JS_SET_RVAL(cx, vp, JSVAL_NULL);
ret 1_i32;
}
}
fn debug_fns(np: name_pool) -> [JSFunctionSpec] {
[{name: np.add("debug"),
call: debug,
nargs: 0_u16,
flags: 0_u16}]
}