mirror of
https://github.com/Mercury-Language/mercury.git
synced 2026-04-18 02:43:40 +00:00
101 lines
2.3 KiB
Mathematica
101 lines
2.3 KiB
Mathematica
%---------------------------------------------------------------------------%
|
|
% vim: ts=4 sw=4 et ft=mercury
|
|
%---------------------------------------------------------------------------%
|
|
|
|
:- module intermod_user_sharing_2.
|
|
:- interface.
|
|
|
|
:- import_module io.
|
|
|
|
%---------------------------------------------------------------------------%
|
|
|
|
:- type myarray(T).
|
|
|
|
:- pred p_no_sharing(io::di, io::uo) is det.
|
|
:- pred p_unknown_sharing(T::in, T::out) is det.
|
|
:- pred p_sharing(int::in, T::in, myarray(T)::uo) is det.
|
|
|
|
%---------------------------------------------------------------------------%
|
|
%---------------------------------------------------------------------------%
|
|
|
|
:- implementation.
|
|
|
|
:- pragma foreign_type("C", myarray(T), "MR_Word").
|
|
:- pragma foreign_type("C#", myarray(T), "int").
|
|
:- pragma foreign_type("Java", myarray(T), "Integer").
|
|
|
|
:- pragma foreign_proc("C",
|
|
p_no_sharing(IO0::di, IO::uo),
|
|
[promise_pure, no_sharing],
|
|
"
|
|
IO = IO0;
|
|
").
|
|
|
|
:- pragma foreign_proc("C#",
|
|
p_no_sharing(IO0::di, IO::uo),
|
|
[promise_pure, no_sharing],
|
|
"
|
|
IO = IO0;
|
|
").
|
|
|
|
:- pragma foreign_proc("Java",
|
|
p_no_sharing(IO0::di, IO::uo),
|
|
[promise_pure, no_sharing],
|
|
"
|
|
IO = IO0;
|
|
").
|
|
|
|
%---------------------%
|
|
|
|
:- pragma foreign_proc("C",
|
|
p_unknown_sharing(T0::in, T::out),
|
|
[promise_pure, unknown_sharing],
|
|
"
|
|
T = T0;
|
|
").
|
|
|
|
:- pragma foreign_proc("C#",
|
|
p_unknown_sharing(T0::in, T::out),
|
|
[promise_pure, unknown_sharing],
|
|
"
|
|
T = T0;
|
|
").
|
|
|
|
:- pragma foreign_proc("Java",
|
|
p_unknown_sharing(T0::in, T::out),
|
|
[promise_pure, unknown_sharing],
|
|
"
|
|
T = T0;
|
|
").
|
|
|
|
%---------------------%
|
|
|
|
:- pragma foreign_proc("C",
|
|
p_sharing(_Size::in, _Item::in, Array::uo),
|
|
[promise_pure,
|
|
sharing(yes(int, T, myarray(T)), [cel(Item, []) - cel(Array, [T])])],
|
|
"
|
|
/* dummy */
|
|
Array = 0;
|
|
").
|
|
|
|
:- pragma foreign_proc("C#",
|
|
p_sharing(_Size::in, _Item::in, Array::uo),
|
|
[promise_pure,
|
|
sharing(yes(int, T, myarray(T)), [cel(Item, []) - cel(Array, [T])])],
|
|
"
|
|
/* dummy */
|
|
Array = 0;
|
|
").
|
|
|
|
:- pragma foreign_proc("Java",
|
|
p_sharing(_Size::in, _Item::in, Array::uo),
|
|
[promise_pure,
|
|
sharing(yes(int, T, myarray(T)), [cel(Item, []) - cel(Array, [T])])],
|
|
"
|
|
/* dummy */
|
|
Array = 0;
|
|
").
|
|
|
|
%---------------------------------------------------------------------------%
|