Files
mercury/samples/java_interface/standalone_java/mercury_lib.m
Julien Fischer 5d67935553 Add an example of calling Mercury libraries from Java.
In particular, demonstrate how to invoke any module-local finalisers and
retrieve the exit status.

samples/java_interface/standalone_java/Makefile:
samples/java_interface/standalone_java/JavaMain.java:
samples/java_interface/standalone_java/mercury_lib.m:
	As above.

samples/java_interface/README:
	Describe the new directory.
2014-12-08 11:52:15 +11:00

71 lines
1.9 KiB
Mathematica

%-----------------------------------------------------------------------------%
% vim: ft=mercury ts=4 sw=4 et
%-----------------------------------------------------------------------------%
:- module mercury_lib.
:- interface.
:- import_module io.
%-----------------------------------------------------------------------------%
% Write "Hello World" to the current Mercury text output stream.
%
:- pred write_hello(io::di, io::uo) is det.
% cube(X) returns X * X * X.
%
:- func cube(int) = int.
%-----------------------------------------------------------------------------%
%-----------------------------------------------------------------------------%
:- implementation.
:- import_module int.
:- import_module list.
:- import_module string.
%-----------------------------------------------------------------------------%
:- pragma foreign_export("Java", write_hello(di, uo),
"writeHello").
write_hello(!IO) :-
io.print_line("Hello World", !IO).
%-----------------------------------------------------------------------------%
:- pragma foreign_export("Java", cube(in) = out,
"cube").
cube(X) = X * X * X.
%-----------------------------------------------------------------------------%
%
% Initialiser for this library
%
:- initialise initialiser/2.
:- pred initialiser(io::di, io::uo) is det.
initialiser(!IO) :-
io.print_line("mercury_lib: the initialiser has now been invoked.", !IO).
%-----------------------------------------------------------------------------%
%
% Finaliser for this library
%
:- finalise finaliser/2.
:- pred finaliser(io::di, io::uo) is det.
finaliser(!IO) :-
io.print_line("mercury_lib: the finaliser has now been invoked.", !IO).
%-----------------------------------------------------------------------------%
:- end_module mercury_lib.
%-----------------------------------------------------------------------------%