Did you know ... | Search Documentation: |
Pack logtalk -- logtalk-3.86.0/manuals/_sources/refman/predicates/logtalk_load_context_2.rst.txt |
.. This file is part of Logtalk https://logtalk.org/ SPDX-FileCopyrightText: 1998-2024 Paulo Moura <pmoura@logtalk.org> SPDX-License-Identifier: Apache-2.0
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
.. rst-class:: align-right
built-in predicate
.. index:: pair: logtalk_load_context/2; Built-in predicate .. _predicates_logtalk_load_context_2:
::
logtalk_load_context(Key, Value)
Provides access to the Logtalk compilation/loading context. The following keys are currently supported:
entity_identifier
- identifier of the entity being compiled if anyentity_prefix
- internal prefix for the entity compiled codeentity_type
- returns the value module
when compiling a module as an objectentity_relation
- returns the entity relations as declared in the entity opening directivesource
- full path of the source file being compiledfile
- the actual file being compiled, different from source
only when processing an include/1 directivebasename
- source file basenamedirectory
- source file directorystream
- input stream being used to read source file termstarget
- the full path of the intermediate Prolog fileflags
- the list of the explicit flags used for the compilation of the source fileterm
- the source file term being compiledterm_position
- the position of the term being compiled (StartLine-EndLine
)variables
- the variables of the term being compiled ([Variable1, ...]
)variable_names
- the variable names of the term being compiled ([Name1=Variable1, ...]
)variable_names(Term)
- the variable names of the term being compiled ([Name1=Variable1, ...]
)singletons
- the singleton variables of the term being compiled ([Name1=Variable1, ...]
)singletons(Term)
- the singleton variables of the term being compiled ([Name1=Variable1, ...]
)parameter_variables
- list of parameter variable names and positions ([Name1-Position1, ...]
)
For the entity_relation
key, the possible values are:extends_protocol(Protocol, ParentProtocol, Scope)
implements_protocol(ObjectOrCategory, Protocol, Scope)
extends_category(Category, ParentCategory, Scope)
imports_category(Object, Category, Scope)
extends_object(Prototype, Parent, Scope)
instantiates_class(Instance, Class, Scope)
specializes_class(Class, Superclass, Scope)
complements_object(Category, Object)
Calling this predicate with the parameter_variables
key only succeeds
when compiling a parametric entity containing parameter variables.
This predicate is usually called by the :ref:methods_term_expansion_2
and :ref:methods_goal_expansion_2
methods. It can also be called directly
from :ref:directives_initialization_1
directives in a source file. Note
that the entity keys are only available when compiling an entity term or
from an object initialization/1 directive.
.. warning::
The term_position
key is only supported in
:term:`backend Prolog compilers <backend Prolog compiler>`
that provide access to the start and end lines of a read term. When
such support is not available, the value -1
is returned for both
the start and the end lines.
Variables in the values of the term
, variables
, variable_names
,
and singletons
keys are not shared with, respectively, the term and
goal arguments of the term_expansion/2 and goal_expansion/2 methods.
Use instead the variable_names(Term)
and singletons(Term)
keys.
::
logtalk_load_context(?callable, -nonvar) - zero_or_more
| Key
is neither a variable nor a callable term:
| type_error(callable, Key)
| Key
is a callable term but not a valid key:
| domain_error(logtalk_load_context_key, Key)
::
% expand source file terms only if they are entity terms
term_expansion(Term, ExpandedTerms)
:-
logtalk_load_context(entity_identifier, _)
,
....
% expand source file term while accessing its variable names
term_expansion(Term, ExpandedTerms)
:-
logtalk_load_context(variable_names(Term), VariableNames)
,
....
% define a library alias based on the source directory
:- initialization((
logtalk_load_context(directory, Directory),
assertz(logtalk_library_path(my_app, Directory))
))
.
.. seealso::
:ref:methods_term_expansion_2
,
:ref:methods_goal_expansion_2
,
:ref:directives_initialization_1