123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115let_=Callback.register"array_of_list"Array.of_listlet_=Callback.register"array_length"Array.lengthtypetmoduleFeature=structtypet=intexternalmvp:unit->t="caml_binaryen_feature_mvp"letmvp=mvp()externalatomics:unit->t="caml_binaryen_feature_atomics"letatomics=atomics()externalbulk_memory:unit->t="caml_binaryen_feature_bulk_memory"letbulk_memory=bulk_memory()externalmutable_globals:unit->t="caml_binaryen_feature_mutable_globals"letmutable_globals=mutable_globals()externalnontrapping_fp_to_int:unit->t="caml_binaryen_feature_nontrapping_fp_to_int"letnontrapping_fp_to_int=nontrapping_fp_to_int()externalsign_ext:unit->t="caml_binaryen_feature_sign_ext"letsign_ext=sign_ext()externalsimd128:unit->t="caml_binaryen_feature_simd128"letsimd128=simd128()externalexception_handling:unit->t="caml_binaryen_feature_exception_handling"letexception_handling=exception_handling()externaltail_call:unit->t="caml_binaryen_feature_tail_call"lettail_call=tail_call()externalreference_types:unit->t="caml_binaryen_feature_reference_types"letreference_types=reference_types()externalmultivalue:unit->t="caml_binaryen_feature_multivalue"letmultivalue=multivalue()externalall:unit->t="caml_binaryen_feature_all"letall=all()endexternalcreate:unit->t="caml_binaryen_module_create"externaldispose:t->unit="caml_binaryen_module_dispose"externaladd_custom_section:t->string->string->unit="caml_binaryen_add_custom_section"externalparse:string->t="caml_binaryen_module_parse"externalprint:t->unit="caml_binaryen_module_print"externalprint_asmjs:t->unit="caml_binaryen_module_print_asmjs"externalvalidate:t->int="caml_binaryen_module_validate"externaloptimize:t->unit="caml_binaryen_module_optimize"externalget_features:t->int="caml_binaryen_module_get_features"letget_featureswasm_mod=letfeatures_int=get_featureswasm_modinletrecsplit_features=function|0->[]|featurewhenfeatures_intlandfeature>0->feature::split_features(featurelsr1)|feature->split_features(featurelsr1)in(* Support 32-bit OCaml where integers are 31 bits *)(* This supports up to 31 Binaryen features *)split_features0x40000000externalset_features:t->int->unit="caml_binaryen_module_set_features"letset_featureswasm_modfeatures=set_featureswasm_mod(List.fold_left(lor)0features)externalrun_passes:t->stringlist->unit="caml_binaryen_module_run_passes"externalauto_drop:t->unit="caml_binaryen_module_auto_drop"externalwrite:t->stringoption->bytes*stringoption="caml_binaryen_module_write"externalwrite_text:t->string="caml_binaryen_module_write_text"externalread:bytes->t="caml_binaryen_module_read"externalinterpret:t->unit="caml_binaryen_module_interpret"externaladd_debug_info_filename:t->string->int="caml_binaryen_module_add_debug_info_filename"externalget_debug_info_filename:t->int->string="caml_binaryen_module_get_debug_info_filename"