@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,206 @@
|
|
|
1
|
+
# 1 "others/hashmap.cppo.ml"
|
|
2
|
+
(***********************************************************************)
|
|
3
|
+
(* *)
|
|
4
|
+
(* OCaml *)
|
|
5
|
+
(* *)
|
|
6
|
+
(* Xavier Leroy, projet Cristal, INRIA Rocquencourt *)
|
|
7
|
+
(* *)
|
|
8
|
+
(* Copyright 1996 Institut National de Recherche en Informatique et *)
|
|
9
|
+
(* en Automatique. All rights reserved. This file is distributed *)
|
|
10
|
+
(* under the terms of the GNU Library General Public License, with *)
|
|
11
|
+
(* the special exception on linking described in file ../LICENSE. *)
|
|
12
|
+
(* *)
|
|
13
|
+
(***********************************************************************)
|
|
14
|
+
(** Adapted by Hongbo Zhang, Authors of ReScript 2017 *)
|
|
15
|
+
|
|
16
|
+
# 16 "others/hashmap.cppo.ml"
|
|
17
|
+
type key = string
|
|
18
|
+
type seed = int
|
|
19
|
+
external caml_hash_mix_string : seed -> string -> seed = "?hash_mix_string"
|
|
20
|
+
external final_mix : seed -> seed = "?hash_final_mix"
|
|
21
|
+
let hash (s : key) =
|
|
22
|
+
final_mix (caml_hash_mix_string 0 s )
|
|
23
|
+
|
|
24
|
+
# 33 "others/hashmap.cppo.ml"
|
|
25
|
+
module N = Belt_internalBuckets
|
|
26
|
+
module C = Belt_internalBucketsType
|
|
27
|
+
module A = Belt_Array
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
type 'b t = (unit, unit, key,'b) N.t
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
let rec copyBucketReHash ~h_buckets ~ndata_tail (old_bucket : _ N.bucket C.opt ) =
|
|
34
|
+
match C.toOpt old_bucket with
|
|
35
|
+
| None -> ()
|
|
36
|
+
| Some cell ->
|
|
37
|
+
let nidx = hash cell.key land (A.length h_buckets - 1) in
|
|
38
|
+
let v = C.return cell in
|
|
39
|
+
begin match C.toOpt (A.getUnsafe ndata_tail nidx) with
|
|
40
|
+
| None ->
|
|
41
|
+
A.setUnsafe h_buckets nidx v
|
|
42
|
+
| Some tail ->
|
|
43
|
+
tail.N.next <- v (* cell put at the end *)
|
|
44
|
+
end;
|
|
45
|
+
A.setUnsafe ndata_tail nidx v;
|
|
46
|
+
copyBucketReHash ~h_buckets ~ndata_tail cell.next
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
let resize h =
|
|
50
|
+
let odata = h.C.buckets in
|
|
51
|
+
let osize = A.length odata in
|
|
52
|
+
let nsize = osize * 2 in
|
|
53
|
+
if nsize >= osize then begin (* no overflow *)
|
|
54
|
+
let h_buckets = A.makeUninitialized nsize in
|
|
55
|
+
let ndata_tail = A.makeUninitialized nsize in (* keep track of tail *)
|
|
56
|
+
h.C.buckets <- h_buckets; (* so that indexfun sees the new bucket count *)
|
|
57
|
+
for i = 0 to osize - 1 do
|
|
58
|
+
copyBucketReHash ~h_buckets ~ndata_tail (A.getUnsafe odata i)
|
|
59
|
+
done;
|
|
60
|
+
for i = 0 to nsize - 1 do
|
|
61
|
+
match C.toOpt (A.getUnsafe ndata_tail i) with
|
|
62
|
+
| None -> ()
|
|
63
|
+
| Some tail -> tail.next <- C.emptyOpt
|
|
64
|
+
done
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
let rec replaceInBucket (key : key) info cell =
|
|
69
|
+
if cell.N.key = key
|
|
70
|
+
then
|
|
71
|
+
begin
|
|
72
|
+
cell.N.value <- info;
|
|
73
|
+
false
|
|
74
|
+
end
|
|
75
|
+
else
|
|
76
|
+
match C.toOpt cell.next with
|
|
77
|
+
| None -> true
|
|
78
|
+
| Some cell ->
|
|
79
|
+
replaceInBucket key info cell
|
|
80
|
+
|
|
81
|
+
let set h (key : key) value =
|
|
82
|
+
let h_buckets = h.C.buckets in
|
|
83
|
+
let buckets_len = A.length h_buckets in
|
|
84
|
+
let i = hash key land (buckets_len - 1) in
|
|
85
|
+
let l = A.getUnsafe h_buckets i in
|
|
86
|
+
(match C.toOpt l with
|
|
87
|
+
| None ->
|
|
88
|
+
A.setUnsafe h_buckets i (C.return {N.key; value; next = C.emptyOpt});
|
|
89
|
+
h.C.size <- (h.C.size + 1);
|
|
90
|
+
| Some bucket ->
|
|
91
|
+
if replaceInBucket key value bucket then begin
|
|
92
|
+
A.setUnsafe h_buckets i (C.return {N.key; value; next = l});
|
|
93
|
+
h.C.size <- (h.C.size + 1);
|
|
94
|
+
end
|
|
95
|
+
);
|
|
96
|
+
if h.C.size > buckets_len lsl 1 then resize h
|
|
97
|
+
|
|
98
|
+
|
|
99
|
+
|
|
100
|
+
let rec removeInBucket h h_buckets i (key : key) prec buckets =
|
|
101
|
+
match C.toOpt buckets with
|
|
102
|
+
| None -> ()
|
|
103
|
+
| Some cell ->
|
|
104
|
+
let cell_next = cell.N.next in
|
|
105
|
+
if cell.N.key = key
|
|
106
|
+
then
|
|
107
|
+
begin
|
|
108
|
+
prec.N.next <-cell_next;
|
|
109
|
+
h.C.size <- (h.C.size - 1);
|
|
110
|
+
end
|
|
111
|
+
else removeInBucket h h_buckets i key cell cell_next
|
|
112
|
+
|
|
113
|
+
let remove h key =
|
|
114
|
+
let h_buckets = h.C.buckets in
|
|
115
|
+
let i = hash key land (A.length h_buckets - 1) in
|
|
116
|
+
let bucket = (A.getUnsafe h_buckets i) in
|
|
117
|
+
match C.toOpt bucket with
|
|
118
|
+
| None -> ()
|
|
119
|
+
| Some cell ->
|
|
120
|
+
if cell.N.key = key then
|
|
121
|
+
begin
|
|
122
|
+
A.setUnsafe h_buckets i cell.next;
|
|
123
|
+
h.C.size <- (h.C.size - 1)
|
|
124
|
+
end
|
|
125
|
+
else
|
|
126
|
+
removeInBucket h h_buckets i key cell cell.next
|
|
127
|
+
|
|
128
|
+
|
|
129
|
+
|
|
130
|
+
let rec getAux (key : key) buckets =
|
|
131
|
+
match C.toOpt buckets with
|
|
132
|
+
| None ->
|
|
133
|
+
None
|
|
134
|
+
| Some cell ->
|
|
135
|
+
if key = cell.N.key then Some cell.N.value
|
|
136
|
+
else getAux key cell.next
|
|
137
|
+
|
|
138
|
+
let get h (key : key) =
|
|
139
|
+
let h_buckets = h.C.buckets in
|
|
140
|
+
let nid = hash key land (A.length h_buckets - 1) in
|
|
141
|
+
match C.toOpt (A.getUnsafe h_buckets nid) with
|
|
142
|
+
| None -> None
|
|
143
|
+
| Some cell1 ->
|
|
144
|
+
if key = cell1.N.key then Some cell1.N.value else
|
|
145
|
+
match C.toOpt cell1.N.next with
|
|
146
|
+
| None -> None
|
|
147
|
+
| Some cell2 ->
|
|
148
|
+
if key = cell2.N.key then Some cell2.N.value else
|
|
149
|
+
match C.toOpt cell2.N.next with
|
|
150
|
+
| None -> None
|
|
151
|
+
| Some cell3 ->
|
|
152
|
+
if key = cell3.N.key then Some cell3.N.value
|
|
153
|
+
else getAux key cell3.N.next
|
|
154
|
+
|
|
155
|
+
|
|
156
|
+
let rec memInBucket (key : key) cell =
|
|
157
|
+
cell.N.key = key ||
|
|
158
|
+
(match C.toOpt cell.next with
|
|
159
|
+
| None -> false
|
|
160
|
+
| Some nextCell -> memInBucket key nextCell
|
|
161
|
+
)
|
|
162
|
+
|
|
163
|
+
let has h key =
|
|
164
|
+
let h_buckets = h.C.buckets in
|
|
165
|
+
let nid = hash key land (A.length h_buckets - 1) in
|
|
166
|
+
let bucket = A.getUnsafe h_buckets nid in
|
|
167
|
+
match C.toOpt bucket with
|
|
168
|
+
| None -> false
|
|
169
|
+
| Some bucket ->
|
|
170
|
+
memInBucket key bucket
|
|
171
|
+
|
|
172
|
+
|
|
173
|
+
let make ~hintSize = C.make ~hintSize ~hash:() ~eq:()
|
|
174
|
+
let clear = C.clear
|
|
175
|
+
let size h = h.C.size
|
|
176
|
+
let forEachU = N.forEachU
|
|
177
|
+
let forEach = N.forEach
|
|
178
|
+
let reduceU = N.reduceU
|
|
179
|
+
let reduce = N.reduce
|
|
180
|
+
let logStats = N.logStats
|
|
181
|
+
let keepMapInPlaceU = N.keepMapInPlaceU
|
|
182
|
+
let keepMapInPlace = N.keepMapInPlace
|
|
183
|
+
let toArray = N.toArray
|
|
184
|
+
let copy = N.copy
|
|
185
|
+
let keysToArray = N.keysToArray
|
|
186
|
+
let valuesToArray = N.valuesToArray
|
|
187
|
+
let getBucketHistogram = N.getBucketHistogram
|
|
188
|
+
let isEmpty = C.isEmpty
|
|
189
|
+
|
|
190
|
+
let fromArray arr =
|
|
191
|
+
let len = A.length arr in
|
|
192
|
+
let v = make ~hintSize:len in
|
|
193
|
+
for i = 0 to len - 1 do
|
|
194
|
+
let k,value = (A.getUnsafe arr i) in
|
|
195
|
+
set v k value
|
|
196
|
+
done ;
|
|
197
|
+
v
|
|
198
|
+
|
|
199
|
+
(* TOOD: optimize heuristics for resizing *)
|
|
200
|
+
let mergeMany h arr =
|
|
201
|
+
let len = A.length arr in
|
|
202
|
+
for i = 0 to len - 1 do
|
|
203
|
+
let k,v = (A.getUnsafe arr i) in
|
|
204
|
+
set h k v
|
|
205
|
+
done
|
|
206
|
+
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
# 2 "others/hashmap.cppo.mli"
|
|
2
|
+
type key = string
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
# 10 "others/hashmap.cppo.mli"
|
|
6
|
+
type 'b t
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
val make: hintSize:int -> 'b t
|
|
10
|
+
|
|
11
|
+
val clear: 'b t -> unit
|
|
12
|
+
|
|
13
|
+
val isEmpty: _ t -> bool
|
|
14
|
+
|
|
15
|
+
val set: 'a t -> key -> 'a -> unit
|
|
16
|
+
(**
|
|
17
|
+
`setDone tbl k v` if `k` does not exist,
|
|
18
|
+
add the binding `k,v`, otherwise, update the old value with the new
|
|
19
|
+
`v`
|
|
20
|
+
*)
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
val copy: 'a t -> 'a t
|
|
24
|
+
val get: 'a t -> key -> 'a option
|
|
25
|
+
|
|
26
|
+
val has: 'b t -> key -> bool
|
|
27
|
+
|
|
28
|
+
val remove: 'a t -> key -> unit
|
|
29
|
+
|
|
30
|
+
val forEachU: 'b t -> (key -> 'b -> unit [@bs]) -> unit
|
|
31
|
+
val forEach: 'b t -> (key -> 'b -> unit) -> unit
|
|
32
|
+
|
|
33
|
+
val reduceU: 'b t -> 'c -> ('c -> key -> 'b -> 'c [@bs]) -> 'c
|
|
34
|
+
val reduce: 'b t -> 'c -> ('c -> key -> 'b -> 'c) -> 'c
|
|
35
|
+
|
|
36
|
+
val keepMapInPlaceU: 'a t -> (key -> 'a -> 'a option [@bs]) -> unit
|
|
37
|
+
val keepMapInPlace: 'a t -> (key -> 'a -> 'a option) -> unit
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
val size: _ t -> int
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
val toArray: 'a t -> (key * 'a) array
|
|
44
|
+
val keysToArray: 'a t -> key array
|
|
45
|
+
val valuesToArray: 'a t -> 'a array
|
|
46
|
+
val fromArray: (key * 'a) array -> 'a t
|
|
47
|
+
val mergeMany: 'a t -> (key * 'a) array -> unit
|
|
48
|
+
val getBucketHistogram: _ t -> int array
|
|
49
|
+
val logStats: _ t -> unit
|
|
50
|
+
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
(* Copyright (C) 2017 Hongbo Zhang, Authors of ReScript
|
|
2
|
+
*
|
|
3
|
+
* This program is free software: you can redistribute it and/or modify
|
|
4
|
+
* it under the terms of the GNU Lesser General Public License as published by
|
|
5
|
+
* the Free Software Foundation, either version 3 of the License, or
|
|
6
|
+
* (at your option) any later version.
|
|
7
|
+
*
|
|
8
|
+
* In addition to the permissions granted to you by the LGPL, you may combine
|
|
9
|
+
* or link a "work that uses the Library" with a publicly distributed version
|
|
10
|
+
* of this file to produce a combined library or application, then distribute
|
|
11
|
+
* that combined work under the terms of your choosing, with no requirement
|
|
12
|
+
* to comply with the obligations normally placed on you by section 4 of the
|
|
13
|
+
* LGPL version 3 (or the corresponding section of a later version of the LGPL
|
|
14
|
+
* should you choose to use a later version).
|
|
15
|
+
*
|
|
16
|
+
* This program is distributed in the hope that it will be useful,
|
|
17
|
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
18
|
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
19
|
+
* GNU Lesser General Public License for more details.
|
|
20
|
+
*
|
|
21
|
+
* You should have received a copy of the GNU Lesser General Public License
|
|
22
|
+
* along with this program; if not, write to the Free Software
|
|
23
|
+
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *)
|
|
24
|
+
|
|
25
|
+
module Int = Belt_HashSetInt
|
|
26
|
+
|
|
27
|
+
module String = Belt_HashSetString
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
module N = Belt_internalSetBuckets
|
|
31
|
+
module C = Belt_internalBucketsType
|
|
32
|
+
module A = Belt_Array
|
|
33
|
+
|
|
34
|
+
type ('a, 'id) eq = ('a, 'id) Belt_Id.eq
|
|
35
|
+
type ('a, 'id) hash = ('a, 'id) Belt_Id.hash
|
|
36
|
+
type ('a, 'id) id = ('a, 'id) Belt_Id.hashable
|
|
37
|
+
|
|
38
|
+
type ('a,'id) t = ( ('a, 'id) hash, ('a, 'id) eq, 'a) N.t
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
let rec copyBucket ~hash ~h_buckets ~ndata_tail old_bucket =
|
|
43
|
+
match C.toOpt old_bucket with
|
|
44
|
+
| None -> ()
|
|
45
|
+
| Some cell ->
|
|
46
|
+
let nidx = (Belt_Id.getHashInternal hash) cell.N.key [@bs] land (A.length h_buckets - 1) in
|
|
47
|
+
let v = C.return cell in
|
|
48
|
+
begin match C.toOpt (A.getUnsafe ndata_tail nidx) with
|
|
49
|
+
| None ->
|
|
50
|
+
A.setUnsafe h_buckets nidx v
|
|
51
|
+
| Some tail ->
|
|
52
|
+
tail.N.next <- v (* cell put at the end *)
|
|
53
|
+
end;
|
|
54
|
+
A.setUnsafe ndata_tail nidx v;
|
|
55
|
+
copyBucket ~hash ~h_buckets ~ndata_tail cell.N.next
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
let tryDoubleResize ~hash h =
|
|
59
|
+
let odata = h.C.buckets in
|
|
60
|
+
let osize = A.length odata in
|
|
61
|
+
let nsize = osize * 2 in
|
|
62
|
+
if nsize >= osize then begin (* no overflow *)
|
|
63
|
+
let h_buckets = A.makeUninitialized nsize in
|
|
64
|
+
let ndata_tail = A.makeUninitialized nsize in (* keep track of tail *)
|
|
65
|
+
h.buckets <- h_buckets; (* so that indexfun sees the new bucket count *)
|
|
66
|
+
for i = 0 to osize - 1 do
|
|
67
|
+
copyBucket ~hash ~h_buckets ~ndata_tail (A.getUnsafe odata i)
|
|
68
|
+
done;
|
|
69
|
+
for i = 0 to nsize - 1 do
|
|
70
|
+
match C.toOpt (A.getUnsafe ndata_tail i) with
|
|
71
|
+
| None -> ()
|
|
72
|
+
| Some tail -> tail.N.next <- C.emptyOpt
|
|
73
|
+
done
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
let rec removeBucket ~eq h h_buckets i key prec cell =
|
|
79
|
+
let cell_next = cell.N.next in
|
|
80
|
+
if (Belt_Id.getEqInternal eq) cell.N.key key [@bs]
|
|
81
|
+
then
|
|
82
|
+
begin
|
|
83
|
+
prec.N.next <- cell_next;
|
|
84
|
+
h.C.size <- (h.C.size - 1);
|
|
85
|
+
end
|
|
86
|
+
else
|
|
87
|
+
match C.toOpt cell_next with
|
|
88
|
+
| None ->
|
|
89
|
+
()
|
|
90
|
+
| Some cell_next ->
|
|
91
|
+
removeBucket ~eq h h_buckets i key cell cell_next
|
|
92
|
+
|
|
93
|
+
let remove h key =
|
|
94
|
+
let eq = h.C.eq in
|
|
95
|
+
let h_buckets = h.C.buckets in
|
|
96
|
+
let i = (Belt_Id.getHashInternal h.C.hash) key [@bs] land (A.length h_buckets - 1) in
|
|
97
|
+
let l = A.getUnsafe h_buckets i in
|
|
98
|
+
match C.toOpt l with
|
|
99
|
+
| None -> ()
|
|
100
|
+
| Some cell ->
|
|
101
|
+
let next_cell = cell.N.next in
|
|
102
|
+
if (Belt_Id.getEqInternal eq) cell.N.key key [@bs] then
|
|
103
|
+
begin
|
|
104
|
+
h.C.size <- (h.C.size - 1) ;
|
|
105
|
+
A.setUnsafe h_buckets i next_cell
|
|
106
|
+
end
|
|
107
|
+
else
|
|
108
|
+
match C.toOpt next_cell with
|
|
109
|
+
| None -> ()
|
|
110
|
+
| Some next_cell ->
|
|
111
|
+
removeBucket ~eq h h_buckets i key cell next_cell
|
|
112
|
+
|
|
113
|
+
|
|
114
|
+
|
|
115
|
+
let rec addBucket h key cell ~eq =
|
|
116
|
+
if not ((Belt_Id.getEqInternal eq) cell.N.key key [@bs]) then
|
|
117
|
+
let n = cell.N.next in
|
|
118
|
+
match C.toOpt n with
|
|
119
|
+
| None ->
|
|
120
|
+
h.C.size <- (h.C.size + 1);
|
|
121
|
+
cell.N.next <- C.return { N.key; next = C.emptyOpt}
|
|
122
|
+
| Some n -> addBucket ~eq h key n
|
|
123
|
+
|
|
124
|
+
let add0 h key ~hash ~eq =
|
|
125
|
+
let h_buckets = h.C.buckets in
|
|
126
|
+
let buckets_len = A.length h_buckets in
|
|
127
|
+
let i = (Belt_Id.getHashInternal hash) key [@bs] land (buckets_len - 1) in
|
|
128
|
+
let l = A.getUnsafe h_buckets i in
|
|
129
|
+
(match C.toOpt l with
|
|
130
|
+
| None ->
|
|
131
|
+
h.C.size <- (h.C.size+ 1);
|
|
132
|
+
A.setUnsafe h_buckets i
|
|
133
|
+
(C.return { N.key; next = C.emptyOpt})
|
|
134
|
+
| Some cell ->
|
|
135
|
+
addBucket ~eq h key cell);
|
|
136
|
+
if h.C.size > buckets_len lsl 1 then tryDoubleResize ~hash h
|
|
137
|
+
|
|
138
|
+
let add h key =
|
|
139
|
+
add0 ~hash:h.C.hash ~eq:h.C.eq h key
|
|
140
|
+
|
|
141
|
+
let rec memInBucket ~eq key cell =
|
|
142
|
+
(Belt_Id.getEqInternal eq)
|
|
143
|
+
cell.N.key key [@bs] ||
|
|
144
|
+
(match C.toOpt cell.N.next with
|
|
145
|
+
| None -> false
|
|
146
|
+
| Some nextCell ->
|
|
147
|
+
memInBucket ~eq key nextCell)
|
|
148
|
+
|
|
149
|
+
|
|
150
|
+
|
|
151
|
+
let has h key =
|
|
152
|
+
let eq, h_buckets = h.C.eq, h.C.buckets in
|
|
153
|
+
let nid = (Belt_Id.getHashInternal h.C.hash) key [@bs] land (A.length h_buckets - 1) in
|
|
154
|
+
let bucket = A.getUnsafe h_buckets nid in
|
|
155
|
+
match C.toOpt bucket with
|
|
156
|
+
| None -> false
|
|
157
|
+
| Some bucket ->
|
|
158
|
+
memInBucket ~eq key bucket
|
|
159
|
+
|
|
160
|
+
|
|
161
|
+
|
|
162
|
+
|
|
163
|
+
let make (type value) (type identity) ~hintSize ~(id: (value, identity) id)=
|
|
164
|
+
let module M = (val id) in
|
|
165
|
+
C.make ~hintSize ~hash:M.hash ~eq:M.eq
|
|
166
|
+
|
|
167
|
+
let clear = C.clear
|
|
168
|
+
let size h = h.C.size
|
|
169
|
+
let forEachU = N.forEachU
|
|
170
|
+
let forEach = N.forEach
|
|
171
|
+
let reduceU = N.reduceU
|
|
172
|
+
let reduce = N.reduce
|
|
173
|
+
let logStats = N.logStats
|
|
174
|
+
let toArray = N.toArray
|
|
175
|
+
let copy = N.copy
|
|
176
|
+
let getBucketHistogram = N.getBucketHistogram
|
|
177
|
+
let isEmpty = C.isEmpty
|
|
178
|
+
|
|
179
|
+
let fromArray (type a identity) arr ~(id:(a,identity) id) =
|
|
180
|
+
let module M = (val id) in
|
|
181
|
+
let eq, hash = M.eq , M.hash in
|
|
182
|
+
let len = A.length arr in
|
|
183
|
+
let v = C.make ~hintSize:len ~hash ~eq in
|
|
184
|
+
for i = 0 to len - 1 do
|
|
185
|
+
add0 ~eq ~hash v (A.getUnsafe arr i)
|
|
186
|
+
done ;
|
|
187
|
+
v
|
|
188
|
+
|
|
189
|
+
let mergeMany h arr =
|
|
190
|
+
let eq, hash = h.C.eq, h.hash in
|
|
191
|
+
let len = A.length arr in
|
|
192
|
+
for i = 0 to len - 1 do
|
|
193
|
+
add0 h ~eq ~hash (A.getUnsafe arr i)
|
|
194
|
+
done
|
|
195
|
+
|
|
196
|
+
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
(* Copyright (C) 2018 Authors of ReScript
|
|
2
|
+
*
|
|
3
|
+
* This program is free software: you can redistribute it and/or modify
|
|
4
|
+
* it under the terms of the GNU Lesser General Public License as published by
|
|
5
|
+
* the Free Software Foundation, either version 3 of the License, or
|
|
6
|
+
* (at your option) any later version.
|
|
7
|
+
*
|
|
8
|
+
* In addition to the permissions granted to you by the LGPL, you may combine
|
|
9
|
+
* or link a "work that uses the Library" with a publicly distributed version
|
|
10
|
+
* of this file to produce a combined library or application, then distribute
|
|
11
|
+
* that combined work under the terms of your choosing, with no requirement
|
|
12
|
+
* to comply with the obligations normally placed on you by section 4 of the
|
|
13
|
+
* LGPL version 3 (or the corresponding section of a later version of the LGPL
|
|
14
|
+
* should you choose to use a later version).
|
|
15
|
+
*
|
|
16
|
+
* This program is distributed in the hope that it will be useful,
|
|
17
|
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
18
|
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
19
|
+
* GNU Lesser General Public License for more details.
|
|
20
|
+
*
|
|
21
|
+
* You should have received a copy of the GNU Lesser General Public License
|
|
22
|
+
* along with this program; if not, write to the Free Software
|
|
23
|
+
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *)
|
|
24
|
+
|
|
25
|
+
(**
|
|
26
|
+
A **mutable** Hash set which allows customized `hash` behavior.
|
|
27
|
+
|
|
28
|
+
All data are parameterized by not its only type but also a unique identity in
|
|
29
|
+
the time of initialization, so that two _HashSets of ints_ initialized with
|
|
30
|
+
different _hash_ functions will have different type.
|
|
31
|
+
|
|
32
|
+
For example:
|
|
33
|
+
|
|
34
|
+
```res prelude
|
|
35
|
+
module I0 = unpack(
|
|
36
|
+
Belt.Id.hashableU(
|
|
37
|
+
~hash=(. a: int) => land(a, 65535),
|
|
38
|
+
~eq=(. a, b) => a == b,
|
|
39
|
+
)
|
|
40
|
+
)
|
|
41
|
+
|
|
42
|
+
let s0 = Belt.HashSet.make(~id=module(I0), ~hintSize=40)
|
|
43
|
+
|
|
44
|
+
module I1 = unpack(
|
|
45
|
+
Belt.Id.hashableU(
|
|
46
|
+
~hash=(. a: int) => land(a, 255),
|
|
47
|
+
~eq=(. a, b) => a == b,
|
|
48
|
+
)
|
|
49
|
+
)
|
|
50
|
+
|
|
51
|
+
let s1 = Belt.HashSet.make(~id=module(I1), ~hintSize=40)
|
|
52
|
+
|
|
53
|
+
Belt.HashSet.add(s1, 0)
|
|
54
|
+
Belt.HashSet.add(s1, 1)
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
The invariant must be held: for two elements who are equal, their hashed
|
|
58
|
+
value should be the same.
|
|
59
|
+
|
|
60
|
+
Here the compiler would infer `s0` and `s1` having different type so that it
|
|
61
|
+
would not mix.
|
|
62
|
+
|
|
63
|
+
```res sig
|
|
64
|
+
let s0: Belt.HashSet.t<int, I0.identity>
|
|
65
|
+
let s1: Belt.HashSet.t<int, I1.identity>
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
We can add elements to the collection (see last two lines in the example
|
|
69
|
+
above). Since this is an mutable data structure, `s1` will contain two pairs.
|
|
70
|
+
*)
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
(** Specalized when key type is `int`, more efficient
|
|
74
|
+
than the generic type *)
|
|
75
|
+
module Int = Belt_HashSetInt
|
|
76
|
+
|
|
77
|
+
(** Specalized when key type is `string`, more efficient
|
|
78
|
+
than the generic type *)
|
|
79
|
+
module String = Belt_HashSetString
|
|
80
|
+
|
|
81
|
+
(* TODO: add a poly module
|
|
82
|
+
module Poly = Belt_HashSetPoly
|
|
83
|
+
challenge:
|
|
84
|
+
- generic equal handles JS data structure
|
|
85
|
+
- eq/hash consistent
|
|
86
|
+
*)
|
|
87
|
+
|
|
88
|
+
type ('a, 'id) t
|
|
89
|
+
|
|
90
|
+
(** The type of hash tables from type `'a` to type `'b`. *)
|
|
91
|
+
type ('a, 'id) id = ('a, 'id) Belt_Id.hashable
|
|
92
|
+
|
|
93
|
+
val make: hintSize:int -> id:('a,'id) id -> ('a, 'id) t
|
|
94
|
+
val clear: ('a, 'id) t -> unit
|
|
95
|
+
val isEmpty: _ t -> bool
|
|
96
|
+
|
|
97
|
+
val add: ('a, 'id) t -> 'a -> unit
|
|
98
|
+
|
|
99
|
+
val copy: ('a, 'id) t -> ('a, 'id) t
|
|
100
|
+
|
|
101
|
+
val has: ('a, 'id) t -> 'a -> bool
|
|
102
|
+
|
|
103
|
+
val remove: ('a, 'id) t -> 'a -> unit
|
|
104
|
+
|
|
105
|
+
val forEachU: ('a, 'id) t -> ('a -> unit [@bs]) -> unit
|
|
106
|
+
val forEach: ('a, 'id) t -> ('a -> unit) -> unit
|
|
107
|
+
(** Order unspecified. *)
|
|
108
|
+
|
|
109
|
+
val reduceU: ('a, 'id) t -> 'c -> ('c -> 'a -> 'c [@bs]) -> 'c
|
|
110
|
+
val reduce: ('a, 'id) t -> 'c -> ('c -> 'a -> 'c) -> 'c
|
|
111
|
+
(** Order unspecified. *)
|
|
112
|
+
|
|
113
|
+
val size: ('a, 'id) t -> int
|
|
114
|
+
|
|
115
|
+
val logStats: _ t -> unit
|
|
116
|
+
|
|
117
|
+
val toArray: ('a,'id) t -> 'a array
|
|
118
|
+
|
|
119
|
+
val fromArray: 'a array -> id:('a,'id) id -> ('a,'id) t
|
|
120
|
+
|
|
121
|
+
val mergeMany: ('a,'id) t -> 'a array -> unit
|
|
122
|
+
|
|
123
|
+
val getBucketHistogram: _ t -> int array
|
|
124
|
+
|
|
125
|
+
|
|
Binary file
|
|
Binary file
|
|
Binary file
|