- 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
- Querying Prolog
- Registering Foreign Predicates
- Foreign Code Hooks
- Storing foreign data
- Embedding SWI-Prolog in other applications
- The Foreign Include File
- Foreign Language Interface
- Packages
- Reference manual
h_path/2
are used.
Demand the path to refer to an existing entity.
Demand read-access on the result.
Demand write-access on the result.
Demand execute-access on the result.
Do not raise any exceptions.
int PL_get_file_nameW(term_t
spec, wchar_t **name, int flags) Same as PL_get_file_name(),
but returns the filename as a wide-character string. This is intended
for Windows to access the Unicode version of the Win32 API. Note that
the flag
PL_FILE_EXIST
PL_FILE_READ
PL_FILE_WRITE
PL_FILE_EXECUTE
PL_FILE_NOERRORS
PL_FILE_OSPATH
must be provided to fetch a
filename in OS native (e.g., C:\x\y
) notation.
12.4.18.5 Dealing with Prolog flags from C
Foreign code can set or create Prolog flags using PL_set_prolog_flag(). See set_prolog_flag/2 and create_prolog_flag/3. To retrieve the value of a flag you can use PL_current_prolog_flag().
- int PL_set_prolog_flag(const char *name, int type, ...)
- Set/create a Prolog flag from C. name is the name of the
affected flag. type is one of the values below, which also
dictates the type of the final argument. The function returns
TRUE
on success andFALSE
on failure. This function can be called before PL_initialise(), making the flag available to the Prolog startup code.PL_BOOL
- Create a boolean (
true
orfalse
) flag. The argument must be anint
. PL_ATOM
- Create a flag with an atom as value. The argument must be of type
const char *
. PL_INTEGER
- Create a flag with an integer as value. The argument must be of type
intptr_t *
.
- int PL_current_prolog_flag(atom_t name, int type, void *value)
- Retrieve the value of a Prolog flag from C. name is the name
of the flag as an
atom_t
(see current_prolog_flag/2). type specifies the kind of value to be retrieved, it is one of the values below. value is a pointer to a location where to store the value. The user is responsible for making sure this memory location is of the appropriate size/type (see the returned types below to determine the size/type). The function returnsTRUE
on success andFALSE
on failure.PL_ATOM
- Retrieve a flag whose value is an
atom
. The returned value is an atom handle of typeatom_t
. PL_INTEGER
- Retrieve a flag whose value is an
integer
. The returned value is an integer of typeint64_t
. PL_FLOAT
- Retrieve a flag whose value is a
float
. The returned value is a floating point number of typedouble
. PL_TERM
- Retrieve a flag whose value is a
term
. The returned value is a term handle of typeterm_t
.
12.4.18.6 Foreign code and Well Founded Semantics
- int PL_get_delay_list(term_t -dl)
- Fetch the current delay list. If this list is not empty, the
current answer is undefined. In the logical sense, this
function always succeeds and sets dl to the delay list. It
returns
FALSE
if the delay list is empty (and answer is well defined) andTRUE
if the delay list is not empty. If dl is 0 no list is instantiated, while the return value is the same. This allows for testing that an answer is undefined as below.if ( PL_get_delay_list(0) ) <undefined> else <normal answer>
For now, we consider the content of the list elements opaque. See
boot/tabling.pl