create_protocol(Identifier, Relations, Directives)
Creates a new, dynamic, protocol. This predicate is often used as a primitive to implement high-level protocol creation methods.
Note that, when opting for runtime generated protocol identifiers, it's possible to run out of identifiers when using a back-end Prolog compiler with bounded integer support. The portable solution, when creating a large number of dynamic protocols in long running applications, is to recycle, whenever possible, the identifiers.
When using Logtalk multi-threading features, predicates calling this built-in predicate may need to be declared synchronized in order to avoid race conditions.
create_protocol(?protocol_identifier, +list, +list)
instantiation_errortype_error(protocol_identifier, Identifier)permission_error(replace, category, Identifier)permission_error(replace, object, Identifier)permission_error(replace, protocol, Identifier)type_error(list, Relations)type_error(list, Directives)| ?- create_protocol(
logging,
[extends(monitoring)],
[public([log_file/1, log_on/0, log_off/0])]
).
abolish_protocol/1, current_protocol/1, protocol_property/2
conforms_to_protocol/2-3, extends_protocol/2-3, implements_protocol/2-3