12.4 The Foreign Include File
AllApplicationManualNameSummaryHelp

  • Documentation
    • Reference manual
      • Foreign Language Interface
        • The Foreign Include File
          • Argument Passing and Control
          • Atoms and functors
          • Analysing Terms via the Foreign Interface
          • Constructing Terms
          • Unifying data
          • Convenient functions to generate Prolog exceptions
          • Foreign language wrapper support functions
          • Serializing and deserializing Prolog terms
          • BLOBS: Using atoms to store arbitrary binary data
          • Exchanging GMP numbers
          • Calling Prolog from C
          • Discarding Data
          • String buffering
          • Foreign Code and Modules
          • Prolog exceptions in foreign code
          • Catching Signals (Software Interrupts)
          • Miscellaneous
          • Errors and warnings
          • Environment Control from Foreign Code
            • PL_action()
            • PL_version_info()
          • Querying Prolog
          • Registering Foreign Predicates
          • Foreign Code Hooks
          • Storing foreign data
          • Embedding SWI-Prolog in other applications
    • Packages

12.4.19 Environment Control from Foreign Code

int PL_action(int, ...)
Perform some action on the Prolog system. int describes the action. Remaining arguments depend on the requested action. The actions are listed below:
PL_ACTION_TRACE
Start Prolog tracer (trace/0). Requires no arguments.
PL_ACTION_DEBUG
Switch on Prolog debug mode (debug/0). Requires no arguments.
PL_ACTION_BACKTRACE
Print backtrace on current output stream. The argument (an int) is the number of frames printed.
PL_ACTION_HALT
Halt Prolog execution. This action should be called rather than Unix exit() to give Prolog the opportunity to clean up. This call does not return. The argument (an int) is the exit code. See halt/1.
PL_ACTION_ABORT
Generate a Prolog abort (abort/0). This call does not return. Requires no arguments.
PL_ACTION_BREAK
Create a standard Prolog break environment (break/0). Returns after the user types the end-of-file character. Requires no arguments.
PL_ACTION_GUIAPP
Windows: Used to indicate to the kernel that the application is a GUI application if the argument is not 0, and a console application if the argument is 0. If a fatal error occurs, the system uses a windows messagebox to report this on a GUI application, and otherwise simply prints the error and exits.
PL_ACTION_TRADITIONAL
Same effect as using --traditional. Must be called before PL_initialise().
PL_ACTION_WRITE
Write the argument, a char * to the current output stream.
PL_ACTION_FLUSH
Flush the current output stream. Requires no arguments.
PL_ACTION_ATTACH_CONSOLE
Attach a console to a thread if it does not have one. See attach_console/0.
PL_GMP_SET_ALLOC_FUNCTIONS
Takes an integer argument. If TRUE, the GMP allocations are immediately bound to the Prolog functions. If FALSE, SWI-Prolog will never rebind the GMP allocation functions. See mp_set_memory_functions() in the GMP documentation. The action returns FALSE if there is no GMP support or GMP is already initialised.
unsigned int PL_version_info(int key)
Query version information. This function may be called before PL_initialise(). If the key is unknown the function returns 0. See section 2.22 for a more in-depth discussion on binary compatibility. Versions upto SWI-Prolog 8.5.2 defined this function as PL_version(). It was renamed to avoid a conflict with Perl affecting Yaswi. PL_version() is provided as a macro for compatibility. Defined keys are:
PL_VERSION_SYSTEM
SWI-Prolog version as 10,000 × major + 100 × minor + patch.
PL_VERSION_FLI
Incremented if the foreign interface defined in this chapter changes in a way that breaks backward compatibility.
PL_VERSION_REC
Incremented if the binary representation of terms as used by PL_record_external() and fast_write/2 changes.
PL_VERSION_QLF
Incremented if the QLF file format changes.
PL_VERSION_QLF_LOAD
Represents the oldest loadable QLF file format version.
PL_VERSION_VM
A hash that represents the VM instructions and their arguments.
PL_VERSION_BUILT_IN
A hash that represents the names, arities and properties of all built-in predicates defined in C. If this function is called before PL_initialise() it returns 0.