- Documentation
- Reference manual
- Packages
- A C++ interface to SWI-Prolog
- A C++ interface to SWI-Prolog
- Summary of changes between Versions 1 and 2
- A simple example
- Sample code
- Introduction
- The life of a PREDICATE
- Overview
- Examples
- Rationale for changes from version 1
- Porting from version 1 to version 2
- The class PlFail
- Overview of accessing and changing values
- The class PlRegister
- The class PlQuery
- The PREDICATE and PREDICATE_NONDET macros
- Exceptions
- Embedded applications
- Considerations
- Conclusions
- A C++ interface to SWI-Prolog
- A C++ interface to SWI-Prolog
1.2 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
#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 q.next_solution() ? 0 : 1; }