<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.liberty-eiffel.org/index.php?action=history&amp;feed=atom&amp;title=Coding_patterns</id>
	<title>Coding patterns - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.liberty-eiffel.org/index.php?action=history&amp;feed=atom&amp;title=Coding_patterns"/>
	<link rel="alternate" type="text/html" href="https://wiki.liberty-eiffel.org/index.php?title=Coding_patterns&amp;action=history"/>
	<updated>2026-04-17T09:38:33Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.37.0</generator>
	<entry>
		<id>https://wiki.liberty-eiffel.org/index.php?title=Coding_patterns&amp;diff=2710&amp;oldid=prev</id>
		<title>Hzwakenberg at 11:11, 5 July 2024</title>
		<link rel="alternate" type="text/html" href="https://wiki.liberty-eiffel.org/index.php?title=Coding_patterns&amp;diff=2710&amp;oldid=prev"/>
		<updated>2024-07-05T11:11:27Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 13:11, 5 July 2024&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 72:&lt;/td&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 72:&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&amp;#160;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;You can see such a pattern in action in &amp;lt;tt&amp;gt;[http://gforge.inria.fr/plugins/scmsvn/viewcvs.php/trunk/lib/storage/collection/linked_list.e?root=smarteiffel&amp;amp;view=markup LINKED_LIST]&amp;lt;/tt&amp;gt; where it is used to collect unused cells (look at ''common_free_nodes'' which contains &amp;lt;tt&amp;gt;[http://gforge.inria.fr/plugins/scmsvn/viewcvs.php/trunk/lib/storage/internal/any_linked_list_node.e?root=smarteiffel&amp;amp;view=auto ANY_LINKED_LIST_NODE]&amp;lt;/tt&amp;gt; of which &amp;lt;tt&amp;gt;[http://gforge.inria.fr/plugins/scmsvn/viewcvs.php/trunk/lib/storage/internal/linked_list_node.e?root=smarteiffel&amp;amp;view=auto LINKED_LIST_NODE]&amp;lt;/tt&amp;gt; is a conformant heir).&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&amp;#160;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;You can see such a pattern in action in &amp;lt;tt&amp;gt;[http://gforge.inria.fr/plugins/scmsvn/viewcvs.php/trunk/lib/storage/collection/linked_list.e?root=smarteiffel&amp;amp;view=markup LINKED_LIST]&amp;lt;/tt&amp;gt; where it is used to collect unused cells (look at ''common_free_nodes'' which contains &amp;lt;tt&amp;gt;[http://gforge.inria.fr/plugins/scmsvn/viewcvs.php/trunk/lib/storage/internal/any_linked_list_node.e?root=smarteiffel&amp;amp;view=auto ANY_LINKED_LIST_NODE]&amp;lt;/tt&amp;gt; of which &amp;lt;tt&amp;gt;[http://gforge.inria.fr/plugins/scmsvn/viewcvs.php/trunk/lib/storage/internal/linked_list_node.e?root=smarteiffel&amp;amp;view=auto LINKED_LIST_NODE]&amp;lt;/tt&amp;gt; is a conformant heir).&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&amp;#160;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&amp;#160;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;−&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Another example is &amp;lt;tt&amp;gt;[https://github.com/LibertyEiffel/Liberty/blob/master/src/lib/kernel/internal/internals.e]&amp;lt;/tt&amp;gt;.&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;+&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Another example is &amp;lt;tt&amp;gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;INTERNALS&lt;/ins&gt;[https://github.com/LibertyEiffel/Liberty/blob/master/src/lib/kernel/internal/internals.e]&amp;lt;/tt&amp;gt;.&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Hzwakenberg</name></author>
	</entry>
	<entry>
		<id>https://wiki.liberty-eiffel.org/index.php?title=Coding_patterns&amp;diff=2709&amp;oldid=prev</id>
		<title>Hzwakenberg: moved link from Loria to GitHub</title>
		<link rel="alternate" type="text/html" href="https://wiki.liberty-eiffel.org/index.php?title=Coding_patterns&amp;diff=2709&amp;oldid=prev"/>
		<updated>2024-07-05T11:10:22Z</updated>

		<summary type="html">&lt;p&gt;moved link from Loria to GitHub&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 13:10, 5 July 2024&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 72:&lt;/td&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 72:&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&amp;#160;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;You can see such a pattern in action in &amp;lt;tt&amp;gt;[http://gforge.inria.fr/plugins/scmsvn/viewcvs.php/trunk/lib/storage/collection/linked_list.e?root=smarteiffel&amp;amp;view=markup LINKED_LIST]&amp;lt;/tt&amp;gt; where it is used to collect unused cells (look at ''common_free_nodes'' which contains &amp;lt;tt&amp;gt;[http://gforge.inria.fr/plugins/scmsvn/viewcvs.php/trunk/lib/storage/internal/any_linked_list_node.e?root=smarteiffel&amp;amp;view=auto ANY_LINKED_LIST_NODE]&amp;lt;/tt&amp;gt; of which &amp;lt;tt&amp;gt;[http://gforge.inria.fr/plugins/scmsvn/viewcvs.php/trunk/lib/storage/internal/linked_list_node.e?root=smarteiffel&amp;amp;view=auto LINKED_LIST_NODE]&amp;lt;/tt&amp;gt; is a conformant heir).&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&amp;#160;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;You can see such a pattern in action in &amp;lt;tt&amp;gt;[http://gforge.inria.fr/plugins/scmsvn/viewcvs.php/trunk/lib/storage/collection/linked_list.e?root=smarteiffel&amp;amp;view=markup LINKED_LIST]&amp;lt;/tt&amp;gt; where it is used to collect unused cells (look at ''common_free_nodes'' which contains &amp;lt;tt&amp;gt;[http://gforge.inria.fr/plugins/scmsvn/viewcvs.php/trunk/lib/storage/internal/any_linked_list_node.e?root=smarteiffel&amp;amp;view=auto ANY_LINKED_LIST_NODE]&amp;lt;/tt&amp;gt; of which &amp;lt;tt&amp;gt;[http://gforge.inria.fr/plugins/scmsvn/viewcvs.php/trunk/lib/storage/internal/linked_list_node.e?root=smarteiffel&amp;amp;view=auto LINKED_LIST_NODE]&amp;lt;/tt&amp;gt; is a conformant heir).&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&amp;#160;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&amp;#160;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;−&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Another example is &amp;lt;tt&amp;gt;[&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;http&lt;/del&gt;://&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;gforge&lt;/del&gt;.&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;inria.fr&lt;/del&gt;/&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;plugins&lt;/del&gt;/&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;scmsvn&lt;/del&gt;/&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;viewcvs.php&lt;/del&gt;/&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;trunk&lt;/del&gt;/lib/kernel/internal/internals.e&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;?root=smarteiffel&amp;amp;view=auto INTERNALS&lt;/del&gt;]&amp;lt;/tt&amp;gt;.&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;+&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Another example is &amp;lt;tt&amp;gt;[&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;https&lt;/ins&gt;://&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;github&lt;/ins&gt;.&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;com&lt;/ins&gt;/&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;LibertyEiffel&lt;/ins&gt;/&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Liberty&lt;/ins&gt;/&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;blob/master&lt;/ins&gt;/&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;src&lt;/ins&gt;/lib/kernel/internal/internals.e]&amp;lt;/tt&amp;gt;.&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Hzwakenberg</name></author>
	</entry>
	<entry>
		<id>https://wiki.liberty-eiffel.org/index.php?title=Coding_patterns&amp;diff=1993&amp;oldid=prev</id>
		<title>Hzwakenberg at 12:07, 9 September 2014</title>
		<link rel="alternate" type="text/html" href="https://wiki.liberty-eiffel.org/index.php?title=Coding_patterns&amp;diff=1993&amp;oldid=prev"/>
		<updated>2014-09-09T12:07:54Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 14:07, 9 September 2014&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-empty&quot;&gt;&amp;#160;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;+&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Category: Design Pattern]]&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&amp;#160;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Coding Patterns are a group of useful insights on how to implement things.&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&amp;#160;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Coding Patterns are a group of useful insights on how to implement things.&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&amp;#160;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&amp;#160;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Hzwakenberg</name></author>
	</entry>
	<entry>
		<id>https://wiki.liberty-eiffel.org/index.php?title=Coding_patterns&amp;diff=1887&amp;oldid=prev</id>
		<title>Hzwakenberg at 18:12, 5 September 2014</title>
		<link rel="alternate" type="text/html" href="https://wiki.liberty-eiffel.org/index.php?title=Coding_patterns&amp;diff=1887&amp;oldid=prev"/>
		<updated>2014-09-05T18:12:40Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 20:12, 5 September 2014&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;−&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Category:Smarteiffel]]&lt;/div&gt;&lt;/td&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-empty&quot;&gt;&amp;#160;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&amp;#160;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Coding Patterns are a group of useful insights on how to implement things.&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&amp;#160;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Coding Patterns are a group of useful insights on how to implement things.&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&amp;#160;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&amp;#160;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Hzwakenberg</name></author>
	</entry>
	<entry>
		<id>https://wiki.liberty-eiffel.org/index.php?title=Coding_patterns&amp;diff=1623&amp;oldid=prev</id>
		<title>Ramack at 21:28, 5 March 2013</title>
		<link rel="alternate" type="text/html" href="https://wiki.liberty-eiffel.org/index.php?title=Coding_patterns&amp;diff=1623&amp;oldid=prev"/>
		<updated>2013-03-05T21:28:55Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 23:28, 5 March 2013&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;−&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Category:&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;SmartEiffel&lt;/del&gt;]]&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;+&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Category:&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Smarteiffel&lt;/ins&gt;]]&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&amp;#160;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Coding Patterns are a group of useful insights on how to implement things.&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&amp;#160;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Coding Patterns are a group of useful insights on how to implement things.&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&amp;#160;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&amp;#160;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Ramack</name></author>
	</entry>
	<entry>
		<id>https://wiki.liberty-eiffel.org/index.php?title=Coding_patterns&amp;diff=1542&amp;oldid=prev</id>
		<title>Ramack at 20:49, 4 March 2013</title>
		<link rel="alternate" type="text/html" href="https://wiki.liberty-eiffel.org/index.php?title=Coding_patterns&amp;diff=1542&amp;oldid=prev"/>
		<updated>2013-03-04T20:49:43Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 22:49, 4 March 2013&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-empty&quot;&gt;&amp;#160;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;+&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Category:SmartEiffel]]&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&amp;#160;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Coding Patterns are a group of useful insights on how to implement things.&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&amp;#160;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Coding Patterns are a group of useful insights on how to implement things.&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&amp;#160;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&amp;#160;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Ramack</name></author>
	</entry>
	<entry>
		<id>https://wiki.liberty-eiffel.org/index.php?title=Coding_patterns&amp;diff=124&amp;oldid=prev</id>
		<title>Ramack: 3 revisions:&amp;#32;initial import from SamrtEiffel Wiki - The Grand SmartEiffel Book</title>
		<link rel="alternate" type="text/html" href="https://wiki.liberty-eiffel.org/index.php?title=Coding_patterns&amp;diff=124&amp;oldid=prev"/>
		<updated>2013-03-03T21:04:27Z</updated>

		<summary type="html">&lt;p&gt;3 revisions: initial import from SamrtEiffel Wiki - The Grand SmartEiffel Book&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Coding Patterns are a group of useful insights on how to implement things.&lt;br /&gt;
