directive
protected/1
Description
protected(Name/Arity)
protected((Name/Arity, ...))
protected([Name/Arity, ...])
protected(Name//Arity)
protected((Name//Arity, ...))
protected([Name//Arity, ...])
protected(op(Precedence,Associativity,Operator))
protected((op(Precedence,Associativity,Operator), ...))
protected([op(Precedence,Associativity,Operator), ...])
Declares protected predicates, protected grammar rule non-terminals, and protected operators. A protected predicate can only be called from the object containing the directive or from an object that inherits the directive. A protected non-terminal can only be used as an argument in a phrase/2 and phrase/3 calls from the object containing the directive or from an object that inherits the directive.
Note
Protected operators are not inherited but declaring them provides a reusable specification for using them in descendant objects (or categories).
Template and modes
protected(+predicate_indicator_term)
protected(+non_terminal_indicator_term)
protected(+operator_declaration)
Examples
:- protected(init/1).
:- protected((print/2, convert/4)).
:- protected([load/1, save/3]).
See also