@tellahq/rescript 10.1.4-republish-2 → 10.1.4-republish-3
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/darwin/bsb_helper.exe +0 -0
- package/darwin/bsc.exe +0 -0
- package/darwin/ninja.exe +0 -0
- package/darwin/rescript.exe +0 -0
- 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/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 +359 -0
- package/lib/ocaml/arg.mli +185 -0
- 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 +307 -0
- package/lib/ocaml/array.mli +275 -0
- 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 +307 -0
- package/lib/ocaml/arrayLabels.mli +276 -0
- package/lib/ocaml/belt.cmi +0 -0
- package/lib/ocaml/belt.cmt +0 -0
- package/lib/ocaml/belt.ml +352 -0
- 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 +525 -0
- package/lib/ocaml/belt_Array.mli +707 -0
- 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 +50 -0
- package/lib/ocaml/belt_Float.mli +106 -0
- 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 +226 -0
- package/lib/ocaml/belt_HashMap.mli +436 -0
- 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 +206 -0
- package/lib/ocaml/belt_HashMapInt.mli +50 -0
- 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 +206 -0
- package/lib/ocaml/belt_HashMapString.mli +50 -0
- 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 +196 -0
- package/lib/ocaml/belt_HashSet.mli +125 -0
- 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 +155 -0
- package/lib/ocaml/belt_HashSetInt.mli +74 -0
- 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 +156 -0
- package/lib/ocaml/belt_HashSetString.mli +74 -0
- 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 +133 -0
- package/lib/ocaml/belt_Id.mli +171 -0
- 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 +50 -0
- package/lib/ocaml/belt_Int.mli +103 -0
- 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 +803 -0
- package/lib/ocaml/belt_List.mli +844 -0
- 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 +170 -0
- package/lib/ocaml/belt_Map.mli +496 -0
- 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 +278 -0
- package/lib/ocaml/belt_MapDict.mli +268 -0
- 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 +169 -0
- package/lib/ocaml/belt_MapInt.mli +187 -0
- 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 +169 -0
- package/lib/ocaml/belt_MapString.mli +187 -0
- 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 +241 -0
- package/lib/ocaml/belt_MutableMap.mli +145 -0
- 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 +172 -0
- package/lib/ocaml/belt_MutableMapInt.mli +135 -0
- 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 +172 -0
- package/lib/ocaml/belt_MutableMapString.mli +135 -0
- 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 +222 -0
- package/lib/ocaml/belt_MutableQueue.mli +116 -0
- 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 +371 -0
- package/lib/ocaml/belt_MutableSet.mli +617 -0
- 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 +342 -0
- package/lib/ocaml/belt_MutableSetInt.mli +124 -0
- 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 +342 -0
- package/lib/ocaml/belt_MutableSetString.mli +124 -0
- 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 +106 -0
- package/lib/ocaml/belt_MutableStack.mli +63 -0
- 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 +93 -0
- package/lib/ocaml/belt_Option.mli +270 -0
- 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 +76 -0
- package/lib/ocaml/belt_Range.mli +114 -0
- 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 +75 -0
- package/lib/ocaml/belt_Result.mli +205 -0
- 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 +205 -0
- package/lib/ocaml/belt_Set.cppo.mli +153 -0
- package/lib/ocaml/belt_Set.ml +164 -0
- package/lib/ocaml/belt_Set.mli +523 -0
- 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 +237 -0
- package/lib/ocaml/belt_SetDict.mli +567 -0
- 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 +201 -0
- package/lib/ocaml/belt_SetInt.mli +151 -0
- 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 +201 -0
- package/lib/ocaml/belt_SetString.mli +151 -0
- 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 +322 -0
- package/lib/ocaml/belt_SortArray.mli +146 -0
- 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 +263 -0
- package/lib/ocaml/belt_SortArrayInt.mli +93 -0
- 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 +263 -0
- package/lib/ocaml/belt_SortArrayString.mli +93 -0
- package/lib/ocaml/belt_internalAVLset.cmt +0 -0
- package/lib/ocaml/belt_internalAVLset.cmti +0 -0
- package/lib/ocaml/belt_internalAVLset.ml +665 -0
- package/lib/ocaml/belt_internalAVLset.mli +124 -0
- package/lib/ocaml/belt_internalAVLtree.cmt +0 -0
- package/lib/ocaml/belt_internalAVLtree.cmti +0 -0
- package/lib/ocaml/belt_internalAVLtree.ml +762 -0
- package/lib/ocaml/belt_internalAVLtree.mli +215 -0
- package/lib/ocaml/belt_internalBuckets.cmt +0 -0
- package/lib/ocaml/belt_internalBuckets.cmti +0 -0
- package/lib/ocaml/belt_internalBuckets.ml +218 -0
- package/lib/ocaml/belt_internalBuckets.mli +57 -0
- package/lib/ocaml/belt_internalBucketsType.cmt +0 -0
- package/lib/ocaml/belt_internalBucketsType.cmti +0 -0
- package/lib/ocaml/belt_internalBucketsType.ml +59 -0
- package/lib/ocaml/belt_internalBucketsType.mli +46 -0
- package/lib/ocaml/belt_internalMapInt.cmt +0 -0
- package/lib/ocaml/belt_internalMapInt.ml +227 -0
- package/lib/ocaml/belt_internalMapString.cmt +0 -0
- package/lib/ocaml/belt_internalMapString.ml +227 -0
- package/lib/ocaml/belt_internalSetBuckets.cmt +0 -0
- package/lib/ocaml/belt_internalSetBuckets.cmti +0 -0
- package/lib/ocaml/belt_internalSetBuckets.ml +157 -0
- package/lib/ocaml/belt_internalSetBuckets.mli +47 -0
- package/lib/ocaml/belt_internalSetInt.cmt +0 -0
- package/lib/ocaml/belt_internalSetInt.ml +129 -0
- package/lib/ocaml/belt_internalSetString.cmt +0 -0
- package/lib/ocaml/belt_internalSetString.ml +129 -0
- package/lib/ocaml/belt_internals.cmti +0 -0
- package/lib/ocaml/belt_internals.mli +79 -0
- 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 +250 -0
- package/lib/ocaml/buffer.mli +149 -0
- 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 +431 -0
- package/lib/ocaml/bytes.mli +430 -0
- 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 +428 -0
- package/lib/ocaml/bytesLabels.mli +276 -0
- 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 +20 -0
- package/lib/ocaml/callback.mli +34 -0
- 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 +89 -0
- package/lib/ocaml/camlinternalLazy.mli +27 -0
- 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 +21 -0
- package/lib/ocaml/camlinternalMod.mli +25 -0
- 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 +76 -0
- package/lib/ocaml/char.mli +72 -0
- 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 +87 -0
- package/lib/ocaml/complex.mli +86 -0
- 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 +66 -0
- package/lib/ocaml/digest.mli +68 -0
- package/lib/ocaml/dom.cmi +0 -0
- package/lib/ocaml/dom.cmt +0 -0
- package/lib/ocaml/dom.ml +296 -0
- package/lib/ocaml/dom_storage.cmi +0 -0
- package/lib/ocaml/dom_storage.cmt +0 -0
- package/lib/ocaml/dom_storage.ml +22 -0
- package/lib/ocaml/dom_storage2.cmi +0 -0
- package/lib/ocaml/dom_storage2.cmt +0 -0
- package/lib/ocaml/dom_storage2.ml +11 -0
- 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 +233 -0
- package/lib/ocaml/filename.mli +134 -0
- 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 +201 -0
- package/lib/ocaml/genlex.mli +73 -0
- package/lib/ocaml/hashmap.cppo.ml +214 -0
- package/lib/ocaml/hashmap.cppo.mli +54 -0
- package/lib/ocaml/hashset.cppo.ml +165 -0
- package/lib/ocaml/hashset.cppo.mli +77 -0
- 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 +541 -0
- package/lib/ocaml/hashtbl.mli +411 -0
- package/lib/ocaml/hashtblLabels.cmi +0 -0
- package/lib/ocaml/hashtblLabels.cmt +0 -0
- package/lib/ocaml/hashtblLabels.ml +130 -0
- 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 +64 -0
- package/lib/ocaml/int32.mli +186 -0
- 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 +72 -0
- package/lib/ocaml/int64.mli +197 -0
- package/lib/ocaml/internal_map.cppo.ml +230 -0
- package/lib/ocaml/internal_set.cppo.ml +134 -0
- package/lib/ocaml/js.cmi +0 -0
- package/lib/ocaml/js.cmt +0 -0
- package/lib/ocaml/js.ml +316 -0
- package/lib/ocaml/js_OO.cmi +0 -0
- package/lib/ocaml/js_OO.cmt +0 -0
- package/lib/ocaml/js_OO.ml +180 -0
- package/lib/ocaml/js_array.cmi +0 -0
- package/lib/ocaml/js_array.cmt +0 -0
- package/lib/ocaml/js_array.ml +970 -0
- package/lib/ocaml/js_array2.cmi +0 -0
- package/lib/ocaml/js_array2.cmt +0 -0
- package/lib/ocaml/js_array2.ml +1065 -0
- package/lib/ocaml/js_bigint.cmi +0 -0
- package/lib/ocaml/js_bigint.cmt +0 -0
- package/lib/ocaml/js_bigint.ml +3 -0
- 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 +29 -0
- package/lib/ocaml/js_cast.mli +45 -0
- package/lib/ocaml/js_console.cmi +0 -0
- package/lib/ocaml/js_console.cmt +0 -0
- package/lib/ocaml/js_console.ml +51 -0
- package/lib/ocaml/js_date.cmi +0 -0
- package/lib/ocaml/js_date.cmt +0 -0
- package/lib/ocaml/js_date.ml +1263 -0
- 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 +114 -0
- package/lib/ocaml/js_dict.mli +152 -0
- 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 +102 -0
- package/lib/ocaml/js_exn.mli +79 -0
- package/lib/ocaml/js_float.cmi +0 -0
- package/lib/ocaml/js_float.cmt +0 -0
- package/lib/ocaml/js_float.ml +294 -0
- package/lib/ocaml/js_global.cmi +0 -0
- package/lib/ocaml/js_global.cmt +0 -0
- package/lib/ocaml/js_global.ml +185 -0
- package/lib/ocaml/js_int.cmi +0 -0
- package/lib/ocaml/js_int.cmt +0 -0
- package/lib/ocaml/js_int.ml +158 -0
- 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 +195 -0
- package/lib/ocaml/js_json.mli +244 -0
- 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 +174 -0
- package/lib/ocaml/js_list.mli +72 -0
- package/lib/ocaml/js_map.cmi +0 -0
- package/lib/ocaml/js_map.cmt +0 -0
- package/lib/ocaml/js_map.ml +3 -0
- 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 +50 -0
- package/lib/ocaml/js_mapperRt.mli +44 -0
- package/lib/ocaml/js_math.cmi +0 -0
- package/lib/ocaml/js_math.cmt +0 -0
- package/lib/ocaml/js_math.ml +626 -0
- 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 +57 -0
- package/lib/ocaml/js_null.mli +87 -0
- 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 +50 -0
- package/lib/ocaml/js_null_undefined.mli +85 -0
- package/lib/ocaml/js_obj.cmi +0 -0
- package/lib/ocaml/js_obj.cmt +0 -0
- package/lib/ocaml/js_obj.ml +100 -0
- 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 +203 -0
- package/lib/ocaml/js_option.mli +52 -0
- package/lib/ocaml/js_promise.cmi +0 -0
- package/lib/ocaml/js_promise.cmt +0 -0
- package/lib/ocaml/js_promise.ml +100 -0
- package/lib/ocaml/js_promise2.cmi +0 -0
- package/lib/ocaml/js_promise2.cmt +0 -0
- package/lib/ocaml/js_promise2.res +58 -0
- package/lib/ocaml/js_re.cmi +0 -0
- package/lib/ocaml/js_re.cmt +0 -0
- package/lib/ocaml/js_re.ml +184 -0
- 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 +28 -0
- package/lib/ocaml/js_result.mli +28 -0
- package/lib/ocaml/js_set.cmi +0 -0
- package/lib/ocaml/js_set.cmt +0 -0
- package/lib/ocaml/js_set.ml +3 -0
- package/lib/ocaml/js_string.cmi +0 -0
- package/lib/ocaml/js_string.cmt +0 -0
- package/lib/ocaml/js_string.ml +914 -0
- package/lib/ocaml/js_string2.cmi +0 -0
- package/lib/ocaml/js_string2.cmt +0 -0
- package/lib/ocaml/js_string2.ml +912 -0
- 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 +429 -0
- package/lib/ocaml/js_typed_array.ml +1405 -0
- 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 +296 -0
- package/lib/ocaml/js_typed_array2.ml +1269 -0
- 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 +118 -0
- package/lib/ocaml/js_types.mli +78 -0
- 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 +59 -0
- package/lib/ocaml/js_undefined.mli +92 -0
- 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 +143 -0
- package/lib/ocaml/js_vector.mli +92 -0
- package/lib/ocaml/js_weakmap.cmi +0 -0
- package/lib/ocaml/js_weakmap.cmt +0 -0
- package/lib/ocaml/js_weakmap.ml +3 -0
- package/lib/ocaml/js_weakset.cmi +0 -0
- package/lib/ocaml/js_weakset.cmt +0 -0
- package/lib/ocaml/js_weakset.ml +3 -0
- package/lib/ocaml/jsx.cmi +0 -0
- package/lib/ocaml/jsx.cmt +0 -0
- package/lib/ocaml/jsx.res +40 -0
- package/lib/ocaml/jsxDOM.cmi +0 -0
- package/lib/ocaml/jsxDOM.cmt +0 -0
- package/lib/ocaml/jsxDOM.res +620 -0
- package/lib/ocaml/jsxDOMStyle.cmi +0 -0
- package/lib/ocaml/jsxDOMStyle.cmt +0 -0
- package/lib/ocaml/jsxDOMStyle.ml +781 -0
- package/lib/ocaml/jsxEvent.cmi +0 -0
- package/lib/ocaml/jsxEvent.cmt +0 -0
- package/lib/ocaml/jsxEvent.ml +358 -0
- package/lib/ocaml/jsxPPXReactSupport.cmi +0 -0
- package/lib/ocaml/jsxPPXReactSupport.cmt +0 -0
- package/lib/ocaml/jsxPPXReactSupport.res +48 -0
- 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 +70 -0
- package/lib/ocaml/lazy.mli +95 -0
- 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 +230 -0
- package/lib/ocaml/lexing.mli +172 -0
- 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 +485 -0
- package/lib/ocaml/list.mli +347 -0
- 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 +485 -0
- package/lib/ocaml/listLabels.mli +353 -0
- 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 +174 -0
- package/lib/ocaml/map.cppo.mli +191 -0
- package/lib/ocaml/map.ml +480 -0
- package/lib/ocaml/map.mli +315 -0
- package/lib/ocaml/mapLabels.cmi +0 -0
- package/lib/ocaml/mapLabels.cmt +0 -0
- package/lib/ocaml/mapLabels.ml +480 -0
- package/lib/ocaml/mapm.cppo.ml +177 -0
- package/lib/ocaml/mapm.cppo.mli +138 -0
- 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 +22 -0
- package/lib/ocaml/moreLabels.mli +198 -0
- package/lib/ocaml/node.cmi +0 -0
- package/lib/ocaml/node.cmt +0 -0
- package/lib/ocaml/node.ml +84 -0
- package/lib/ocaml/node_buffer.cmi +0 -0
- package/lib/ocaml/node_buffer.cmt +0 -0
- package/lib/ocaml/node_buffer.ml +47 -0
- 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 +50 -0
- package/lib/ocaml/node_fs.cmi +0 -0
- package/lib/ocaml/node_fs.cmt +0 -0
- package/lib/ocaml/node_fs.ml +153 -0
- package/lib/ocaml/node_module.cmi +0 -0
- package/lib/ocaml/node_module.cmt +0 -0
- package/lib/ocaml/node_module.ml +29 -0
- package/lib/ocaml/node_path.cmi +0 -0
- package/lib/ocaml/node_path.cmt +0 -0
- package/lib/ocaml/node_path.ml +71 -0
- 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 +59 -0
- package/lib/ocaml/node_process.mli +48 -0
- 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 +29 -0
- package/lib/ocaml/obj.mli +62 -0
- 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 +212 -0
- package/lib/ocaml/parsing.mli +105 -0
- 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 +297 -0
- package/lib/ocaml/pervasives.mli +771 -0
- 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 +75 -0
- package/lib/ocaml/printexc.mli +57 -0
- 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 +132 -0
- package/lib/ocaml/queue.mli +82 -0
- 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 +273 -0
- package/lib/ocaml/random.mli +102 -0
- 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 +526 -0
- package/lib/ocaml/set.mli +266 -0
- package/lib/ocaml/setLabels.cmi +0 -0
- package/lib/ocaml/setLabels.cmt +0 -0
- package/lib/ocaml/setLabels.ml +526 -0
- package/lib/ocaml/setm.cppo.ml +346 -0
- package/lib/ocaml/setm.cppo.mli +126 -0
- 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 +267 -0
- package/lib/ocaml/sort.cppo.mli +96 -0
- package/lib/ocaml/sort.ml +99 -0
- package/lib/ocaml/sort.mli +44 -0
- 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 +44 -0
- package/lib/ocaml/stack.mli +63 -0
- 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 +24 -0
- package/lib/ocaml/stdLabels.mli +29 -0
- 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 +213 -0
- package/lib/ocaml/stream.mli +108 -0
- 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 +190 -0
- package/lib/ocaml/string.mli +286 -0
- 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 +190 -0
- package/lib/ocaml/stringLabels.mli +241 -0
- 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 +135 -0
- package/lib/ocaml/sys.mli +333 -0
- 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 +58 -0
- package/lib/ocaml/uchar.mli +98 -0
- package/linux/bsb_helper.exe +0 -0
- package/linux/bsc.exe +0 -0
- package/linux/ninja.exe +0 -0
- package/linux/rescript.exe +0 -0
- package/ninja.COPYING +202 -0
- package/package.json +1 -1
- package/vendor/ninja.tar.gz +0 -0
- package/win32/bsb_helper.exe +0 -0
- package/win32/bsc.exe +0 -0
- package/win32/ninja.exe +0 -0
- package/win32/refmt.exe +0 -0
- package/win32/rescript.exe +0 -0
|
@@ -0,0 +1,186 @@
|
|
|
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
|
+
(** 32-bit integers.
|
|
17
|
+
|
|
18
|
+
This module provides operations on the type [t]
|
|
19
|
+
of signed 32-bit integers. Unlike the built-in [int] type,
|
|
20
|
+
the type [t] is guaranteed to be exactly 32-bit wide on all
|
|
21
|
+
platforms. All arithmetic operations over [t] are taken
|
|
22
|
+
modulo 2{^32}.
|
|
23
|
+
|
|
24
|
+
Performance notice: values of type [t] occupy more memory
|
|
25
|
+
space than values of type [int], and arithmetic operations on
|
|
26
|
+
[t] are generally slower than those on [int]. Use [t]
|
|
27
|
+
only when the application requires exact 32-bit arithmetic. *)
|
|
28
|
+
type t = int
|
|
29
|
+
(** An alias for the type of 32-bit integers. *)
|
|
30
|
+
|
|
31
|
+
val zero : t
|
|
32
|
+
(** The 32-bit integer 0. *)
|
|
33
|
+
|
|
34
|
+
val one : t
|
|
35
|
+
(** The 32-bit integer 1. *)
|
|
36
|
+
|
|
37
|
+
val minus_one : t
|
|
38
|
+
(** The 32-bit integer -1. *)
|
|
39
|
+
|
|
40
|
+
external neg : t -> t = "%negint"
|
|
41
|
+
(** Unary negation. *)
|
|
42
|
+
|
|
43
|
+
external add : t -> t -> t = "%addint"
|
|
44
|
+
(** Addition. *)
|
|
45
|
+
|
|
46
|
+
external sub : t -> t -> t = "%subint"
|
|
47
|
+
(** Subtraction. *)
|
|
48
|
+
|
|
49
|
+
external mul : t -> t -> t = "%mulint"
|
|
50
|
+
(** Multiplication. *)
|
|
51
|
+
|
|
52
|
+
external div : t -> t -> t = "%divint"
|
|
53
|
+
(** Integer division. Raise [Division_by_zero] if the second
|
|
54
|
+
argument is zero. This division rounds the real quotient of
|
|
55
|
+
its arguments towards zero, as specified for {!Pervasives.(/)}. *)
|
|
56
|
+
|
|
57
|
+
external rem : t -> t -> t = "%modint"
|
|
58
|
+
(** Integer remainder. If [y] is not zero, the result
|
|
59
|
+
of [Int32.rem x y] satisfies the following property:
|
|
60
|
+
[x = Int32.add (Int32.mul (Int32.div x y) y) (Int32.rem x y)].
|
|
61
|
+
If [y = 0], [Int32.rem x y] raises [Division_by_zero]. *)
|
|
62
|
+
|
|
63
|
+
val succ : t -> t
|
|
64
|
+
(** Successor. [Int32.succ x] is [Int32.add x Int32.one]. *)
|
|
65
|
+
|
|
66
|
+
val pred : t -> t
|
|
67
|
+
(** Predecessor. [Int32.pred x] is [Int32.sub x Int32.one]. *)
|
|
68
|
+
|
|
69
|
+
val abs : t -> t
|
|
70
|
+
(** Return the absolute value of its argument. *)
|
|
71
|
+
|
|
72
|
+
val max_int : t
|
|
73
|
+
(** The greatest representable 32-bit integer, 2{^31} - 1. *)
|
|
74
|
+
|
|
75
|
+
val min_int : t
|
|
76
|
+
(** The smallest representable 32-bit integer, -2{^31}. *)
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
external logand : t -> t -> t = "%andint"
|
|
80
|
+
(** Bitwise logical and. *)
|
|
81
|
+
|
|
82
|
+
external logor : t -> t -> t = "%orint"
|
|
83
|
+
(** Bitwise logical or. *)
|
|
84
|
+
|
|
85
|
+
external logxor : t -> t -> t = "%xorint"
|
|
86
|
+
(** Bitwise logical exclusive or. *)
|
|
87
|
+
|
|
88
|
+
val lognot : t -> t
|
|
89
|
+
(** Bitwise logical negation. *)
|
|
90
|
+
|
|
91
|
+
external shift_left : t -> int -> t = "%lslint"
|
|
92
|
+
(** [Int32.shift_left x y] shifts [x] to the left by [y] bits.
|
|
93
|
+
The result is unspecified if [y < 0] or [y >= 32]. *)
|
|
94
|
+
|
|
95
|
+
external shift_right : t -> int -> t = "%asrint"
|
|
96
|
+
(** [Int32.shift_right x y] shifts [x] to the right by [y] bits.
|
|
97
|
+
This is an arithmetic shift: the sign bit of [x] is replicated
|
|
98
|
+
and inserted in the vacated bits.
|
|
99
|
+
The result is unspecified if [y < 0] or [y >= 32]. *)
|
|
100
|
+
|
|
101
|
+
external shift_right_logical : t -> int -> t = "%lsrint"
|
|
102
|
+
(** [Int32.shift_right_logical x y] shifts [x] to the right by [y] bits.
|
|
103
|
+
This is a logical shift: zeroes are inserted in the vacated bits
|
|
104
|
+
regardless of the sign of [x].
|
|
105
|
+
The result is unspecified if [y < 0] or [y >= 32]. *)
|
|
106
|
+
|
|
107
|
+
external of_int : int -> t = "%identity"
|
|
108
|
+
(** Convert the given integer (type [int]) to a 32-bit integer
|
|
109
|
+
(type [t]). *)
|
|
110
|
+
|
|
111
|
+
external to_int : t -> int = "%identity"
|
|
112
|
+
(** Convert the given 32-bit integer (type [t]) to an
|
|
113
|
+
integer (type [int]). On 32-bit platforms, the 32-bit integer
|
|
114
|
+
is taken modulo 2{^31}, i.e. the high-order bit is lost
|
|
115
|
+
during the conversion. On 64-bit platforms, the conversion
|
|
116
|
+
is exact. *)
|
|
117
|
+
|
|
118
|
+
external of_float : float -> t
|
|
119
|
+
= "?int_of_float"
|
|
120
|
+
(** Convert the given floating-point number to a 32-bit integer,
|
|
121
|
+
discarding the fractional part (truncate towards 0).
|
|
122
|
+
The result of the conversion is undefined if, after truncation,
|
|
123
|
+
the number is outside the range \[{!Int32.min_int}, {!Int32.max_int}\]. *)
|
|
124
|
+
|
|
125
|
+
external to_float : t -> float
|
|
126
|
+
= "?int_to_float"
|
|
127
|
+
(** Convert the given 32-bit integer to a floating-point number. *)
|
|
128
|
+
|
|
129
|
+
external of_string : string -> t = "?int_of_string"
|
|
130
|
+
(** Convert the given string to a 32-bit integer.
|
|
131
|
+
The string is read in decimal (by default, or if the string
|
|
132
|
+
begins with [0u]) or in hexadecimal, octal or binary if the
|
|
133
|
+
string begins with [0x], [0o] or [0b] respectively.
|
|
134
|
+
|
|
135
|
+
The [0u] prefix reads the input as an unsigned integer in the range
|
|
136
|
+
[[0, 2*Int32.max_int+1]]. If the input exceeds {!Int32.max_int}
|
|
137
|
+
it is converted to the signed integer
|
|
138
|
+
[Int32.min_int + input - Int32.max_int - 1].
|
|
139
|
+
|
|
140
|
+
The [_] (underscore) character can appear anywhere in the string
|
|
141
|
+
and is ignored.
|
|
142
|
+
Raise [Failure "Int32.of_string"] if the given string is not
|
|
143
|
+
a valid representation of an integer, or if the integer represented
|
|
144
|
+
exceeds the range of integers representable in type [t]. *)
|
|
145
|
+
|
|
146
|
+
val of_string_opt: string -> t option
|
|
147
|
+
(** Same as [of_string], but return [None] instead of raising.
|
|
148
|
+
@since 4.05 *)
|
|
149
|
+
|
|
150
|
+
|
|
151
|
+
val to_string : t -> string
|
|
152
|
+
(** Return the string representation of its argument, in signed decimal. *)
|
|
153
|
+
|
|
154
|
+
external bits_of_float : float -> t
|
|
155
|
+
= "?int_bits_of_float"
|
|
156
|
+
(** Return the internal representation of the given float according
|
|
157
|
+
to the IEEE 754 floating-point 'single format' bit layout.
|
|
158
|
+
Bit 31 of the result represents the sign of the float;
|
|
159
|
+
bits 30 to 23 represent the (biased) exponent; bits 22 to 0
|
|
160
|
+
represent the mantissa. *)
|
|
161
|
+
|
|
162
|
+
external float_of_bits : t -> float
|
|
163
|
+
= "?int_float_of_bits"
|
|
164
|
+
(** Return the floating-point number whose internal representation,
|
|
165
|
+
according to the IEEE 754 floating-point 'single format' bit layout,
|
|
166
|
+
is the given [t]. *)
|
|
167
|
+
|
|
168
|
+
|
|
169
|
+
|
|
170
|
+
val compare: t -> t -> int
|
|
171
|
+
(** The comparison function for 32-bit integers, with the same specification as
|
|
172
|
+
{!Pervasives.compare}. Along with the type [t], this function [compare]
|
|
173
|
+
allows the module [Int32] to be passed as argument to the functors
|
|
174
|
+
{!Set.Make} and {!Map.Make}. *)
|
|
175
|
+
|
|
176
|
+
val equal: t -> t -> bool
|
|
177
|
+
(** The equal function for int32s.
|
|
178
|
+
@since 4.03.0 *)
|
|
179
|
+
|
|
180
|
+
(**/**)
|
|
181
|
+
|
|
182
|
+
(** {1 Deprecated functions} *)
|
|
183
|
+
|
|
184
|
+
external format : string -> t -> string = "?format_int"
|
|
185
|
+
(** Do not use this deprecated function. Instead,
|
|
186
|
+
used {!Printf.sprintf} with a [%l...] format. *)
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,72 @@
|
|
|
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
|
+
(* Module [Int64]: 64-bit integers *)
|
|
17
|
+
|
|
18
|
+
external neg : int64 -> int64 = "%int64_neg"
|
|
19
|
+
external add : int64 -> int64 -> int64 = "%int64_add"
|
|
20
|
+
external sub : int64 -> int64 -> int64 = "%int64_sub"
|
|
21
|
+
external mul : int64 -> int64 -> int64 = "%int64_mul"
|
|
22
|
+
external div : int64 -> int64 -> int64 = "%int64_div"
|
|
23
|
+
external rem : int64 -> int64 -> int64 = "%int64_mod"
|
|
24
|
+
external logand : int64 -> int64 -> int64 = "%int64_and"
|
|
25
|
+
external logor : int64 -> int64 -> int64 = "%int64_or"
|
|
26
|
+
external logxor : int64 -> int64 -> int64 = "%int64_xor"
|
|
27
|
+
external shift_left : int64 -> int -> int64 = "%int64_lsl"
|
|
28
|
+
external shift_right : int64 -> int -> int64 = "%int64_asr"
|
|
29
|
+
external shift_right_logical : int64 -> int -> int64 = "%int64_lsr"
|
|
30
|
+
external of_int : int -> int64 = "%int64_of_int"
|
|
31
|
+
external to_int : int64 -> int = "%int64_to_int"
|
|
32
|
+
external of_float : float -> int64
|
|
33
|
+
= "?int64_of_float"
|
|
34
|
+
external to_float : int64 -> float
|
|
35
|
+
= "?int64_to_float"
|
|
36
|
+
external of_int32 : int -> int64 = "%int64_of_int32"
|
|
37
|
+
external to_int32 : int64 -> int = "%int64_to_int32"
|
|
38
|
+
|
|
39
|
+
let zero = 0L
|
|
40
|
+
let one = 1L
|
|
41
|
+
let minus_one = -1L
|
|
42
|
+
(* let succ n = add n 1L *)
|
|
43
|
+
external succ : int64 -> int64 = "?int64_succ"
|
|
44
|
+
let pred n = sub n 1L
|
|
45
|
+
let abs n = if n >= 0L then n else neg n
|
|
46
|
+
let min_int = 0x8000000000000000L
|
|
47
|
+
let max_int = 0x7FFFFFFFFFFFFFFFL
|
|
48
|
+
let lognot n = logxor n (-1L)
|
|
49
|
+
|
|
50
|
+
external format : string -> int64 -> string = "?int64_format"
|
|
51
|
+
external to_string : int64 -> string = "?int64_to_string"
|
|
52
|
+
|
|
53
|
+
external of_string : string -> int64 = "?int64_of_string"
|
|
54
|
+
|
|
55
|
+
let of_string_opt s =
|
|
56
|
+
(* TODO: expose a non-raising primitive directly. *)
|
|
57
|
+
try Some (of_string s)
|
|
58
|
+
with Failure _ -> None
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
external bits_of_float : float -> int64
|
|
63
|
+
= "?int64_bits_of_float"
|
|
64
|
+
|
|
65
|
+
external float_of_bits : int64 -> float
|
|
66
|
+
= "?int64_float_of_bits"
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
type t = int64
|
|
70
|
+
|
|
71
|
+
let compare (x: t) (y: t) = Pervasives.compare x y
|
|
72
|
+
let equal (x: t) (y: t) = compare x y = 0
|
|
@@ -0,0 +1,197 @@
|
|
|
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
|
+
(** 64-bit integers.
|
|
17
|
+
|
|
18
|
+
This module provides operations on the type [int64] of
|
|
19
|
+
signed 64-bit integers. Unlike the built-in [int] type,
|
|
20
|
+
the type [int64] is guaranteed to be exactly 64-bit wide on all
|
|
21
|
+
platforms. All arithmetic operations over [int64] are taken
|
|
22
|
+
modulo 2{^64}
|
|
23
|
+
|
|
24
|
+
Performance notice: values of type [int64] occupy more memory
|
|
25
|
+
space than values of type [int], and arithmetic operations on
|
|
26
|
+
[int64] are generally slower than those on [int]. Use [int64]
|
|
27
|
+
only when the application requires exact 64-bit arithmetic.
|
|
28
|
+
*)
|
|
29
|
+
|
|
30
|
+
val zero : int64
|
|
31
|
+
(** The 64-bit integer 0. *)
|
|
32
|
+
|
|
33
|
+
val one : int64
|
|
34
|
+
(** The 64-bit integer 1. *)
|
|
35
|
+
|
|
36
|
+
val minus_one : int64
|
|
37
|
+
(** The 64-bit integer -1. *)
|
|
38
|
+
|
|
39
|
+
external neg : int64 -> int64 = "%int64_neg"
|
|
40
|
+
(** Unary negation. *)
|
|
41
|
+
|
|
42
|
+
external add : int64 -> int64 -> int64 = "%int64_add"
|
|
43
|
+
(** Addition. *)
|
|
44
|
+
|
|
45
|
+
external sub : int64 -> int64 -> int64 = "%int64_sub"
|
|
46
|
+
(** Subtraction. *)
|
|
47
|
+
|
|
48
|
+
external mul : int64 -> int64 -> int64 = "%int64_mul"
|
|
49
|
+
(** Multiplication. *)
|
|
50
|
+
|
|
51
|
+
external div : int64 -> int64 -> int64 = "%int64_div"
|
|
52
|
+
(** Integer division. Raise [Division_by_zero] if the second
|
|
53
|
+
argument is zero. This division rounds the real quotient of
|
|
54
|
+
its arguments towards zero, as specified for {!Pervasives.(/)}. *)
|
|
55
|
+
|
|
56
|
+
external rem : int64 -> int64 -> int64 = "%int64_mod"
|
|
57
|
+
(** Integer remainder. If [y] is not zero, the result
|
|
58
|
+
of [Int64.rem x y] satisfies the following property:
|
|
59
|
+
[x = Int64.add (Int64.mul (Int64.div x y) y) (Int64.rem x y)].
|
|
60
|
+
If [y = 0], [Int64.rem x y] raises [Division_by_zero]. *)
|
|
61
|
+
|
|
62
|
+
val succ : int64 -> int64
|
|
63
|
+
(** Successor. [Int64.succ x] is [Int64.add x Int64.one]. *)
|
|
64
|
+
|
|
65
|
+
val pred : int64 -> int64
|
|
66
|
+
(** Predecessor. [Int64.pred x] is [Int64.sub x Int64.one]. *)
|
|
67
|
+
|
|
68
|
+
val abs : int64 -> int64
|
|
69
|
+
(** Return the absolute value of its argument. *)
|
|
70
|
+
|
|
71
|
+
val max_int : int64
|
|
72
|
+
(** The greatest representable 64-bit integer, 2{^63} - 1. *)
|
|
73
|
+
|
|
74
|
+
val min_int : int64
|
|
75
|
+
(** The smallest representable 64-bit integer, -2{^63}. *)
|
|
76
|
+
|
|
77
|
+
external logand : int64 -> int64 -> int64 = "%int64_and"
|
|
78
|
+
(** Bitwise logical and. *)
|
|
79
|
+
|
|
80
|
+
external logor : int64 -> int64 -> int64 = "%int64_or"
|
|
81
|
+
(** Bitwise logical or. *)
|
|
82
|
+
|
|
83
|
+
external logxor : int64 -> int64 -> int64 = "%int64_xor"
|
|
84
|
+
(** Bitwise logical exclusive or. *)
|
|
85
|
+
|
|
86
|
+
val lognot : int64 -> int64
|
|
87
|
+
(** Bitwise logical negation. *)
|
|
88
|
+
|
|
89
|
+
external shift_left : int64 -> int -> int64 = "%int64_lsl"
|
|
90
|
+
(** [Int64.shift_left x y] shifts [x] to the left by [y] bits.
|
|
91
|
+
The result is unspecified if [y < 0] or [y >= 64]. *)
|
|
92
|
+
|
|
93
|
+
external shift_right : int64 -> int -> int64 = "%int64_asr"
|
|
94
|
+
(** [Int64.shift_right x y] shifts [x] to the right by [y] bits.
|
|
95
|
+
This is an arithmetic shift: the sign bit of [x] is replicated
|
|
96
|
+
and inserted in the vacated bits.
|
|
97
|
+
The result is unspecified if [y < 0] or [y >= 64]. *)
|
|
98
|
+
|
|
99
|
+
external shift_right_logical : int64 -> int -> int64 = "%int64_lsr"
|
|
100
|
+
(** [Int64.shift_right_logical x y] shifts [x] to the right by [y] bits.
|
|
101
|
+
This is a logical shift: zeroes are inserted in the vacated bits
|
|
102
|
+
regardless of the sign of [x].
|
|
103
|
+
The result is unspecified if [y < 0] or [y >= 64]. *)
|
|
104
|
+
|
|
105
|
+
external of_int : int -> int64 = "%int64_of_int"
|
|
106
|
+
(** Convert the given integer (type [int]) to a 64-bit integer
|
|
107
|
+
(type [int64]). *)
|
|
108
|
+
|
|
109
|
+
external to_int : int64 -> int = "%int64_to_int"
|
|
110
|
+
(** Convert the given 64-bit integer (type [int64]) to an
|
|
111
|
+
integer (type [int]). On 64-bit platforms, the 64-bit integer
|
|
112
|
+
is taken modulo 2{^63}, i.e. the high-order bit is lost
|
|
113
|
+
during the conversion. On 32-bit platforms, the 64-bit integer
|
|
114
|
+
is taken modulo 2{^31}, i.e. the top 33 bits are lost
|
|
115
|
+
during the conversion. *)
|
|
116
|
+
|
|
117
|
+
external of_float : float -> int64
|
|
118
|
+
= "?int64_of_float"
|
|
119
|
+
(** Convert the given floating-point number to a 64-bit integer,
|
|
120
|
+
discarding the fractional part (truncate towards 0).
|
|
121
|
+
The result of the conversion is undefined if, after truncation,
|
|
122
|
+
the number is outside the range \[{!Int64.min_int}, {!Int64.max_int}\]. *)
|
|
123
|
+
|
|
124
|
+
external to_float : int64 -> float
|
|
125
|
+
= "?int64_to_float"
|
|
126
|
+
(** Convert the given 64-bit integer to a floating-point number. *)
|
|
127
|
+
|
|
128
|
+
|
|
129
|
+
external of_int32 : int -> int64 = "%int64_of_int32"
|
|
130
|
+
(** Convert the given 32-bit integer (type [int])
|
|
131
|
+
to a 64-bit integer (type [int64]). *)
|
|
132
|
+
|
|
133
|
+
external to_int32 : int64 -> int = "%int64_to_int32"
|
|
134
|
+
(** Convert the given 64-bit integer (type [int64]) to a
|
|
135
|
+
32-bit integer (type [int]). The 64-bit integer
|
|
136
|
+
is taken modulo 2{^32}, i.e. the top 32 bits are lost
|
|
137
|
+
during the conversion. *)
|
|
138
|
+
|
|
139
|
+
|
|
140
|
+
external of_string : string -> int64 = "?int64_of_string"
|
|
141
|
+
(** Convert the given string to a 64-bit integer.
|
|
142
|
+
The string is read in decimal (by default, or if the string
|
|
143
|
+
begins with [0u]) or in hexadecimal, octal or binary if the
|
|
144
|
+
string begins with [0x], [0o] or [0b] respectively.
|
|
145
|
+
|
|
146
|
+
The [0u] prefix reads the input as an unsigned integer in the range
|
|
147
|
+
[[0, 2*Int64.max_int+1]]. If the input exceeds {!Int64.max_int}
|
|
148
|
+
it is converted to the signed integer
|
|
149
|
+
[Int64.min_int + input - Int64.max_int - 1].
|
|
150
|
+
|
|
151
|
+
The [_] (underscore) character can appear anywhere in the string
|
|
152
|
+
and is ignored.
|
|
153
|
+
Raise [Failure "Int64.of_string"] if the given string is not
|
|
154
|
+
a valid representation of an integer, or if the integer represented
|
|
155
|
+
exceeds the range of integers representable in type [int64]. *)
|
|
156
|
+
|
|
157
|
+
val of_string_opt: string -> int64 option
|
|
158
|
+
(** Same as [of_string], but return [None] instead of raising.
|
|
159
|
+
@since 4.05 *)
|
|
160
|
+
|
|
161
|
+
val to_string : int64 -> string
|
|
162
|
+
(** Return the string representation of its argument, in decimal. *)
|
|
163
|
+
|
|
164
|
+
external bits_of_float : float -> int64
|
|
165
|
+
= "?int64_bits_of_float"
|
|
166
|
+
(** Return the internal representation of the given float according
|
|
167
|
+
to the IEEE 754 floating-point 'double format' bit layout.
|
|
168
|
+
Bit 63 of the result represents the sign of the float;
|
|
169
|
+
bits 62 to 52 represent the (biased) exponent; bits 51 to 0
|
|
170
|
+
represent the mantissa. *)
|
|
171
|
+
|
|
172
|
+
external float_of_bits : int64 -> float
|
|
173
|
+
= "?int64_float_of_bits"
|
|
174
|
+
(** Return the floating-point number whose internal representation,
|
|
175
|
+
according to the IEEE 754 floating-point 'double format' bit layout,
|
|
176
|
+
is the given [int64]. *)
|
|
177
|
+
|
|
178
|
+
type t = int64
|
|
179
|
+
(** An alias for the type of 64-bit integers. *)
|
|
180
|
+
|
|
181
|
+
val compare: t -> t -> int
|
|
182
|
+
(** The comparison function for 64-bit integers, with the same specification as
|
|
183
|
+
{!Pervasives.compare}. Along with the type [t], this function [compare]
|
|
184
|
+
allows the module [Int64] to be passed as argument to the functors
|
|
185
|
+
{!Set.Make} and {!Map.Make}. *)
|
|
186
|
+
|
|
187
|
+
val equal: t -> t -> bool
|
|
188
|
+
(** The equal function for int64s.
|
|
189
|
+
@since 4.03.0 *)
|
|
190
|
+
|
|
191
|
+
(**/**)
|
|
192
|
+
|
|
193
|
+
(** {1 Deprecated functions} *)
|
|
194
|
+
|
|
195
|
+
external format : string -> int64 -> string = "?int64_format"
|
|
196
|
+
(** Do not use this deprecated function. Instead,
|
|
197
|
+
used {!Printf.sprintf} with a [%L...] format. *)
|
|
@@ -0,0 +1,230 @@
|
|
|
1
|
+
[@@@bs.config {flags = [| "-bs-noassertfalse" |]}]
|
|
2
|
+
#ifdef TYPE_STRING
|
|
3
|
+
type key = string
|
|
4
|
+
#elif defined TYPE_INT
|
|
5
|
+
type key = int
|
|
6
|
+
#else
|
|
7
|
+
[%error "unknown type"]
|
|
8
|
+
#endif
|
|
9
|
+
|
|
10
|
+
module N = Belt_internalAVLtree
|
|
11
|
+
module A = Belt_Array
|
|
12
|
+
module S = Belt_SortArray
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
type 'a t = (key,'a) N.t
|
|
17
|
+
|
|
18
|
+
let rec add t (x : key) (data : _) =
|
|
19
|
+
match t with
|
|
20
|
+
| None ->
|
|
21
|
+
N.singleton x data
|
|
22
|
+
| Some n ->
|
|
23
|
+
let k = n.N.key in
|
|
24
|
+
if x = k then
|
|
25
|
+
Some (N.updateValue n data)
|
|
26
|
+
else
|
|
27
|
+
let v = n.N.value in
|
|
28
|
+
if x < k then
|
|
29
|
+
N.bal (add n.N.left x data ) k v n.N.right
|
|
30
|
+
else
|
|
31
|
+
N.bal n.N.left k v (add n.N.right x data )
|
|
32
|
+
|
|
33
|
+
let rec get n (x : key) =
|
|
34
|
+
match n with
|
|
35
|
+
None -> None
|
|
36
|
+
| Some n ->
|
|
37
|
+
let v = n.N.key in
|
|
38
|
+
if x = v then Some n.N.value
|
|
39
|
+
else get (if x < v then n.N.left else n.N.right) x
|
|
40
|
+
|
|
41
|
+
let rec getUndefined n (x : key) =
|
|
42
|
+
match n with
|
|
43
|
+
| None ->
|
|
44
|
+
Js.undefined
|
|
45
|
+
| Some n ->
|
|
46
|
+
let v = n.N.key in
|
|
47
|
+
if x = v then Js.Undefined.return n.N.value
|
|
48
|
+
else getUndefined (if x < v then n.N.left else n.N.right) x
|
|
49
|
+
|
|
50
|
+
let rec getExn n (x : key) =
|
|
51
|
+
match n with
|
|
52
|
+
| None -> raise Not_found
|
|
53
|
+
| Some n ->
|
|
54
|
+
let v = n.N.key in
|
|
55
|
+
if x = v then n.N.value
|
|
56
|
+
else getExn (if x < v then n.N.left else n.N.right) x
|
|
57
|
+
|
|
58
|
+
let rec getWithDefault n (x : key) def =
|
|
59
|
+
match n with
|
|
60
|
+
| None -> def
|
|
61
|
+
| Some n ->
|
|
62
|
+
let v = n.N.key in
|
|
63
|
+
if x = v then n.N.value
|
|
64
|
+
else getWithDefault (if x < v then n.N.left else n.N.right) x def
|
|
65
|
+
|
|
66
|
+
let rec has n (x : key)=
|
|
67
|
+
match n with
|
|
68
|
+
None -> false
|
|
69
|
+
| Some n (* Node(l, v, d, r, _) *) ->
|
|
70
|
+
let v = n.N.key in
|
|
71
|
+
x = v || has (if x < v then n.N.left else n.N.right) x
|
|
72
|
+
|
|
73
|
+
let rec remove n (x : key) =
|
|
74
|
+
match n with
|
|
75
|
+
| None -> n
|
|
76
|
+
| Some n ->
|
|
77
|
+
let {N.left = l; key = v; right = r} = n in
|
|
78
|
+
if x = v then
|
|
79
|
+
match l, r with
|
|
80
|
+
| None, _ -> r
|
|
81
|
+
| _, None -> l
|
|
82
|
+
| _, Some rn ->
|
|
83
|
+
let kr, vr = ref rn.key, ref rn.value in
|
|
84
|
+
let r = N.removeMinAuxWithRef rn kr vr in
|
|
85
|
+
N.bal l kr.contents vr.contents r
|
|
86
|
+
else if x < v then
|
|
87
|
+
N.(bal (remove l x ) v n.value r)
|
|
88
|
+
else
|
|
89
|
+
N.(bal l v n.value (remove r x ))
|
|
90
|
+
|
|
91
|
+
let rec splitAux (x : key) (n : _ N.node) : _ t * _ option * _ t =
|
|
92
|
+
let {N.left = l; key = v; value = d; right = r} = n in
|
|
93
|
+
if x = v then (l, Some d, r)
|
|
94
|
+
else
|
|
95
|
+
if x < v then
|
|
96
|
+
match l with
|
|
97
|
+
| None ->
|
|
98
|
+
None, None, Some n
|
|
99
|
+
| Some l ->
|
|
100
|
+
let (ll, pres, rl) = splitAux x l in (ll, pres, N.join rl v d r)
|
|
101
|
+
else
|
|
102
|
+
match r with
|
|
103
|
+
| None ->
|
|
104
|
+
Some n, None, None
|
|
105
|
+
| Some r ->
|
|
106
|
+
let (lr, pres, rr) = splitAux x r in (N.join l v d lr, pres, rr)
|
|
107
|
+
|
|
108
|
+
|
|
109
|
+
let split (x : key) n =
|
|
110
|
+
match n with
|
|
111
|
+
None ->
|
|
112
|
+
None, None, None
|
|
113
|
+
| Some n ->
|
|
114
|
+
splitAux x n
|
|
115
|
+
|
|
116
|
+
let rec mergeU s1 s2 f =
|
|
117
|
+
match s1, s2 with
|
|
118
|
+
(None, None) -> None
|
|
119
|
+
| Some n (* (Node (l1, v1, d1, r1, h1), _)*), _
|
|
120
|
+
when (n.N.height >= (match s2 with None -> 0 | Some n -> n.N.height)) ->
|
|
121
|
+
let {N.left = l1; key = v1; value = d1; right = r1} = n in
|
|
122
|
+
let (l2, d2, r2) = split v1 s2 in
|
|
123
|
+
N.concatOrJoin (mergeU l1 l2 f) v1 (f v1 (Some d1) d2 [@bs]) (mergeU r1 r2 f)
|
|
124
|
+
| (_, Some n) (* Node (l2, v2, d2, r2, h2) *) ->
|
|
125
|
+
let {N.left = l2; key = v2; value = d2; right = r2} = n in
|
|
126
|
+
let (l1, d1, r1) = split v2 s1 in
|
|
127
|
+
N.concatOrJoin (mergeU l1 l2 f) v2 (f v2 d1 (Some d2) [@bs]) (mergeU r1 r2 f)
|
|
128
|
+
| _ ->
|
|
129
|
+
assert false
|
|
130
|
+
|
|
131
|
+
let merge s1 s2 f = mergeU s1 s2 (fun [@bs] a b c -> f a b c)
|
|
132
|
+
|
|
133
|
+
let rec compareAux e1 e2 vcmp =
|
|
134
|
+
match e1,e2 with
|
|
135
|
+
| h1::t1, h2::t2 ->
|
|
136
|
+
let c = Pervasives.compare (h1.N.key : key) h2.N.key in
|
|
137
|
+
if c = 0 then
|
|
138
|
+
let cx = vcmp h1.N.value h2.N.value [@bs] in
|
|
139
|
+
if cx = 0 then
|
|
140
|
+
compareAux
|
|
141
|
+
(N.stackAllLeft h1.N.right t1 )
|
|
142
|
+
(N.stackAllLeft h2.N.right t2)
|
|
143
|
+
vcmp
|
|
144
|
+
else cx
|
|
145
|
+
else c
|
|
146
|
+
| _, _ -> 0
|
|
147
|
+
|
|
148
|
+
let cmpU s1 s2 cmp =
|
|
149
|
+
let len1, len2 = N.size s1, N.size s2 in
|
|
150
|
+
if len1 = len2 then
|
|
151
|
+
compareAux
|
|
152
|
+
(N.stackAllLeft s1 [])
|
|
153
|
+
(N.stackAllLeft s2 [])
|
|
154
|
+
cmp
|
|
155
|
+
else if len1 < len2 then -1
|
|
156
|
+
else 1
|
|
157
|
+
|
|
158
|
+
let cmp s1 s2 f = cmpU s1 s2 (fun[@bs] a b -> f a b)
|
|
159
|
+
|
|
160
|
+
let rec eqAux e1 e2 eq =
|
|
161
|
+
match e1,e2 with
|
|
162
|
+
| h1::t1, h2::t2 ->
|
|
163
|
+
if (h1.N.key : key) = h2.N.key &&
|
|
164
|
+
eq h1.N.value h2.N.value [@bs] then
|
|
165
|
+
eqAux (
|
|
166
|
+
N.stackAllLeft h1.N.right t1 )
|
|
167
|
+
(N.stackAllLeft h2.N.right t2)
|
|
168
|
+
eq
|
|
169
|
+
else false
|
|
170
|
+
| _, _ -> true (*end *)
|
|
171
|
+
|
|
172
|
+
let eqU s1 s2 eq =
|
|
173
|
+
let len1,len2 = N.size s1, N.size s2 in
|
|
174
|
+
if len1 = len2 then
|
|
175
|
+
eqAux
|
|
176
|
+
(N.stackAllLeft s1 [])
|
|
177
|
+
(N.stackAllLeft s2 []) eq
|
|
178
|
+
else false
|
|
179
|
+
|
|
180
|
+
let eq s1 s2 f = eqU s1 s2 (fun[@bs] a b -> f a b)
|
|
181
|
+
|
|
182
|
+
let rec addMutate (t : _ t) x data : _ t =
|
|
183
|
+
match t with
|
|
184
|
+
| None -> N.singleton x data
|
|
185
|
+
| Some nt ->
|
|
186
|
+
let k = nt.N.key in
|
|
187
|
+
(* let c = (Belt_Cmp.getCmpInternal cmp) x k [@bs] in *)
|
|
188
|
+
if x = k then begin
|
|
189
|
+
nt.N.key <- x;
|
|
190
|
+
nt.value <- data;
|
|
191
|
+
Some nt
|
|
192
|
+
end
|
|
193
|
+
else
|
|
194
|
+
let l, r = (nt.N.left, nt.N.right) in
|
|
195
|
+
(if x < k then
|
|
196
|
+
let ll = addMutate l x data in
|
|
197
|
+
nt.left <- ll
|
|
198
|
+
else
|
|
199
|
+
nt.right <- (addMutate r x data);
|
|
200
|
+
);
|
|
201
|
+
Some (N.balMutate nt)
|
|
202
|
+
|
|
203
|
+
let fromArray (xs : (key * _) array) =
|
|
204
|
+
let len = A.length xs in
|
|
205
|
+
if len = 0 then None
|
|
206
|
+
else
|
|
207
|
+
let next =
|
|
208
|
+
ref (S.strictlySortedLengthU xs
|
|
209
|
+
(fun[@bs] (x0,_) (y0,_) ->
|
|
210
|
+
x0 < y0
|
|
211
|
+
))
|
|
212
|
+
in
|
|
213
|
+
let result = ref (
|
|
214
|
+
if next.contents >= 0 then
|
|
215
|
+
N.fromSortedArrayAux xs 0 next.contents
|
|
216
|
+
else begin
|
|
217
|
+
next .contents<- - next.contents;
|
|
218
|
+
N.fromSortedArrayRevAux xs (next.contents - 1) (next.contents)
|
|
219
|
+
end
|
|
220
|
+
) in
|
|
221
|
+
for i = next.contents to len - 1 do
|
|
222
|
+
let k, v = (A.getUnsafe xs i) in
|
|
223
|
+
result .contents<- addMutate result.contents k v
|
|
224
|
+
done ;
|
|
225
|
+
result.contents
|
|
226
|
+
|
|
227
|
+
|
|
228
|
+
|
|
229
|
+
|
|
230
|
+
|