&lt;br /&gt;
== Singleton ==&lt;br /&gt;
To me, the best way to achieve a singleton is almost the standard Eiffel pattern: a singleton holder with a once function, and the pattern itself with a creation clause limited to the singleton holder. An interesting thing is that I usually make the singleton holder '''expanded''', this way I don't have to make it a singleton too ;-)&lt;br /&gt;
&lt;br /&gt;
 expanded class SINGLETON_HOLDER&lt;br /&gt;
 feature {ANY}&lt;br /&gt;
    singleton: SINGLETON is&lt;br /&gt;
       once&lt;br /&gt;
          create Result.make&lt;br /&gt;
       end&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
 class SINGLETON is&lt;br /&gt;
 create {SINGLETON_HOLDER}&lt;br /&gt;
    make&lt;br /&gt;
 feature {}&lt;br /&gt;
    make is&lt;br /&gt;
       do&lt;br /&gt;
       end&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
The other solution is the classic holder you either inherit or, preferably, insert.&lt;br /&gt;
&lt;br /&gt;
Which do you prefer: expanded or insert?&lt;br /&gt;
&lt;br /&gt;
== Multi-typed ==&lt;br /&gt;
It is becoming quite usual to have a few classes that want to &amp;quot;talk&amp;quot; to &amp;quot;any&amp;quot; class. But you cannot use the ANY class since most classes insert it and anyway it could not hold expanded classes. In that case you use a generic class, which can hold anything that ''inserts'' its generic constraint.&lt;br /&gt;
&lt;br /&gt;
An emerging coding pattern is the following:&lt;br /&gt;
&lt;br /&gt;
 deferred class TALKABLE&lt;br /&gt;
 feature {ANY}&lt;br /&gt;
    talk is&lt;br /&gt;
       do&lt;br /&gt;
       end&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
 deferred class UNTYPED_TALKER&lt;br /&gt;
 feature {ANY}&lt;br /&gt;
    make_it_talk is&lt;br /&gt;
       do&lt;br /&gt;
       end&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
 class TYPED_TALK[O_-&amp;gt;TALKABLE]&lt;br /&gt;
 inherit&lt;br /&gt;
    UNTYPED_TALK&lt;br /&gt;
 &lt;br /&gt;
 create {ANY}&lt;br /&gt;
    set_item&lt;br /&gt;
 &lt;br /&gt;
 feature {ANY}&lt;br /&gt;
    item: O_&lt;br /&gt;
 &lt;br /&gt;
    set_item (a_item: like item) is&lt;br /&gt;
       require&lt;br /&gt;
          a_item /= Void&lt;br /&gt;
       do&lt;br /&gt;
          item := a_item&lt;br /&gt;
       ensure&lt;br /&gt;
          item = a_item&lt;br /&gt;
       end&lt;br /&gt;
 &lt;br /&gt;
    make_it_talk is&lt;br /&gt;
       do&lt;br /&gt;
          item.talk&lt;br /&gt;
       end&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
