<?xml version='1.0' encoding='utf-8'?>
<snippets language="logtalk">
  <snippet id="Prototype">
    <text><![CDATA[
:- object(${1:Object}).

	:- info([
		version is 1:0:0,
		author is '$(whoami)',
		date is $(date +%Y-%m-%d),
		comment is '${2:Description}'
	]).

$0

:- end_object.
]]></text>
    <tag>object</tag>
    <description>Prototype</description>
  </snippet>
  <snippet id="Prototype with parent">
    <text><![CDATA[
:- object(${1:Prototype},
	extends(${2:Parent})).

	:- info([
		version is 1:0:0,
		author is '$(whoami)',
		date is $(date +%Y-%m-%d),
		comment is '${3:Description}'
	]).

$0

:- end_object.
]]></text>
    <description>Prototype with parent</description>
    <tag>objecte</tag>
  </snippet>
  <snippet id="Prototype with protocol">
    <text><![CDATA[
:- object(${1:Prototype},
	implements(${2:Protocol})).

	:- info([
		version is 1:0:0,
		author is '$(whoami)',
		date is $(date +%Y-%m-%d),
		comment is '${3:Description}'
	]).

$0

:- end_object.
]]></text>
    <description>Prototype with protocol</description>
    <tag>objectp</tag>
  </snippet>
  <snippet id="Prototype with category">
    <text><![CDATA[
:- object(${1:Prototype},
	imports(${2:Category})).

	:- info([
		version is 1:0:0,
		author is '$(whoami)',
		date is $(date +%Y-%m-%d),
		comment is '${3:Description}'
	]).

$0

:- end_object.
]]></text>
    <tag>objectc</tag>
    <description>Prototype with category</description>
  </snippet>
  <snippet id="Prototype with all">
    <text><![CDATA[
:- object(${1:Prototype},
	implements(${2:Protocol}),
	imports(${3:Category}),
	extends(${4:Parent})).

	:- info([
		version is 1:0:0,
		author is '$(whoami)',
		date is $(date +%Y-%m-%d),
		comment is '${5:Description}'
	]).

$0

:- end_object.
]]></text>
    <tag>objecta</tag>
    <description>Prototype with all</description>
  </snippet>
  <snippet id="Class">
    <text><![CDATA[
:- object(${1:Class},
	specializes(${2:Superclass})).

	:- info([
		version is 1:0:0,
		author is '$(whoami)',
		date is $(date +%Y-%m-%d),
		comment is '${3:Description}'
	]).

$0

:- end_object.
]]></text>
    <tag>class</tag>
    <description>Class</description>
  </snippet>
  <snippet id="Class with protocol">
    <text><![CDATA[
:- object(${1:Class},
	implements(${2:Protocol}),
	specializes(${3:Superclass})).

	:- info([
		version is 1:0:0,
		author is '$(whoami)',
		date is $(date +%Y-%m-%d),
		comment is '${4:Description}'
	]).

$0

:- end_object.
]]></text>
    <tag>classp</tag>
    <description>Class with protocol</description>
  </snippet>
  <snippet id="Class with category">
    <text><![CDATA[
:- object(${1:Class},
	imports(${2:Category}),
	specializes(${3:Superclass})).

	:- info([
		version is 1:0:0,
		author is '$(whoami)',
		date is $(date +%Y-%m-%d),
		comment is '${4:Description}'
	]).

$0

:- end_object.
]]></text>
    <tag>classc</tag>
    <description>Class with category</description>
  </snippet>
  <snippet id="Class with metaclass">
    <text><![CDATA[
:- object(${1:Class},
	instantiates(${2:Metaclass}),
	specializes(${3:Superclass})).

	:- info([
		version is 1:0:0,
		author is '$(whoami)',
		date is $(date +%Y-%m-%d),
		comment is '${4:Description}'
	]).

$0

:- end_object.
]]></text>
    <tag>classm</tag>
    <description>Class with metaclass</description>
  </snippet>
  <snippet id="Class with all">
    <text><![CDATA[
:- object(${1:Class},
	implements(${2:Protocol}),
	imports(${3:Category}),
	instantiates(${4:Metaclass}),
	specializes(${5:Superclass})).

	:- info([
		version is 1:0:0,
		author is '$(whoami)',
		date is $(date +%Y-%m-%d),
		comment is '${6:Description}'
	]).

$0

:- end_object.
]]></text>
    <tag>classa</tag>
    <description>Class with all</description>
  </snippet>
  <snippet id="Instance">
    <text><![CDATA[
:- object(${1:Instance},
	instantiates(${2:Class})).

	:- info([
		version is 1:0:0,
		author is '$(whoami)',
		date is $(date +%Y-%m-%d),
		comment is '${3:Description}'
	]).

$0

:- end_object.
]]></text>
    <tag>instance</tag>
    <description>Instance</description>
  </snippet>
  <snippet id="Instance with protocol">
    <text><![CDATA[
:- object(${1:Instance},
	implements(${2:Protocol}),
	instantiates(${3:Class})).

	:- info([
		version is 1:0:0,
		author is '$(whoami)',
		date is $(date +%Y-%m-%d),
		comment is '${4:Description}'
	]).

$0

:- end_object.
]]></text>
    <tag>instancep</tag>
    <description>Instance with protocol</description>
  </snippet>
  <snippet id="Instance with category">
    <text><![CDATA[
:- object(${1:Instance},
	imports(${2:Category}),
	instantiates(${3:Class})).

	:- info([
		version is 1:0:0,
		author is '$(whoami)',
		date is $(date +%Y-%m-%d),
		comment is '${4:Description}'
	]).

$0

:- end_object.
]]></text>
    <tag>instancec</tag>
    <description>Instance with category</description>
  </snippet>
  <snippet id="Instance with all">
    <text><![CDATA[
:- object(${1:Instance},
	implements(${2:Protocol}),
	imports(${3:Category}),
	instantiates(${4:Class})).

	:- info([
		version is 1:0:0,
		author is '$(whoami)',
		date is $(date +%Y-%m-%d),
		comment is '${5:Description}'
	]).

$0

:- end_object.
]]></text>
    <tag>instancea</tag>
    <description>Instance with all</description>
  </snippet>
  <snippet id="Category">
    <text><![CDATA[
:- category(${1:Category}).

	:- info([
		version is 1:0:0,
		author is '$(whoami)',
		date is $(date +%Y-%m-%d),
		comment is '${2:Description}'
	]).

$0

:- end_category.
]]></text>
    <tag>category</tag>
    <description>Category</description>
  </snippet>
  <snippet id="Category with protocol">
    <text><![CDATA[
:- category(${1:Category},
	implements(${2:Protocol})).

	:- info([
		version is 1:0:0,
		author is '$(whoami)',
		date is $(date +%Y-%m-%d),
		comment is '${3:Description}'
	]).

$0

:- end_category.
]]></text>
    <tag>categoryp</tag>
    <description>Category with protocol</description>
  </snippet>
  <snippet id="Extended category">
    <text><![CDATA[
:- category(${1:Extended},
	extends(${2:Minimal})).

	:- info([
		version is 1:0:0,
		author is '$(whoami)',
		date is $(date +%Y-%m-%d),
		comment is '${3:Description}'
	]).

$0

:- end_category.
]]></text>
    <tag>categorye</tag>
    <description>Extended category</description>
  </snippet>
  <snippet id="Complementing category">
    <text><![CDATA[
:- category(${1:Category},
	complements(${2:Object})).

	:- info([
		version is 1:0:0,
		author is '$(whoami)',
		date is $(date +%Y-%m-%d),
		comment is '${3:Description}'
	]).

$0

:- end_category.
]]></text>
    <tag>categoryc</tag>
    <description>Complementing category</description>
  </snippet>
  <snippet id="Protocol">
    <text><![CDATA[
:- protocol(${1:Protocol}).

	:- info([
		version is 1:0:0,
		author is '$(whoami)',
		date is $(date +%Y-%m-%d),
		comment is '${2:Description}'
	]).

$0

:- end_protocol.
]]></text>
    <tag>protocol</tag>
    <description>Protocol</description>
  </snippet>
  <snippet id="Extended protocol">
    <text><![CDATA[
:- protocol(${1:Extended},
	extends(${2:Minimal})).

	:- info([
		version is 1:0:0,
		author is '$(whoami)',
		date is $(date +%Y-%m-%d),
		comment is '${3:Description}'
	]).

$0

:- end_protocol.
]]></text>
    <tag>protocole</tag>
    <description>Extended protocol</description>
  </snippet>
  <snippet id="Public predicate">
    <text><![CDATA[	:- public(${1:Functor}/${2:Arity}).
	:- mode(${1:Functor}(${3:Arguments}), ${4:Solutions}).
	:- info(${1:Functor}/${2:Arity}, [
		comment is '${5:Description}',
		arguments is ['$6'-'$7']
	]).

$0]]></text>
    <tag>public</tag>
    <description>Public predicate</description>
  </snippet>
  <snippet id="Public predicate (no arguments)">
    <text><![CDATA[	:- public(${1:Functor}/0).
	:- mode(${1:Functor}, ${2:Solutions}).
	:- info(${1:Functor}/0, [
		comment is '${3:Description}'
	]).

$0]]></text>
    <tag>publicz</tag>
    <description>Public predicate (no arguments)</description>
  </snippet>
  <snippet id="Protected predicate">
    <text><![CDATA[	:- protected(${1:Functor}/${2:Arity}).
	:- mode(${1:Functor}(${3:Arguments}), ${4:Solutions}).
	:- info(${1:Functor}/${2:Arity}, [
		comment is '${5:Description}',
		arguments is ['$6'-'$7']
	]).

$0]]></text>
    <tag>protected</tag>
    <description>Protected predicate</description>
  </snippet>
  <snippet id="Protected predicate (no arguments)">
    <text><![CDATA[	:- protected(${1:Functor}/${2:Arity}).
	:- mode(${1:Functor}(${3:Arguments}), ${4:Solutions}).
	:- info(${1:Functor}/${2:Arity}, [
		comment is '${5:Description}',
		arguments is ['$6'-'$7']
	]).

$0]]></text>
    <tag>protectedz</tag>
    <description>Protected predicate (no arguments)</description>
  </snippet>
  <snippet id="Private predicate">
    <text><![CDATA[	:- private(${1:Functor}/${2:Arity}).
	:- mode(${1:Functor}(${3:Arguments}), ${4:Solutions}).
	:- info(${1:Functor}/${2:Arity}, [
		comment is '${5:Description}',
		arguments is ['$6'-'$7']
	]).

$0]]></text>
    <tag>private</tag>
    <description>Private predicate</description>
  </snippet>
  <snippet id="Private predicate (no arguments)">
    <text><![CDATA[	:- private(${1:Functor}/0).
	:- mode(${1:Functor}, ${2:Solutions}).
	:- info(${1:Functor}/0, [
		comment is '${3:Description}'
	]).

$0]]></text>
    <tag>privatez</tag>
    <description>Private predicate (no arguments)</description>
  </snippet>
</snippets>
