logtalk_load_context(Key, Value)
Provides access to the Logtalk compilation/loading context. The following keys are currently supported: entity_identifier
, entity_prefix
, entity_type
(returns the value module
when compiling a module as an object), source
, file
(the actual file being compiled, which is different from source
only when processing an include/1
directive), basename
, directory
, stream
, target
(the full path of the intermediate Prolog file), flags
(the list of the explicit flags used for the compilation of the source file), term
(the term being expanded), term_position
(StartLine-EndLine
), and variable_names
([Name1=Variable1, ...]
). The term_position
key is only supported in back-end Prolog compilers that provide access to the start and end lines of a read term.
The logtalk_load_context/2
predicate can also be called initialization/1
directives in a source file. A common scenario is to use the directory
key to define library aliases.
Currently, any variables in the values of the term
and variable_names
keys are not shared with, respectively, the term and goal arguments of the term_expansion/2
and goal_expansion/2
methods.
Using the variable_names
key requires calling the standard built-in predicate term_variables/2
on the term read and unifying the term variables with the variables in the names list. This, however, may rise portability issues with those Prolog compilers that don't return the variables in the same order for the term_variables/2
predicate and the option variable_names/1
of the read_term/3
built-in predicate, which is used by the Logtalk compiler to read source files.
logtalk_load_context(?atom, -nonvar)
(none)
term_expansion(Term, ExpandedTerms) :- ... logtalk_load_context(entity_identifier, Entity), .... :- initialization(( logtalk_load_context(directory, Directory), assertz(logtalk_library_path(my_app, Directory)) )).