You can see such a pattern in action in &amp;lt;tt&amp;gt;[http://gforge.inria.fr/plugins/scmsvn/viewcvs.php/trunk/lib/storage/collection/linked_list.e?root=smarteiffel&amp;amp;view=markup LINKED_LIST]&amp;lt;/tt&amp;gt; where it is used to collect unused cells (look at ''common_free_nodes'' which contains &amp;lt;tt&amp;gt;[http://gforge.inria.fr/plugins/scmsvn/viewcvs.php/trunk/lib/storage/internal/any_linked_list_node.e?root=smarteiffel&amp;amp;view=auto ANY_LINKED_LIST_NODE]&amp;lt;/tt&amp;gt; of which &amp;lt;tt&amp;gt;[http://gforge.inria.fr/plugins/scmsvn/viewcvs.php/trunk/lib/storage/internal/linked_list_node.e?root=smarteiffel&amp;amp;view=auto LINKED_LIST_NODE]&amp;lt;/tt&amp;gt; is a conformant heir).&lt;br /&gt;
&lt;br /&gt;
Another example is &amp;lt;tt&amp;gt;[http://gforge.inria.fr/plugins/scmsvn/viewcvs.php/trunk/lib/kernel/internal/internals.e?root=smarteiffel&amp;amp;view=auto INTERNALS]&amp;lt;/tt&amp;gt;.&lt;/div&gt;</summary>
		<author><name>Ramack</name></author>
	</entry>
	<entry>
		<id>https://wiki.liberty-eiffel.org/index.php?title=Coding_patterns&amp;diff=122&amp;oldid=prev</id>
		<title>Cadrian: other singleton solution</title>
		<link rel="alternate" type="text/html" href="https://wiki.liberty-eiffel.org/index.php?title=Coding_patterns&amp;diff=122&amp;oldid=prev"/>
		<updated>2006-08-31T06:35:36Z</updated>

		<summary type="html">&lt;p&gt;other singleton solution&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 08:35, 31 August 2006&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 20:&lt;/td&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 20:&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&amp;#160;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;       end&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&amp;#160;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;       end&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&amp;#160;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; end&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&amp;#160;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; end&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-empty&quot;&gt;&amp;#160;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;+&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-empty&quot;&gt;&amp;#160;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;+&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;The other solution is the classic holder you either inherit or, preferably, insert.&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-empty&quot;&gt;&amp;#160;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;+&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-empty&quot;&gt;&amp;#160;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;+&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Which do you prefer: expanded or insert?&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&amp;#160;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&amp;#160;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&amp;#160;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Multi-typed ==&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&amp;#160;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Multi-typed ==&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Cadrian</name></author>
	</entry>
	<entry>
		<id>https://wiki.liberty-eiffel.org/index.php?title=Coding_patterns&amp;diff=121&amp;oldid=prev</id>
		<title>Cadrian: first coding patterns</title>
		<link rel="alternate" type="text/html" href="https://wiki.liberty-eiffel.org/index.php?title=Coding_patterns&amp;diff=121&amp;oldid=prev"/>
		<updated>2006-08-31T05:49:15Z</updated>

		<summary type="html">&lt;p&gt;first coding patterns&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Coding Patterns are a group of useful insights on how to implement things.&lt;br /&gt;
&lt;br /&gt;
== Singleton ==&lt;br /&gt;
To me, the best way to achieve a singleton is almost the standard Eiffel pattern: a singleton holder with a once function, and the pattern itself with a creation clause limitted to the singleton holder. An interesting thing is that I usually make the singleton holder '''expanded''', this way I don't have to make it a singleton too ;-)&lt;br /&gt;
&lt;br /&gt;
 expanded class SINGLETON_HOLDER&lt;br /&gt;
 feature {ANY}&lt;br /&gt;
    singleton: SINGLETON is&lt;br /&gt;
       once&lt;br /&gt;
          create Result.make&lt;br /&gt;
       end&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
 class SINGLETON is&lt;br /&gt;
 create {SINGLETON_HOLDER}&lt;br /&gt;
    make&lt;br /&gt;
 feature {}&lt;br /&gt;
    make is&lt;br /&gt;
       do&lt;br /&gt;
       end&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
== Multi-typed ==&lt;br /&gt;
It is becoming quite usual to have a few classes that want to &amp;quot;talk&amp;quot; to &amp;quot;any&amp;quot; class. But you cannot use the ANY class since most classes insert it and anyway it could not hold expanded classes. In that case you use a generic class, which can hold anything that ''inserts'' its generic constraint.&lt;br /&gt;
&lt;br /&gt;
An emerging coding pattern is the following:&lt;br /&gt;
&lt;br /&gt;
 deferred class TALKABLE&lt;br /&gt;
 feature {ANY}&lt;br /&gt;
    talk is&lt;br /&gt;
       do&lt;br /&gt;
       end&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
 deferred class UNTYPED_TALKER&lt;br /&gt;
 feature {ANY}&lt;br /&gt;
    make_it_talk is&lt;br /&gt;
       do&lt;br /&gt;
       end&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
 class TYPED_TALK[O_-&amp;gt;TALKABLE]&lt;br /&gt;
 inherit&lt;br /&gt;
    UNTYPED_TALK&lt;br /&gt;
 &lt;br /&gt;
 create {ANY}&lt;br /&gt;
    set_item&lt;br /&gt;
 &lt;br /&gt;
 feature {ANY}&lt;br /&gt;
    item: O_&lt;br /&gt;
 &lt;br /&gt;
    set_item (a_item: like item) is&lt;br /&gt;
       require&lt;br /&gt;
          a_item /= Void&lt;br /&gt;
       do&lt;br /&gt;
          item := a_item&lt;br /&gt;
       ensure&lt;br /&gt;
          item = a_item&lt;br /&gt;
       end&lt;br /&gt;
 &lt;br /&gt;
    make_it_talk is&lt;br /&gt;
       do&lt;br /&gt;
          item.talk&lt;br /&gt;
       end&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
You can see such a pattern in action in &amp;lt;tt&amp;gt;[http://gforge.inria.fr/plugins/scmsvn/viewcvs.php/trunk/lib/storage/collection/linked_list.e?root=smarteiffel&amp;amp;view=markup LINKED_LIST]&amp;lt;/tt&amp;gt; where it is used to collect unused cells (look at ''common_free_nodes'' which contains &amp;lt;tt&amp;gt;[http://gforge.inria.fr/plugins/scmsvn/viewcvs.php/trunk/lib/storage/internal/any_linked_list_node.e?root=smarteiffel&amp;amp;view=auto ANY_LINKED_LIST_NODE]&amp;lt;/tt&amp;gt; of which &amp;lt;tt&amp;gt;[http://gforge.inria.fr/plugins/scmsvn/viewcvs.php/trunk/lib/storage/internal/linked_list_node.e?root=smarteiffel&amp;amp;view=auto LINKED_LIST_NODE]&amp;lt;/tt&amp;gt; is a conformant heir).&lt;br /&gt;
&lt;br /&gt;
Another example is &amp;lt;tt&amp;gt;[http://gforge.inria.fr/plugins/scmsvn/viewcvs.php/trunk/lib/kernel/internal/internals.e?root=smarteiffel&amp;amp;view=auto INTERNALS]&amp;lt;/tt&amp;gt;.&lt;/div&gt;</summary>
		<author><name>Cadrian</name></author>
	</entry>
</feed>