Logtalk reference manual
Built-in predicate: create_protocol/3

create_protocol/3

Description

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.

When using Logtalk multi-threading features, predicates calling this built-in predicate may need to be declared synchronized in order to avoid race conditions.

Template and modes

create_protocol(?protocol_identifier, +list, +list)

Errors

Either Relations or Directives is a variable:
instantiation_error
Identifier is neither a variable nor a valid protocol identifier:
type_error(protocol_identifier, Identifier)
Identifier is already in use:
permission_error(replace, category, Identifier)
permission_error(replace, object, Identifier)
permission_error(replace, protocol, Identifier)
Relations is neither a variable nor a proper list:
type_error(list, Relations)
Directives is neither a variable nor a proper list:
type_error(list, Directives)

Examples

| ?- create_protocol(
        logging,
        [extends(monitoring)],
        [public([log_file/1, log_on/0, log_off/0])]
     ).

See also

abolish_protocol/1, current_protocol/1, protocol_property/2
conforms_to_protocol/2-3, extends_protocol/2-3, implements_protocol/2-3