UNPKG

bs-platform

Version:

bucklescript compiler, ocaml standard libary by bucklescript and its required runtime support

655 lines (567 loc) 15.7 kB
'use strict'; var Curry = require("./curry.js"); var Caml_io = require("./caml_io.js"); var Caml_sys = require("./caml_sys.js"); var Caml_bytes = require("./caml_bytes.js"); var Caml_format = require("./caml_format.js"); var Caml_string = require("./caml_string.js"); var Caml_exceptions = require("./caml_exceptions.js"); var Caml_missing_polyfill = require("./caml_missing_polyfill.js"); var Caml_builtin_exceptions = require("./caml_builtin_exceptions.js"); var CamlinternalFormatBasics = require("./camlinternalFormatBasics.js"); function failwith(s) { throw [ Caml_builtin_exceptions.failure, s ]; } function invalid_arg(s) { throw [ Caml_builtin_exceptions.invalid_argument, s ]; } var Exit = Caml_exceptions.create("Pervasives.Exit"); function abs(x) { if (x >= 0) { return x; } else { return -x | 0; } } function lnot(x) { return x ^ -1; } var min_int = -2147483648; function classify_float(x) { if (isFinite(x)) { if (Math.abs(x) >= 2.2250738585072014e-308) { return /* FP_normal */0; } else if (x !== 0) { return /* FP_subnormal */1; } else { return /* FP_zero */2; } } else if (isNaN(x)) { return /* FP_nan */4; } else { return /* FP_infinite */3; } } function char_of_int(n) { if (n < 0 || n > 255) { throw [ Caml_builtin_exceptions.invalid_argument, "char_of_int" ]; } else { return n; } } function string_of_bool(b) { if (b) { return "true"; } else { return "false"; } } function bool_of_string(param) { switch (param) { case "false" : return false; case "true" : return true; default: throw [ Caml_builtin_exceptions.invalid_argument, "bool_of_string" ]; } } function valid_float_lexem(s) { var l = s.length; var _i = 0; while(true) { var i = _i; if (i >= l) { return s + "."; } else { var match = Caml_string.get(s, i); if (match >= 48) { if (match >= 58) { return s; } else { _i = i + 1 | 0; continue ; } } else if (match !== 45) { return s; } else { _i = i + 1 | 0; continue ; } } }; } function string_of_float(f) { return valid_float_lexem(Caml_format.caml_format_float("%.12g", f)); } function $at(l1, l2) { if (l1) { return /* :: */[ l1[0], $at(l1[1], l2) ]; } else { return l2; } } var stdin = Caml_io.stdin; var stdout = Caml_io.stdout; var stderr = Caml_io.stderr; function open_out_gen(mode, perm, name) { return Caml_missing_polyfill.not_implemented("caml_ml_open_descriptor_out"); } function open_out(name) { return open_out_gen(/* :: */[ /* Open_wronly */1, /* :: */[ /* Open_creat */3, /* :: */[ /* Open_trunc */4, /* :: */[ /* Open_text */7, /* [] */0 ] ] ] ], 438, name); } function open_out_bin(name) { return open_out_gen(/* :: */[ /* Open_wronly */1, /* :: */[ /* Open_creat */3, /* :: */[ /* Open_trunc */4, /* :: */[ /* Open_binary */6, /* [] */0 ] ] ] ], 438, name); } function flush_all(param) { var _param = Caml_io.caml_ml_out_channels_list(/* () */0); while(true) { var param$1 = _param; if (param$1) { try { Caml_io.caml_ml_flush(param$1[0]); } catch (exn){ } _param = param$1[1]; continue ; } else { return /* () */0; } }; } function output_bytes(oc, s) { return Caml_io.caml_ml_output(oc, s, 0, s.length); } function output_string(oc, s) { return Caml_io.caml_ml_output(oc, s, 0, s.length); } function output(oc, s, ofs, len) { if (ofs < 0 || len < 0 || ofs > (s.length - len | 0)) { throw [ Caml_builtin_exceptions.invalid_argument, "output" ]; } else { return Caml_io.caml_ml_output(oc, s, ofs, len); } } function output_substring(oc, s, ofs, len) { if (ofs < 0 || len < 0 || ofs > (s.length - len | 0)) { throw [ Caml_builtin_exceptions.invalid_argument, "output_substring" ]; } else { return Caml_io.caml_ml_output(oc, s, ofs, len); } } function output_value(chan, v) { return Caml_missing_polyfill.not_implemented("caml_output_value"); } function close_out(oc) { Caml_io.caml_ml_flush(oc); return Caml_missing_polyfill.not_implemented("caml_ml_close_channel"); } function close_out_noerr(oc) { try { Caml_io.caml_ml_flush(oc); } catch (exn){ } try { return Caml_missing_polyfill.not_implemented("caml_ml_close_channel"); } catch (exn$1){ return /* () */0; } } function open_in_gen(mode, perm, name) { return Caml_missing_polyfill.not_implemented("caml_ml_open_descriptor_in"); } function open_in(name) { return open_in_gen(/* :: */[ /* Open_rdonly */0, /* :: */[ /* Open_text */7, /* [] */0 ] ], 0, name); } function open_in_bin(name) { return open_in_gen(/* :: */[ /* Open_rdonly */0, /* :: */[ /* Open_binary */6, /* [] */0 ] ], 0, name); } function input(ic, s, ofs, len) { if (ofs < 0 || len < 0 || ofs > (s.length - len | 0)) { throw [ Caml_builtin_exceptions.invalid_argument, "input" ]; } else { return Caml_missing_polyfill.not_implemented("caml_ml_input"); } } function unsafe_really_input(ic, s, _ofs, _len) { while(true) { var len = _len; var ofs = _ofs; if (len <= 0) { return /* () */0; } else { var r = Caml_missing_polyfill.not_implemented("caml_ml_input"); if (r === 0) { throw Caml_builtin_exceptions.end_of_file; } else { _len = len - r | 0; _ofs = ofs + r | 0; continue ; } } }; } function really_input(ic, s, ofs, len) { if (ofs < 0 || len < 0 || ofs > (s.length - len | 0)) { throw [ Caml_builtin_exceptions.invalid_argument, "really_input" ]; } else { return unsafe_really_input(ic, s, ofs, len); } } function really_input_string(ic, len) { var s = Caml_bytes.caml_create_bytes(len); really_input(ic, s, 0, len); return Caml_bytes.bytes_to_string(s); } function input_line(chan) { var build_result = function (buf, _pos, _param) { while(true) { var param = _param; var pos = _pos; if (param) { var hd = param[0]; var len = hd.length; Caml_bytes.caml_blit_bytes(hd, 0, buf, pos - len | 0, len); _param = param[1]; _pos = pos - len | 0; continue ; } else { return buf; } }; }; var scan = function (_accu, _len) { while(true) { var len = _len; var accu = _accu; var n = Caml_missing_polyfill.not_implemented("caml_ml_input_scan_line"); if (n === 0) { if (accu) { return build_result(Caml_bytes.caml_create_bytes(len), len, accu); } else { throw Caml_builtin_exceptions.end_of_file; } } else if (n > 0) { var res = Caml_bytes.caml_create_bytes(n - 1 | 0); Caml_missing_polyfill.not_implemented("caml_ml_input"); Caml_missing_polyfill.not_implemented("caml_ml_input_char"); if (accu) { var len$1 = (len + n | 0) - 1 | 0; return build_result(Caml_bytes.caml_create_bytes(len$1), len$1, /* :: */[ res, accu ]); } else { return res; } } else { var beg = Caml_bytes.caml_create_bytes(-n | 0); Caml_missing_polyfill.not_implemented("caml_ml_input"); _len = len - n | 0; _accu = /* :: */[ beg, accu ]; continue ; } }; }; return Caml_bytes.bytes_to_string(scan(/* [] */0, 0)); } function close_in_noerr(ic) { try { return Caml_missing_polyfill.not_implemented("caml_ml_close_channel"); } catch (exn){ return /* () */0; } } function print_char(c) { return Caml_io.caml_ml_output_char(stdout, c); } function print_string(s) { return output_string(stdout, s); } function print_bytes(s) { return output_bytes(stdout, s); } function print_int(i) { return output_string(stdout, String(i)); } function print_float(f) { return output_string(stdout, valid_float_lexem(Caml_format.caml_format_float("%.12g", f))); } function print_newline(param) { Caml_io.caml_ml_output_char(stdout, /* "\n" */10); return Caml_io.caml_ml_flush(stdout); } function prerr_char(c) { return Caml_io.caml_ml_output_char(stderr, c); } function prerr_string(s) { return output_string(stderr, s); } function prerr_bytes(s) { return output_bytes(stderr, s); } function prerr_int(i) { return output_string(stderr, String(i)); } function prerr_float(f) { return output_string(stderr, valid_float_lexem(Caml_format.caml_format_float("%.12g", f))); } function prerr_newline(param) { Caml_io.caml_ml_output_char(stderr, /* "\n" */10); return Caml_io.caml_ml_flush(stderr); } function read_line(param) { Caml_io.caml_ml_flush(stdout); return input_line(stdin); } function read_int(param) { return Caml_format.caml_int_of_string((Caml_io.caml_ml_flush(stdout), input_line(stdin))); } function read_float(param) { return Caml_format.caml_float_of_string((Caml_io.caml_ml_flush(stdout), input_line(stdin))); } function string_of_format(param) { return param[1]; } function $caret$caret(param, param$1) { return /* Format */[ CamlinternalFormatBasics.concat_fmt(param[0], param$1[0]), param[1] + ("%," + param$1[1]) ]; } var exit_function = /* record */[/* contents */flush_all]; function at_exit(f) { var g = exit_function[0]; exit_function[0] = (function (param) { Curry._1(f, /* () */0); return Curry._1(g, /* () */0); }); return /* () */0; } function do_at_exit(param) { return Curry._1(exit_function[0], /* () */0); } function exit(retcode) { do_at_exit(/* () */0); return Caml_sys.caml_sys_exit(retcode); } var max_int = 2147483647; var epsilon_float = 2.220446049250313e-16; var flush = Caml_io.caml_ml_flush; var output_char = Caml_io.caml_ml_output_char; var output_byte = Caml_io.caml_ml_output_char; function output_binary_int(prim, prim$1) { return Caml_missing_polyfill.not_implemented("caml_ml_output_int"); } function seek_out(prim, prim$1) { return Caml_missing_polyfill.not_implemented("caml_ml_seek_out"); } function pos_out(prim) { return Caml_missing_polyfill.not_implemented("caml_ml_pos_out"); } function out_channel_length(prim) { return Caml_missing_polyfill.not_implemented("caml_ml_channel_size"); } function set_binary_mode_out(prim, prim$1) { return Caml_missing_polyfill.not_implemented("caml_ml_set_binary_mode"); } function input_char(prim) { return Caml_missing_polyfill.not_implemented("caml_ml_input_char"); } function input_byte(prim) { return Caml_missing_polyfill.not_implemented("caml_ml_input_char"); } function input_binary_int(prim) { return Caml_missing_polyfill.not_implemented("caml_ml_input_int"); } function input_value(prim) { return Caml_missing_polyfill.not_implemented("caml_input_value"); } function seek_in(prim, prim$1) { return Caml_missing_polyfill.not_implemented("caml_ml_seek_in"); } function pos_in(prim) { return Caml_missing_polyfill.not_implemented("caml_ml_pos_in"); } function in_channel_length(prim) { return Caml_missing_polyfill.not_implemented("caml_ml_channel_size"); } function close_in(prim) { return Caml_missing_polyfill.not_implemented("caml_ml_close_channel"); } function set_binary_mode_in(prim, prim$1) { return Caml_missing_polyfill.not_implemented("caml_ml_set_binary_mode"); } function LargeFile_000(prim, prim$1) { return Caml_missing_polyfill.not_implemented("caml_ml_seek_out_64"); } function LargeFile_001(prim) { return Caml_missing_polyfill.not_implemented("caml_ml_pos_out_64"); } function LargeFile_002(prim) { return Caml_missing_polyfill.not_implemented("caml_ml_channel_size_64"); } function LargeFile_003(prim, prim$1) { return Caml_missing_polyfill.not_implemented("caml_ml_seek_in_64"); } function LargeFile_004(prim) { return Caml_missing_polyfill.not_implemented("caml_ml_pos_in_64"); } function LargeFile_005(prim) { return Caml_missing_polyfill.not_implemented("caml_ml_channel_size_64"); } var LargeFile = [ LargeFile_000, LargeFile_001, LargeFile_002, LargeFile_003, LargeFile_004, LargeFile_005 ]; exports.invalid_arg = invalid_arg; exports.failwith = failwith; exports.Exit = Exit; exports.abs = abs; exports.max_int = max_int; exports.min_int = min_int; exports.lnot = lnot; exports.epsilon_float = epsilon_float; exports.classify_float = classify_float; exports.char_of_int = char_of_int; exports.string_of_bool = string_of_bool; exports.bool_of_string = bool_of_string; exports.string_of_float = string_of_float; exports.$at = $at; exports.stdin = stdin; exports.stdout = stdout; exports.stderr = stderr; exports.print_char = print_char; exports.print_string = print_string; exports.print_bytes = print_bytes; exports.print_int = print_int; exports.print_float = print_float; exports.print_newline = print_newline; exports.prerr_char = prerr_char; exports.prerr_string = prerr_string; exports.prerr_bytes = prerr_bytes; exports.prerr_int = prerr_int; exports.prerr_float = prerr_float; exports.prerr_newline = prerr_newline; exports.read_line = read_line; exports.read_int = read_int; exports.read_float = read_float; exports.open_out = open_out; exports.open_out_bin = open_out_bin; exports.open_out_gen = open_out_gen; exports.flush = flush; exports.flush_all = flush_all; exports.output_char = output_char; exports.output_string = output_string; exports.output_bytes = output_bytes; exports.output = output; exports.output_substring = output_substring; exports.output_byte = output_byte; exports.output_binary_int = output_binary_int; exports.output_value = output_value; exports.seek_out = seek_out; exports.pos_out = pos_out; exports.out_channel_length = out_channel_length; exports.close_out = close_out; exports.close_out_noerr = close_out_noerr; exports.set_binary_mode_out = set_binary_mode_out; exports.open_in = open_in; exports.open_in_bin = open_in_bin; exports.open_in_gen = open_in_gen; exports.input_char = input_char; exports.input_line = input_line; exports.input = input; exports.really_input = really_input; exports.really_input_string = really_input_string; exports.input_byte = input_byte; exports.input_binary_int = input_binary_int; exports.input_value = input_value; exports.seek_in = seek_in; exports.pos_in = pos_in; exports.in_channel_length = in_channel_length; exports.close_in = close_in; exports.close_in_noerr = close_in_noerr; exports.set_binary_mode_in = set_binary_mode_in; exports.LargeFile = LargeFile; exports.string_of_format = string_of_format; exports.$caret$caret = $caret$caret; exports.exit = exit; exports.at_exit = at_exit; exports.valid_float_lexem = valid_float_lexem; exports.unsafe_really_input = unsafe_really_input; exports.do_at_exit = do_at_exit; /* No side effect */