:- module io. :- use_module array, benchmarking, bool, builtin, char, deconstruct, dir, exception, int, list, map, ops, parser, private_builtin, require, rtti_implementation, std_util, string, table_builtin, term, term_io, time, varset. :- type (io:stream_putback) == (tree234:tree234(int, (list:list(character)))). :- type (io:stream_names) == (tree234:tree234(int, string)). :- type (io:stream_id) == int. :- type (io:stream) == (builtin:c_pointer). :- type (io:state) ---> state((builtin:c_pointer)) . :- type (io:output_stream) == (builtin:c_pointer). :- type (io:input_stream) == (builtin:c_pointer). :- type (io:error) ---> io_error(string) . :- type (io:buffer) ---> buffer((builtin:c_pointer)) . :- type (io:binary_stream) == (builtin:c_pointer). :- pragma foreign_import_module("C", io). :- func io:get_stream_id((builtin:c_pointer)) = int. :- mode io:get_stream_id((builtin:in)) = (builtin:out) is det. :- pred io:read_char_code((builtin:c_pointer), int, (io:state), (io:state)). :- mode io:read_char_code((builtin:in), (builtin:out), (builtin:di), (builtin:uo)) is det. :- pred io:read_byte_val((builtin:c_pointer), int, (io:state), (io:state)). :- mode io:read_byte_val((builtin:in), (builtin:out), (builtin:di), (builtin:uo)) is det. :- pred io:read_file_2((builtin:c_pointer), (list:list(character)), (io:maybe_partial_res((list:list(character)))), (io:state), (io:state)). :- mode io:read_file_2((builtin:in), (builtin:in), (builtin:out), (builtin:di), (builtin:uo)) is det. :- pred io:make_err_msg(string, string, (io:state), (io:state)). :- mode io:make_err_msg((builtin:in), (builtin:out), (builtin:di), (builtin:uo)) is det. :- pred io:read_binary_file_2((builtin:c_pointer), (list:list(int)), (io:result((list:list(int)))), (io:state), (io:state)). :- mode io:read_binary_file_2((builtin:in), (builtin:in), (builtin:out), (builtin:di), (builtin:uo)) is det. :- pred io:read_from_string((bool:bool), string, string, int, (io:read_result(T_1)), (io:posn), (io:posn)). :- mode io:read_from_string((builtin:in), (builtin:in), (builtin:in), (builtin:in), (builtin:out), (builtin:in), (builtin:out)) is det. :- pred io:process_read_term((bool:bool), (term_io:read_term((term:generic))), int, (io:read_result(T_1))). :- mode io:process_read_term((builtin:in), (builtin:in), (builtin:in), (builtin:out)) is det. :- pred io:do_print((deconstruct:noncanon_handling), T_1, (io:state), (io:state)). :- mode io:do_print(builtin:in((deconstruct:do_not_allow)), (builtin:in), (builtin:di), (builtin:uo)) is det. :- mode io:do_print(builtin:in((deconstruct:canonicalize)), (builtin:in), (builtin:di), (builtin:uo)) is det. :- mode io:do_print(builtin:in((deconstruct:include_details_cc)), (builtin:in), (builtin:di), (builtin:uo)) is cc_multi. :- mode io:do_print((builtin:in), (builtin:in), (builtin:di), (builtin:uo)) is cc_multi. :- pred io:do_write((deconstruct:noncanon_handling), T_1, (io:state), (io:state)). :- mode io:do_write(builtin:in((deconstruct:do_not_allow)), (builtin:in), (builtin:di), (builtin:uo)) is det. :- mode io:do_write(builtin:in((deconstruct:canonicalize)), (builtin:in), (builtin:di), (builtin:uo)) is det. :- mode io:do_write(builtin:in((deconstruct:include_details_cc)), (builtin:in), (builtin:di), (builtin:uo)) is cc_multi. :- mode io:do_write((builtin:in), (builtin:in), (builtin:di), (builtin:uo)) is cc_multi. :- pred io:do_write_univ((deconstruct:noncanon_handling), (std_util:univ), (io:state), (io:state)). :- mode io:do_write_univ(builtin:in((deconstruct:do_not_allow)), (builtin:in), (builtin:di), (builtin:uo)) is det. :- mode io:do_write_univ(builtin:in((deconstruct:canonicalize)), (builtin:in), (builtin:di), (builtin:uo)) is det. :- mode io:do_write_univ(builtin:in((deconstruct:include_details_cc)), (builtin:in), (builtin:di), (builtin:uo)) is cc_multi. :- mode io:do_write_univ((builtin:in), (builtin:in), (builtin:di), (builtin:uo)) is cc_multi. :- pred io:convert_read_result((io:read_result(T_1)), (io:result(T_1))). :- mode io:convert_read_result((builtin:in), (builtin:out)) is det. :- pred io:stream_name((builtin:c_pointer), string, (io:state), (io:state)). :- mode io:stream_name((builtin:in), (builtin:out), (builtin:di), (builtin:uo)) is det. :- pred io:get_stream_names((tree234:tree234(int, string)), (io:state), (io:state)). :- mode io:get_stream_names((builtin:out), (builtin:di), (builtin:uo)) is det. :- pred io:set_stream_names((tree234:tree234(int, string)), (io:state), (io:state)). :- mode io:set_stream_names((builtin:in), (builtin:di), (builtin:uo)) is det. :- pred io:delete_stream_name((builtin:c_pointer), (io:state), (io:state)). :- mode io:delete_stream_name((builtin:in), (builtin:di), (builtin:uo)) is det. :- pred io:get_stream_id((builtin:c_pointer), int). :- mode io:get_stream_id((builtin:in), (builtin:out)) is det. :- pred io:whence_to_int((io:whence), int). :- mode io:whence_to_int((builtin:in), (builtin:out)) is det. :- pred io:seek_binary_2((builtin:c_pointer), int, int, (io:state), (io:state)). :- mode io:seek_binary_2((builtin:in), (builtin:in), (builtin:in), (builtin:di), (builtin:uo)) is det. :- pred io:close_stream((builtin:c_pointer), (io:state), (io:state)). :- mode io:close_stream((builtin:in), (builtin:di), (builtin:uo)) is det. :- pragma inline((io:read_char)/3). io:read_char(Result_4, DCG_0_6, DCG_2_8) :- io:input_stream(Stream_5, DCG_0_6, DCG_1_7), io:read_char(Stream_5, Result_4, DCG_1_7, DCG_2_8). io:read_word(Result_4, DCG_0_6, DCG_2_8) :- io:input_stream(Stream_5, DCG_0_6, DCG_1_7), io:read_word(Stream_5, Result_4, DCG_1_7, DCG_2_8). io:read_line(Result_4, DCG_0_6, DCG_2_8) :- io:input_stream(Stream_5, DCG_0_6, DCG_1_7), io:read_line(Stream_5, Result_4, DCG_1_7, DCG_2_8). io:read_line_as_string(Result_4, DCG_0_6, DCG_2_8) :- io:input_stream(Stream_5, DCG_0_6, DCG_1_7), io:read_line_as_string(Stream_5, Result_4, DCG_1_7, DCG_2_8). io:read_file(Result_4, DCG_0_6, DCG_2_8) :- io:input_stream(Stream_5, DCG_0_6, DCG_1_7), io:read_file(Stream_5, Result_4, DCG_1_7, DCG_2_8). io:read_file_as_string(Result_4, DCG_0_6, DCG_2_8) :- io:input_stream(Stream_5, DCG_0_6, DCG_1_7), io:read_file_as_string(Stream_5, Result_4, DCG_1_7, DCG_2_8). io:input_stream_foldl(Pred_6, T0_7, Res_8, DCG_0_10, DCG_2_12) :- io:input_stream(Stream_9, DCG_0_10, DCG_1_11), io:input_stream_foldl(Stream_9, Pred_6, T0_7, Res_8, DCG_1_11, DCG_2_12). io:input_stream_foldl_io(Pred_5, Res_6, DCG_0_8, DCG_2_10) :- io:input_stream(Stream_7, DCG_0_8, DCG_1_9), io:input_stream_foldl_io(Stream_7, Pred_5, Res_6, DCG_1_9, DCG_2_10). io:input_stream_foldl2_io(Pred_6, T0_7, Res_8, DCG_0_10, DCG_2_12) :- io:input_stream(Stream_9, DCG_0_10, DCG_1_11), io:input_stream_foldl2_io(Stream_9, Pred_6, T0_7, Res_8, DCG_1_11, DCG_2_12). io:putback_char(Char_4, DCG_0_6, DCG_2_8) :- io:input_stream(Stream_5, DCG_0_6, DCG_1_7), io:putback_char(Stream_5, Char_4, DCG_1_7, DCG_2_8). :- pragma inline((io:read_char)/4). io:read_char(Stream_5, Result_6, DCG_0_10, DCG_2_12) :- io:read_char_code(Stream_5, Code_7, DCG_0_10, DCG_1_11), (if Code_7 = -1 then Result_6 = io:eof, DCG_2_12 = DCG_1_11 else (if char:to_int(Char_8, Code_7) then Result_6 = io:ok(Char_8), DCG_2_12 = DCG_1_11 else V_13 = "read failed: ", io:make_err_msg(V_13, Msg_9, DCG_1_11, DCG_2_12), Result_6 = io:error(V_14), V_14 = io:io_error(Msg_9) ) ). io:read_file(Stream_5, Result_6, DCG_0_7, DCG_1_8) :- V_9 = list:[], io:read_file_2(Stream_5, V_9, Result_6, DCG_0_7, DCG_1_8). io:input_stream_foldl(Stream_7, Pred_8, T0_9, Res_10, DCG_0_15, DCG_2_17) :- io:read_char(Stream_7, CharResult_11, DCG_0_15, DCG_1_16), ( % disjunction CharResult_11 = io:ok(Char_12), call(Pred_8, Char_12, T0_9, T1_13), io:input_stream_foldl(Stream_7, Pred_8, T1_13, Res_10, DCG_1_16, DCG_2_17) ; CharResult_11 = io:eof, Res_10 = io:ok(T0_9), DCG_2_17 = DCG_1_16 ; CharResult_11 = io:error(Error_14), Res_10 = io:error(T0_9, Error_14), DCG_2_17 = DCG_1_16 ). io:input_stream_foldl_io(Stream_6, Pred_7, Res_8, DCG_0_12, DCG_3_15) :- io:read_char(Stream_6, CharResult_9, DCG_0_12, DCG_1_13), ( % disjunction CharResult_9 = io:ok(Char_10), call(Pred_7, Char_10, DCG_1_13, DCG_2_14), io:input_stream_foldl_io(Stream_6, Pred_7, Res_8, DCG_2_14, DCG_3_15) ; CharResult_9 = io:eof, Res_8 = io:ok, DCG_3_15 = DCG_1_13 ; CharResult_9 = io:error(Error_11), Res_8 = io:error(Error_11), DCG_3_15 = DCG_1_13 ). io:input_stream_foldl2_io(Stream_7, Pred_8, T0_9, Res_10, DCG_0_15, DCG_3_18) :- io:read_char(Stream_7, CharResult_11, DCG_0_15, DCG_1_16), ( % disjunction CharResult_11 = io:ok(Char_12), call(Pred_8, Char_12, T0_9, T1_13, DCG_1_16, DCG_2_17), io:input_stream_foldl2_io(Stream_7, Pred_8, T1_13, Res_10, DCG_2_17, DCG_3_18) ; CharResult_11 = io:eof, Res_10 = io:ok(T0_9), DCG_3_18 = DCG_1_16 ; CharResult_11 = io:error(Error_14), Res_10 = io:error(T0_9, Error_14), DCG_3_18 = DCG_1_16 ). :- pragma foreign_proc("C", io:putback_char(File :: (builtin:in), Character :: (builtin:in), IO0 :: (builtin:di), IO :: (builtin:uo)), [may_call_mercury, not_thread_safe, tabled_for_io, promise_pure], "{ MercuryFile* mf = (MercuryFile *) File; if (Character == \'\\n\') { MR_line_number(*mf)--; } /* XXX should work even if ungetc() fails */ if (MR_UNGETCH(*mf, Character) == EOF) { mercury_io_error(mf, \"io__putback_char: ungetc failed\"); } MR_update_io(IO0, IO); }"). io:read(Result_4, DCG_0_8, DCG_2_10) :- term_io:read_term(ReadResult_5, DCG_0_8, DCG_1_9), io:get_line_number(LineNumber_6, DCG_1_9, DCG_2_10), IsAditiTuple_7 = bool:no, io:process_read_term(IsAditiTuple_7, ReadResult_5, LineNumber_6, Result_4). io:read(Stream_5, Result_6, DCG_0_9, DCG_3_12) :- io:set_input_stream(Stream_5, OrigStream_7, DCG_0_9, DCG_1_10), io:read(Result_6, DCG_1_10, DCG_2_11), io:set_input_stream(OrigStream_7, _Stream_8, DCG_2_11, DCG_3_12). io:read_from_string(FileName_7, String_8, Len_9, Result_10, Posn0_11, Posn_12) :- IsAditiTuple_13 = bool:no, io:read_from_string(IsAditiTuple_13, FileName_7, String_8, Len_9, Result_10, Posn0_11, Posn_12). io:ignore_whitespace(Result_4, DCG_0_6, DCG_2_8) :- io:input_stream(Stream_5, DCG_0_6, DCG_1_7), io:ignore_whitespace(Stream_5, Result_4, DCG_1_7, DCG_2_8). io:print(Term_4, DCG_0_5, DCG_1_6) :- V_7 = deconstruct:canonicalize, io:do_print(V_7, Term_4, DCG_0_5, DCG_1_6). io:print(Stream_5, Term_6, DCG_0_9, DCG_3_12) :- io:set_output_stream(Stream_5, OrigStream_7, DCG_0_9, DCG_1_10), V_13 = deconstruct:canonicalize, io:do_print(V_13, Term_6, DCG_1_10, DCG_2_11), io:set_output_stream(OrigStream_7, _Stream_8, DCG_2_11, DCG_3_12). io:print(Stream_6, NonCanon_7, Term_8, DCG_0_11, DCG_3_14) :- io:set_output_stream(Stream_6, OrigStream_9, DCG_0_11, DCG_1_12), io:do_print(NonCanon_7, Term_8, DCG_1_12, DCG_2_13), io:set_output_stream(OrigStream_9, _Stream_10, DCG_2_13, DCG_3_14). io:print_cc(Term_4, DCG_0_5, DCG_1_6) :- V_7 = deconstruct:include_details_cc, io:do_print(V_7, Term_4, DCG_0_5, DCG_1_6). io:write(X_4, DCG_0_5, DCG_1_6) :- V_7 = deconstruct:canonicalize, io:do_write(V_7, X_4, DCG_0_5, DCG_1_6). io:write(Stream_5, X_6, DCG_0_9, DCG_3_12) :- io:set_output_stream(Stream_5, OrigStream_7, DCG_0_9, DCG_1_10), V_13 = deconstruct:canonicalize, io:do_write(V_13, X_6, DCG_1_10, DCG_2_11), io:set_output_stream(OrigStream_7, _Stream_8, DCG_2_11, DCG_3_12). io:write(Stream_6, NonCanon_7, X_8, DCG_0_11, DCG_3_14) :- io:set_output_stream(Stream_6, OrigStream_9, DCG_0_11, DCG_1_12), io:do_write(NonCanon_7, X_8, DCG_1_12, DCG_2_13), io:set_output_stream(OrigStream_9, _Stream_10, DCG_2_13, DCG_3_14). io:write_cc(X_4, DCG_0_5, DCG_1_6) :- V_7 = deconstruct:include_details_cc, io:do_write(V_7, X_4, DCG_0_5, DCG_1_6). io:nl(DCG_0_3, DCG_1_4) :- V_5 = '\n', io:write_char(V_5, DCG_0_3, DCG_1_4). io:nl(Stream_4, DCG_0_5, DCG_1_6) :- V_7 = '\n', io:write_char(Stream_4, V_7, DCG_0_5, DCG_1_6). :- pragma foreign_proc("C", io:write_string(Message :: (builtin:in), IO0 :: (builtin:di), IO :: (builtin:uo)), [may_call_mercury, thread_safe, tabled_for_io, promise_pure], " mercury_print_string(mercury_current_text_output, Message); MR_update_io(IO0, IO); "). :- pragma foreign_proc("C", io:write_string(Stream :: (builtin:in), Message :: (builtin:in), IO0 :: (builtin:di), IO :: (builtin:uo)), [may_call_mercury, thread_safe, tabled_for_io, promise_pure], "{ MercuryFile *stream = (MercuryFile *) Stream; mercury_print_string(stream, Message); MR_update_io(IO0, IO); }"). io:write_strings(Strings_4, DCG_0_6, DCG_2_8) :- io:output_stream(Stream_5, DCG_0_6, DCG_1_7), io:write_strings(Stream_5, Strings_4, DCG_1_7, DCG_2_8). :- pragma foreign_proc("C", io:write_char(Character :: (builtin:in), IO0 :: (builtin:di), IO :: (builtin:uo)), [may_call_mercury, thread_safe, tabled_for_io, promise_pure], " if (MR_PUTCH(*mercury_current_text_output, Character) < 0) { mercury_output_error(mercury_current_text_output); } if (Character == \'\\n\') { MR_line_number(*mercury_current_text_output)++; } MR_update_io(IO0, IO); "). :- pragma foreign_proc("C", io:write_char(Stream :: (builtin:in), Character :: (builtin:in), IO0 :: (builtin:di), IO :: (builtin:uo)), [may_call_mercury, thread_safe, tabled_for_io, promise_pure], "{ MercuryFile *stream = (MercuryFile *) Stream; if (MR_PUTCH(*stream, Character) < 0) { mercury_output_error(stream); } if (Character == \'\\n\') { MR_line_number(*stream)++; } MR_update_io(IO0, IO); }"). :- pragma foreign_proc("C", io:write_int(Val :: (builtin:in), IO0 :: (builtin:di), IO :: (builtin:uo)), [may_call_mercury, thread_safe, tabled_for_io, promise_pure], " if (ML_fprintf(mercury_current_text_output, \"%ld\", (long) Val) < 0) { mercury_output_error(mercury_current_text_output); } MR_update_io(IO0, IO); "). :- pragma foreign_proc("C", io:write_int(Stream :: (builtin:in), Val :: (builtin:in), IO0 :: (builtin:di), IO :: (builtin:uo)), [may_call_mercury, thread_safe, tabled_for_io, promise_pure], "{ MercuryFile *stream = (MercuryFile *) Stream; if (ML_fprintf(stream, \"%ld\", (long) Val) < 0) { mercury_output_error(stream); } MR_update_io(IO0, IO); }"). :- pragma foreign_proc("C", io:write_float(Val :: (builtin:in), IO0 :: (builtin:di), IO :: (builtin:uo)), [may_call_mercury, thread_safe, tabled_for_io, promise_pure], " if (ML_fprintf(mercury_current_text_output, \"%#.15g\", Val) < 0) { mercury_output_error(mercury_current_text_output); } MR_update_io(IO0, IO); "). :- pragma foreign_proc("C", io:write_float(Stream :: (builtin:in), Val :: (builtin:in), IO0 :: (builtin:di), IO :: (builtin:uo)), [may_call_mercury, thread_safe, tabled_for_io, promise_pure], "{ MercuryFile *stream = (MercuryFile *) Stream; if (ML_fprintf(stream, \"%#.15g\", Val) < 0) { mercury_output_error(stream); } MR_update_io(IO0, IO); }"). io:format(FormatString_5, Arguments_6, DCG_0_8, DCG_2_10) :- io:output_stream(Stream_7, DCG_0_8, DCG_1_9), io:format(Stream_7, FormatString_5, Arguments_6, DCG_1_9, DCG_2_10). io:format(Stream_6, FormatString_7, Arguments_8, DCG_0_10, DCG_1_11) :- string:format(FormatString_7, Arguments_8, String_9), io:write_string(Stream_6, String_9, DCG_0_10, DCG_1_11). io:write_many(Poly_list_4, DCG_0_6, DCG_2_8) :- io:output_stream(Stream_5, DCG_0_6, DCG_1_7), io:write_many(Stream_5, Poly_list_4, DCG_1_7, DCG_2_8). io:write_list((list:[]), _Separator_6, _OutputPred_7, DCG_0_8, DCG_1_9) :- DCG_0_8 = DCG_1_9. io:write_list((list:[E_10 | Es_11]), Separator_12, OutputPred_13, DCG_0_16, DCG_3_19) :- call(OutputPred_13, E_10, DCG_0_16, DCG_1_17), ( % disjunction Es_11 = list:[], DCG_2_18 = DCG_1_17 ; Es_11 = list:[V_14 | V_15], io:write_string(Separator_12, DCG_1_17, DCG_2_18) ), io:write_list(Es_11, Separator_12, OutputPred_13, DCG_2_18, DCG_3_19). io:write_list(Stream_7, List_8, Separator_9, OutputPred_10, DCG_0_13, DCG_3_16) :- io:set_output_stream(Stream_7, OrigStream_11, DCG_0_13, DCG_1_14), io:write_list(List_8, Separator_9, OutputPred_10, DCG_1_14, DCG_2_15), io:set_output_stream(OrigStream_11, _Stream_12, DCG_2_15, DCG_3_16). :- pragma foreign_proc("C", io:flush_output(IO0 :: (builtin:di), IO :: (builtin:uo)), [may_call_mercury, thread_safe, tabled_for_io, promise_pure], " if (MR_FLUSH(*mercury_current_text_output) < 0) { mercury_output_error(mercury_current_text_output); } MR_update_io(IO0, IO); "). :- pragma foreign_proc("C", io:flush_output(Stream :: (builtin:in), IO0 :: (builtin:di), IO :: (builtin:uo)), [may_call_mercury, thread_safe, tabled_for_io, promise_pure], "{ MercuryFile *stream = (MercuryFile *) Stream; if (MR_FLUSH(*stream) < 0) { mercury_output_error(stream); } MR_update_io(IO0, IO); }"). io:seen(DCG_0_5, DCG_3_8) :- io:stdin_stream(Stdin_3, DCG_0_5, DCG_1_6), io:set_input_stream(Stdin_3, OldStream_4, DCG_1_6, DCG_2_7), io:close_input(OldStream_4, DCG_2_7, DCG_3_8). io:close_input(Stream_4, DCG_0_5, DCG_2_7) :- io:delete_stream_name(Stream_4, DCG_0_5, DCG_1_6), io:close_stream(Stream_4, DCG_1_6, DCG_2_7). :- pragma foreign_proc("C", io:input_stream(Stream :: (builtin:out), IO0 :: (builtin:di), IO :: (builtin:uo)), [will_not_call_mercury, not_thread_safe, tabled_for_io, promise_pure], " Stream = (MR_Word) mercury_current_text_input; MR_update_io(IO0, IO); "). :- pragma foreign_proc("C", io:set_input_stream(NewStream :: (builtin:in), OutStream :: (builtin:out), IO0 :: (builtin:di), IO :: (builtin:uo)), [will_not_call_mercury, not_thread_safe, tabled_for_io, promise_pure], " OutStream = (MR_Word) mercury_current_text_input; mercury_current_text_input = (MercuryFile *) NewStream; MR_update_io(IO0, IO); "). :- pragma foreign_proc("C", io:stdin_stream(Stream :: (builtin:out), IO0 :: (builtin:di), IO :: (builtin:uo)), [will_not_call_mercury, thread_safe, tabled_for_io, promise_pure], " Stream = (MR_Word) &mercury_stdin; MR_update_io(IO0, IO); "). :- pragma foreign_proc("C", io:current_input_stream(OutStream :: (builtin:out), IO0 :: (builtin:di), IO :: (builtin:uo)), [will_not_call_mercury, not_thread_safe, tabled_for_io, promise_pure], " OutStream = (MR_Word) mercury_current_text_input; MR_update_io(IO0, IO); "). io:input_stream_name(Name_4, DCG_0_6, DCG_2_8) :- io:input_stream(Stream_5, DCG_0_6, DCG_1_7), io:stream_name(Stream_5, Name_4, DCG_1_7, DCG_2_8). io:input_stream_name(Stream_5, Name_6, DCG_0_7, DCG_1_8) :- io:stream_name(Stream_5, Name_6, DCG_0_7, DCG_1_8). :- pragma foreign_proc("C", io:get_line_number(LineNum :: (builtin:out), IO0 :: (builtin:di), IO :: (builtin:uo)), [will_not_call_mercury, not_thread_safe, tabled_for_io, promise_pure], " LineNum = MR_line_number(*mercury_current_text_input); MR_update_io(IO0, IO); "). :- pragma foreign_proc("C", io:get_line_number(Stream :: (builtin:in), LineNum :: (builtin:out), IO0 :: (builtin:di), IO :: (builtin:uo)), [will_not_call_mercury, not_thread_safe, tabled_for_io, promise_pure], "{ MercuryFile *stream = (MercuryFile *) Stream; LineNum = MR_line_number(*stream); MR_update_io(IO0, IO); }"). :- pragma foreign_proc("C", io:set_line_number(LineNum :: (builtin:in), IO0 :: (builtin:di), IO :: (builtin:uo)), [will_not_call_mercury, not_thread_safe, tabled_for_io, promise_pure], " MR_line_number(*mercury_current_text_input) = LineNum; MR_update_io(IO0, IO); "). :- pragma foreign_proc("C", io:set_line_number(Stream :: (builtin:in), LineNum :: (builtin:in), IO0 :: (builtin:di), IO :: (builtin:uo)), [will_not_call_mercury, not_thread_safe, tabled_for_io, promise_pure], "{ MercuryFile *stream = (MercuryFile *) Stream; MR_line_number(*stream) = LineNum; MR_update_io(IO0, IO); }"). io:told(DCG_0_5, DCG_3_8) :- io:stdout_stream(Stdout_3, DCG_0_5, DCG_1_6), io:set_output_stream(Stdout_3, OldStream_4, DCG_1_6, DCG_2_7), io:close_output(OldStream_4, DCG_2_7, DCG_3_8). io:close_output(Stream_4, DCG_0_5, DCG_2_7) :- io:delete_stream_name(Stream_4, DCG_0_5, DCG_1_6), io:close_stream(Stream_4, DCG_1_6, DCG_2_7). :- pragma foreign_proc("C", io:output_stream(Stream :: (builtin:out), IO0 :: (builtin:di), IO :: (builtin:uo)), [will_not_call_mercury, not_thread_safe, tabled_for_io, promise_pure], " Stream = (MR_Word) mercury_current_text_output; MR_update_io(IO0, IO); "). :- pragma foreign_proc("C", io:set_output_stream(NewStream :: (builtin:in), OutStream :: (builtin:out), IO0 :: (builtin:di), IO :: (builtin:uo)), [will_not_call_mercury, not_thread_safe, tabled_for_io, promise_pure], " OutStream = (MR_Word) mercury_current_text_output; mercury_current_text_output = (MercuryFile *) NewStream; MR_update_io(IO0, IO); "). :- pragma foreign_proc("C", io:stdout_stream(Stream :: (builtin:out), IO0 :: (builtin:di), IO :: (builtin:uo)), [will_not_call_mercury, thread_safe, tabled_for_io, promise_pure], " Stream = (MR_Word) &mercury_stdout; MR_update_io(IO0, IO); "). :- pragma foreign_proc("C", io:stderr_stream(Stream :: (builtin:out), IO0 :: (builtin:di), IO :: (builtin:uo)), [will_not_call_mercury, thread_safe, tabled_for_io, promise_pure], " Stream = (MR_Word) &mercury_stderr; MR_update_io(IO0, IO); "). :- pragma foreign_proc("C", io:current_output_stream(OutStream :: (builtin:out), IO0 :: (builtin:di), IO :: (builtin:uo)), [will_not_call_mercury, not_thread_safe, tabled_for_io, promise_pure], " OutStream = (MR_Word) mercury_current_text_output; MR_update_io(IO0, IO); "). io:output_stream_name(Name_4, DCG_0_6, DCG_2_8) :- io:output_stream(Stream_5, DCG_0_6, DCG_1_7), io:stream_name(Stream_5, Name_4, DCG_1_7, DCG_2_8). io:output_stream_name(Stream_5, Name_6, DCG_0_7, DCG_1_8) :- io:stream_name(Stream_5, Name_6, DCG_0_7, DCG_1_8). :- pragma foreign_proc("C", io:get_output_line_number(LineNum :: (builtin:out), IO0 :: (builtin:di), IO :: (builtin:uo)), [will_not_call_mercury, not_thread_safe, tabled_for_io, promise_pure], " LineNum = MR_line_number(*mercury_current_text_output); MR_update_io(IO0, IO); "). :- pragma foreign_proc("C", io:get_output_line_number(Stream :: (builtin:in), LineNum :: (builtin:out), IO0 :: (builtin:di), IO :: (builtin:uo)), [will_not_call_mercury, not_thread_safe, tabled_for_io, promise_pure], "{ MercuryFile *stream = (MercuryFile *) Stream; LineNum = MR_line_number(*stream); MR_update_io(IO0, IO); }"). :- pragma foreign_proc("C", io:set_output_line_number(LineNum :: (builtin:in), IO0 :: (builtin:di), IO :: (builtin:uo)), [will_not_call_mercury, not_thread_safe, tabled_for_io, promise_pure], " MR_line_number(*mercury_current_text_output) = LineNum; MR_update_io(IO0, IO); "). :- pragma foreign_proc("C", io:set_output_line_number(Stream :: (builtin:in), LineNum :: (builtin:in), IO0 :: (builtin:di), IO :: (builtin:uo)), [will_not_call_mercury, not_thread_safe, tabled_for_io, promise_pure], "{ MercuryFile *stream = (MercuryFile *) Stream; MR_line_number(*stream) = LineNum; MR_update_io(IO0, IO); }"). io:read_binary(Result_4, DCG_0_7, DCG_2_9) :- io:binary_input_stream(Stream_5, DCG_0_7, DCG_1_8), io:read(Stream_5, ReadResult_6, DCG_1_8, DCG_2_9), io:convert_read_result(ReadResult_6, Result_4). io:read_binary(Stream_5, Result_6, DCG_0_9, DCG_3_12) :- io:set_binary_input_stream(Stream_5, OrigStream_7, DCG_0_9, DCG_1_10), io:read_binary(Result_6, DCG_1_10, DCG_2_11), io:set_binary_input_stream(OrigStream_7, _Stream_8, DCG_2_11, DCG_3_12). :- pragma inline((io:read_byte)/3). io:read_byte(Result_4, DCG_0_6, DCG_2_8) :- io:binary_input_stream(Stream_5, DCG_0_6, DCG_1_7), io:read_byte(Stream_5, Result_4, DCG_1_7, DCG_2_8). :- pragma inline((io:read_byte)/4). io:read_byte(Stream_5, Result_6, DCG_0_9, DCG_2_11) :- io:read_byte_val(Stream_5, Code_7, DCG_0_9, DCG_1_10), (if V_12 = 0, int:(Code_7 >= V_12) then Result_6 = io:ok(Code_7), DCG_2_11 = DCG_1_10 else (if Code_7 = -1 then Result_6 = io:eof, DCG_2_11 = DCG_1_10 else V_13 = "read failed: ", io:make_err_msg(V_13, Msg_8, DCG_1_10, DCG_2_11), Result_6 = io:error(V_14), V_14 = io:io_error(Msg_8) ) ). io:read_binary_file(Result_4, DCG_0_6, DCG_2_8) :- io:binary_input_stream(Stream_5, DCG_0_6, DCG_1_7), io:read_binary_file(Stream_5, Result_4, DCG_1_7, DCG_2_8). io:read_binary_file(Stream_5, Result_6, DCG_0_7, DCG_1_8) :- V_9 = list:[], io:read_binary_file_2(Stream_5, V_9, Result_6, DCG_0_7, DCG_1_8). io:binary_input_stream_foldl(Pred_6, T0_7, Res_8, DCG_0_10, DCG_2_12) :- io:binary_input_stream(Stream_9, DCG_0_10, DCG_1_11), io:binary_input_stream_foldl(Stream_9, Pred_6, T0_7, Res_8, DCG_1_11, DCG_2_12). io:binary_input_stream_foldl_io(Pred_5, Res_6, DCG_0_8, DCG_2_10) :- io:binary_input_stream(Stream_7, DCG_0_8, DCG_1_9), io:binary_input_stream_foldl_io(Stream_7, Pred_5, Res_6, DCG_1_9, DCG_2_10). io:binary_input_stream_foldl2_io(Pred_6, T0_7, Res_8, DCG_0_10, DCG_2_12) :- io:binary_input_stream(Stream_9, DCG_0_10, DCG_1_11), io:binary_input_stream_foldl2_io(Stream_9, Pred_6, T0_7, Res_8, DCG_1_11, DCG_2_12). io:binary_input_stream_foldl(Stream_7, Pred_8, T0_9, Res_10, DCG_0_15, DCG_2_17) :- io:read_byte(Stream_7, ByteResult_11, DCG_0_15, DCG_1_16), ( % disjunction ByteResult_11 = io:ok(Byte_12), call(Pred_8, Byte_12, T0_9, T1_13), io:binary_input_stream_foldl(Stream_7, Pred_8, T1_13, Res_10, DCG_1_16, DCG_2_17) ; ByteResult_11 = io:eof, Res_10 = io:ok(T0_9), DCG_2_17 = DCG_1_16 ; ByteResult_11 = io:error(Error_14), Res_10 = io:error(T0_9, Error_14), DCG_2_17 = DCG_1_16 ). io:binary_input_stream_foldl_io(Stream_6, Pred_7, Res_8, DCG_0_12, DCG_3_15) :- io:read_byte(Stream_6, ByteResult_9, DCG_0_12, DCG_1_13), ( % disjunction ByteResult_9 = io:ok(Byte_10), call(Pred_7, Byte_10, DCG_1_13, DCG_2_14), io:binary_input_stream_foldl_io(Stream_6, Pred_7, Res_8, DCG_2_14, DCG_3_15) ; ByteResult_9 = io:eof, Res_8 = io:ok, DCG_3_15 = DCG_1_13 ; ByteResult_9 = io:error(Error_11), Res_8 = io:error(Error_11), DCG_3_15 = DCG_1_13 ). io:binary_input_stream_foldl2_io(Stream_7, Pred_8, T0_9, Res_10, DCG_0_15, DCG_3_18) :- io:read_byte(Stream_7, ByteResult_11, DCG_0_15, DCG_1_16), ( % disjunction ByteResult_11 = io:ok(Byte_12), call(Pred_8, Byte_12, T0_9, T1_13, DCG_1_16, DCG_2_17), io:binary_input_stream_foldl2_io(Stream_7, Pred_8, T1_13, Res_10, DCG_2_17, DCG_3_18) ; ByteResult_11 = io:eof, Res_10 = io:ok(T0_9), DCG_3_18 = DCG_1_16 ; ByteResult_11 = io:error(Error_14), Res_10 = io:error(T0_9, Error_14), DCG_3_18 = DCG_1_16 ). io:putback_byte(Char_4, DCG_0_6, DCG_2_8) :- io:binary_input_stream(Stream_5, DCG_0_6, DCG_1_7), io:putback_byte(Stream_5, Char_4, DCG_1_7, DCG_2_8). :- pragma foreign_proc("C", io:putback_byte(File :: (builtin:in), Character :: (builtin:in), IO0 :: (builtin:di), IO :: (builtin:uo)), [may_call_mercury, not_thread_safe, tabled_for_io, promise_pure], "{ MercuryFile* mf = (MercuryFile *) File; /* XXX should work even if ungetc() fails */ if (MR_UNGETCH(*mf, Character) == EOF) { mercury_io_error(mf, \"io__putback_byte: ungetc failed\"); } MR_update_io(IO0, IO); }"). io:write_binary(Term_4, DCG_0_6, DCG_3_9) :- io:binary_output_stream(Stream_5, DCG_0_6, DCG_1_7), io:write(Stream_5, Term_4, DCG_1_7, DCG_2_8), V_10 = ".\n", io:write_string(Stream_5, V_10, DCG_2_8, DCG_3_9). io:write_binary(Stream_5, Term_6, DCG_0_9, DCG_3_12) :- io:set_binary_output_stream(Stream_5, OrigStream_7, DCG_0_9, DCG_1_10), io:write_binary(Term_6, DCG_1_10, DCG_2_11), io:set_binary_output_stream(OrigStream_7, _Stream_8, DCG_2_11, DCG_3_12). :- pragma foreign_proc("C", io:write_byte(Byte :: (builtin:in), IO0 :: (builtin:di), IO :: (builtin:uo)), [may_call_mercury, thread_safe, tabled_for_io, promise_pure], " /* call putc with a strictly non-negative byte-sized integer */ if (MR_PUTCH(*mercury_current_binary_output, (int) ((unsigned char) Byte)) < 0) { mercury_output_error(mercury_current_text_output); } MR_update_io(IO0, IO); "). :- pragma foreign_proc("C", io:write_byte(Stream :: (builtin:in), Byte :: (builtin:in), IO0 :: (builtin:di), IO :: (builtin:uo)), [may_call_mercury, thread_safe, tabled_for_io, promise_pure], "{ MercuryFile *stream = (MercuryFile *) Stream; /* call putc with a strictly non-negative byte-sized integer */ if (MR_PUTCH(*stream, (int) ((unsigned char) Byte)) < 0) { mercury_output_error(stream); } MR_update_io(IO0, IO); }"). :- pragma foreign_proc("C", io:write_bytes(Message :: (builtin:in), IO0 :: (builtin:di), IO :: (builtin:uo)), [may_call_mercury, thread_safe, tabled_for_io, promise_pure], "{ mercury_print_binary_string(mercury_current_binary_output, Message); MR_update_io(IO0, IO); }"). :- pragma foreign_proc("C", io:write_bytes(Stream :: (builtin:in), Message :: (builtin:in), IO0 :: (builtin:di), IO :: (builtin:uo)), [may_call_mercury, thread_safe, tabled_for_io, promise_pure], "{ MercuryFile *stream = (MercuryFile *) Stream; mercury_print_binary_string(stream, Message); MR_update_io(IO0, IO); }"). :- pragma foreign_proc("C", io:flush_binary_output(IO0 :: (builtin:di), IO :: (builtin:uo)), [may_call_mercury, thread_safe, tabled_for_io, promise_pure], " if (MR_FLUSH(*mercury_current_binary_output) < 0) { mercury_output_error(mercury_current_binary_output); } MR_update_io(IO0, IO); "). :- pragma foreign_proc("C", io:flush_binary_output(Stream :: (builtin:in), IO0 :: (builtin:di), IO :: (builtin:uo)), [may_call_mercury, thread_safe, tabled_for_io, promise_pure], "{ MercuryFile *stream = (MercuryFile *) Stream; if (MR_FLUSH(*stream) < 0) { mercury_output_error(stream); } MR_update_io(IO0, IO); }"). io:seek_binary(Stream_6, Whence_7, Offset_8, IO0_9, IO_10) :- io:whence_to_int(Whence_7, Flag_11), io:seek_binary_2(Stream_6, Flag_11, Offset_8, IO0_9, IO_10). :- pragma foreign_proc("C", io:binary_stream_offset(Stream :: (builtin:in), Offset :: (builtin:out), IO0 :: (builtin:di), IO :: (builtin:uo)), [will_not_call_mercury, thread_safe, tabled_for_io, promise_pure], "{ MercuryFile *stream = (MercuryFile *) Stream; /* XXX should check for failure */ /* XXX should check if the stream is tellable */ if (MR_IS_FILE_STREAM(*stream)) { Offset = ftell(MR_file(*stream)); } else { mercury_io_error(stream, \"io__binary_stream_offset: untellable stream\"); } MR_update_io(IO0, IO); }"). io:seen_binary(DCG_0_5, DCG_3_8) :- io:stdin_binary_stream(Stdin_3, DCG_0_5, DCG_1_6), io:set_binary_input_stream(Stdin_3, OldStream_4, DCG_1_6, DCG_2_7), io:close_binary_input(OldStream_4, DCG_2_7, DCG_3_8). io:close_binary_input(Stream_4, DCG_0_5, DCG_2_7) :- io:delete_stream_name(Stream_4, DCG_0_5, DCG_1_6), io:close_stream(Stream_4, DCG_1_6, DCG_2_7). :- pragma foreign_proc("C", io:binary_input_stream(Stream :: (builtin:out), IO0 :: (builtin:di), IO :: (builtin:uo)), [will_not_call_mercury, not_thread_safe, tabled_for_io, promise_pure], " Stream = (MR_Word) mercury_current_binary_input; MR_update_io(IO0, IO); "). :- pragma foreign_proc("C", io:set_binary_input_stream(NewStream :: (builtin:in), OutStream :: (builtin:out), IO0 :: (builtin:di), IO :: (builtin:uo)), [will_not_call_mercury, not_thread_safe, tabled_for_io, promise_pure], " OutStream = (MR_Word) mercury_current_binary_input; mercury_current_binary_input = (MercuryFile *) NewStream; MR_update_io(IO0, IO); "). :- pragma foreign_proc("C", io:stdin_binary_stream(Stream :: (builtin:out), IO0 :: (builtin:di), IO :: (builtin:uo)), [will_not_call_mercury, thread_safe, tabled_for_io, promise_pure], " Stream = (MR_Word) &mercury_stdin_binary; MR_update_io(IO0, IO); "). :- pragma foreign_proc("C", io:current_binary_input_stream(OutStream :: (builtin:out), IO0 :: (builtin:di), IO :: (builtin:uo)), [will_not_call_mercury, not_thread_safe, tabled_for_io, promise_pure], " OutStream = (MR_Word) mercury_current_binary_input; MR_update_io(IO0, IO); "). io:binary_input_stream_name(Name_4, DCG_0_6, DCG_2_8) :- io:binary_input_stream(Stream_5, DCG_0_6, DCG_1_7), io:stream_name(Stream_5, Name_4, DCG_1_7, DCG_2_8). io:binary_input_stream_name(Stream_5, Name_6, DCG_0_7, DCG_1_8) :- io:stream_name(Stream_5, Name_6, DCG_0_7, DCG_1_8). io:told_binary(DCG_0_5, DCG_3_8) :- io:stdout_binary_stream(Stdout_3, DCG_0_5, DCG_1_6), io:set_binary_output_stream(Stdout_3, OldStream_4, DCG_1_6, DCG_2_7), io:close_binary_output(OldStream_4, DCG_2_7, DCG_3_8). io:close_binary_output(Stream_4, DCG_0_5, DCG_2_7) :- io:delete_stream_name(Stream_4, DCG_0_5, DCG_1_6), io:close_stream(Stream_4, DCG_1_6, DCG_2_7). :- pragma foreign_proc("C", io:binary_output_stream(Stream :: (builtin:out), IO0 :: (builtin:di), IO :: (builtin:uo)), [will_not_call_mercury, not_thread_safe, tabled_for_io, promise_pure], " Stream = (MR_Word) mercury_current_binary_output; MR_update_io(IO0, IO); "). :- pragma foreign_proc("C", io:stdout_binary_stream(Stream :: (builtin:out), IO0 :: (builtin:di), IO :: (builtin:uo)), [will_not_call_mercury, thread_safe, tabled_for_io, promise_pure], " Stream = (MR_Word) &mercury_stdout_binary; MR_update_io(IO0, IO); "). :- pragma foreign_proc("C", io:set_binary_output_stream(NewStream :: (builtin:in), OutStream :: (builtin:out), IO0 :: (builtin:di), IO :: (builtin:uo)), [will_not_call_mercury, not_thread_safe, tabled_for_io, promise_pure], " OutStream = (MR_Word) mercury_current_binary_output; mercury_current_binary_output = (MercuryFile *) NewStream; MR_update_io(IO0, IO); "). :- pragma foreign_proc("C", io:current_binary_output_stream(OutStream :: (builtin:out), IO0 :: (builtin:di), IO :: (builtin:uo)), [will_not_call_mercury, not_thread_safe, tabled_for_io, promise_pure], " OutStream = (MR_Word) mercury_current_binary_output; MR_update_io(IO0, IO); "). io:binary_output_stream_name(Name_4, DCG_0_6, DCG_2_8) :- io:binary_output_stream(Stream_5, DCG_0_6, DCG_1_7), io:stream_name(Stream_5, Name_4, DCG_1_7, DCG_2_8). io:binary_output_stream_name(Stream_5, Name_6, DCG_0_7, DCG_1_8) :- io:stream_name(Stream_5, Name_6, DCG_0_7, DCG_1_8). :- pragma foreign_proc("C", io:progname(DefaultProgname :: (builtin:in), PrognameOut :: (builtin:out), IO0 :: (builtin:di), IO :: (builtin:uo)), [will_not_call_mercury, thread_safe, tabled_for_io, promise_pure], " if (MR_progname) { /* ** The silly casting below is needed to avoid ** a gcc warning about casting away const. ** PrognameOut is of type `MR_String\' (char *); ** it should be of type `MR_ConstString\' (const char *), ** but fixing that requires a fair bit of work ** on the compiler. */ MR_make_aligned_string( MR_LVALUE_CAST(MR_ConstString, PrognameOut), MR_progname); } else { PrognameOut = DefaultProgname; } MR_update_io(IO0, IO); "). io:progname_base(DefaultName_5, PrognameBase_6, DCG_0_8, DCG_1_9) :- io:progname(DefaultName_5, Progname_7, DCG_0_8, DCG_1_9), dir:basename(Progname_7, PrognameBase_6). :- pragma foreign_proc("C", io:command_line_arguments(Args :: (builtin:out), IO0 :: (builtin:di), IO :: (builtin:uo)), [will_not_call_mercury, thread_safe, tabled_for_io, promise_pure], " /* convert mercury_argv from a vector to a list */ { int i = mercury_argc; Args = MR_list_empty_msg(MR_PROC_LABEL); while (--i >= 0) { Args = MR_list_cons_msg((MR_Word) mercury_argv[i], Args, MR_PROC_LABEL); } } MR_update_io(IO0, IO); "). :- pragma foreign_proc("C", io:get_exit_status(ExitStatus :: (builtin:out), IO0 :: (builtin:di), IO :: (builtin:uo)), [will_not_call_mercury, not_thread_safe, tabled_for_io, promise_pure], " ExitStatus = mercury_exit_status; MR_update_io(IO0, IO); "). :- pragma foreign_proc("C", io:set_exit_status(ExitStatus :: (builtin:in), IO0 :: (builtin:di), IO :: (builtin:uo)), [will_not_call_mercury, not_thread_safe, tabled_for_io, promise_pure], " mercury_exit_status = ExitStatus; MR_update_io(IO0, IO); "). :- pragma foreign_proc("C", io:get_globals(Globals :: (builtin:uo), IOState0 :: (builtin:di), IOState :: (builtin:uo)), [will_not_call_mercury, not_thread_safe, tabled_for_io, promise_pure], " Globals = ML_io_user_globals; MR_update_io(IOState0, IOState); "). :- pragma foreign_proc("C", io:set_globals(Globals :: (builtin:di), IOState0 :: (builtin:di), IOState :: (builtin:uo)), [will_not_call_mercury, not_thread_safe, tabled_for_io, promise_pure], " /* XXX need to globalize the memory */ ML_io_user_globals = Globals; MR_update_io(IOState0, IOState); "). io:tmpnam(Name_4, DCG_0_6, DCG_2_8) :- io:make_temp(Name_4, DCG_0_6, DCG_1_7), io:remove_file(Name_4, _Result_5, DCG_1_7, DCG_2_8). io:tmpnam(Dir_6, Prefix_7, Name_8, DCG_0_10, DCG_2_12) :- io:make_temp(Dir_6, Prefix_7, Name_8, DCG_0_10, DCG_1_11), io:remove_file(Name_8, _Result_9, DCG_1_11, DCG_2_12). io:report_stats(DCG_0_3, DCG_1_4) :- V_5 = "standard", io:report_stats(V_5, DCG_0_3, DCG_1_4). io:report_full_memory_stats(DCG_0_3, DCG_1_4) :- V_5 = "full_memory_stats", io:report_stats(V_5, DCG_0_3, DCG_1_4). io:make_io_error(Error_3) = (io:io_error(Error_3)). io:error_message(Error_3) = Msg_4 :- io:error_message(Error_3, Msg_4). io:error_message((io:io_error(Error_3)), Error_3). io:get_op_table(HeadVar__1_1, DCG_0_4, DCG_1_5) :- HeadVar__1_1 = ops:init_mercury_op_table, DCG_0_4 = DCG_1_5. io:set_op_table(_OpTable_4, DCG_0_5, DCG_1_6) :- DCG_0_5 = DCG_1_6. io:write_univ(Univ_4, DCG_0_5, DCG_1_6) :- V_7 = deconstruct:canonicalize, io:do_write_univ(V_7, Univ_4, DCG_0_5, DCG_1_6). io:write_univ(Stream_5, Univ_6, DCG_0_9, DCG_3_12) :- io:set_output_stream(Stream_5, OrigStream_7, DCG_0_9, DCG_1_10), V_13 = deconstruct:canonicalize, io:do_write_univ(V_13, Univ_6, DCG_1_10, DCG_2_11), io:set_output_stream(OrigStream_7, _Stream_8, DCG_2_11, DCG_3_12). io:write_univ(Stream_6, NonCanon_7, Univ_8, DCG_0_11, DCG_3_14) :- io:set_output_stream(Stream_6, OrigStream_9, DCG_0_11, DCG_1_12), io:do_write_univ(NonCanon_7, Univ_8, DCG_1_12, DCG_2_13), io:set_output_stream(OrigStream_9, _Stream_10, DCG_2_13, DCG_3_14). io:read_from_string_with_int_instead_of_char(FileName_7, String_8, Len_9, Result_10, Posn0_11, Posn_12) :- IsAditiTuple_13 = bool:yes, io:read_from_string(IsAditiTuple_13, FileName_7, String_8, Len_9, Result_10, Posn0_11, Posn_12). io:get_stream_id(Stream_3) = Id_4 :- io:get_stream_id(Stream_3, Id_4). :- pragma foreign_proc("C", io:read_char_code(File :: (builtin:in), CharCode :: (builtin:out), IO0 :: (builtin:di), IO :: (builtin:uo)), [will_not_call_mercury, not_thread_safe, tabled_for_io, promise_pure], " CharCode = mercury_getc((MercuryFile *) File); MR_update_io(IO0, IO); "). :- pragma foreign_proc("C", io:read_byte_val(File :: (builtin:in), ByteVal :: (builtin:out), IO0 :: (builtin:di), IO :: (builtin:uo)), [will_not_call_mercury, not_thread_safe, tabled_for_io, promise_pure], " ByteVal = mercury_getc((MercuryFile *) File); MR_update_io(IO0, IO); "). :- pragma foreign_proc("C", io:make_err_msg(Msg0 :: (builtin:in), Msg :: (builtin:out), IO0 :: (builtin:di), IO :: (builtin:uo)), [will_not_call_mercury, not_thread_safe, tabled_for_io, promise_pure], "{ ML_maybe_make_err_msg(MR_TRUE, Msg0, MR_PROC_LABEL, Msg); MR_update_io(IO0, IO); }"). io:read_from_string(IsAditiTuple_8, FileName_9, String_10, Len_11, Result_12, Posn0_13, Posn_14) :- parser:read_term_from_string(FileName_9, String_10, Len_11, Posn0_13, Posn_14, ReadResult_15), Posn_14 = io:posn(LineNumber_16, V_17, V_18), io:process_read_term(IsAditiTuple_8, ReadResult_15, LineNumber_16, Result_12). io:do_write(NonCanon_5, Term_6, DCG_0_8, DCG_1_9) :- std_util:type_to_univ(Term_6, Univ_7), io:do_write_univ(NonCanon_5, Univ_7, DCG_0_8, DCG_1_9). :- pragma foreign_proc("C", io:get_stream_names(StreamNames :: (builtin:out), IO0 :: (builtin:di), IO :: (builtin:uo)), [will_not_call_mercury, not_thread_safe, tabled_for_io, promise_pure], " StreamNames = ML_io_stream_names; MR_update_io(IO0, IO); "). :- pragma foreign_proc("C", io:set_stream_names(StreamNames :: (builtin:in), IO0 :: (builtin:di), IO :: (builtin:uo)), [will_not_call_mercury, not_thread_safe, tabled_for_io, promise_pure], " ML_io_stream_names = StreamNames; MR_update_io(IO0, IO); "). io:delete_stream_name(Stream_4, DCG_0_7, DCG_2_9) :- io:get_stream_names(StreamNames0_5, DCG_0_7, DCG_1_8), V_10 = io:get_stream_id(Stream_4), map:delete(StreamNames0_5, V_10, StreamNames_6), io:set_stream_names(StreamNames_6, DCG_1_8, DCG_2_9). :- pragma foreign_proc("C", io:get_stream_id(Stream :: (builtin:in), Id :: (builtin:out)), [will_not_call_mercury, not_thread_safe, not_tabled_for_io, promise_pure], " #ifndef MR_NATIVE_GC /* ** Most of the time, we can just use the pointer to the stream ** as a unique identifier. */ Id = (MR_Word) Stream; #else /* ** for accurate GC we embed an ID in the MercuryFile ** and retrieve it here. */ Id = ((MercuryFile *) Stream)->id; #endif "). :- pragma foreign_proc("C", io:seek_binary_2(Stream :: (builtin:in), Flag :: (builtin:in), Off :: (builtin:in), IO0 :: (builtin:di), IO :: (builtin:uo)), [will_not_call_mercury, thread_safe, tabled_for_io, promise_pure], "{ static const int seek_flags[] = { SEEK_SET, SEEK_CUR, SEEK_END }; MercuryFile *stream = (MercuryFile *) Stream; /* XXX should check for failure */ /* XXX should also check if the stream is seekable */ if (MR_IS_FILE_STREAM(*stream)) { fseek(MR_file(*stream), Off, seek_flags[Flag]); } else { mercury_io_error(stream, \"io__seek_binary_2: unseekable stream\"); } MR_update_io(IO0, IO); }"). :- pragma foreign_proc("C", io:close_stream(Stream :: (builtin:in), IO0 :: (builtin:di), IO :: (builtin:uo)), [may_call_mercury, thread_safe, tabled_for_io, promise_pure], " mercury_close((MercuryFile *) Stream); MR_update_io(IO0, IO); "). :- pragma termination_info(io:read_char((builtin:out), (builtin:di), (builtin:uo)), infinite, can_loop). :- pragma termination_info(io:read_word((builtin:out), (builtin:di), (builtin:uo)), infinite, can_loop). :- pragma termination_info(io:read_line((builtin:out), (builtin:di), (builtin:uo)), infinite, can_loop). :- pragma termination_info(io:read_line_as_string((builtin:out), (builtin:di), (builtin:uo)), infinite, cannot_loop). :- pragma termination_info(io:read_file((builtin:out), (builtin:di), (builtin:uo)), infinite, can_loop). :- pragma termination_info(io:read_file_as_string((builtin:out), (builtin:di), (builtin:uo)), infinite, can_loop). :- pragma termination_info(io:input_stream_foldl((pred((builtin:in), (builtin:in), (builtin:out)) is det), (builtin:in), (builtin:out), (builtin:di), (builtin:uo)), infinite, can_loop). :- pragma termination_info(io:input_stream_foldl((pred((builtin:in), (builtin:in), (builtin:out)) is cc_multi), (builtin:in), (builtin:out), (builtin:di), (builtin:uo)), infinite, can_loop). :- pragma termination_info(io:input_stream_foldl_io((pred((builtin:in), (builtin:di), (builtin:uo)) is det), (builtin:out), (builtin:di), (builtin:uo)), infinite, can_loop). :- pragma termination_info(io:input_stream_foldl_io((pred((builtin:in), (builtin:di), (builtin:uo)) is cc_multi), (builtin:out), (builtin:di), (builtin:uo)), infinite, can_loop). :- pragma termination_info(io:input_stream_foldl2_io((pred((builtin:in), (builtin:in), (builtin:out), (builtin:di), (builtin:uo)) is det), (builtin:in), (builtin:out), (builtin:di), (builtin:uo)), infinite, can_loop). :- pragma termination_info(io:input_stream_foldl2_io((pred((builtin:in), (builtin:in), (builtin:out), (builtin:di), (builtin:uo)) is cc_multi), (builtin:in), (builtin:out), (builtin:di), (builtin:uo)), infinite, can_loop). :- pragma termination_info(io:putback_char((builtin:in), (builtin:di), (builtin:uo)), infinite, cannot_loop). :- pragma termination_info(io:read_char((builtin:in), (builtin:out), (builtin:di), (builtin:uo)), infinite, can_loop). :- pragma termination_info(io:read_word((builtin:in), (builtin:out), (builtin:di), (builtin:uo)), infinite, can_loop). :- pragma termination_info(io:read_line((builtin:in), (builtin:out), (builtin:di), (builtin:uo)), infinite, can_loop). :- pragma termination_info(io:read_line_as_string((builtin:in), (builtin:out), (builtin:di), (builtin:uo)), infinite, cannot_loop). :- pragma termination_info(io:read_file((builtin:in), (builtin:out), (builtin:di), (builtin:uo)), infinite, can_loop). :- pragma termination_info(io:read_file_as_string((builtin:in), (builtin:out), (builtin:di), (builtin:uo)), infinite, can_loop). :- pragma termination_info(io:input_stream_foldl((builtin:in), (pred((builtin:in), (builtin:in), (builtin:out)) is det), (builtin:in), (builtin:out), (builtin:di), (builtin:uo)), infinite, can_loop). :- pragma termination_info(io:input_stream_foldl((builtin:in), (pred((builtin:in), (builtin:in), (builtin:out)) is cc_multi), (builtin:in), (builtin:out), (builtin:di), (builtin:uo)), infinite, can_loop). :- pragma termination_info(io:input_stream_foldl_io((builtin:in), (pred((builtin:in), (builtin:di), (builtin:uo)) is det), (builtin:out), (builtin:di), (builtin:uo)), infinite, can_loop). :- pragma termination_info(io:input_stream_foldl_io((builtin:in), (pred((builtin:in), (builtin:di), (builtin:uo)) is cc_multi), (builtin:out), (builtin:di), (builtin:uo)), infinite, can_loop). :- pragma termination_info(io:input_stream_foldl2_io((builtin:in), (pred((builtin:in), (builtin:in), (builtin:out), (builtin:di), (builtin:uo)) is det), (builtin:in), (builtin:out), (builtin:di), (builtin:uo)), infinite, can_loop). :- pragma termination_info(io:input_stream_foldl2_io((builtin:in), (pred((builtin:in), (builtin:in), (builtin:out), (builtin:di), (builtin:uo)) is cc_multi), (builtin:in), (builtin:out), (builtin:di), (builtin:uo)), infinite, can_loop). :- pragma termination_info(io:putback_char((builtin:in), (builtin:in), (builtin:di), (builtin:uo)), infinite, cannot_loop). :- pragma termination_info(io:read((builtin:out), (builtin:di), (builtin:uo)), infinite, can_loop). :- pragma termination_info(io:read((builtin:in), (builtin:out), (builtin:di), (builtin:uo)), infinite, can_loop). :- pragma termination_info(io:read_from_string((builtin:in), (builtin:in), (builtin:in), (builtin:out), (builtin:in), (builtin:out)), infinite, can_loop). :- pragma termination_info(io:ignore_whitespace((builtin:out), (builtin:di), (builtin:uo)), infinite, can_loop). :- pragma termination_info(io:ignore_whitespace((builtin:in), (builtin:out), (builtin:di), (builtin:uo)), infinite, can_loop). :- pragma termination_info(io:print((builtin:in), (builtin:di), (builtin:uo)), infinite, can_loop). :- pragma termination_info(io:print((builtin:in), (builtin:in), (builtin:di), (builtin:uo)), infinite, can_loop). :- pragma termination_info(io:print((builtin:in), builtin:in((deconstruct:do_not_allow)), (builtin:in), (builtin:di), (builtin:uo)), infinite, can_loop). :- pragma termination_info(io:print((builtin:in), builtin:in((deconstruct:canonicalize)), (builtin:in), (builtin:di), (builtin:uo)), infinite, can_loop). :- pragma termination_info(io:print((builtin:in), builtin:in((deconstruct:include_details_cc)), (builtin:in), (builtin:di), (builtin:uo)), infinite, can_loop). :- pragma termination_info(io:print((builtin:in), (builtin:in), (builtin:in), (builtin:di), (builtin:uo)), infinite, can_loop). :- pragma termination_info(io:print_cc((builtin:in), (builtin:di), (builtin:uo)), infinite, can_loop). :- pragma termination_info(io:write((builtin:in), (builtin:di), (builtin:uo)), infinite, can_loop). :- pragma termination_info(io:write((builtin:in), (builtin:in), (builtin:di), (builtin:uo)), infinite, can_loop). :- pragma termination_info(io:write((builtin:in), builtin:in((deconstruct:do_not_allow)), (builtin:in), (builtin:di), (builtin:uo)), infinite, can_loop). :- pragma termination_info(io:write((builtin:in), builtin:in((deconstruct:canonicalize)), (builtin:in), (builtin:di), (builtin:uo)), infinite, can_loop). :- pragma termination_info(io:write((builtin:in), builtin:in((deconstruct:include_details_cc)), (builtin:in), (builtin:di), (builtin:uo)), infinite, can_loop). :- pragma termination_info(io:write((builtin:in), (builtin:in), (builtin:in), (builtin:di), (builtin:uo)), infinite, can_loop). :- pragma termination_info(io:write_cc((builtin:in), (builtin:di), (builtin:uo)), infinite, can_loop). :- pragma termination_info(io:nl((builtin:di), (builtin:uo)), infinite, cannot_loop). :- pragma termination_info(io:nl((builtin:in), (builtin:di), (builtin:uo)), infinite, cannot_loop). :- pragma termination_info(io:write_string((builtin:in), (builtin:di), (builtin:uo)), infinite, cannot_loop). :- pragma termination_info(io:write_string((builtin:in), (builtin:in), (builtin:di), (builtin:uo)), infinite, cannot_loop). :- pragma termination_info(io:write_strings((builtin:in), (builtin:di), (builtin:uo)), infinite, can_loop). :- pragma termination_info(io:write_strings((builtin:in), (builtin:in), (builtin:di), (builtin:uo)), infinite, can_loop). :- pragma termination_info(io:write_char((builtin:in), (builtin:di), (builtin:uo)), infinite, cannot_loop). :- pragma termination_info(io:write_char((builtin:in), (builtin:in), (builtin:di), (builtin:uo)), infinite, cannot_loop). :- pragma termination_info(io:write_int((builtin:in), (builtin:di), (builtin:uo)), infinite, cannot_loop). :- pragma termination_info(io:write_int((builtin:in), (builtin:in), (builtin:di), (builtin:uo)), infinite, cannot_loop). :- pragma termination_info(io:write_float((builtin:in), (builtin:di), (builtin:uo)), infinite, cannot_loop). :- pragma termination_info(io:write_float((builtin:in), (builtin:in), (builtin:di), (builtin:uo)), infinite, cannot_loop). :- pragma termination_info(io:format((builtin:in), (builtin:in), (builtin:di), (builtin:uo)), infinite, can_loop). :- pragma termination_info(io:format((builtin:in), (builtin:in), (builtin:in), (builtin:di), (builtin:uo)), infinite, can_loop). :- pragma termination_info(io:write_many((builtin:in), (builtin:di), (builtin:uo)), infinite, can_loop). :- pragma termination_info(io:write_many((builtin:in), (builtin:in), (builtin:di), (builtin:uo)), infinite, can_loop). :- pragma termination_info(io:write_list((builtin:in), (builtin:in), (pred((builtin:in), (builtin:di), (builtin:uo)) is det), (builtin:di), (builtin:uo)), infinite, can_loop). :- pragma termination_info(io:write_list((builtin:in), (builtin:in), (pred((builtin:in), (builtin:di), (builtin:uo)) is cc_multi), (builtin:di), (builtin:uo)), infinite, can_loop). :- pragma termination_info(io:write_list((builtin:in), (builtin:in), (builtin:in), (pred((builtin:in), (builtin:di), (builtin:uo)) is det), (builtin:di), (builtin:uo)), infinite, can_loop). :- pragma termination_info(io:write_list((builtin:in), (builtin:in), (builtin:in), (pred((builtin:in), (builtin:di), (builtin:uo)) is cc_multi), (builtin:di), (builtin:uo)), infinite, can_loop). :- pragma termination_info(io:flush_output((builtin:di), (builtin:uo)), infinite, cannot_loop). :- pragma termination_info(io:flush_output((builtin:in), (builtin:di), (builtin:uo)), infinite, cannot_loop). :- pragma termination_info(io:see((builtin:in), (builtin:out), (builtin:di), (builtin:uo)), infinite, can_loop). :- pragma termination_info(io:seen((builtin:di), (builtin:uo)), infinite, can_loop). :- pragma termination_info(io:open_input((builtin:in), (builtin:out), (builtin:di), (builtin:uo)), infinite, can_loop). :- pragma termination_info(io:close_input((builtin:in), (builtin:di), (builtin:uo)), infinite, can_loop). :- pragma termination_info(io:input_stream((builtin:out), (builtin:di), (builtin:uo)), infinite, cannot_loop). :- pragma termination_info(io:set_input_stream((builtin:in), (builtin:out), (builtin:di), (builtin:uo)), infinite, cannot_loop). :- pragma termination_info(io:stdin_stream((builtin:out), (builtin:di), (builtin:uo)), infinite, cannot_loop). :- pragma termination_info(io:current_input_stream((builtin:out), (builtin:di), (builtin:uo)), infinite, cannot_loop). :- pragma termination_info(io:input_stream_name((builtin:out), (builtin:di), (builtin:uo)), infinite, can_loop). :- pragma termination_info(io:input_stream_name((builtin:in), (builtin:out), (builtin:di), (builtin:uo)), infinite, can_loop). :- pragma termination_info(io:get_line_number((builtin:out), (builtin:di), (builtin:uo)), infinite, cannot_loop). :- pragma termination_info(io:get_line_number((builtin:in), (builtin:out), (builtin:di), (builtin:uo)), infinite, cannot_loop). :- pragma termination_info(io:set_line_number((builtin:in), (builtin:di), (builtin:uo)), infinite, cannot_loop). :- pragma termination_info(io:set_line_number((builtin:in), (builtin:in), (builtin:di), (builtin:uo)), infinite, cannot_loop). :- pragma termination_info(io:tell((builtin:in), (builtin:out), (builtin:di), (builtin:uo)), infinite, can_loop). :- pragma termination_info(io:told((builtin:di), (builtin:uo)), infinite, can_loop). :- pragma termination_info(io:open_output((builtin:in), (builtin:out), (builtin:di), (builtin:uo)), infinite, can_loop). :- pragma termination_info(io:open_append((builtin:in), (builtin:out), (builtin:di), (builtin:uo)), infinite, can_loop). :- pragma termination_info(io:close_output((builtin:in), (builtin:di), (builtin:uo)), infinite, can_loop). :- pragma termination_info(io:output_stream((builtin:out), (builtin:di), (builtin:uo)), infinite, cannot_loop). :- pragma termination_info(io:set_output_stream((builtin:in), (builtin:out), (builtin:di), (builtin:uo)), infinite, cannot_loop). :- pragma termination_info(io:stdout_stream((builtin:out), (builtin:di), (builtin:uo)), infinite, cannot_loop). :- pragma termination_info(io:stderr_stream((builtin:out), (builtin:di), (builtin:uo)), infinite, cannot_loop). :- pragma termination_info(io:current_output_stream((builtin:out), (builtin:di), (builtin:uo)), infinite, cannot_loop). :- pragma termination_info(io:output_stream_name((builtin:out), (builtin:di), (builtin:uo)), infinite, can_loop). :- pragma termination_info(io:output_stream_name((builtin:in), (builtin:out), (builtin:di), (builtin:uo)), infinite, can_loop). :- pragma termination_info(io:get_output_line_number((builtin:out), (builtin:di), (builtin:uo)), infinite, cannot_loop). :- pragma termination_info(io:get_output_line_number((builtin:in), (builtin:out), (builtin:di), (builtin:uo)), infinite, cannot_loop). :- pragma termination_info(io:set_output_line_number((builtin:in), (builtin:di), (builtin:uo)), infinite, cannot_loop). :- pragma termination_info(io:set_output_line_number((builtin:in), (builtin:in), (builtin:di), (builtin:uo)), infinite, cannot_loop). :- pragma termination_info(io:read_binary((builtin:out), (builtin:di), (builtin:uo)), infinite, can_loop). :- pragma termination_info(io:read_binary((builtin:in), (builtin:out), (builtin:di), (builtin:uo)), infinite, can_loop). :- pragma termination_info(io:read_byte((builtin:out), (builtin:di), (builtin:uo)), infinite, cannot_loop). :- pragma termination_info(io:read_byte((builtin:in), (builtin:out), (builtin:di), (builtin:uo)), infinite, cannot_loop). :- pragma termination_info(io:read_binary_file((builtin:out), (builtin:di), (builtin:uo)), infinite, can_loop). :- pragma termination_info(io:read_binary_file((builtin:in), (builtin:out), (builtin:di), (builtin:uo)), infinite, can_loop). :- pragma termination_info(io:binary_input_stream_foldl((pred((builtin:in), (builtin:in), (builtin:out)) is det), (builtin:in), (builtin:out), (builtin:di), (builtin:uo)), infinite, can_loop). :- pragma termination_info(io:binary_input_stream_foldl((pred((builtin:in), (builtin:in), (builtin:out)) is cc_multi), (builtin:in), (builtin:out), (builtin:di), (builtin:uo)), infinite, can_loop). :- pragma termination_info(io:binary_input_stream_foldl_io((pred((builtin:in), (builtin:di), (builtin:uo)) is det), (builtin:out), (builtin:di), (builtin:uo)), infinite, can_loop). :- pragma termination_info(io:binary_input_stream_foldl_io((pred((builtin:in), (builtin:di), (builtin:uo)) is cc_multi), (builtin:out), (builtin:di), (builtin:uo)), infinite, can_loop). :- pragma termination_info(io:binary_input_stream_foldl2_io((pred((builtin:in), (builtin:in), (builtin:out), (builtin:di), (builtin:uo)) is det), (builtin:in), (builtin:out), (builtin:di), (builtin:uo)), infinite, can_loop). :- pragma termination_info(io:binary_input_stream_foldl2_io((pred((builtin:in), (builtin:in), (builtin:out), (builtin:di), (builtin:uo)) is cc_multi), (builtin:in), (builtin:out), (builtin:di), (builtin:uo)), infinite, can_loop). :- pragma termination_info(io:binary_input_stream_foldl((builtin:in), (pred((builtin:in), (builtin:in), (builtin:out)) is det), (builtin:in), (builtin:out), (builtin:di), (builtin:uo)), infinite, can_loop). :- pragma termination_info(io:binary_input_stream_foldl((builtin:in), (pred((builtin:in), (builtin:in), (builtin:out)) is cc_multi), (builtin:in), (builtin:out), (builtin:di), (builtin:uo)), infinite, can_loop). :- pragma termination_info(io:binary_input_stream_foldl_io((builtin:in), (pred((builtin:in), (builtin:di), (builtin:uo)) is det), (builtin:out), (builtin:di), (builtin:uo)), infinite, can_loop). :- pragma termination_info(io:binary_input_stream_foldl_io((builtin:in), (pred((builtin:in), (builtin:di), (builtin:uo)) is cc_multi), (builtin:out), (builtin:di), (builtin:uo)), infinite, can_loop). :- pragma termination_info(io:binary_input_stream_foldl2_io((builtin:in), (pred((builtin:in), (builtin:in), (builtin:out), (builtin:di), (builtin:uo)) is det), (builtin:in), (builtin:out), (builtin:di), (builtin:uo)), infinite, can_loop). :- pragma termination_info(io:binary_input_stream_foldl2_io((builtin:in), (pred((builtin:in), (builtin:in), (builtin:out), (builtin:di), (builtin:uo)) is cc_multi), (builtin:in), (builtin:out), (builtin:di), (builtin:uo)), infinite, can_loop). :- pragma termination_info(io:putback_byte((builtin:in), (builtin:di), (builtin:uo)), infinite, cannot_loop). :- pragma termination_info(io:putback_byte((builtin:in), (builtin:in), (builtin:di), (builtin:uo)), infinite, cannot_loop). :- pragma termination_info(io:write_binary((builtin:in), (builtin:di), (builtin:uo)), infinite, can_loop). :- pragma termination_info(io:write_binary((builtin:in), (builtin:in), (builtin:di), (builtin:uo)), infinite, can_loop). :- pragma termination_info(io:write_byte((builtin:in), (builtin:di), (builtin:uo)), infinite, cannot_loop). :- pragma termination_info(io:write_byte((builtin:in), (builtin:in), (builtin:di), (builtin:uo)), infinite, cannot_loop). :- pragma termination_info(io:write_bytes((builtin:in), (builtin:di), (builtin:uo)), infinite, cannot_loop). :- pragma termination_info(io:write_bytes((builtin:in), (builtin:in), (builtin:di), (builtin:uo)), infinite, cannot_loop). :- pragma termination_info(io:flush_binary_output((builtin:di), (builtin:uo)), infinite, cannot_loop). :- pragma termination_info(io:flush_binary_output((builtin:in), (builtin:di), (builtin:uo)), infinite, cannot_loop). :- pragma termination_info(io:seek_binary((builtin:in), (builtin:in), (builtin:in), (builtin:di), (builtin:uo)), infinite, cannot_loop). :- pragma termination_info(io:binary_stream_offset((builtin:in), (builtin:out), (builtin:di), (builtin:uo)), infinite, cannot_loop). :- pragma termination_info(io:see_binary((builtin:in), (builtin:out), (builtin:di), (builtin:uo)), infinite, can_loop). :- pragma termination_info(io:seen_binary((builtin:di), (builtin:uo)), infinite, can_loop). :- pragma termination_info(io:open_binary_input((builtin:in), (builtin:out), (builtin:di), (builtin:uo)), infinite, can_loop). :- pragma termination_info(io:close_binary_input((builtin:in), (builtin:di), (builtin:uo)), infinite, can_loop). :- pragma termination_info(io:binary_input_stream((builtin:out), (builtin:di), (builtin:uo)), infinite, cannot_loop). :- pragma termination_info(io:set_binary_input_stream((builtin:in), (builtin:out), (builtin:di), (builtin:uo)), infinite, cannot_loop). :- pragma termination_info(io:stdin_binary_stream((builtin:out), (builtin:di), (builtin:uo)), infinite, cannot_loop). :- pragma termination_info(io:current_binary_input_stream((builtin:out), (builtin:di), (builtin:uo)), infinite, cannot_loop). :- pragma termination_info(io:binary_input_stream_name((builtin:out), (builtin:di), (builtin:uo)), infinite, can_loop). :- pragma termination_info(io:binary_input_stream_name((builtin:in), (builtin:out), (builtin:di), (builtin:uo)), infinite, can_loop). :- pragma termination_info(io:tell_binary((builtin:in), (builtin:out), (builtin:di), (builtin:uo)), infinite, can_loop). :- pragma termination_info(io:told_binary((builtin:di), (builtin:uo)), infinite, can_loop). :- pragma termination_info(io:open_binary_output((builtin:in), (builtin:out), (builtin:di), (builtin:uo)), infinite, can_loop). :- pragma termination_info(io:open_binary_append((builtin:in), (builtin:out), (builtin:di), (builtin:uo)), infinite, can_loop). :- pragma termination_info(io:close_binary_output((builtin:in), (builtin:di), (builtin:uo)), infinite, can_loop). :- pragma termination_info(io:binary_output_stream((builtin:out), (builtin:di), (builtin:uo)), infinite, cannot_loop). :- pragma termination_info(io:stdout_binary_stream((builtin:out), (builtin:di), (builtin:uo)), infinite, cannot_loop). :- pragma termination_info(io:set_binary_output_stream((builtin:in), (builtin:out), (builtin:di), (builtin:uo)), infinite, cannot_loop). :- pragma termination_info(io:current_binary_output_stream((builtin:out), (builtin:di), (builtin:uo)), infinite, cannot_loop). :- pragma termination_info(io:binary_output_stream_name((builtin:out), (builtin:di), (builtin:uo)), infinite, can_loop). :- pragma termination_info(io:binary_output_stream_name((builtin:in), (builtin:out), (builtin:di), (builtin:uo)), infinite, can_loop). :- pragma termination_info(io:progname((builtin:in), (builtin:out), (builtin:di), (builtin:uo)), infinite, cannot_loop). :- pragma termination_info(io:progname_base((builtin:in), (builtin:out), (builtin:di), (builtin:uo)), infinite, can_loop). :- pragma termination_info(io:command_line_arguments((builtin:out), (builtin:di), (builtin:uo)), infinite, cannot_loop). :- pragma termination_info(io:get_exit_status((builtin:out), (builtin:di), (builtin:uo)), infinite, cannot_loop). :- pragma termination_info(io:set_exit_status((builtin:in), (builtin:di), (builtin:uo)), infinite, cannot_loop). :- pragma termination_info(io:get_globals((builtin:uo), (builtin:di), (builtin:uo)), infinite, cannot_loop). :- pragma termination_info(io:set_globals((builtin:di), (builtin:di), (builtin:uo)), infinite, cannot_loop). :- pragma termination_info(io:get_environment_var((builtin:in), (builtin:out), (builtin:di), (builtin:uo)), infinite, cannot_loop). :- pragma termination_info(io:set_environment_var((builtin:in), (builtin:in), (builtin:di), (builtin:uo)), finite(0, [no, no, yes, no]), can_loop). :- pragma termination_info(io:tmpnam((builtin:out), (builtin:di), (builtin:uo)), infinite, can_loop). :- pragma termination_info(io:tmpnam((builtin:in), (builtin:in), (builtin:out), (builtin:di), (builtin:uo)), infinite, can_loop). :- pragma termination_info(io:make_temp((builtin:out), (builtin:di), (builtin:uo)), infinite, can_loop). :- pragma termination_info(io:make_temp((builtin:in), (builtin:in), (builtin:out), (builtin:di), (builtin:uo)), infinite, can_loop). :- pragma termination_info(io:remove_file((builtin:in), (builtin:out), (builtin:di), (builtin:uo)), infinite, cannot_loop). :- pragma termination_info(io:rename_file((builtin:in), (builtin:in), (builtin:out), (builtin:di), (builtin:uo)), infinite, cannot_loop). :- pragma termination_info(io:file_modification_time((builtin:in), (builtin:out), (builtin:di), (builtin:uo)), infinite, cannot_loop). :- pragma termination_info(io:report_stats((builtin:di), (builtin:uo)), finite(0, [yes, no]), can_loop). :- pragma termination_info(io:report_full_memory_stats((builtin:di), (builtin:uo)), finite(0, [yes, no]), can_loop). :- pragma termination_info(io:report_stats((builtin:in), (builtin:di), (builtin:uo)), finite(0, [no, yes, no]), can_loop). :- pragma termination_info(io:call_system((builtin:in), (builtin:out), (builtin:di), (builtin:uo)), infinite, can_loop). :- pragma termination_info(io:call_system_return_signal((builtin:in), (builtin:out), (builtin:di), (builtin:uo)), infinite, cannot_loop). :- pragma termination_info(io:make_io_error((builtin:in)) = (builtin:out), finite(1, [yes, no]), cannot_loop). :- pragma termination_info(io:error_message((builtin:in)) = (builtin:out), finite(-1, [yes, no]), cannot_loop). :- pragma termination_info(io:error_message((builtin:in), (builtin:out)), finite(-1, [yes, no]), cannot_loop). :- pragma termination_info(io:get_op_table((builtin:out), (builtin:di), (builtin:uo)), infinite, can_loop). :- pragma termination_info(io:set_op_table((builtin:di), (builtin:di), (builtin:uo)), finite(0, [no, yes, no]), cannot_loop). :- pragma termination_info(io:write_univ((builtin:in), (builtin:di), (builtin:uo)), infinite, can_loop). :- pragma termination_info(io:write_univ((builtin:in), (builtin:in), (builtin:di), (builtin:uo)), infinite, can_loop). :- pragma termination_info(io:write_univ((builtin:in), builtin:in((deconstruct:do_not_allow)), (builtin:in), (builtin:di), (builtin:uo)), infinite, can_loop). :- pragma termination_info(io:write_univ((builtin:in), builtin:in((deconstruct:canonicalize)), (builtin:in), (builtin:di), (builtin:uo)), infinite, can_loop). :- pragma termination_info(io:write_univ((builtin:in), builtin:in((deconstruct:include_details_cc)), (builtin:in), (builtin:di), (builtin:uo)), infinite, can_loop). :- pragma termination_info(io:write_univ((builtin:in), (builtin:in), (builtin:in), (builtin:di), (builtin:uo)), infinite, can_loop). :- pragma termination_info(io:read_from_string_with_int_instead_of_char((builtin:in), (builtin:in), (builtin:in), (builtin:out), (builtin:in), (builtin:out)), infinite, can_loop). :- pragma termination_info(io:handle_system_command_exit_status((builtin:in)) = (builtin:out), infinite, cannot_loop). :- pragma termination_info(io:init_state((builtin:di), (builtin:uo)), infinite, can_loop).