The C foreign language interface uses some properties to specify linking regimes, foreign files to be compiled, types of data available, memory allocation policies, etc.
Usage:any_term(X)
X is any term. The foreign interface passes it to C functions as a general term.
Usage:address(Address)
Address is a memory address.
Usage:null(Address)
Address is a null address.
Usage:c_short(X)
X is an integer in the range of C short.
Usage:c_int(X)
X is an integer in the range of C int.
Usage:c_long(X)
X is an integer in the range of C long.
Usage:c_ushort(X)
X is an integer in the range of C unsigned short.
Usage:c_uint(X)
X is an integer in the range of C unsigned int.
Usage:c_ulong(X)
X is an integer in the range of C unsigned long.
Usage:c_uintptr(X)
X is an integer in the range of C uintptr_t.
Usage:c_size(X)
X is an integer in the range of C size_t.
Usage:c_float(X)
X is an integer in the range of C float.
Usage:c_double(X)
X is an integer in the range of C double.
Usage 1:c_int8(X)
X is an integer in the range of C int8_t.
Usage 2:c_int8(X)
X is an integer in the range of C int8_t.
Usage 3:c_int8(X)
X is an integer in the range of C int8_t.
Usage 1:c_int8(X)
X is an integer in the range of C int8_t.
Usage 2:c_int8(X)
X is an integer in the range of C int8_t.
Usage 3:c_int8(X)
X is an integer in the range of C int8_t.
Usage 1:c_int8(X)
X is an integer in the range of C int8_t.
Usage 2:c_int8(X)
X is an integer in the range of C int8_t.
Usage 3:c_int8(X)
X is an integer in the range of C int8_t.
Usage:c_int16(X)
X is an integer in the range of C int16_t.
Usage:c_int32(X)
X is an integer in the range of C int32_t.
Usage:c_int64(X)
X is an integer in the range of C int64_t.
Usage:c_uint8(X)
X is an integer in the range of C uint8_t.
Usage:c_uint16(X)
X is an integer in the range of C uint16_t.
Usage:c_uint32(X)
X is an integer in the range of C uint32_t.
Usage:c_uint64(X)
X is an integer in the range of C uint64_t.
Usage:size_of(Name,ListVar,SizeVar)
For predicate Name, the size of the list argument ListVar, is given by the argument of type integer SizeVar.
Usage:do_not_free(Name,Var)
For predicate Name, the C argument passed to (returned from) the foreign function will not be freed after calling the foreign function.
Usage:ttr(Name,Var,TTr)
For predicate Name, the C argument will be translated using TTr as term translator.
Usage:needs_ciao_ctx(Name)
The foreign function which implementes the predicate Name needs a ciao_ctx as its first argument.
Usage:foreign(PrologName,ForeignName)
The Prolog predicate PrologName is implemented using the foreign function ForeignName.
Usage:foreign_low(Name)
The Prolog predicate Name is implemented using the function Name. The implementation is not a common C one, but it accesses directly the internal Ciao Prolog data structures and functions, and therefore no glue code is generated for it.
Usage:foreign_low(PrologName,ForeignName)
The Prolog predicate PrologName is implemented using the function ForeignName. The same considerations as above example are to be applied.
Usage::- use_foreign_source(Files).
Files is the (list of) foreign file(s) that will be linked with the glue-code file. If the file(s) do(es) not have extension, then the '.c' extension will be automatically added
Usage::- use_foreign_gluecode_header(Files).
Files is the (list of) alterantive headers that will be included in the glue-code file (instead of the default ciao_gluecode.h).
Usage::- use_foreign_library(Libs).
Libs is the (list of) external library(es) needed to link the C files. Only the short name of the library (i.e., what would follow the -l in the linker is needed.
Usage::- use_foreign_library(OsArch,Libs).
Libs are the OS and architecture dependant libraries.
Usage::- extra_compiler_opts(Opts).
Opts is the list of additional compiler options (e.g., optimization options) that will be used during the compilation.
Usage::- extra_compiler_opts(OsArch,Opts).
Opts are the OS and architecture dependant additional compiler options.
Usage::- use_compiler(Compiler).
Compiler is the compiler to use in this file. When this option is used, the default (Ciao-provided) compiler options are not used; those specified in extra_compiler_options are used instead.
Usage::- use_compiler(OsArch,Compiler).
Compiler is the compiler to use in this file when compiling for the architecture OsArch. The option management is the same as in use_compiler/2.
Usage::- extra_linker_opts(Opts).
Opts is the list of additional linker options that will be used during the linkage.
Usage::- extra_linker_opts(OsArch,Opts).
Opts are the OS and architecture dependant additional linker options.
Usage::- use_linker(Linker).
Linker is the linker to use in this file. When this option is used, the default (Ciao-provided) linker options are not used; those specified in extra_linker_options/1 are used instead.
Usage::- use_linker(OsArch,Linker).
Compiler is the linker to use in this file when compiling for the architecture OsArch. The option management is the same as in use_compiler/2.