| Did you know ... | Search Documentation: |
| A simple example |
Here is the “simple example” in the Foreign Language Interface, rewritten in C++. As before, it is compiled by
swipl-ld -o calc -goal true calc.cpp calc.pl
The Prolog file is simple:
calc(String) :-
term_string(Expr, String),
A is Expr,
writeln(A).
The C part of the application parses the command line options,
initialises the Prolog engine, locates the calc/1 predicate
and calls it. The code is in figure 1.
#include <string>
#include <SWI-cpp2.h>
int
main(int argc, char **argv) {
PlEngine e(argv[0]);
// combine all the arguments in a single string
std::string expression;
for (int n = 1; n < argc; n++) {
if (n != 1) {
expression.append(" ");
}
expression.append(argv[n]);
}
// Lookup calc/1 and make the arguments and call
PlPredicate pred("calc", 1, "user");
PlTerm_string h0(expression);
PlQuery q(pred, PlTermv(h0), PL_Q_NORMAL);
return PlWrap<int>(q.next_solution()) ? 0 : 1;
}