@tellahq/rescript 10.1.0-alpha.2 → 10.1.4-republish-2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +204 -2
- package/README.md +1 -1
- package/darwinarm64/bsb_helper.exe +0 -0
- package/darwinarm64/bsc.exe +0 -0
- package/darwinarm64/ninja.exe +0 -0
- package/darwinarm64/rescript.exe +0 -0
- package/docs/docson/build-schema.json +497 -516
- package/lib/4.06.1/bsb_helper.ml +6 -1
- package/lib/4.06.1/rescript.ml +1414 -1191
- package/lib/4.06.1/whole_compiler.ml +69844 -69069
- package/lib/es6/belt_internalBuckets.js +13 -13
- package/lib/es6/caml_float.js +5 -5
- package/lib/es6/caml_format.js +1 -1
- package/lib/es6/caml_int64.js +1 -1
- package/lib/es6/caml_obj.js +26 -6
- package/lib/es6/complex.js +4 -4
- package/lib/es6/js.js +3 -0
- package/lib/es6/js_promise2.js +16 -0
- package/lib/es6/jsxPPXReactSupport.js +26 -0
- package/lib/js/belt_internalBuckets.js +13 -13
- package/lib/js/caml_float.js +5 -5
- package/lib/js/caml_format.js +1 -1
- package/lib/js/caml_int64.js +1 -1
- package/lib/js/caml_obj.js +26 -6
- package/lib/js/complex.js +4 -4
- package/lib/js/js.js +3 -0
- package/lib/js/js_promise2.js +14 -0
- package/lib/js/jsxPPXReactSupport.js +24 -0
- package/package.json +2 -1
- package/scripts/buildNinjaBinary.js +29 -0
- package/scripts/install.js +7 -3
- package/scripts/installUtils.js +9 -1
- package/scripts/rescript_arg.js +2 -4
- package/scripts/rescript_format.js +73 -39
- package/win32/refmt.exe +0 -0
- package/darwin/bsb_helper.exe +0 -0
- package/darwin/bsc.exe +0 -0
- package/darwin/ninja.COPYING +0 -202
- package/darwin/ninja.exe +0 -0
- package/darwin/rescript.exe +0 -0
- package/darwinarm64/ninja.COPYING +0 -202
- package/freebsd/ninja.COPYING +0 -202
- package/lib/ocaml/arg.cmi +0 -0
- package/lib/ocaml/arg.cmt +0 -0
- package/lib/ocaml/arg.cmti +0 -0
- package/lib/ocaml/arg.ml +0 -359
- package/lib/ocaml/arg.mli +0 -185
- package/lib/ocaml/array.cmi +0 -0
- package/lib/ocaml/array.cmt +0 -0
- package/lib/ocaml/array.cmti +0 -0
- package/lib/ocaml/array.ml +0 -307
- package/lib/ocaml/array.mli +0 -275
- package/lib/ocaml/arrayLabels.cmi +0 -0
- package/lib/ocaml/arrayLabels.cmt +0 -0
- package/lib/ocaml/arrayLabels.cmti +0 -0
- package/lib/ocaml/arrayLabels.ml +0 -307
- package/lib/ocaml/arrayLabels.mli +0 -276
- package/lib/ocaml/belt.cmi +0 -0
- package/lib/ocaml/belt.cmt +0 -0
- package/lib/ocaml/belt.ml +0 -352
- package/lib/ocaml/belt_Array.cmi +0 -0
- package/lib/ocaml/belt_Array.cmt +0 -0
- package/lib/ocaml/belt_Array.cmti +0 -0
- package/lib/ocaml/belt_Array.ml +0 -525
- package/lib/ocaml/belt_Array.mli +0 -707
- package/lib/ocaml/belt_Float.cmi +0 -0
- package/lib/ocaml/belt_Float.cmt +0 -0
- package/lib/ocaml/belt_Float.cmti +0 -0
- package/lib/ocaml/belt_Float.ml +0 -50
- package/lib/ocaml/belt_Float.mli +0 -106
- package/lib/ocaml/belt_HashMap.cmi +0 -0
- package/lib/ocaml/belt_HashMap.cmt +0 -0
- package/lib/ocaml/belt_HashMap.cmti +0 -0
- package/lib/ocaml/belt_HashMap.ml +0 -226
- package/lib/ocaml/belt_HashMap.mli +0 -436
- package/lib/ocaml/belt_HashMapInt.cmi +0 -0
- package/lib/ocaml/belt_HashMapInt.cmt +0 -0
- package/lib/ocaml/belt_HashMapInt.cmti +0 -0
- package/lib/ocaml/belt_HashMapInt.ml +0 -206
- package/lib/ocaml/belt_HashMapInt.mli +0 -50
- package/lib/ocaml/belt_HashMapString.cmi +0 -0
- package/lib/ocaml/belt_HashMapString.cmt +0 -0
- package/lib/ocaml/belt_HashMapString.cmti +0 -0
- package/lib/ocaml/belt_HashMapString.ml +0 -206
- package/lib/ocaml/belt_HashMapString.mli +0 -50
- package/lib/ocaml/belt_HashSet.cmi +0 -0
- package/lib/ocaml/belt_HashSet.cmt +0 -0
- package/lib/ocaml/belt_HashSet.cmti +0 -0
- package/lib/ocaml/belt_HashSet.ml +0 -196
- package/lib/ocaml/belt_HashSet.mli +0 -125
- package/lib/ocaml/belt_HashSetInt.cmi +0 -0
- package/lib/ocaml/belt_HashSetInt.cmt +0 -0
- package/lib/ocaml/belt_HashSetInt.cmti +0 -0
- package/lib/ocaml/belt_HashSetInt.ml +0 -155
- package/lib/ocaml/belt_HashSetInt.mli +0 -74
- package/lib/ocaml/belt_HashSetString.cmi +0 -0
- package/lib/ocaml/belt_HashSetString.cmt +0 -0
- package/lib/ocaml/belt_HashSetString.cmti +0 -0
- package/lib/ocaml/belt_HashSetString.ml +0 -156
- package/lib/ocaml/belt_HashSetString.mli +0 -74
- package/lib/ocaml/belt_Id.cmi +0 -0
- package/lib/ocaml/belt_Id.cmt +0 -0
- package/lib/ocaml/belt_Id.cmti +0 -0
- package/lib/ocaml/belt_Id.ml +0 -133
- package/lib/ocaml/belt_Id.mli +0 -171
- package/lib/ocaml/belt_Int.cmi +0 -0
- package/lib/ocaml/belt_Int.cmt +0 -0
- package/lib/ocaml/belt_Int.cmti +0 -0
- package/lib/ocaml/belt_Int.ml +0 -50
- package/lib/ocaml/belt_Int.mli +0 -103
- package/lib/ocaml/belt_List.cmi +0 -0
- package/lib/ocaml/belt_List.cmt +0 -0
- package/lib/ocaml/belt_List.cmti +0 -0
- package/lib/ocaml/belt_List.ml +0 -803
- package/lib/ocaml/belt_List.mli +0 -844
- package/lib/ocaml/belt_Map.cmi +0 -0
- package/lib/ocaml/belt_Map.cmt +0 -0
- package/lib/ocaml/belt_Map.cmti +0 -0
- package/lib/ocaml/belt_Map.ml +0 -170
- package/lib/ocaml/belt_Map.mli +0 -496
- package/lib/ocaml/belt_MapDict.cmi +0 -0
- package/lib/ocaml/belt_MapDict.cmt +0 -0
- package/lib/ocaml/belt_MapDict.cmti +0 -0
- package/lib/ocaml/belt_MapDict.ml +0 -278
- package/lib/ocaml/belt_MapDict.mli +0 -268
- package/lib/ocaml/belt_MapInt.cmi +0 -0
- package/lib/ocaml/belt_MapInt.cmt +0 -0
- package/lib/ocaml/belt_MapInt.cmti +0 -0
- package/lib/ocaml/belt_MapInt.ml +0 -169
- package/lib/ocaml/belt_MapInt.mli +0 -187
- package/lib/ocaml/belt_MapString.cmi +0 -0
- package/lib/ocaml/belt_MapString.cmt +0 -0
- package/lib/ocaml/belt_MapString.cmti +0 -0
- package/lib/ocaml/belt_MapString.ml +0 -169
- package/lib/ocaml/belt_MapString.mli +0 -187
- package/lib/ocaml/belt_MutableMap.cmi +0 -0
- package/lib/ocaml/belt_MutableMap.cmt +0 -0
- package/lib/ocaml/belt_MutableMap.cmti +0 -0
- package/lib/ocaml/belt_MutableMap.ml +0 -241
- package/lib/ocaml/belt_MutableMap.mli +0 -145
- package/lib/ocaml/belt_MutableMapInt.cmi +0 -0
- package/lib/ocaml/belt_MutableMapInt.cmt +0 -0
- package/lib/ocaml/belt_MutableMapInt.cmti +0 -0
- package/lib/ocaml/belt_MutableMapInt.ml +0 -172
- package/lib/ocaml/belt_MutableMapInt.mli +0 -135
- package/lib/ocaml/belt_MutableMapString.cmi +0 -0
- package/lib/ocaml/belt_MutableMapString.cmt +0 -0
- package/lib/ocaml/belt_MutableMapString.cmti +0 -0
- package/lib/ocaml/belt_MutableMapString.ml +0 -172
- package/lib/ocaml/belt_MutableMapString.mli +0 -135
- package/lib/ocaml/belt_MutableQueue.cmi +0 -0
- package/lib/ocaml/belt_MutableQueue.cmt +0 -0
- package/lib/ocaml/belt_MutableQueue.cmti +0 -0
- package/lib/ocaml/belt_MutableQueue.ml +0 -222
- package/lib/ocaml/belt_MutableQueue.mli +0 -116
- package/lib/ocaml/belt_MutableSet.cmi +0 -0
- package/lib/ocaml/belt_MutableSet.cmt +0 -0
- package/lib/ocaml/belt_MutableSet.cmti +0 -0
- package/lib/ocaml/belt_MutableSet.ml +0 -371
- package/lib/ocaml/belt_MutableSet.mli +0 -617
- package/lib/ocaml/belt_MutableSetInt.cmi +0 -0
- package/lib/ocaml/belt_MutableSetInt.cmt +0 -0
- package/lib/ocaml/belt_MutableSetInt.cmti +0 -0
- package/lib/ocaml/belt_MutableSetInt.ml +0 -342
- package/lib/ocaml/belt_MutableSetInt.mli +0 -124
- package/lib/ocaml/belt_MutableSetString.cmi +0 -0
- package/lib/ocaml/belt_MutableSetString.cmt +0 -0
- package/lib/ocaml/belt_MutableSetString.cmti +0 -0
- package/lib/ocaml/belt_MutableSetString.ml +0 -342
- package/lib/ocaml/belt_MutableSetString.mli +0 -124
- package/lib/ocaml/belt_MutableStack.cmi +0 -0
- package/lib/ocaml/belt_MutableStack.cmt +0 -0
- package/lib/ocaml/belt_MutableStack.cmti +0 -0
- package/lib/ocaml/belt_MutableStack.ml +0 -106
- package/lib/ocaml/belt_MutableStack.mli +0 -63
- package/lib/ocaml/belt_Option.cmi +0 -0
- package/lib/ocaml/belt_Option.cmt +0 -0
- package/lib/ocaml/belt_Option.cmti +0 -0
- package/lib/ocaml/belt_Option.ml +0 -93
- package/lib/ocaml/belt_Option.mli +0 -270
- package/lib/ocaml/belt_Range.cmi +0 -0
- package/lib/ocaml/belt_Range.cmt +0 -0
- package/lib/ocaml/belt_Range.cmti +0 -0
- package/lib/ocaml/belt_Range.ml +0 -76
- package/lib/ocaml/belt_Range.mli +0 -114
- package/lib/ocaml/belt_Result.cmi +0 -0
- package/lib/ocaml/belt_Result.cmt +0 -0
- package/lib/ocaml/belt_Result.cmti +0 -0
- package/lib/ocaml/belt_Result.ml +0 -75
- package/lib/ocaml/belt_Result.mli +0 -205
- package/lib/ocaml/belt_Set.cmi +0 -0
- package/lib/ocaml/belt_Set.cmt +0 -0
- package/lib/ocaml/belt_Set.cmti +0 -0
- package/lib/ocaml/belt_Set.cppo.ml +0 -205
- package/lib/ocaml/belt_Set.cppo.mli +0 -153
- package/lib/ocaml/belt_Set.ml +0 -164
- package/lib/ocaml/belt_Set.mli +0 -523
- package/lib/ocaml/belt_SetDict.cmi +0 -0
- package/lib/ocaml/belt_SetDict.cmt +0 -0
- package/lib/ocaml/belt_SetDict.cmti +0 -0
- package/lib/ocaml/belt_SetDict.ml +0 -237
- package/lib/ocaml/belt_SetDict.mli +0 -567
- package/lib/ocaml/belt_SetInt.cmi +0 -0
- package/lib/ocaml/belt_SetInt.cmt +0 -0
- package/lib/ocaml/belt_SetInt.cmti +0 -0
- package/lib/ocaml/belt_SetInt.ml +0 -201
- package/lib/ocaml/belt_SetInt.mli +0 -151
- package/lib/ocaml/belt_SetString.cmi +0 -0
- package/lib/ocaml/belt_SetString.cmt +0 -0
- package/lib/ocaml/belt_SetString.cmti +0 -0
- package/lib/ocaml/belt_SetString.ml +0 -201
- package/lib/ocaml/belt_SetString.mli +0 -151
- package/lib/ocaml/belt_SortArray.cmi +0 -0
- package/lib/ocaml/belt_SortArray.cmt +0 -0
- package/lib/ocaml/belt_SortArray.cmti +0 -0
- package/lib/ocaml/belt_SortArray.ml +0 -322
- package/lib/ocaml/belt_SortArray.mli +0 -146
- package/lib/ocaml/belt_SortArrayInt.cmi +0 -0
- package/lib/ocaml/belt_SortArrayInt.cmt +0 -0
- package/lib/ocaml/belt_SortArrayInt.cmti +0 -0
- package/lib/ocaml/belt_SortArrayInt.ml +0 -263
- package/lib/ocaml/belt_SortArrayInt.mli +0 -93
- package/lib/ocaml/belt_SortArrayString.cmi +0 -0
- package/lib/ocaml/belt_SortArrayString.cmt +0 -0
- package/lib/ocaml/belt_SortArrayString.cmti +0 -0
- package/lib/ocaml/belt_SortArrayString.ml +0 -263
- package/lib/ocaml/belt_SortArrayString.mli +0 -93
- package/lib/ocaml/belt_internalAVLset.cmt +0 -0
- package/lib/ocaml/belt_internalAVLset.cmti +0 -0
- package/lib/ocaml/belt_internalAVLset.ml +0 -665
- package/lib/ocaml/belt_internalAVLset.mli +0 -124
- package/lib/ocaml/belt_internalAVLtree.cmt +0 -0
- package/lib/ocaml/belt_internalAVLtree.cmti +0 -0
- package/lib/ocaml/belt_internalAVLtree.ml +0 -762
- package/lib/ocaml/belt_internalAVLtree.mli +0 -215
- package/lib/ocaml/belt_internalBuckets.cmt +0 -0
- package/lib/ocaml/belt_internalBuckets.cmti +0 -0
- package/lib/ocaml/belt_internalBuckets.ml +0 -218
- package/lib/ocaml/belt_internalBuckets.mli +0 -57
- package/lib/ocaml/belt_internalBucketsType.cmt +0 -0
- package/lib/ocaml/belt_internalBucketsType.cmti +0 -0
- package/lib/ocaml/belt_internalBucketsType.ml +0 -59
- package/lib/ocaml/belt_internalBucketsType.mli +0 -46
- package/lib/ocaml/belt_internalMapInt.cmt +0 -0
- package/lib/ocaml/belt_internalMapInt.ml +0 -227
- package/lib/ocaml/belt_internalMapString.cmt +0 -0
- package/lib/ocaml/belt_internalMapString.ml +0 -227
- package/lib/ocaml/belt_internalSetBuckets.cmt +0 -0
- package/lib/ocaml/belt_internalSetBuckets.cmti +0 -0
- package/lib/ocaml/belt_internalSetBuckets.ml +0 -157
- package/lib/ocaml/belt_internalSetBuckets.mli +0 -47
- package/lib/ocaml/belt_internalSetInt.cmt +0 -0
- package/lib/ocaml/belt_internalSetInt.ml +0 -129
- package/lib/ocaml/belt_internalSetString.cmt +0 -0
- package/lib/ocaml/belt_internalSetString.ml +0 -129
- package/lib/ocaml/belt_internals.cmti +0 -0
- package/lib/ocaml/belt_internals.mli +0 -79
- package/lib/ocaml/buffer.cmi +0 -0
- package/lib/ocaml/buffer.cmt +0 -0
- package/lib/ocaml/buffer.cmti +0 -0
- package/lib/ocaml/buffer.ml +0 -250
- package/lib/ocaml/buffer.mli +0 -149
- package/lib/ocaml/bytes.cmi +0 -0
- package/lib/ocaml/bytes.cmt +0 -0
- package/lib/ocaml/bytes.cmti +0 -0
- package/lib/ocaml/bytes.ml +0 -431
- package/lib/ocaml/bytes.mli +0 -430
- package/lib/ocaml/bytesLabels.cmi +0 -0
- package/lib/ocaml/bytesLabels.cmt +0 -0
- package/lib/ocaml/bytesLabels.cmti +0 -0
- package/lib/ocaml/bytesLabels.ml +0 -428
- package/lib/ocaml/bytesLabels.mli +0 -276
- package/lib/ocaml/callback.cmi +0 -0
- package/lib/ocaml/callback.cmt +0 -0
- package/lib/ocaml/callback.cmti +0 -0
- package/lib/ocaml/callback.ml +0 -20
- package/lib/ocaml/callback.mli +0 -34
- package/lib/ocaml/camlinternalLazy.cmi +0 -0
- package/lib/ocaml/camlinternalLazy.cmt +0 -0
- package/lib/ocaml/camlinternalLazy.cmti +0 -0
- package/lib/ocaml/camlinternalLazy.ml +0 -89
- package/lib/ocaml/camlinternalLazy.mli +0 -27
- package/lib/ocaml/camlinternalMod.cmi +0 -0
- package/lib/ocaml/camlinternalMod.cmt +0 -0
- package/lib/ocaml/camlinternalMod.cmti +0 -0
- package/lib/ocaml/camlinternalMod.ml +0 -21
- package/lib/ocaml/camlinternalMod.mli +0 -25
- package/lib/ocaml/char.cmi +0 -0
- package/lib/ocaml/char.cmt +0 -0
- package/lib/ocaml/char.cmti +0 -0
- package/lib/ocaml/char.ml +0 -76
- package/lib/ocaml/char.mli +0 -72
- package/lib/ocaml/complex.cmi +0 -0
- package/lib/ocaml/complex.cmt +0 -0
- package/lib/ocaml/complex.cmti +0 -0
- package/lib/ocaml/complex.ml +0 -87
- package/lib/ocaml/complex.mli +0 -86
- package/lib/ocaml/digest.cmi +0 -0
- package/lib/ocaml/digest.cmt +0 -0
- package/lib/ocaml/digest.cmti +0 -0
- package/lib/ocaml/digest.ml +0 -66
- package/lib/ocaml/digest.mli +0 -68
- package/lib/ocaml/dom.cmi +0 -0
- package/lib/ocaml/dom.cmt +0 -0
- package/lib/ocaml/dom.ml +0 -296
- package/lib/ocaml/dom_storage.cmi +0 -0
- package/lib/ocaml/dom_storage.cmt +0 -0
- package/lib/ocaml/dom_storage.ml +0 -22
- package/lib/ocaml/dom_storage2.cmi +0 -0
- package/lib/ocaml/dom_storage2.cmt +0 -0
- package/lib/ocaml/dom_storage2.ml +0 -11
- package/lib/ocaml/filename.cmi +0 -0
- package/lib/ocaml/filename.cmt +0 -0
- package/lib/ocaml/filename.cmti +0 -0
- package/lib/ocaml/filename.ml +0 -233
- package/lib/ocaml/filename.mli +0 -134
- package/lib/ocaml/genlex.cmi +0 -0
- package/lib/ocaml/genlex.cmt +0 -0
- package/lib/ocaml/genlex.cmti +0 -0
- package/lib/ocaml/genlex.ml +0 -201
- package/lib/ocaml/genlex.mli +0 -73
- package/lib/ocaml/hashmap.cppo.ml +0 -214
- package/lib/ocaml/hashmap.cppo.mli +0 -54
- package/lib/ocaml/hashset.cppo.ml +0 -165
- package/lib/ocaml/hashset.cppo.mli +0 -77
- package/lib/ocaml/hashtbl.cmi +0 -0
- package/lib/ocaml/hashtbl.cmt +0 -0
- package/lib/ocaml/hashtbl.cmti +0 -0
- package/lib/ocaml/hashtbl.ml +0 -541
- package/lib/ocaml/hashtbl.mli +0 -411
- package/lib/ocaml/hashtblLabels.cmi +0 -0
- package/lib/ocaml/hashtblLabels.cmt +0 -0
- package/lib/ocaml/hashtblLabels.ml +0 -130
- package/lib/ocaml/int32.cmi +0 -0
- package/lib/ocaml/int32.cmt +0 -0
- package/lib/ocaml/int32.cmti +0 -0
- package/lib/ocaml/int32.ml +0 -64
- package/lib/ocaml/int32.mli +0 -186
- package/lib/ocaml/int64.cmi +0 -0
- package/lib/ocaml/int64.cmt +0 -0
- package/lib/ocaml/int64.cmti +0 -0
- package/lib/ocaml/int64.ml +0 -72
- package/lib/ocaml/int64.mli +0 -197
- package/lib/ocaml/internal_map.cppo.ml +0 -230
- package/lib/ocaml/internal_set.cppo.ml +0 -134
- package/lib/ocaml/js.cmi +0 -0
- package/lib/ocaml/js.cmt +0 -0
- package/lib/ocaml/js.ml +0 -313
- package/lib/ocaml/js_OO.cmi +0 -0
- package/lib/ocaml/js_OO.cmt +0 -0
- package/lib/ocaml/js_OO.ml +0 -180
- package/lib/ocaml/js_array.cmi +0 -0
- package/lib/ocaml/js_array.cmt +0 -0
- package/lib/ocaml/js_array.ml +0 -970
- package/lib/ocaml/js_array2.cmi +0 -0
- package/lib/ocaml/js_array2.cmt +0 -0
- package/lib/ocaml/js_array2.ml +0 -1065
- package/lib/ocaml/js_bigint.cmi +0 -0
- package/lib/ocaml/js_bigint.cmt +0 -0
- package/lib/ocaml/js_bigint.ml +0 -3
- package/lib/ocaml/js_cast.cmi +0 -0
- package/lib/ocaml/js_cast.cmt +0 -0
- package/lib/ocaml/js_cast.cmti +0 -0
- package/lib/ocaml/js_cast.ml +0 -29
- package/lib/ocaml/js_cast.mli +0 -45
- package/lib/ocaml/js_console.cmi +0 -0
- package/lib/ocaml/js_console.cmt +0 -0
- package/lib/ocaml/js_console.ml +0 -51
- package/lib/ocaml/js_date.cmi +0 -0
- package/lib/ocaml/js_date.cmt +0 -0
- package/lib/ocaml/js_date.ml +0 -1263
- package/lib/ocaml/js_dict.cmi +0 -0
- package/lib/ocaml/js_dict.cmt +0 -0
- package/lib/ocaml/js_dict.cmti +0 -0
- package/lib/ocaml/js_dict.ml +0 -114
- package/lib/ocaml/js_dict.mli +0 -152
- package/lib/ocaml/js_exn.cmi +0 -0
- package/lib/ocaml/js_exn.cmt +0 -0
- package/lib/ocaml/js_exn.cmti +0 -0
- package/lib/ocaml/js_exn.ml +0 -102
- package/lib/ocaml/js_exn.mli +0 -79
- package/lib/ocaml/js_float.cmi +0 -0
- package/lib/ocaml/js_float.cmt +0 -0
- package/lib/ocaml/js_float.ml +0 -294
- package/lib/ocaml/js_global.cmi +0 -0
- package/lib/ocaml/js_global.cmt +0 -0
- package/lib/ocaml/js_global.ml +0 -185
- package/lib/ocaml/js_int.cmi +0 -0
- package/lib/ocaml/js_int.cmt +0 -0
- package/lib/ocaml/js_int.ml +0 -158
- package/lib/ocaml/js_json.cmi +0 -0
- package/lib/ocaml/js_json.cmt +0 -0
- package/lib/ocaml/js_json.cmti +0 -0
- package/lib/ocaml/js_json.ml +0 -195
- package/lib/ocaml/js_json.mli +0 -244
- package/lib/ocaml/js_list.cmi +0 -0
- package/lib/ocaml/js_list.cmt +0 -0
- package/lib/ocaml/js_list.cmti +0 -0
- package/lib/ocaml/js_list.ml +0 -174
- package/lib/ocaml/js_list.mli +0 -72
- package/lib/ocaml/js_map.cmi +0 -0
- package/lib/ocaml/js_map.cmt +0 -0
- package/lib/ocaml/js_map.ml +0 -3
- package/lib/ocaml/js_mapperRt.cmi +0 -0
- package/lib/ocaml/js_mapperRt.cmt +0 -0
- package/lib/ocaml/js_mapperRt.cmti +0 -0
- package/lib/ocaml/js_mapperRt.ml +0 -50
- package/lib/ocaml/js_mapperRt.mli +0 -44
- package/lib/ocaml/js_math.cmi +0 -0
- package/lib/ocaml/js_math.cmt +0 -0
- package/lib/ocaml/js_math.ml +0 -626
- package/lib/ocaml/js_null.cmi +0 -0
- package/lib/ocaml/js_null.cmt +0 -0
- package/lib/ocaml/js_null.cmti +0 -0
- package/lib/ocaml/js_null.ml +0 -57
- package/lib/ocaml/js_null.mli +0 -87
- package/lib/ocaml/js_null_undefined.cmi +0 -0
- package/lib/ocaml/js_null_undefined.cmt +0 -0
- package/lib/ocaml/js_null_undefined.cmti +0 -0
- package/lib/ocaml/js_null_undefined.ml +0 -50
- package/lib/ocaml/js_null_undefined.mli +0 -85
- package/lib/ocaml/js_obj.cmi +0 -0
- package/lib/ocaml/js_obj.cmt +0 -0
- package/lib/ocaml/js_obj.ml +0 -100
- package/lib/ocaml/js_option.cmi +0 -0
- package/lib/ocaml/js_option.cmt +0 -0
- package/lib/ocaml/js_option.cmti +0 -0
- package/lib/ocaml/js_option.ml +0 -203
- package/lib/ocaml/js_option.mli +0 -52
- package/lib/ocaml/js_promise.cmi +0 -0
- package/lib/ocaml/js_promise.cmt +0 -0
- package/lib/ocaml/js_promise.ml +0 -100
- package/lib/ocaml/js_re.cmi +0 -0
- package/lib/ocaml/js_re.cmt +0 -0
- package/lib/ocaml/js_re.ml +0 -184
- package/lib/ocaml/js_result.cmi +0 -0
- package/lib/ocaml/js_result.cmt +0 -0
- package/lib/ocaml/js_result.cmti +0 -0
- package/lib/ocaml/js_result.ml +0 -28
- package/lib/ocaml/js_result.mli +0 -28
- package/lib/ocaml/js_set.cmi +0 -0
- package/lib/ocaml/js_set.cmt +0 -0
- package/lib/ocaml/js_set.ml +0 -3
- package/lib/ocaml/js_string.cmi +0 -0
- package/lib/ocaml/js_string.cmt +0 -0
- package/lib/ocaml/js_string.ml +0 -914
- package/lib/ocaml/js_string2.cmi +0 -0
- package/lib/ocaml/js_string2.cmt +0 -0
- package/lib/ocaml/js_string2.ml +0 -912
- package/lib/ocaml/js_typed_array.cmi +0 -0
- package/lib/ocaml/js_typed_array.cmt +0 -0
- package/lib/ocaml/js_typed_array.cppo.ml +0 -429
- package/lib/ocaml/js_typed_array.ml +0 -1405
- package/lib/ocaml/js_typed_array2.cmi +0 -0
- package/lib/ocaml/js_typed_array2.cmt +0 -0
- package/lib/ocaml/js_typed_array2.cppo.ml +0 -296
- package/lib/ocaml/js_typed_array2.ml +0 -1269
- package/lib/ocaml/js_types.cmi +0 -0
- package/lib/ocaml/js_types.cmt +0 -0
- package/lib/ocaml/js_types.cmti +0 -0
- package/lib/ocaml/js_types.ml +0 -118
- package/lib/ocaml/js_types.mli +0 -78
- package/lib/ocaml/js_undefined.cmi +0 -0
- package/lib/ocaml/js_undefined.cmt +0 -0
- package/lib/ocaml/js_undefined.cmti +0 -0
- package/lib/ocaml/js_undefined.ml +0 -59
- package/lib/ocaml/js_undefined.mli +0 -92
- package/lib/ocaml/js_vector.cmi +0 -0
- package/lib/ocaml/js_vector.cmt +0 -0
- package/lib/ocaml/js_vector.cmti +0 -0
- package/lib/ocaml/js_vector.ml +0 -143
- package/lib/ocaml/js_vector.mli +0 -92
- package/lib/ocaml/js_weakmap.cmi +0 -0
- package/lib/ocaml/js_weakmap.cmt +0 -0
- package/lib/ocaml/js_weakmap.ml +0 -3
- package/lib/ocaml/js_weakset.cmi +0 -0
- package/lib/ocaml/js_weakset.cmt +0 -0
- package/lib/ocaml/js_weakset.ml +0 -3
- package/lib/ocaml/jsx.cmi +0 -0
- package/lib/ocaml/jsx.cmt +0 -0
- package/lib/ocaml/jsx.ml +0 -39
- package/lib/ocaml/jsxDOM.cmi +0 -0
- package/lib/ocaml/jsxDOM.cmt +0 -0
- package/lib/ocaml/jsxDOM.ml +0 -2087
- package/lib/ocaml/jsxDOMStyle.cmi +0 -0
- package/lib/ocaml/jsxDOMStyle.cmt +0 -0
- package/lib/ocaml/jsxDOMStyle.ml +0 -777
- package/lib/ocaml/jsxEvent.cmi +0 -0
- package/lib/ocaml/jsxEvent.cmt +0 -0
- package/lib/ocaml/jsxEvent.ml +0 -358
- package/lib/ocaml/lazy.cmi +0 -0
- package/lib/ocaml/lazy.cmt +0 -0
- package/lib/ocaml/lazy.cmti +0 -0
- package/lib/ocaml/lazy.ml +0 -70
- package/lib/ocaml/lazy.mli +0 -95
- package/lib/ocaml/lexing.cmi +0 -0
- package/lib/ocaml/lexing.cmt +0 -0
- package/lib/ocaml/lexing.cmti +0 -0
- package/lib/ocaml/lexing.ml +0 -230
- package/lib/ocaml/lexing.mli +0 -172
- package/lib/ocaml/list.cmi +0 -0
- package/lib/ocaml/list.cmt +0 -0
- package/lib/ocaml/list.cmti +0 -0
- package/lib/ocaml/list.ml +0 -485
- package/lib/ocaml/list.mli +0 -347
- package/lib/ocaml/listLabels.cmi +0 -0
- package/lib/ocaml/listLabels.cmt +0 -0
- package/lib/ocaml/listLabels.cmti +0 -0
- package/lib/ocaml/listLabels.ml +0 -485
- package/lib/ocaml/listLabels.mli +0 -353
- package/lib/ocaml/map.cmi +0 -0
- package/lib/ocaml/map.cmt +0 -0
- package/lib/ocaml/map.cmti +0 -0
- package/lib/ocaml/map.cppo.ml +0 -174
- package/lib/ocaml/map.cppo.mli +0 -191
- package/lib/ocaml/map.ml +0 -480
- package/lib/ocaml/map.mli +0 -315
- package/lib/ocaml/mapLabels.cmi +0 -0
- package/lib/ocaml/mapLabels.cmt +0 -0
- package/lib/ocaml/mapLabels.ml +0 -480
- package/lib/ocaml/mapm.cppo.ml +0 -177
- package/lib/ocaml/mapm.cppo.mli +0 -138
- package/lib/ocaml/moreLabels.cmi +0 -0
- package/lib/ocaml/moreLabels.cmt +0 -0
- package/lib/ocaml/moreLabels.cmti +0 -0
- package/lib/ocaml/moreLabels.ml +0 -22
- package/lib/ocaml/moreLabels.mli +0 -198
- package/lib/ocaml/node.cmi +0 -0
- package/lib/ocaml/node.cmt +0 -0
- package/lib/ocaml/node.ml +0 -84
- package/lib/ocaml/node_buffer.cmi +0 -0
- package/lib/ocaml/node_buffer.cmt +0 -0
- package/lib/ocaml/node_buffer.ml +0 -47
- package/lib/ocaml/node_child_process.cmi +0 -0
- package/lib/ocaml/node_child_process.cmt +0 -0
- package/lib/ocaml/node_child_process.ml +0 -50
- package/lib/ocaml/node_fs.cmi +0 -0
- package/lib/ocaml/node_fs.cmt +0 -0
- package/lib/ocaml/node_fs.ml +0 -153
- package/lib/ocaml/node_module.cmi +0 -0
- package/lib/ocaml/node_module.cmt +0 -0
- package/lib/ocaml/node_module.ml +0 -29
- package/lib/ocaml/node_path.cmi +0 -0
- package/lib/ocaml/node_path.cmt +0 -0
- package/lib/ocaml/node_path.ml +0 -71
- package/lib/ocaml/node_process.cmi +0 -0
- package/lib/ocaml/node_process.cmt +0 -0
- package/lib/ocaml/node_process.cmti +0 -0
- package/lib/ocaml/node_process.ml +0 -59
- package/lib/ocaml/node_process.mli +0 -48
- package/lib/ocaml/obj.cmi +0 -0
- package/lib/ocaml/obj.cmt +0 -0
- package/lib/ocaml/obj.cmti +0 -0
- package/lib/ocaml/obj.ml +0 -29
- package/lib/ocaml/obj.mli +0 -62
- package/lib/ocaml/parsing.cmi +0 -0
- package/lib/ocaml/parsing.cmt +0 -0
- package/lib/ocaml/parsing.cmti +0 -0
- package/lib/ocaml/parsing.ml +0 -212
- package/lib/ocaml/parsing.mli +0 -105
- package/lib/ocaml/pervasives.cmi +0 -0
- package/lib/ocaml/pervasives.cmt +0 -0
- package/lib/ocaml/pervasives.cmti +0 -0
- package/lib/ocaml/pervasives.ml +0 -297
- package/lib/ocaml/pervasives.mli +0 -771
- package/lib/ocaml/printexc.cmi +0 -0
- package/lib/ocaml/printexc.cmt +0 -0
- package/lib/ocaml/printexc.cmti +0 -0
- package/lib/ocaml/printexc.ml +0 -79
- package/lib/ocaml/printexc.mli +0 -57
- package/lib/ocaml/queue.cmi +0 -0
- package/lib/ocaml/queue.cmt +0 -0
- package/lib/ocaml/queue.cmti +0 -0
- package/lib/ocaml/queue.ml +0 -132
- package/lib/ocaml/queue.mli +0 -82
- package/lib/ocaml/random.cmi +0 -0
- package/lib/ocaml/random.cmt +0 -0
- package/lib/ocaml/random.cmti +0 -0
- package/lib/ocaml/random.ml +0 -273
- package/lib/ocaml/random.mli +0 -102
- package/lib/ocaml/set.cmi +0 -0
- package/lib/ocaml/set.cmt +0 -0
- package/lib/ocaml/set.cmti +0 -0
- package/lib/ocaml/set.ml +0 -526
- package/lib/ocaml/set.mli +0 -266
- package/lib/ocaml/setLabels.cmi +0 -0
- package/lib/ocaml/setLabels.cmt +0 -0
- package/lib/ocaml/setLabels.ml +0 -526
- package/lib/ocaml/setm.cppo.ml +0 -346
- package/lib/ocaml/setm.cppo.mli +0 -126
- package/lib/ocaml/sort.cmi +0 -0
- package/lib/ocaml/sort.cmt +0 -0
- package/lib/ocaml/sort.cmti +0 -0
- package/lib/ocaml/sort.cppo.ml +0 -267
- package/lib/ocaml/sort.cppo.mli +0 -96
- package/lib/ocaml/sort.ml +0 -99
- package/lib/ocaml/sort.mli +0 -44
- package/lib/ocaml/stack.cmi +0 -0
- package/lib/ocaml/stack.cmt +0 -0
- package/lib/ocaml/stack.cmti +0 -0
- package/lib/ocaml/stack.ml +0 -44
- package/lib/ocaml/stack.mli +0 -63
- package/lib/ocaml/stdLabels.cmi +0 -0
- package/lib/ocaml/stdLabels.cmt +0 -0
- package/lib/ocaml/stdLabels.cmti +0 -0
- package/lib/ocaml/stdLabels.ml +0 -24
- package/lib/ocaml/stdLabels.mli +0 -29
- package/lib/ocaml/stream.cmi +0 -0
- package/lib/ocaml/stream.cmt +0 -0
- package/lib/ocaml/stream.cmti +0 -0
- package/lib/ocaml/stream.ml +0 -213
- package/lib/ocaml/stream.mli +0 -108
- package/lib/ocaml/string.cmi +0 -0
- package/lib/ocaml/string.cmt +0 -0
- package/lib/ocaml/string.cmti +0 -0
- package/lib/ocaml/string.ml +0 -190
- package/lib/ocaml/string.mli +0 -286
- package/lib/ocaml/stringLabels.cmi +0 -0
- package/lib/ocaml/stringLabels.cmt +0 -0
- package/lib/ocaml/stringLabels.cmti +0 -0
- package/lib/ocaml/stringLabels.ml +0 -190
- package/lib/ocaml/stringLabels.mli +0 -241
- package/lib/ocaml/sys.cmi +0 -0
- package/lib/ocaml/sys.cmt +0 -0
- package/lib/ocaml/sys.cmti +0 -0
- package/lib/ocaml/sys.ml +0 -135
- package/lib/ocaml/sys.mli +0 -333
- package/lib/ocaml/uchar.cmi +0 -0
- package/lib/ocaml/uchar.cmt +0 -0
- package/lib/ocaml/uchar.cmti +0 -0
- package/lib/ocaml/uchar.ml +0 -58
- package/lib/ocaml/uchar.mli +0 -98
- package/linux/bsb_helper.exe +0 -0
- package/linux/bsc.exe +0 -0
- package/linux/ninja.COPYING +0 -202
- package/linux/ninja.exe +0 -0
- package/linux/rescript.exe +0 -0
- package/openbsd/.keep +0 -0
- package/scripts/LICENSE.ml +0 -27
- package/scripts/buckle_lto.js +0 -55
- package/scripts/build_sorted.ml +0 -233
- package/scripts/caml_oo_curry_gen.ml +0 -71
- package/scripts/checkUnused.js +0 -63
- package/scripts/ciTest.js +0 -172
- package/scripts/cover.sh +0 -3
- package/scripts/curry_gen.ml +0 -167
- package/scripts/dbg +0 -13
- package/scripts/dedupe.js +0 -44
- package/scripts/doc_gen.js +0 -117
- package/scripts/js_internal_gen.js +0 -135
- package/scripts/jsconfig.json +0 -12
- package/scripts/littlecase.js +0 -21
- package/scripts/ninja.js +0 -1980
- package/scripts/pack.js +0 -107
- package/scripts/prebuilt.js +0 -99
- package/scripts/release.js +0 -41
- package/scripts/repl.js +0 -151
- package/scripts/shake.js +0 -138
- package/scripts/tasks.js +0 -149
- package/scripts/test.sh +0 -3
- package/scripts/tmp.js +0 -98
- package/scripts/validate.js +0 -41
- package/vendor/ninja.tar.gz +0 -0
- package/win32/bsb_helper.exe +0 -0
- package/win32/bsc.exe +0 -0
- package/win32/ninja.COPYING +0 -202
- package/win32/ninja.exe +0 -0
- package/win32/rescript.exe +0 -0
package/lib/ocaml/filename.mli
DELETED
|
@@ -1,134 +0,0 @@
|
|
|
1
|
-
(**************************************************************************)
|
|
2
|
-
(* *)
|
|
3
|
-
(* OCaml *)
|
|
4
|
-
(* *)
|
|
5
|
-
(* Xavier Leroy, projet Cristal, INRIA Rocquencourt *)
|
|
6
|
-
(* *)
|
|
7
|
-
(* Copyright 1996 Institut National de Recherche en Informatique et *)
|
|
8
|
-
(* en Automatique. *)
|
|
9
|
-
(* *)
|
|
10
|
-
(* All rights reserved. This file is distributed under the terms of *)
|
|
11
|
-
(* the GNU Lesser General Public License version 2.1, with the *)
|
|
12
|
-
(* special exception on linking described in the file LICENSE. *)
|
|
13
|
-
(* *)
|
|
14
|
-
(**************************************************************************)
|
|
15
|
-
|
|
16
|
-
(** Operations on file names. *)
|
|
17
|
-
|
|
18
|
-
val current_dir_name : string
|
|
19
|
-
(** The conventional name for the current directory (e.g. [.] in Unix). *)
|
|
20
|
-
|
|
21
|
-
val parent_dir_name : string
|
|
22
|
-
(** The conventional name for the parent of the current directory
|
|
23
|
-
(e.g. [..] in Unix). *)
|
|
24
|
-
|
|
25
|
-
val dir_sep : string
|
|
26
|
-
(** The directory separator (e.g. [/] in Unix). @since 3.11.2 *)
|
|
27
|
-
|
|
28
|
-
val concat : string -> string -> string
|
|
29
|
-
(** [concat dir file] returns a file name that designates file
|
|
30
|
-
[file] in directory [dir]. *)
|
|
31
|
-
|
|
32
|
-
val is_relative : string -> bool
|
|
33
|
-
(** Return [true] if the file name is relative to the current
|
|
34
|
-
directory, [false] if it is absolute (i.e. in Unix, starts
|
|
35
|
-
with [/]). *)
|
|
36
|
-
|
|
37
|
-
val is_implicit : string -> bool
|
|
38
|
-
(** Return [true] if the file name is relative and does not start
|
|
39
|
-
with an explicit reference to the current directory ([./] or
|
|
40
|
-
[../] in Unix), [false] if it starts with an explicit reference
|
|
41
|
-
to the root directory or the current directory. *)
|
|
42
|
-
|
|
43
|
-
val check_suffix : string -> string -> bool
|
|
44
|
-
(** [check_suffix name suff] returns [true] if the filename [name]
|
|
45
|
-
ends with the suffix [suff]. *)
|
|
46
|
-
|
|
47
|
-
val chop_suffix : string -> string -> string
|
|
48
|
-
(** [chop_suffix name suff] removes the suffix [suff] from
|
|
49
|
-
the filename [name]. The behavior is undefined if [name] does not
|
|
50
|
-
end with the suffix [suff]. *)
|
|
51
|
-
|
|
52
|
-
val extension : string -> string
|
|
53
|
-
(** [extension name] is the shortest suffix [ext] of [name0] where:
|
|
54
|
-
|
|
55
|
-
- [name0] is the longest suffix of [name] that does not
|
|
56
|
-
contain a directory separator;
|
|
57
|
-
- [ext] starts with a period;
|
|
58
|
-
- [ext] is preceded by at least one non-period character
|
|
59
|
-
in [name0].
|
|
60
|
-
|
|
61
|
-
If such a suffix does not exist, [extension name] is the empty
|
|
62
|
-
string.
|
|
63
|
-
|
|
64
|
-
@since 4.04
|
|
65
|
-
*)
|
|
66
|
-
|
|
67
|
-
val remove_extension : string -> string
|
|
68
|
-
(** Return the given file name without its extension, as defined
|
|
69
|
-
in {!Filename.extension}. If the extension is empty, the function
|
|
70
|
-
returns the given file name.
|
|
71
|
-
|
|
72
|
-
The following invariant holds for any file name [s]:
|
|
73
|
-
|
|
74
|
-
[remove_extension s ^ extension s = s]
|
|
75
|
-
|
|
76
|
-
@since 4.04
|
|
77
|
-
*)
|
|
78
|
-
|
|
79
|
-
val chop_extension : string -> string
|
|
80
|
-
(** Same as {!Filename.remove_extension}, but raise [Invalid_argument]
|
|
81
|
-
if the given name has an empty extension. *)
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
val basename : string -> string
|
|
85
|
-
(** Split a file name into directory name / base file name.
|
|
86
|
-
If [name] is a valid file name, then [concat (dirname name) (basename name)]
|
|
87
|
-
returns a file name which is equivalent to [name]. Moreover,
|
|
88
|
-
after setting the current directory to [dirname name] (with {!Sys.chdir}),
|
|
89
|
-
references to [basename name] (which is a relative file name)
|
|
90
|
-
designate the same file as [name] before the call to {!Sys.chdir}.
|
|
91
|
-
|
|
92
|
-
This function conforms to the specification of POSIX.1-2008 for the
|
|
93
|
-
[basename] utility. *)
|
|
94
|
-
|
|
95
|
-
val dirname : string -> string
|
|
96
|
-
(** See {!Filename.basename}.
|
|
97
|
-
This function conforms to the specification of POSIX.1-2008 for the
|
|
98
|
-
[dirname] utility. *)
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
val get_temp_dir_name : unit -> string
|
|
102
|
-
(** The name of the temporary directory:
|
|
103
|
-
Under Unix, the value of the [TMPDIR] environment variable, or "/tmp"
|
|
104
|
-
if the variable is not set.
|
|
105
|
-
Under Windows, the value of the [TEMP] environment variable, or "."
|
|
106
|
-
if the variable is not set.
|
|
107
|
-
The temporary directory can be changed with {!Filename.set_temp_dir_name}.
|
|
108
|
-
@since 4.00.0
|
|
109
|
-
*)
|
|
110
|
-
|
|
111
|
-
val set_temp_dir_name : string -> unit
|
|
112
|
-
(** Change the temporary directory returned by {!Filename.get_temp_dir_name}
|
|
113
|
-
and used by {!Filename.temp_file} and {!Filename.open_temp_file}.
|
|
114
|
-
@since 4.00.0
|
|
115
|
-
*)
|
|
116
|
-
|
|
117
|
-
val temp_dir_name : string
|
|
118
|
-
[@@ocaml.deprecated "Use Filename.get_temp_dir_name instead"]
|
|
119
|
-
(** The name of the initial temporary directory:
|
|
120
|
-
Under Unix, the value of the [TMPDIR] environment variable, or "/tmp"
|
|
121
|
-
if the variable is not set.
|
|
122
|
-
Under Windows, the value of the [TEMP] environment variable, or "."
|
|
123
|
-
if the variable is not set.
|
|
124
|
-
@deprecated You should use {!Filename.get_temp_dir_name} instead.
|
|
125
|
-
@since 3.09.1
|
|
126
|
-
*)
|
|
127
|
-
|
|
128
|
-
val quote : string -> string
|
|
129
|
-
(** Return a quoted version of a file name, suitable for use as
|
|
130
|
-
one argument in a command line, escaping all meta-characters.
|
|
131
|
-
Warning: under Windows, the output is only suitable for use
|
|
132
|
-
with programs that follow the standard Windows quoting
|
|
133
|
-
conventions.
|
|
134
|
-
*)
|
package/lib/ocaml/genlex.cmi
DELETED
|
Binary file
|
package/lib/ocaml/genlex.cmt
DELETED
|
Binary file
|
package/lib/ocaml/genlex.cmti
DELETED
|
Binary file
|
package/lib/ocaml/genlex.ml
DELETED
|
@@ -1,201 +0,0 @@
|
|
|
1
|
-
(**************************************************************************)
|
|
2
|
-
(* *)
|
|
3
|
-
(* OCaml *)
|
|
4
|
-
(* *)
|
|
5
|
-
(* Xavier Leroy, projet Cristal, INRIA Rocquencourt *)
|
|
6
|
-
(* *)
|
|
7
|
-
(* Copyright 1996 Institut National de Recherche en Informatique et *)
|
|
8
|
-
(* en Automatique. *)
|
|
9
|
-
(* *)
|
|
10
|
-
(* All rights reserved. This file is distributed under the terms of *)
|
|
11
|
-
(* the GNU Lesser General Public License version 2.1, with the *)
|
|
12
|
-
(* special exception on linking described in the file LICENSE. *)
|
|
13
|
-
(* *)
|
|
14
|
-
(**************************************************************************)
|
|
15
|
-
|
|
16
|
-
type token =
|
|
17
|
-
Kwd of string
|
|
18
|
-
| Ident of string
|
|
19
|
-
| Int of int
|
|
20
|
-
| Float of float
|
|
21
|
-
| String of string
|
|
22
|
-
| Char of char
|
|
23
|
-
|
|
24
|
-
(* The string buffering machinery *)
|
|
25
|
-
|
|
26
|
-
let initial_buffer = Bytes.create 32
|
|
27
|
-
|
|
28
|
-
let buffer = ref initial_buffer
|
|
29
|
-
let bufpos = ref 0
|
|
30
|
-
|
|
31
|
-
let reset_buffer () = buffer := initial_buffer; bufpos := 0
|
|
32
|
-
|
|
33
|
-
let store c =
|
|
34
|
-
if !bufpos >= Bytes.length !buffer then begin
|
|
35
|
-
let newbuffer = Bytes.create (2 * !bufpos) in
|
|
36
|
-
Bytes.blit !buffer 0 newbuffer 0 !bufpos;
|
|
37
|
-
buffer := newbuffer
|
|
38
|
-
end;
|
|
39
|
-
Bytes.set !buffer !bufpos c;
|
|
40
|
-
incr bufpos
|
|
41
|
-
|
|
42
|
-
let get_string () =
|
|
43
|
-
let s = Bytes.sub_string !buffer 0 !bufpos in buffer := initial_buffer; s
|
|
44
|
-
|
|
45
|
-
(* The lexer *)
|
|
46
|
-
|
|
47
|
-
let make_lexer keywords =
|
|
48
|
-
let kwd_table = Hashtbl.create 17 in
|
|
49
|
-
List.iter (fun s -> Hashtbl.add kwd_table s (Kwd s)) keywords;
|
|
50
|
-
let ident_or_keyword id =
|
|
51
|
-
try Hashtbl.find kwd_table id with
|
|
52
|
-
Not_found -> Ident id
|
|
53
|
-
and keyword_or_error c =
|
|
54
|
-
let s = String.make 1 c in
|
|
55
|
-
try Hashtbl.find kwd_table s with
|
|
56
|
-
Not_found -> raise (Stream.Error ("Illegal character " ^ s))
|
|
57
|
-
in
|
|
58
|
-
let rec next_token (strm__ : _ Stream.t) =
|
|
59
|
-
match Stream.peek strm__ with
|
|
60
|
-
Some (' ' | '\010' | '\013' | '\009' | '\026' | '\012') ->
|
|
61
|
-
Stream.junk strm__; next_token strm__
|
|
62
|
-
| Some ('A'..'Z' | 'a'..'z' | '_' | '\192'..'\255' as c) ->
|
|
63
|
-
Stream.junk strm__;
|
|
64
|
-
let s = strm__ in reset_buffer (); store c; ident s
|
|
65
|
-
| Some
|
|
66
|
-
('!' | '%' | '&' | '$' | '#' | '+' | '/' | ':' | '<' | '=' | '>' |
|
|
67
|
-
'?' | '@' | '\\' | '~' | '^' | '|' | '*' as c) ->
|
|
68
|
-
Stream.junk strm__;
|
|
69
|
-
let s = strm__ in reset_buffer (); store c; ident2 s
|
|
70
|
-
| Some ('0'..'9' as c) ->
|
|
71
|
-
Stream.junk strm__;
|
|
72
|
-
let s = strm__ in reset_buffer (); store c; number s
|
|
73
|
-
| Some '\'' ->
|
|
74
|
-
Stream.junk strm__;
|
|
75
|
-
let c =
|
|
76
|
-
try char strm__ with
|
|
77
|
-
Stream.Failure -> raise (Stream.Error "")
|
|
78
|
-
in
|
|
79
|
-
begin match Stream.peek strm__ with
|
|
80
|
-
Some '\'' -> Stream.junk strm__; Some (Char c)
|
|
81
|
-
| _ -> raise (Stream.Error "")
|
|
82
|
-
end
|
|
83
|
-
| Some '\"' ->
|
|
84
|
-
Stream.junk strm__;
|
|
85
|
-
let s = strm__ in reset_buffer (); Some (String (string s))
|
|
86
|
-
| Some '-' -> Stream.junk strm__; neg_number strm__
|
|
87
|
-
| Some '(' -> Stream.junk strm__; maybe_comment strm__
|
|
88
|
-
| Some c -> Stream.junk strm__; Some (keyword_or_error c)
|
|
89
|
-
| _ -> None
|
|
90
|
-
and ident (strm__ : _ Stream.t) =
|
|
91
|
-
match Stream.peek strm__ with
|
|
92
|
-
Some
|
|
93
|
-
('A'..'Z' | 'a'..'z' | '\192'..'\255' | '0'..'9' | '_' | '\'' as c) ->
|
|
94
|
-
Stream.junk strm__; let s = strm__ in store c; ident s
|
|
95
|
-
| _ -> Some (ident_or_keyword (get_string ()))
|
|
96
|
-
and ident2 (strm__ : _ Stream.t) =
|
|
97
|
-
match Stream.peek strm__ with
|
|
98
|
-
Some
|
|
99
|
-
('!' | '%' | '&' | '$' | '#' | '+' | '-' | '/' | ':' | '<' | '=' |
|
|
100
|
-
'>' | '?' | '@' | '\\' | '~' | '^' | '|' | '*' as c) ->
|
|
101
|
-
Stream.junk strm__; let s = strm__ in store c; ident2 s
|
|
102
|
-
| _ -> Some (ident_or_keyword (get_string ()))
|
|
103
|
-
and neg_number (strm__ : _ Stream.t) =
|
|
104
|
-
match Stream.peek strm__ with
|
|
105
|
-
Some ('0'..'9' as c) ->
|
|
106
|
-
Stream.junk strm__;
|
|
107
|
-
let s = strm__ in reset_buffer (); store '-'; store c; number s
|
|
108
|
-
| _ -> let s = strm__ in reset_buffer (); store '-'; ident2 s
|
|
109
|
-
and number (strm__ : _ Stream.t) =
|
|
110
|
-
match Stream.peek strm__ with
|
|
111
|
-
Some ('0'..'9' as c) ->
|
|
112
|
-
Stream.junk strm__; let s = strm__ in store c; number s
|
|
113
|
-
| Some '.' ->
|
|
114
|
-
Stream.junk strm__; let s = strm__ in store '.'; decimal_part s
|
|
115
|
-
| Some ('e' | 'E') ->
|
|
116
|
-
Stream.junk strm__; let s = strm__ in store 'E'; exponent_part s
|
|
117
|
-
| _ -> Some (Int (int_of_string (get_string ())))
|
|
118
|
-
and decimal_part (strm__ : _ Stream.t) =
|
|
119
|
-
match Stream.peek strm__ with
|
|
120
|
-
Some ('0'..'9' as c) ->
|
|
121
|
-
Stream.junk strm__; let s = strm__ in store c; decimal_part s
|
|
122
|
-
| Some ('e' | 'E') ->
|
|
123
|
-
Stream.junk strm__; let s = strm__ in store 'E'; exponent_part s
|
|
124
|
-
| _ -> Some (Float (float_of_string (get_string ())))
|
|
125
|
-
and exponent_part (strm__ : _ Stream.t) =
|
|
126
|
-
match Stream.peek strm__ with
|
|
127
|
-
Some ('+' | '-' as c) ->
|
|
128
|
-
Stream.junk strm__; let s = strm__ in store c; end_exponent_part s
|
|
129
|
-
| _ -> end_exponent_part strm__
|
|
130
|
-
and end_exponent_part (strm__ : _ Stream.t) =
|
|
131
|
-
match Stream.peek strm__ with
|
|
132
|
-
Some ('0'..'9' as c) ->
|
|
133
|
-
Stream.junk strm__; let s = strm__ in store c; end_exponent_part s
|
|
134
|
-
| _ -> Some (Float (float_of_string (get_string ())))
|
|
135
|
-
and string (strm__ : _ Stream.t) =
|
|
136
|
-
match Stream.peek strm__ with
|
|
137
|
-
Some '\"' -> Stream.junk strm__; get_string ()
|
|
138
|
-
| Some '\\' ->
|
|
139
|
-
Stream.junk strm__;
|
|
140
|
-
let c =
|
|
141
|
-
try escape strm__ with
|
|
142
|
-
Stream.Failure -> raise (Stream.Error "")
|
|
143
|
-
in
|
|
144
|
-
let s = strm__ in store c; string s
|
|
145
|
-
| Some c -> Stream.junk strm__; let s = strm__ in store c; string s
|
|
146
|
-
| _ -> raise Stream.Failure
|
|
147
|
-
and char (strm__ : _ Stream.t) =
|
|
148
|
-
match Stream.peek strm__ with
|
|
149
|
-
Some '\\' ->
|
|
150
|
-
Stream.junk strm__;
|
|
151
|
-
begin try escape strm__ with
|
|
152
|
-
Stream.Failure -> raise (Stream.Error "")
|
|
153
|
-
end
|
|
154
|
-
| Some c -> Stream.junk strm__; c
|
|
155
|
-
| _ -> raise Stream.Failure
|
|
156
|
-
and escape (strm__ : _ Stream.t) =
|
|
157
|
-
match Stream.peek strm__ with
|
|
158
|
-
Some 'n' -> Stream.junk strm__; '\n'
|
|
159
|
-
| Some 'r' -> Stream.junk strm__; '\r'
|
|
160
|
-
| Some 't' -> Stream.junk strm__; '\t'
|
|
161
|
-
| Some ('0'..'9' as c1) ->
|
|
162
|
-
Stream.junk strm__;
|
|
163
|
-
begin match Stream.peek strm__ with
|
|
164
|
-
Some ('0'..'9' as c2) ->
|
|
165
|
-
Stream.junk strm__;
|
|
166
|
-
begin match Stream.peek strm__ with
|
|
167
|
-
Some ('0'..'9' as c3) ->
|
|
168
|
-
Stream.junk strm__;
|
|
169
|
-
Char.chr
|
|
170
|
-
((Char.code c1 - 48) * 100 + (Char.code c2 - 48) * 10 +
|
|
171
|
-
(Char.code c3 - 48))
|
|
172
|
-
| _ -> raise (Stream.Error "")
|
|
173
|
-
end
|
|
174
|
-
| _ -> raise (Stream.Error "")
|
|
175
|
-
end
|
|
176
|
-
| Some c -> Stream.junk strm__; c
|
|
177
|
-
| _ -> raise Stream.Failure
|
|
178
|
-
and maybe_comment (strm__ : _ Stream.t) =
|
|
179
|
-
match Stream.peek strm__ with
|
|
180
|
-
Some '*' ->
|
|
181
|
-
Stream.junk strm__; let s = strm__ in comment s; next_token s
|
|
182
|
-
| _ -> Some (keyword_or_error '(')
|
|
183
|
-
and comment (strm__ : _ Stream.t) =
|
|
184
|
-
match Stream.peek strm__ with
|
|
185
|
-
Some '(' -> Stream.junk strm__; maybe_nested_comment strm__
|
|
186
|
-
| Some '*' -> Stream.junk strm__; maybe_end_comment strm__
|
|
187
|
-
| Some _ -> Stream.junk strm__; comment strm__
|
|
188
|
-
| _ -> raise Stream.Failure
|
|
189
|
-
and maybe_nested_comment (strm__ : _ Stream.t) =
|
|
190
|
-
match Stream.peek strm__ with
|
|
191
|
-
Some '*' -> Stream.junk strm__; let s = strm__ in comment s; comment s
|
|
192
|
-
| Some _ -> Stream.junk strm__; comment strm__
|
|
193
|
-
| _ -> raise Stream.Failure
|
|
194
|
-
and maybe_end_comment (strm__ : _ Stream.t) =
|
|
195
|
-
match Stream.peek strm__ with
|
|
196
|
-
Some ')' -> Stream.junk strm__; ()
|
|
197
|
-
| Some '*' -> Stream.junk strm__; maybe_end_comment strm__
|
|
198
|
-
| Some _ -> Stream.junk strm__; comment strm__
|
|
199
|
-
| _ -> raise Stream.Failure
|
|
200
|
-
in
|
|
201
|
-
fun input -> Stream.from (fun _count -> next_token input)
|
package/lib/ocaml/genlex.mli
DELETED
|
@@ -1,73 +0,0 @@
|
|
|
1
|
-
(**************************************************************************)
|
|
2
|
-
(* *)
|
|
3
|
-
(* OCaml *)
|
|
4
|
-
(* *)
|
|
5
|
-
(* Xavier Leroy, projet Cristal, INRIA Rocquencourt *)
|
|
6
|
-
(* *)
|
|
7
|
-
(* Copyright 1996 Institut National de Recherche en Informatique et *)
|
|
8
|
-
(* en Automatique. *)
|
|
9
|
-
(* *)
|
|
10
|
-
(* All rights reserved. This file is distributed under the terms of *)
|
|
11
|
-
(* the GNU Lesser General Public License version 2.1, with the *)
|
|
12
|
-
(* special exception on linking described in the file LICENSE. *)
|
|
13
|
-
(* *)
|
|
14
|
-
(**************************************************************************)
|
|
15
|
-
|
|
16
|
-
(** A generic lexical analyzer.
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
This module implements a simple 'standard' lexical analyzer, presented
|
|
20
|
-
as a function from character streams to token streams. It implements
|
|
21
|
-
roughly the lexical conventions of OCaml, but is parameterized by the
|
|
22
|
-
set of keywords of your language.
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
Example: a lexer suitable for a desk calculator is obtained by
|
|
26
|
-
{[ let lexer = make_lexer ["+";"-";"*";"/";"let";"="; "("; ")"] ]}
|
|
27
|
-
|
|
28
|
-
The associated parser would be a function from [token stream]
|
|
29
|
-
to, for instance, [int], and would have rules such as:
|
|
30
|
-
|
|
31
|
-
{[
|
|
32
|
-
let rec parse_expr = parser
|
|
33
|
-
| [< n1 = parse_atom; n2 = parse_remainder n1 >] -> n2
|
|
34
|
-
and parse_atom = parser
|
|
35
|
-
| [< 'Int n >] -> n
|
|
36
|
-
| [< 'Kwd "("; n = parse_expr; 'Kwd ")" >] -> n
|
|
37
|
-
and parse_remainder n1 = parser
|
|
38
|
-
| [< 'Kwd "+"; n2 = parse_expr >] -> n1+n2
|
|
39
|
-
| [< >] -> n1
|
|
40
|
-
]}
|
|
41
|
-
|
|
42
|
-
One should notice that the use of the [parser] keyword and associated
|
|
43
|
-
notation for streams are only available through camlp4 extensions. This
|
|
44
|
-
means that one has to preprocess its sources {i e. g.} by using the
|
|
45
|
-
["-pp"] command-line switch of the compilers.
|
|
46
|
-
*)
|
|
47
|
-
|
|
48
|
-
(** The type of tokens. The lexical classes are: [Int] and [Float]
|
|
49
|
-
for integer and floating-point numbers; [String] for
|
|
50
|
-
string literals, enclosed in double quotes; [Char] for
|
|
51
|
-
character literals, enclosed in single quotes; [Ident] for
|
|
52
|
-
identifiers (either sequences of letters, digits, underscores
|
|
53
|
-
and quotes, or sequences of 'operator characters' such as
|
|
54
|
-
[+], [*], etc); and [Kwd] for keywords (either identifiers or
|
|
55
|
-
single 'special characters' such as [(], [}], etc). *)
|
|
56
|
-
type token =
|
|
57
|
-
Kwd of string
|
|
58
|
-
| Ident of string
|
|
59
|
-
| Int of int
|
|
60
|
-
| Float of float
|
|
61
|
-
| String of string
|
|
62
|
-
| Char of char
|
|
63
|
-
|
|
64
|
-
val make_lexer : string list -> char Stream.t -> token Stream.t
|
|
65
|
-
(** Construct the lexer function. The first argument is the list of
|
|
66
|
-
keywords. An identifier [s] is returned as [Kwd s] if [s]
|
|
67
|
-
belongs to this list, and as [Ident s] otherwise.
|
|
68
|
-
A special character [s] is returned as [Kwd s] if [s]
|
|
69
|
-
belongs to this list, and cause a lexical error (exception
|
|
70
|
-
{!Stream.Error} with the offending lexeme as its parameter) otherwise.
|
|
71
|
-
Blanks and newlines are skipped. Comments delimited by [(*] and [*)]
|
|
72
|
-
are skipped as well, and can be nested. A {!Stream.Failure} exception
|
|
73
|
-
is raised if end of stream is unexpectedly reached.*)
|
|
@@ -1,214 +0,0 @@
|
|
|
1
|
-
(***********************************************************************)
|
|
2
|
-
(* *)
|
|
3
|
-
(* OCaml *)
|
|
4
|
-
(* *)
|
|
5
|
-
(* Xavier Leroy, projet Cristal, INRIA Rocquencourt *)
|
|
6
|
-
(* *)
|
|
7
|
-
(* Copyright 1996 Institut National de Recherche en Informatique et *)
|
|
8
|
-
(* en Automatique. All rights reserved. This file is distributed *)
|
|
9
|
-
(* under the terms of the GNU Library General Public License, with *)
|
|
10
|
-
(* the special exception on linking described in file ../LICENSE. *)
|
|
11
|
-
(* *)
|
|
12
|
-
(***********************************************************************)
|
|
13
|
-
(** Adapted by Hongbo Zhang, Authors of ReScript 2017 *)
|
|
14
|
-
|
|
15
|
-
#ifdef TYPE_STRING
|
|
16
|
-
type key = string
|
|
17
|
-
type seed = int
|
|
18
|
-
external caml_hash_mix_string : seed -> string -> seed = "?hash_mix_string"
|
|
19
|
-
external final_mix : seed -> seed = "?hash_final_mix"
|
|
20
|
-
let hash (s : key) =
|
|
21
|
-
final_mix (caml_hash_mix_string 0 s )
|
|
22
|
-
#elif defined TYPE_INT
|
|
23
|
-
type key = int
|
|
24
|
-
type seed = int
|
|
25
|
-
external caml_hash_mix_int : seed -> int -> seed = "?hash_mix_int"
|
|
26
|
-
external final_mix : seed -> seed = "?hash_final_mix"
|
|
27
|
-
let hash (s : key) =
|
|
28
|
-
final_mix (caml_hash_mix_int 0 s)
|
|
29
|
-
#else
|
|
30
|
-
[%error "unknown type"]
|
|
31
|
-
#endif
|
|
32
|
-
|
|
33
|
-
module N = Belt_internalBuckets
|
|
34
|
-
module C = Belt_internalBucketsType
|
|
35
|
-
module A = Belt_Array
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
type 'b t = (unit, unit, key,'b) N.t
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
let rec copyBucketReHash ~h_buckets ~ndata_tail (old_bucket : _ N.bucket C.opt ) =
|
|
42
|
-
match C.toOpt old_bucket with
|
|
43
|
-
| None -> ()
|
|
44
|
-
| Some cell ->
|
|
45
|
-
let nidx = hash cell.key land (A.length h_buckets - 1) in
|
|
46
|
-
let v = C.return cell in
|
|
47
|
-
begin match C.toOpt (A.getUnsafe ndata_tail nidx) with
|
|
48
|
-
| None ->
|
|
49
|
-
A.setUnsafe h_buckets nidx v
|
|
50
|
-
| Some tail ->
|
|
51
|
-
tail.N.next <- v (* cell put at the end *)
|
|
52
|
-
end;
|
|
53
|
-
A.setUnsafe ndata_tail nidx v;
|
|
54
|
-
copyBucketReHash ~h_buckets ~ndata_tail cell.next
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
let resize h =
|
|
58
|
-
let odata = h.C.buckets in
|
|
59
|
-
let osize = A.length odata in
|
|
60
|
-
let nsize = osize * 2 in
|
|
61
|
-
if nsize >= osize then begin (* no overflow *)
|
|
62
|
-
let h_buckets = A.makeUninitialized nsize in
|
|
63
|
-
let ndata_tail = A.makeUninitialized nsize in (* keep track of tail *)
|
|
64
|
-
h.C.buckets <- h_buckets; (* so that indexfun sees the new bucket count *)
|
|
65
|
-
for i = 0 to osize - 1 do
|
|
66
|
-
copyBucketReHash ~h_buckets ~ndata_tail (A.getUnsafe odata i)
|
|
67
|
-
done;
|
|
68
|
-
for i = 0 to nsize - 1 do
|
|
69
|
-
match C.toOpt (A.getUnsafe ndata_tail i) with
|
|
70
|
-
| None -> ()
|
|
71
|
-
| Some tail -> tail.next <- C.emptyOpt
|
|
72
|
-
done
|
|
73
|
-
end
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
let rec replaceInBucket (key : key) info cell =
|
|
77
|
-
if cell.N.key = key
|
|
78
|
-
then
|
|
79
|
-
begin
|
|
80
|
-
cell.N.value <- info;
|
|
81
|
-
false
|
|
82
|
-
end
|
|
83
|
-
else
|
|
84
|
-
match C.toOpt cell.next with
|
|
85
|
-
| None -> true
|
|
86
|
-
| Some cell ->
|
|
87
|
-
replaceInBucket key info cell
|
|
88
|
-
|
|
89
|
-
let set h (key : key) value =
|
|
90
|
-
let h_buckets = h.C.buckets in
|
|
91
|
-
let buckets_len = A.length h_buckets in
|
|
92
|
-
let i = hash key land (buckets_len - 1) in
|
|
93
|
-
let l = A.getUnsafe h_buckets i in
|
|
94
|
-
(match C.toOpt l with
|
|
95
|
-
| None ->
|
|
96
|
-
A.setUnsafe h_buckets i (C.return {N.key; value; next = C.emptyOpt});
|
|
97
|
-
h.C.size <- (h.C.size + 1);
|
|
98
|
-
| Some bucket ->
|
|
99
|
-
if replaceInBucket key value bucket then begin
|
|
100
|
-
A.setUnsafe h_buckets i (C.return {N.key; value; next = l});
|
|
101
|
-
h.C.size <- (h.C.size + 1);
|
|
102
|
-
end
|
|
103
|
-
);
|
|
104
|
-
if h.C.size > buckets_len lsl 1 then resize h
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
let rec removeInBucket h h_buckets i (key : key) prec buckets =
|
|
109
|
-
match C.toOpt buckets with
|
|
110
|
-
| None -> ()
|
|
111
|
-
| Some cell ->
|
|
112
|
-
let cell_next = cell.N.next in
|
|
113
|
-
if cell.N.key = key
|
|
114
|
-
then
|
|
115
|
-
begin
|
|
116
|
-
prec.N.next <-cell_next;
|
|
117
|
-
h.C.size <- (h.C.size - 1);
|
|
118
|
-
end
|
|
119
|
-
else removeInBucket h h_buckets i key cell cell_next
|
|
120
|
-
|
|
121
|
-
let remove h key =
|
|
122
|
-
let h_buckets = h.C.buckets in
|
|
123
|
-
let i = hash key land (A.length h_buckets - 1) in
|
|
124
|
-
let bucket = (A.getUnsafe h_buckets i) in
|
|
125
|
-
match C.toOpt bucket with
|
|
126
|
-
| None -> ()
|
|
127
|
-
| Some cell ->
|
|
128
|
-
if cell.N.key = key then
|
|
129
|
-
begin
|
|
130
|
-
A.setUnsafe h_buckets i cell.next;
|
|
131
|
-
h.C.size <- (h.C.size - 1)
|
|
132
|
-
end
|
|
133
|
-
else
|
|
134
|
-
removeInBucket h h_buckets i key cell cell.next
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
let rec getAux (key : key) buckets =
|
|
139
|
-
match C.toOpt buckets with
|
|
140
|
-
| None ->
|
|
141
|
-
None
|
|
142
|
-
| Some cell ->
|
|
143
|
-
if key = cell.N.key then Some cell.N.value
|
|
144
|
-
else getAux key cell.next
|
|
145
|
-
|
|
146
|
-
let get h (key : key) =
|
|
147
|
-
let h_buckets = h.C.buckets in
|
|
148
|
-
let nid = hash key land (A.length h_buckets - 1) in
|
|
149
|
-
match C.toOpt (A.getUnsafe h_buckets nid) with
|
|
150
|
-
| None -> None
|
|
151
|
-
| Some cell1 ->
|
|
152
|
-
if key = cell1.N.key then Some cell1.N.value else
|
|
153
|
-
match C.toOpt cell1.N.next with
|
|
154
|
-
| None -> None
|
|
155
|
-
| Some cell2 ->
|
|
156
|
-
if key = cell2.N.key then Some cell2.N.value else
|
|
157
|
-
match C.toOpt cell2.N.next with
|
|
158
|
-
| None -> None
|
|
159
|
-
| Some cell3 ->
|
|
160
|
-
if key = cell3.N.key then Some cell3.N.value
|
|
161
|
-
else getAux key cell3.N.next
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
let rec memInBucket (key : key) cell =
|
|
165
|
-
cell.N.key = key ||
|
|
166
|
-
(match C.toOpt cell.next with
|
|
167
|
-
| None -> false
|
|
168
|
-
| Some nextCell -> memInBucket key nextCell
|
|
169
|
-
)
|
|
170
|
-
|
|
171
|
-
let has h key =
|
|
172
|
-
let h_buckets = h.C.buckets in
|
|
173
|
-
let nid = hash key land (A.length h_buckets - 1) in
|
|
174
|
-
let bucket = A.getUnsafe h_buckets nid in
|
|
175
|
-
match C.toOpt bucket with
|
|
176
|
-
| None -> false
|
|
177
|
-
| Some bucket ->
|
|
178
|
-
memInBucket key bucket
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
let make ~hintSize = C.make ~hintSize ~hash:() ~eq:()
|
|
182
|
-
let clear = C.clear
|
|
183
|
-
let size h = h.C.size
|
|
184
|
-
let forEachU = N.forEachU
|
|
185
|
-
let forEach = N.forEach
|
|
186
|
-
let reduceU = N.reduceU
|
|
187
|
-
let reduce = N.reduce
|
|
188
|
-
let logStats = N.logStats
|
|
189
|
-
let keepMapInPlaceU = N.keepMapInPlaceU
|
|
190
|
-
let keepMapInPlace = N.keepMapInPlace
|
|
191
|
-
let toArray = N.toArray
|
|
192
|
-
let copy = N.copy
|
|
193
|
-
let keysToArray = N.keysToArray
|
|
194
|
-
let valuesToArray = N.valuesToArray
|
|
195
|
-
let getBucketHistogram = N.getBucketHistogram
|
|
196
|
-
let isEmpty = C.isEmpty
|
|
197
|
-
|
|
198
|
-
let fromArray arr =
|
|
199
|
-
let len = A.length arr in
|
|
200
|
-
let v = make ~hintSize:len in
|
|
201
|
-
for i = 0 to len - 1 do
|
|
202
|
-
let k,value = (A.getUnsafe arr i) in
|
|
203
|
-
set v k value
|
|
204
|
-
done ;
|
|
205
|
-
v
|
|
206
|
-
|
|
207
|
-
(* TOOD: optimize heuristics for resizing *)
|
|
208
|
-
let mergeMany h arr =
|
|
209
|
-
let len = A.length arr in
|
|
210
|
-
for i = 0 to len - 1 do
|
|
211
|
-
let k,v = (A.getUnsafe arr i) in
|
|
212
|
-
set h k v
|
|
213
|
-
done
|
|
214
|
-
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
#ifdef TYPE_STRING
|
|
2
|
-
type key = string
|
|
3
|
-
#elif defined TYPE_INT
|
|
4
|
-
type key = int
|
|
5
|
-
#else
|
|
6
|
-
[%error "unknown type"]
|
|
7
|
-
#endif
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
type 'b t
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
val make: hintSize:int -> 'b t
|
|
14
|
-
|
|
15
|
-
val clear: 'b t -> unit
|
|
16
|
-
|
|
17
|
-
val isEmpty: _ t -> bool
|
|
18
|
-
|
|
19
|
-
val set: 'a t -> key -> 'a -> unit
|
|
20
|
-
(**
|
|
21
|
-
`setDone tbl k v` if `k` does not exist,
|
|
22
|
-
add the binding `k,v`, otherwise, update the old value with the new
|
|
23
|
-
`v`
|
|
24
|
-
*)
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
val copy: 'a t -> 'a t
|
|
28
|
-
val get: 'a t -> key -> 'a option
|
|
29
|
-
|
|
30
|
-
val has: 'b t -> key -> bool
|
|
31
|
-
|
|
32
|
-
val remove: 'a t -> key -> unit
|
|
33
|
-
|
|
34
|
-
val forEachU: 'b t -> (key -> 'b -> unit [@bs]) -> unit
|
|
35
|
-
val forEach: 'b t -> (key -> 'b -> unit) -> unit
|
|
36
|
-
|
|
37
|
-
val reduceU: 'b t -> 'c -> ('c -> key -> 'b -> 'c [@bs]) -> 'c
|
|
38
|
-
val reduce: 'b t -> 'c -> ('c -> key -> 'b -> 'c) -> 'c
|
|
39
|
-
|
|
40
|
-
val keepMapInPlaceU: 'a t -> (key -> 'a -> 'a option [@bs]) -> unit
|
|
41
|
-
val keepMapInPlace: 'a t -> (key -> 'a -> 'a option) -> unit
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
val size: _ t -> int
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
val toArray: 'a t -> (key * 'a) array
|
|
48
|
-
val keysToArray: 'a t -> key array
|
|
49
|
-
val valuesToArray: 'a t -> 'a array
|
|
50
|
-
val fromArray: (key * 'a) array -> 'a t
|
|
51
|
-
val mergeMany: 'a t -> (key * 'a) array -> unit
|
|
52
|
-
val getBucketHistogram: _ t -> int array
|
|
53
|
-
val logStats: _ t -> unit
|
|
54
|
-
|