bs-platform
Version:
bucklescript compiler, ocaml standard libary by bucklescript and its required runtime support
655 lines (567 loc) • 15.7 kB
JavaScript
;
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 */