%-----------------------------------------------------------------------------%

:- module table_io_callback.
:- interface.

:- import_module io.

:- pred main(io::di, io::uo) is det.

%-----------------------------------------------------------------------------%
%-----------------------------------------------------------------------------%

:- implementation.

main(!IO) :-
    p(!IO).

:- pred p(io::di, io::uo) is det.

:- pragma foreign_proc("C",
    p(_IO0::di, _IO::uo),
    [may_call_mercury, promise_pure, thread_safe, tabled_for_io],
"
    printf(""this is p\\n"");
    q();
").

:- pred q(io::di, io::uo) is det.

:- pragma foreign_export("C", q(di, uo), "q").

q(!IO) :-
    io.write_string("this is q\n", !IO).

%-----------------------------------------------------------------------------%
% vim: ft=mercury ts=4 sts=4 sw=4 et
