forked from servo/rust-mozjs
-
Notifications
You must be signed in to change notification settings - Fork 0
/
jsapi.rs
1459 lines (856 loc) · 55.8 KB
/
jsapi.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
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
/* automatically generated by rust-bindgen */
use libc::*;
pub type moz_static_assert0 = c_int;
pub type moz_static_assert1 = c_int;
pub type moz_static_assert2 = c_int;
pub type moz_static_assert3 = c_int;
pub type moz_static_assert4 = c_int;
pub type union_MozDoublePun = c_void /* FIXME: union type */;
pub type JSBool = c_int;
pub type jsid = ptrdiff_t;
pub type jschar = uint16_t;
pub type enum_JSVersion = c_int;
pub const JSVERSION_1_0: i32 = 100_i32;
pub const JSVERSION_1_1: i32 = 110_i32;
pub const JSVERSION_1_2: i32 = 120_i32;
pub const JSVERSION_1_3: i32 = 130_i32;
pub const JSVERSION_1_4: i32 = 140_i32;
pub const JSVERSION_ECMA_3: i32 = 148_i32;
pub const JSVERSION_1_5: i32 = 150_i32;
pub const JSVERSION_1_6: i32 = 160_i32;
pub const JSVERSION_1_7: i32 = 170_i32;
pub const JSVERSION_1_8: i32 = 180_i32;
pub const JSVERSION_ECMA_5: i32 = 185_i32;
pub const JSVERSION_DEFAULT: i32 = 0_i32;
pub const JSVERSION_UNKNOWN: i32 = -1_i32;
pub const JSVERSION_LATEST: i32 = 185_i32;
pub type JSVersion = enum_JSVersion;
pub type enum_JSType = c_uint;
pub const JSTYPE_VOID: u32 = 0_u32;
pub const JSTYPE_OBJECT: u32 = 1_u32;
pub const JSTYPE_FUNCTION: u32 = 2_u32;
pub const JSTYPE_STRING: u32 = 3_u32;
pub const JSTYPE_NUMBER: u32 = 4_u32;
pub const JSTYPE_BOOLEAN: u32 = 5_u32;
pub const JSTYPE_NULL: u32 = 6_u32;
pub const JSTYPE_XML: u32 = 7_u32;
pub const JSTYPE_LIMIT: u32 = 8_u32;
pub type JSType = enum_JSType;
pub type enum_JSProtoKey = c_uint;
pub const JSProto_Null: u32 = 0_u32;
pub const JSProto_Object: u32 = 1_u32;
pub const JSProto_Function: u32 = 2_u32;
pub const JSProto_Array: u32 = 3_u32;
pub const JSProto_Boolean: u32 = 4_u32;
pub const JSProto_JSON: u32 = 5_u32;
pub const JSProto_Date: u32 = 6_u32;
pub const JSProto_Math: u32 = 7_u32;
pub const JSProto_Number: u32 = 8_u32;
pub const JSProto_String: u32 = 9_u32;
pub const JSProto_RegExp: u32 = 10_u32;
pub const JSProto_XML: u32 = 11_u32;
pub const JSProto_Namespace: u32 = 12_u32;
pub const JSProto_QName: u32 = 13_u32;
pub const JSProto_Error: u32 = 14_u32;
pub const JSProto_InternalError: u32 = 15_u32;
pub const JSProto_EvalError: u32 = 16_u32;
pub const JSProto_RangeError: u32 = 17_u32;
pub const JSProto_ReferenceError: u32 = 18_u32;
pub const JSProto_SyntaxError: u32 = 19_u32;
pub const JSProto_TypeError: u32 = 20_u32;
pub const JSProto_URIError: u32 = 21_u32;
pub const JSProto_Iterator: u32 = 22_u32;
pub const JSProto_StopIteration: u32 = 23_u32;
pub const JSProto_ArrayBuffer: u32 = 24_u32;
pub const JSProto_Int8Array: u32 = 25_u32;
pub const JSProto_Uint8Array: u32 = 26_u32;
pub const JSProto_Int16Array: u32 = 27_u32;
pub const JSProto_Uint16Array: u32 = 28_u32;
pub const JSProto_Int32Array: u32 = 29_u32;
pub const JSProto_Uint32Array: u32 = 30_u32;
pub const JSProto_Float32Array: u32 = 31_u32;
pub const JSProto_Float64Array: u32 = 32_u32;
pub const JSProto_Uint8ClampedArray: u32 = 33_u32;
pub const JSProto_Proxy: u32 = 34_u32;
pub const JSProto_AnyName: u32 = 35_u32;
pub const JSProto_WeakMap: u32 = 36_u32;
pub const JSProto_Map: u32 = 37_u32;
pub const JSProto_Set: u32 = 38_u32;
pub const JSProto_DataView: u32 = 39_u32;
pub const JSProto_ParallelArray: u32 = 40_u32;
pub const JSProto_LIMIT: u32 = 41_u32;
pub type JSProtoKey = enum_JSProtoKey;
pub type enum_JSAccessMode = c_uint;
pub const JSACC_PROTO: u32 = 0_u32;
pub const JSACC_WATCH: u32 = 3_u32;
pub const JSACC_READ: u32 = 4_u32;
pub const JSACC_WRITE: u32 = 8_u32;
pub const JSACC_LIMIT: u32 = 9_u32;
pub type JSAccessMode = enum_JSAccessMode;
pub type enum_JSIterateOp = c_uint;
pub const JSENUMERATE_INIT: u32 = 0_u32;
pub const JSENUMERATE_INIT_ALL: u32 = 1_u32;
pub const JSENUMERATE_NEXT: u32 = 2_u32;
pub const JSENUMERATE_DESTROY: u32 = 3_u32;
pub type JSIterateOp = enum_JSIterateOp;
pub type JSGCTraceKind = c_uint;
pub const JSTRACE_OBJECT: u32 = 0_u32;
pub const JSTRACE_STRING: u32 = 1_u32;
pub const JSTRACE_SCRIPT: u32 = 2_u32;
pub const JSTRACE_XML: u32 = 3_u32;
pub const JSTRACE_SHAPE: u32 = 4_u32;
pub const JSTRACE_BASE_SHAPE: u32 = 5_u32;
pub const JSTRACE_TYPE_OBJECT: u32 = 6_u32;
pub const JSTRACE_LAST: u32 = 6_u32;
pub type JSClass = struct_JSClass;
pub type struct_JSCompartment = c_void;
pub type JSCompartment = struct_JSCompartment;
pub type JSConstDoubleSpec = struct_JSConstDoubleSpec;
pub type struct_JSContext = c_void;
pub type JSContext = struct_JSContext;
pub type struct_JSCrossCompartmentCall = c_void;
pub type JSCrossCompartmentCall = struct_JSCrossCompartmentCall;
pub type JSErrorReport = struct_JSErrorReport;
pub type struct_JSExceptionState = c_void;
pub type JSExceptionState = struct_JSExceptionState;
pub type struct_JSFunction = c_void;
pub type JSFunction = struct_JSFunction;
pub type JSFunctionSpec = struct_JSFunctionSpec;
pub type struct_JSIdArray = c_void;
pub type JSIdArray = struct_JSIdArray;
pub type JSLocaleCallbacks = struct_JSLocaleCallbacks;
pub type struct_JSObject = c_void;
pub type JSObject = struct_JSObject;
pub type struct_JSObjectMap = c_void;
pub type JSObjectMap = struct_JSObjectMap;
pub type JSPrincipals = struct_JSPrincipals;
pub type JSPropertyDescriptor = struct_JSPropertyDescriptor;
pub type struct_JSPropertyName = c_void;
pub type JSPropertyName = struct_JSPropertyName;
pub type JSPropertySpec = struct_JSPropertySpec;
pub type struct_JSRuntime = c_void;
pub type JSRuntime = struct_JSRuntime;
pub type JSSecurityCallbacks = struct_JSSecurityCallbacks;
pub type struct_JSStackFrame = c_void;
pub type JSStackFrame = struct_JSStackFrame;
pub type struct_JSScript = c_void;
pub type JSScript = struct_JSScript;
pub type JSStructuredCloneCallbacks = struct_JSStructuredCloneCallbacks;
pub type struct_JSStructuredCloneReader = c_void;
pub type JSStructuredCloneReader = struct_JSStructuredCloneReader;
pub type struct_JSStructuredCloneWriter = c_void;
pub type JSStructuredCloneWriter = struct_JSStructuredCloneWriter;
pub type JSTracer = struct_JSTracer;
pub type struct_JSFlatString = c_void;
pub type JSFlatString = struct_JSFlatString;
pub type struct_JSString = c_void;
pub type JSString = struct_JSString;
pub type JSCallOnceType = JSBool;
pub type JSInitCallback = *u8;
pub type JSMallocSizeOfFun = *u8;
pub type jsbitmap = size_t;
pub type JSValueType = uint8_t;
pub type JSValueTag = uint32_t;
pub type JSValueShiftedTag = uint64_t;
pub type enum_JSWhyMagic = c_uint;
pub const JS_ARRAY_HOLE: u32 = 0_u32;
pub const JS_NATIVE_ENUMERATE: u32 = 1_u32;
pub const JS_NO_ITER_VALUE: u32 = 2_u32;
pub const JS_GENERATOR_CLOSING: u32 = 3_u32;
pub const JS_NO_CONSTANT: u32 = 4_u32;
pub const JS_THIS_POISON: u32 = 5_u32;
pub const JS_ARG_POISON: u32 = 6_u32;
pub const JS_SERIALIZE_NO_NODE: u32 = 7_u32;
pub const JS_LAZY_ARGUMENTS: u32 = 8_u32;
pub const JS_OPTIMIZED_ARGUMENTS: u32 = 9_u32;
pub const JS_IS_CONSTRUCTING: u32 = 10_u32;
pub const JS_OVERWRITTEN_CALLEE: u32 = 11_u32;
pub const JS_FORWARD_TO_CALL_OBJECT: u32 = 12_u32;
pub const JS_BLOCK_NEEDS_CLONE: u32 = 13_u32;
pub const JS_HASH_KEY_EMPTY: u32 = 14_u32;
pub const JS_GENERIC_MAGIC: u32 = 15_u32;
pub type JSWhyMagic = enum_JSWhyMagic;
pub type union_jsval_layout = c_void /* FIXME: union type */;
pub type jsval_layout = union_jsval_layout;
pub type moz_static_assert5 = c_int;
pub type jsval = u64; //XXXjdm hand modified
pub type moz_static_assert6 = c_int;
pub type JSHandleObject = {
unnamed: **JSObject,
};
pub type JSHandleValue = {
unnamed: jsval,
};
pub type JSHandleString = {
unnamed: **JSString,
};
pub type JSMutableHandleObject = {
unnamed: **JSObject,
};
pub type JSHandleId = {
unnamed: *jsid,
};
pub type JSMutableHandleValue = {
unnamed: *jsval,
};
pub type JSRawObject = *JSObject;
pub type JSPropertyOp = *u8;
pub type JSStrictPropertyOp = *u8;
pub type JSNewEnumerateOp = *u8;
pub type JSEnumerateOp = *u8;
pub type JSResolveOp = *u8;
pub type JSNewResolveOp = *u8;
pub type JSConvertOp = *u8;
pub type JSTypeOfOp = *u8;
pub type JSFreeOp = struct_JSFreeOp;
pub type struct_JSFreeOp = {
runtime: *JSRuntime,
};
pub type JSFinalizeOp = *u8;
pub type JSStringFinalizer = struct_JSStringFinalizer;
pub type struct_JSStringFinalizer = {
finalize: *u8,
};
pub type JSCheckAccessOp = *u8;
pub type JSHasInstanceOp = *u8;
pub type JSTraceOp = *u8;
pub type JSTraceNamePrinter = *u8;
pub type JSEqualityOp = *u8;
pub type JSNative = *u8;
pub type enum_JSContextOp = c_uint;
pub const JSCONTEXT_NEW: u32 = 0_u32;
pub const JSCONTEXT_DESTROY: u32 = 1_u32;
pub type JSContextOp = enum_JSContextOp;
pub type JSContextCallback = *u8;
pub type enum_JSGCStatus = c_uint;
pub const JSGC_BEGIN: u32 = 0_u32;
pub const JSGC_END: u32 = 1_u32;
pub type JSGCStatus = enum_JSGCStatus;
pub type JSGCCallback = *u8;
pub type enum_JSFinalizeStatus = c_uint;
pub const JSFINALIZE_START: u32 = 0_u32;
pub const JSFINALIZE_END: u32 = 1_u32;
pub type JSFinalizeStatus = enum_JSFinalizeStatus;
pub type JSFinalizeCallback = *u8;
pub type JSTraceDataOp = *u8;
pub type JSOperationCallback = *u8;
pub type JSErrorReporter = *u8;
pub type enum_JSExnType = c_int;
pub const JSEXN_NONE: i32 = -1_i32;
pub const JSEXN_ERR: i32 = 0_i32;
pub const JSEXN_INTERNALERR: i32 = 1_i32;
pub const JSEXN_EVALERR: i32 = 2_i32;
pub const JSEXN_RANGEERR: i32 = 3_i32;
pub const JSEXN_REFERENCEERR: i32 = 4_i32;
pub const JSEXN_SYNTAXERR: i32 = 5_i32;
pub const JSEXN_TYPEERR: i32 = 6_i32;
pub const JSEXN_URIERR: i32 = 7_i32;
pub const JSEXN_LIMIT: i32 = 8_i32;
pub type JSExnType = enum_JSExnType;
pub type struct_JSErrorFormatString = {
format: *c_char,
argCount: uint16_t,
exnType: int16_t,
};
pub type JSErrorFormatString = struct_JSErrorFormatString;
pub type JSErrorCallback = *u8;
pub type JSLocaleToUpperCase = *u8;
pub type JSLocaleToLowerCase = *u8;
pub type JSLocaleCompare = *u8;
pub type JSLocaleToUnicode = *u8;
pub type JSDestroyPrincipalsOp = *u8;
pub type JSSubsumePrincipalsOp = *u8;
pub type JSObjectPrincipalsFinder = *u8;
pub type JSCSPEvalChecker = *u8;
pub type JSWrapObjectCallback = *u8;
pub type JSPreWrapCallback = *u8;
pub type JSSameCompartmentWrapObjectCallback = *u8;
pub type JSDestroyCompartmentCallback = *u8;
pub type JSCompartmentNameCallback = *u8;
pub type ReadStructuredCloneOp = *u8;
pub type WriteStructuredCloneOp = *u8;
pub type StructuredCloneErrorOp = *u8;
/* FIXME: global variable JSVAL_NULL */
/* FIXME: global variable JSVAL_ZERO */
/* FIXME: global variable JSVAL_ONE */
/* FIXME: global variable JSVAL_FALSE */
/* FIXME: global variable JSVAL_TRUE */
/* FIXME: global variable JSVAL_VOID */
pub type JSIterateCompartmentCallback = *u8;
pub type JSEnumerateDiagnosticMemoryCallback = *u8;
pub type enum_JSGCRootType = c_uint;
pub const JS_GC_ROOT_VALUE_PTR: u32 = 0_u32;
pub const JS_GC_ROOT_GCTHING_PTR: u32 = 1_u32;
pub type JSGCRootType = enum_JSGCRootType;
pub type JSGCRootMapFun = *u8;
pub type JSTraceCallback = *u8;
pub type struct_JSTracer = {
runtime: *JSRuntime,
callback: JSTraceCallback,
debugPrinter: JSTraceNamePrinter,
debugPrintArg: *c_void,
debugPrintIndex: size_t,
eagerlyTraceWeakMaps: JSBool,
};
pub type enum_JSGCParamKey = c_uint;
pub const JSGC_MAX_BYTES: u32 = 0_u32;
pub const JSGC_MAX_MALLOC_BYTES: u32 = 1_u32;
pub const JSGC_BYTES: u32 = 3_u32;
pub const JSGC_NUMBER: u32 = 4_u32;
pub const JSGC_MAX_CODE_CACHE_BYTES: u32 = 5_u32;
pub const JSGC_MODE: u32 = 6_u32;
pub const JSGC_UNUSED_CHUNKS: u32 = 7_u32;
pub const JSGC_TOTAL_CHUNKS: u32 = 8_u32;
pub const JSGC_SLICE_TIME_BUDGET: u32 = 9_u32;
pub const JSGC_MARK_STACK_LIMIT: u32 = 10_u32;
pub const JSGC_HIGH_FREQUENCY_TIME_LIMIT: u32 = 11_u32;
pub const JSGC_HIGH_FREQUENCY_LOW_LIMIT: u32 = 12_u32;
pub const JSGC_HIGH_FREQUENCY_HIGH_LIMIT: u32 = 13_u32;
pub const JSGC_HIGH_FREQUENCY_HEAP_GROWTH_MAX: u32 = 14_u32;
pub const JSGC_HIGH_FREQUENCY_HEAP_GROWTH_MIN: u32 = 15_u32;
pub const JSGC_LOW_FREQUENCY_HEAP_GROWTH: u32 = 16_u32;
pub const JSGC_DYNAMIC_HEAP_GROWTH: u32 = 17_u32;
pub const JSGC_DYNAMIC_MARK_SLICE: u32 = 18_u32;
pub const JSGC_ANALYSIS_PURGE_TRIGGER: u32 = 19_u32;
pub type JSGCParamKey = enum_JSGCParamKey;
pub type enum_JSGCMode = c_uint;
pub const JSGC_MODE_GLOBAL: u32 = 0_u32;
pub const JSGC_MODE_COMPARTMENT: u32 = 1_u32;
pub const JSGC_MODE_INCREMENTAL: u32 = 2_u32;
pub type JSGCMode = enum_JSGCMode;
pub type JSClassInternal = *u8;
pub type struct_JSClass = {
name: *c_char,
flags: uint32_t,
addProperty: JSPropertyOp,
delProperty: JSPropertyOp,
getProperty: JSPropertyOp,
setProperty: JSStrictPropertyOp,
enumerate: JSEnumerateOp,
resolve: JSResolveOp,
convert: JSConvertOp,
finalize: JSFinalizeOp,
checkAccess: JSCheckAccessOp,
call: JSNative,
hasInstance: JSHasInstanceOp,
construct: JSNative,
trace: JSTraceOp,
reserved: (*c_void,*c_void,*c_void,*c_void,*c_void,*c_void,*c_void,*c_void,*c_void,*c_void,*c_void,*c_void,*c_void,*c_void,*c_void,*c_void,*c_void,*c_void,*c_void,*c_void,*c_void,*c_void,*c_void,*c_void,*c_void,*c_void,*c_void,*c_void,*c_void,*c_void,*c_void,*c_void,*c_void,*c_void,*c_void,*c_void,*c_void,*c_void,*c_void,*c_void),
};
pub type struct_JSConstDoubleSpec = {
dval: c_double,
name: *c_char,
flags: uint8_t,
spare: (uint8_t,uint8_t,uint8_t),
};
pub type struct_JSJitInfo = c_void;
pub type JSJitInfo = struct_JSJitInfo;
pub type struct_JSStrictPropertyOpWrapper = {
op: JSStrictPropertyOp,
info: *JSJitInfo,
};
pub type JSStrictPropertyOpWrapper = struct_JSStrictPropertyOpWrapper;
pub type struct_JSPropertyOpWrapper = {
op: JSPropertyOp,
info: *JSJitInfo,
};
pub type JSPropertyOpWrapper = struct_JSPropertyOpWrapper;
pub type struct_JSNativeWrapper = {
op: JSNative,
info: *JSJitInfo,
};
pub type JSNativeWrapper = struct_JSNativeWrapper;
pub type struct_JSPropertySpec = {
name: *c_char,
tinyid: int8_t,
flags: uint8_t,
getter: JSPropertyOpWrapper,
setter: JSStrictPropertyOpWrapper,
};
pub type struct_JSFunctionSpec = {
name: *c_char,
call: JSNativeWrapper,
nargs: uint16_t,
flags: uint16_t,
selfHostedName: *c_char,
};
pub type struct_JSPropertyDescriptor = {
obj: *JSObject,
attrs: c_uint,
shortid: c_uint,
getter: JSPropertyOp,
setter: JSStrictPropertyOp,
value: jsval,
};
pub type struct_JSPrincipals = {
refcount: c_int,
};
pub type struct_JSSecurityCallbacks = {
checkObjectAccess: JSCheckAccessOp,
subsumePrincipals: JSSubsumePrincipalsOp,
findObjectPrincipals: JSObjectPrincipalsFinder,
contentSecurityPolicyAllows: JSCSPEvalChecker,
};
pub type enum_JSExecPart = c_uint;
pub const JSEXEC_PROLOG: u32 = 0_u32;
pub const JSEXEC_MAIN: u32 = 1_u32;
pub type JSExecPart = enum_JSExecPart;
pub type JSONWriteCallback = *u8;
pub type struct_JSStructuredCloneCallbacks = {
read: ReadStructuredCloneOp,
write: WriteStructuredCloneOp,
reportError: StructuredCloneErrorOp,
};
pub type struct_JSLocaleCallbacks = {
localeToUpperCase: JSLocaleToUpperCase,
localeToLowerCase: JSLocaleToLowerCase,
localeCompare: JSLocaleCompare,
localeToUnicode: JSLocaleToUnicode,
localeGetErrorMessage: JSErrorCallback,
};
pub type struct_JSErrorReport = {
filename: *c_char,
originPrincipals: *JSPrincipals,
lineno: c_uint,
linebuf: *c_char,
tokenptr: *c_char,
uclinebuf: *jschar,
uctokenptr: *jschar,
flags: c_uint,
errorNumber: c_uint,
ucmessage: *jschar,
messageArgs: **jschar,
exnType: int16_t,
column: c_uint,
};
pub type struct_unnamed1 = {
payload: union_unnamed2,
};
pub type union_unnamed2 = c_void /* FIXME: union type */;
#[nolink]
pub extern mod bindgen {
pub fn JS_Assert(++s: *c_char, ++file: *c_char, ++ln: c_int);
//fn JS_Abort();
//fn JS_CreateHandleObject(++cx: *JSContext, ++obj: *JSObject, ++phandle: *JSHandleObject) -> JSBool;
//fn JS_DestroyHandleObject(++cx: *JSContext, ++handle: JSHandleObject);
//fn JS_CreateMutableHandleObject(++cx: *JSContext, ++obj: *JSObject, ++phandle: *JSMutableHandleObject) -> JSBool;
//fn JS_DestroyMutableHandleObject(++cx: *JSContext, ++handle: JSMutableHandleObject);
//fn JS_CreateHandleId(++cx: *JSContext, ++id: jsid, ++phandle: *JSHandleId) -> JSBool;
//fn JS_DestroyHandleId(++cx: *JSContext, ++handle: JSHandleId);
pub fn JS_StringHasBeenInterned(++cx: *JSContext, ++str: *JSString) -> JSBool;
pub fn INTERNED_STRING_TO_JSID(++cx: *JSContext, ++str: *JSString) -> jsid;
pub fn JS_CallOnce(++once: *JSCallOnceType, ++func: JSInitCallback) -> JSBool;
pub fn JS_Now() -> int64_t;
pub fn JS_GetNaNValue(++cx: *JSContext) -> jsval;
pub fn JS_GetNegativeInfinityValue(++cx: *JSContext) -> jsval;
pub fn JS_GetPositiveInfinityValue(++cx: *JSContext) -> jsval;
pub fn JS_GetEmptyStringValue(++cx: *JSContext) -> jsval;
pub fn JS_GetEmptyString(++rt: *JSRuntime) -> *JSString;
pub fn JS_ConvertArguments(++cx: *JSContext, ++argc: c_uint, ++argv: *jsval, ++format: *c_char/* FIXME: variadic function */) -> JSBool;
pub fn JS_ConvertValue(++cx: *JSContext, ++v: jsval, ++_type: JSType, ++vp: *jsval) -> JSBool;
pub fn JS_ValueToObject(++cx: *JSContext, ++v: jsval, ++objp: **JSObject) -> JSBool;
pub fn JS_ValueToFunction(++cx: *JSContext, ++v: jsval) -> *JSFunction;
pub fn JS_ValueToConstructor(++cx: *JSContext, ++v: jsval) -> *JSFunction;
pub fn JS_ValueToString(++cx: *JSContext, ++v: jsval) -> *JSString;
pub fn JS_ValueToSource(++cx: *JSContext, ++v: jsval) -> *JSString;
pub fn JS_ValueToNumber(++cx: *JSContext, ++v: jsval, ++dp: *c_double) -> JSBool;
pub fn JS_DoubleIsInt32(++d: c_double, ++ip: *int32_t) -> JSBool;
pub fn JS_DoubleToInt32(++d: c_double) -> int32_t;
pub fn JS_DoubleToUint32(++d: c_double) -> uint32_t;
pub fn JS_ValueToECMAInt32(++cx: *JSContext, ++v: jsval, ++ip: *int32_t) -> JSBool;
pub fn JS_ValueToInt64(++cx: *JSContext, ++v: jsval, ++ip: *int64_t) -> JSBool;
pub fn JS_ValueToUint64(++cx: *JSContext, ++v: jsval, ++ip: *uint64_t) -> JSBool;
pub fn JS_ValueToECMAUint32(++cx: *JSContext, ++v: jsval, ++ip: *uint32_t) -> JSBool;
pub fn JS_ValueToInt32(++cx: *JSContext, ++v: jsval, ++ip: *int32_t) -> JSBool;
pub fn JS_ValueToUint16(++cx: *JSContext, ++v: jsval, ++ip: *uint16_t) -> JSBool;
pub fn JS_ValueToBoolean(++cx: *JSContext, ++v: jsval, ++bp: *JSBool) -> JSBool;
pub fn JS_TypeOfValue(++cx: *JSContext, ++v: jsval) -> JSType;
pub fn JS_GetTypeName(++cx: *JSContext, ++_type: JSType) -> *c_char;
pub fn JS_StrictlyEqual(++cx: *JSContext, ++v1: jsval, ++v2: jsval, ++equal: *JSBool) -> JSBool;
pub fn JS_LooselyEqual(++cx: *JSContext, ++v1: jsval, ++v2: jsval, ++equal: *JSBool) -> JSBool;
pub fn JS_SameValue(++cx: *JSContext, ++v1: jsval, ++v2: jsval, ++same: *JSBool) -> JSBool;
pub fn JS_IsBuiltinEvalFunction(++fun: *JSFunction) -> JSBool;
pub fn JS_IsBuiltinFunctionConstructor(++fun: *JSFunction) -> JSBool;
pub fn JS_Init(++maxbytes: uint32_t) -> *JSRuntime;
pub fn JS_Finish(++rt: *JSRuntime);
pub fn JS_ShutDown();
pub fn JS_GetRuntimePrivate(++rt: *JSRuntime) -> *c_void;
pub fn JS_GetRuntime(++cx: *JSContext) -> *JSRuntime;
pub fn JS_SetRuntimePrivate(++rt: *JSRuntime, ++data: *c_void);
pub fn JS_BeginRequest(++cx: *JSContext);
pub fn JS_EndRequest(++cx: *JSContext);
pub fn JS_YieldRequest(++cx: *JSContext);
pub fn JS_SuspendRequest(++cx: *JSContext) -> c_uint;
pub fn JS_ResumeRequest(++cx: *JSContext, ++saveDepth: c_uint);
pub fn JS_IsInRequest(++rt: *JSRuntime) -> JSBool;
pub fn JS_IsInSuspendedRequest(++rt: *JSRuntime) -> JSBool;
pub fn JS_SetContextCallback(++rt: *JSRuntime, ++cxCallback: JSContextCallback) -> JSContextCallback;
pub fn JS_NewContext(++rt: *JSRuntime, ++stackChunkSize: size_t) -> *JSContext;
pub fn JS_DestroyContext(++cx: *JSContext);
pub fn JS_DestroyContextNoGC(++cx: *JSContext);
pub fn JS_GetContextPrivate(++cx: *JSContext) -> *c_void;
pub fn JS_SetContextPrivate(++cx: *JSContext, ++data: *c_void);
pub fn JS_GetSecondContextPrivate(++cx: *JSContext) -> *c_void;
pub fn JS_SetSecondContextPrivate(++cx: *JSContext, ++data: *c_void);
pub fn JS_ContextIterator(++rt: *JSRuntime, ++iterp: **JSContext) -> *JSContext;
pub fn JS_GetVersion(++cx: *JSContext) -> JSVersion;
pub fn JS_SetVersion(++cx: *JSContext, ++version: JSVersion) -> JSVersion;
pub fn JS_VersionToString(++version: JSVersion) -> *c_char;
pub fn JS_StringToVersion(++string: *c_char) -> JSVersion;
pub fn JS_GetOptions(++cx: *JSContext) -> uint32_t;
pub fn JS_SetOptions(++cx: *JSContext, ++options: uint32_t) -> uint32_t;
pub fn JS_ToggleOptions(++cx: *JSContext, ++options: uint32_t) -> uint32_t;
pub fn JS_SetJitHardening(++rt: *JSRuntime, ++enabled: JSBool);
pub fn JS_GetImplementationVersion() -> *c_char;
pub fn JS_SetDestroyCompartmentCallback(++rt: *JSRuntime, ++callback: JSDestroyCompartmentCallback);
pub fn JS_SetCompartmentNameCallback(++rt: *JSRuntime, ++callback: JSCompartmentNameCallback);
pub fn JS_SetWrapObjectCallbacks(++rt: *JSRuntime, ++callback: JSWrapObjectCallback, ++sccallback: JSSameCompartmentWrapObjectCallback, ++precallback: JSPreWrapCallback) -> JSWrapObjectCallback;
pub fn JS_EnterCrossCompartmentCall(++cx: *JSContext, ++target: JSRawObject) -> *JSCrossCompartmentCall;
pub fn JS_LeaveCrossCompartmentCall(++call: *JSCrossCompartmentCall);
pub fn JS_SetCompartmentPrivate(++compartment: *JSCompartment, ++data: *c_void);
pub fn JS_GetCompartmentPrivate(++compartment: *JSCompartment) -> *c_void;
pub fn JS_WrapObject(++cx: *JSContext, ++objp: **JSObject) -> JSBool;
pub fn JS_WrapValue(++cx: *JSContext, ++vp: *jsval) -> JSBool;
pub fn JS_TransplantObject(++cx: *JSContext, ++origobj: *JSObject, ++target: *JSObject) -> *JSObject;
pub fn js_TransplantObjectWithWrapper(++cx: *JSContext, ++origobj: *JSObject, ++origwrapper: *JSObject, ++targetobj: *JSObject, ++targetwrapper: *JSObject) -> *JSObject;
pub fn JS_RefreshCrossCompartmentWrappers(++cx: *JSContext, ++ob: *JSObject) -> JSBool;
pub fn JS_IterateCompartments(++rt: *JSRuntime, ++data: *c_void, ++compartmentCallback: JSIterateCompartmentCallback);
pub fn JS_GetGlobalObject(++cx: *JSContext) -> *JSObject;
pub fn JS_SetGlobalObject(++cx: *JSContext, ++obj: JSRawObject);
pub fn JS_InitStandardClasses(++cx: *JSContext, ++obj: *JSObject) -> JSBool;
pub fn JS_ResolveStandardClass(++cx: *JSContext, ++obj: *JSObject, ++id: jsid, ++resolved: *JSBool) -> JSBool;
pub fn JS_EnumerateStandardClasses(++cx: *JSContext, ++obj: *JSObject) -> JSBool;
pub fn JS_EnumerateResolvedStandardClasses(++cx: *JSContext, ++obj: *JSObject, ++ida: *JSIdArray) -> *JSIdArray;
pub fn JS_GetClassObject(++cx: *JSContext, ++obj: JSRawObject, ++key: JSProtoKey, ++objp: **JSObject) -> JSBool;
pub fn JS_GetClassPrototype(++cx: *JSContext, ++key: JSProtoKey, ++objp: **JSObject) -> JSBool;
pub fn JS_IdentifyClassPrototype(++cx: *JSContext, ++obj: *JSObject) -> JSProtoKey;
pub fn JS_GetFunctionPrototype(++cx: *JSContext, ++forObj: JSRawObject) -> *JSObject;
pub fn JS_GetObjectPrototype(++cx: *JSContext, ++forObj: JSRawObject) -> *JSObject;
pub fn JS_GetGlobalForObject(++cx: *JSContext, ++obj: JSRawObject) -> *JSObject;
pub fn JS_GetGlobalForCompartmentOrNull(++cx: *JSContext, ++c: *JSCompartment) -> *JSObject;
pub fn JS_GetGlobalForScopeChain(++cx: *JSContext) -> *JSObject;
pub fn JS_GetScriptedGlobal(++cx: *JSContext) -> *JSObject;
pub fn JS_InitReflect(++cx: *JSContext, ++global: *JSObject) -> *JSObject;
pub fn JS_EnumerateDiagnosticMemoryRegions(++callback: JSEnumerateDiagnosticMemoryCallback);
#[rust_stack]
pub fn JS_ComputeThis(++cx: *JSContext, ++vp: *jsval) -> jsval;
pub fn JS_MallocInCompartment(++comp: *JSCompartment, ++nbytes: size_t);
pub fn JS_FreeInCompartment(++comp: *JSCompartment, ++nbytes: size_t);
pub fn JS_malloc(++cx: *JSContext, ++nbytes: size_t) -> *c_void;
pub fn JS_realloc(++cx: *JSContext, ++p: *c_void, ++nbytes: size_t) -> *c_void;
pub fn JS_free(++cx: *JSContext, ++p: *c_void);
pub fn JS_freeop(++fop: *JSFreeOp, ++p: *c_void);
pub fn JS_GetDefaultFreeOp(++rt: *JSRuntime) -> *JSFreeOp;
pub fn JS_updateMallocCounter(++cx: *JSContext, ++nbytes: size_t);
pub fn JS_strdup(++cx: *JSContext, ++s: *c_char) -> *c_char;
pub fn JS_AddValueRoot(++cx: *JSContext, ++vp: *jsval) -> JSBool;
pub fn JS_AddStringRoot(++cx: *JSContext, ++rp: **JSString) -> JSBool;
pub fn JS_AddObjectRoot(++cx: *JSContext, ++rp: **JSObject) -> JSBool;
pub fn JS_AddGCThingRoot(++cx: *JSContext, ++rp: **c_void) -> JSBool;
pub fn JS_AddNamedValueRoot(++cx: *JSContext, ++vp: *jsval, ++name: *c_char) -> JSBool;
pub fn JS_AddNamedStringRoot(++cx: *JSContext, ++rp: **JSString, ++name: *c_char) -> JSBool;
pub fn JS_AddNamedObjectRoot(++cx: *JSContext, ++rp: **JSObject, ++name: *c_char) -> JSBool;
pub fn JS_AddNamedScriptRoot(++cx: *JSContext, ++rp: **JSScript, ++name: *c_char) -> JSBool;
pub fn JS_AddNamedGCThingRoot(++cx: *JSContext, ++rp: **c_void, ++name: *c_char) -> JSBool;
pub fn JS_RemoveValueRoot(++cx: *JSContext, ++vp: *jsval);
pub fn JS_RemoveStringRoot(++cx: *JSContext, ++rp: **JSString);
pub fn JS_RemoveObjectRoot(++cx: *JSContext, ++rp: **JSObject);
pub fn JS_RemoveScriptRoot(++cx: *JSContext, ++rp: **JSScript);
pub fn JS_RemoveGCThingRoot(++cx: *JSContext, ++rp: **c_void);
pub fn JS_RemoveValueRootRT(++rt: *JSRuntime, ++vp: *jsval);
pub fn JS_RemoveStringRootRT(++rt: *JSRuntime, ++rp: **JSString);
pub fn JS_RemoveObjectRootRT(++rt: *JSRuntime, ++rp: **JSObject);
pub fn js_AddRootRT(++rt: *JSRuntime, ++vp: *jsval, ++name: *c_char) -> JSBool;
pub fn js_AddGCThingRootRT(++rt: *JSRuntime, ++rp: **c_void, ++name: *c_char) -> JSBool;
pub fn js_RemoveRoot(++rt: *JSRuntime, ++rp: *c_void);
pub fn JS_AnchorPtr(++p: *c_void);
pub fn JS_MapGCRoots(++rt: *JSRuntime, ++map: JSGCRootMapFun, ++data: *c_void) -> uint32_t;
pub fn JS_LockGCThing(++cx: *JSContext, ++thing: *c_void) -> JSBool;
pub fn JS_LockGCThingRT(++rt: *JSRuntime, ++thing: *c_void) -> JSBool;
pub fn JS_UnlockGCThing(++cx: *JSContext, ++thing: *c_void) -> JSBool;
pub fn JS_UnlockGCThingRT(++rt: *JSRuntime, ++thing: *c_void) -> JSBool;
pub fn JS_SetExtraGCRootsTracer(++rt: *JSRuntime, ++traceOp: JSTraceDataOp, ++data: *c_void);
pub fn JS_CallTracer(++trc: *JSTracer, ++thing: *c_void, ++kind: JSGCTraceKind);
pub fn JS_TracerInit(++trc: *JSTracer, ++rt: *JSRuntime, ++callback: JSTraceCallback);
pub fn JS_TraceChildren(++trc: *JSTracer, ++thing: *c_void, ++kind: JSGCTraceKind);
pub fn JS_TraceRuntime(++trc: *JSTracer);
pub fn JS_GetTraceThingInfo(++buf: *c_char, ++bufsize: size_t, ++trc: *JSTracer, ++thing: *c_void, ++kind: JSGCTraceKind, ++includeDetails: JSBool);
pub fn JS_GetTraceEdgeName(++trc: *JSTracer, ++buffer: *c_char, ++bufferSize: c_int) -> *c_char;
pub fn JS_GC(++rt: *JSRuntime);
pub fn JS_MaybeGC(++cx: *JSContext);
pub fn JS_SetGCCallback(++rt: *JSRuntime, ++cb: JSGCCallback);
pub fn JS_SetFinalizeCallback(++rt: *JSRuntime, ++cb: JSFinalizeCallback);
pub fn JS_IsGCMarkingTracer(++trc: *JSTracer) -> JSBool;
pub fn JS_IsAboutToBeFinalized(++thing: *c_void) -> JSBool;
pub fn JS_SetGCParameter(++rt: *JSRuntime, ++key: JSGCParamKey, ++value: uint32_t);
pub fn JS_GetGCParameter(++rt: *JSRuntime, ++key: JSGCParamKey) -> uint32_t;
pub fn JS_SetGCParameterForThread(++cx: *JSContext, ++key: JSGCParamKey, ++value: uint32_t);
pub fn JS_GetGCParameterForThread(++cx: *JSContext, ++key: JSGCParamKey) -> uint32_t;
pub fn JS_NewExternalString(++cx: *JSContext, ++chars: *jschar, ++length: size_t, ++fin: *JSStringFinalizer) -> *JSString;
pub fn JS_IsExternalString(++str: *JSString) -> JSBool;
pub fn JS_GetExternalStringFinalizer(++str: *JSString) -> *JSStringFinalizer;
pub fn JS_SetNativeStackQuota(++cx: *JSRuntime, ++stackSize: size_t);
pub fn JS_IdArrayLength(++cx: *JSContext, ++ida: *JSIdArray) -> c_int;
pub fn JS_IdArrayGet(++cx: *JSContext, ++ida: *JSIdArray, ++index: c_int) -> jsid;
pub fn JS_DestroyIdArray(++cx: *JSContext, ++ida: *JSIdArray);
pub fn JS_ValueToId(++cx: *JSContext, ++v: jsval, ++idp: *jsid) -> JSBool;
pub fn JS_IdToValue(++cx: *JSContext, ++id: jsid, ++vp: *jsval) -> JSBool;
pub fn JS_DefaultValue(++cx: *JSContext, ++obj: *JSObject, ++hint: JSType, ++vp: *jsval) -> JSBool;
pub fn JS_PropertyStub(++cx: *JSContext, ++obj: JSHandleObject, ++id: JSHandleId, ++vp: JSMutableHandleValue) -> JSBool;
pub fn JS_StrictPropertyStub(++cx: *JSContext, ++obj: JSHandleObject, ++id: JSHandleId, ++strict: JSBool, ++vp: JSMutableHandleValue) -> JSBool;
pub fn JS_EnumerateStub(++cx: *JSContext, ++obj: JSHandleObject) -> JSBool;
pub fn JS_ResolveStub(++cx: *JSContext, ++obj: JSHandleObject, ++id: JSHandleId) -> JSBool;
pub fn JS_ConvertStub(++cx: *JSContext, ++obj: JSHandleObject, ++_type: JSType, ++vp: JSMutableHandleValue) -> JSBool;
pub fn JS_InitClass(++cx: *JSContext, ++obj: *JSObject, ++parent_proto: *JSObject, ++clasp: *JSClass, ++constructor: JSNative, ++nargs: c_uint, ++ps: *JSPropertySpec, ++fs: *JSFunctionSpec, ++static_ps: *JSPropertySpec, ++static_fs: *JSFunctionSpec) -> *JSObject;
pub fn JS_LinkConstructorAndPrototype(++cx: *JSContext, ++ctor: *JSObject, ++proto: *JSObject) -> JSBool;
pub fn JS_GetClass(++obj: JSRawObject) -> *JSClass;
pub fn JS_InstanceOf(++cx: *JSContext, ++obj: *JSObject, ++clasp: *JSClass, ++argv: *jsval) -> JSBool;
pub fn JS_HasInstance(++cx: *JSContext, ++obj: *JSObject, ++v: jsval, ++bp: *JSBool) -> JSBool;
pub fn JS_GetPrivate(++obj: JSRawObject) -> *c_void;
pub fn JS_SetPrivate(++obj: JSRawObject, ++data: *c_void);
pub fn JS_GetInstancePrivate(++cx: *JSContext, ++obj: *JSObject, ++clasp: *JSClass, ++argv: *jsval) -> *c_void;
pub fn JS_GetPrototype(++obj: JSRawObject) -> *JSObject;
pub fn JS_SetPrototype(++cx: *JSContext, ++obj: *JSObject, ++proto: *JSObject) -> JSBool;
pub fn JS_GetParent(++obj: JSRawObject) -> *JSObject;
pub fn JS_SetParent(++cx: *JSContext, ++obj: *JSObject, ++parent: *JSObject) -> JSBool;
pub fn JS_GetConstructor(++cx: *JSContext, ++proto: *JSObject) -> *JSObject;
pub fn JS_GetObjectId(++cx: *JSContext, ++obj: JSRawObject, ++idp: *jsid) -> JSBool;
pub fn JS_NewGlobalObject(++cx: *JSContext, ++clasp: *JSClass, ++principals: *JSPrincipals) -> *JSObject;
pub fn JS_NewObject(++cx: *JSContext, ++clasp: *JSClass, ++proto: *JSObject, ++parent: *JSObject) -> *JSObject;
pub fn JS_IsExtensible(++obj: JSRawObject) -> JSBool;
pub fn JS_IsNative(++obj: JSRawObject) -> JSBool;
pub fn JS_GetObjectRuntime(++obj: JSRawObject) -> *JSRuntime;
pub fn JS_NewObjectWithGivenProto(++cx: *JSContext, ++clasp: *JSClass, ++proto: *JSObject, ++parent: *JSObject) -> *JSObject;
pub fn JS_DeepFreezeObject(++cx: *JSContext, ++obj: *JSObject) -> JSBool;
pub fn JS_FreezeObject(++cx: *JSContext, ++obj: *JSObject) -> JSBool;
pub fn JS_New(++cx: *JSContext, ++ctor: *JSObject, ++argc: c_uint, ++argv: *jsval) -> *JSObject;