<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>C++ Fractal</title>
		<link>http://www.allegro.cc/forums/view/587217</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Wed, 30 Aug 2006 21:59:05 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Here&#39;s a forum-game-type-thing for ya&#39;s.</p><p>You know how the C++ language has many different ways of doing the same thing, and that object-oriented programming has the pitfall that it becomes tempting to over-engineer even the simplest task? What I propose we do is that we each take it in turns to contribute to the over-engineering of a simple program by re-writing it. Each person adds one additional layer of abstraction and posts their code here. Then the next person engineers it further by adding an extra layer of abstraction.</p><p>You could say that adding each additional layer of abstraction to the C++ code is like zooming in on an image that becomes more detailed the more you zoom - a bit like a fractal - hence the name <i>C++ Fractal</i>.</p><p>The program I&#39;ve written below is a simple program to verify that 1+1 does indeed equal 2.
</p><div class="source-code snippet"><div class="inner"><pre><span class="p">#include &lt;stdio.h&gt;</span>

<span class="k1">int</span> main<span class="k2">(</span><span class="k2">)</span>
<span class="k2">{</span>
   <span class="k1">if</span><span class="k2">(</span><span class="n">1</span><span class="k3">+</span><span class="n">1</span><span class="k3">=</span><span class="k3">=</span><span class="n">2</span><span class="k2">)</span>
   <span class="k2">{</span>
      <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">"Mathematics appears to be in order."</span><span class="k2">)</span><span class="k2">;</span>
   <span class="k2">}</span>
   <span class="k1">else</span>
   <span class="k2">{</span>
      <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">{</span><span class="s">"Oh dear, mathematics is falling apart."</span><span class="k2">}</span><span class="k2">;</span>
   <span class="k2">}</span>
<span class="k2">}</span>
</pre></div></div><p>
Note that the code I&#39;ve given is purely in C. There is no obligation for the next person to switch over to C++, but sooner or later, the switch to C++ is going to occur.</p><p>AE.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Andrei Ellman)</author>
		<pubDate>Fri, 25 Aug 2006 02:48:39 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="source-code"><div class="toolbar"></div><div class="inner"><table width="100%"><tbody><tr><td class="number">1</td><td><span class="p">#include &lt;stdio.h&gt;</span></td></tr><tr><td class="number">2</td><td>&#160;</td></tr><tr><td class="number">3</td><td><span class="k1">class</span> Main</td></tr><tr><td class="number">4</td><td><span class="k2">{</span></td></tr><tr><td class="number">5</td><td>public:</td></tr><tr><td class="number">6</td><td>  <span class="k1">int</span> run<span class="k2">(</span><span class="k1">int</span> argc, <span class="k1">char</span> <span class="k3">*</span>argv<span class="k2">[</span><span class="k2">]</span><span class="k2">)</span></td></tr><tr><td class="number">7</td><td>  <span class="k2">{</span></td></tr><tr><td class="number">8</td><td>    <span class="k1">if</span><span class="k2">(</span><span class="n">1</span><span class="k3">+</span><span class="n">1</span><span class="k3">=</span><span class="k3">=</span><span class="n">2</span><span class="k2">)</span></td></tr><tr><td class="number">9</td><td>    <span class="k2">{</span></td></tr><tr><td class="number">10</td><td>      <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">"Mathematics appears to be in order."</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">11</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">12</td><td>    <span class="k1">else</span></td></tr><tr><td class="number">13</td><td>    <span class="k2">{</span></td></tr><tr><td class="number">14</td><td>      <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">{</span><span class="s">"Oh dear, mathematics is falling apart."</span><span class="k2">}</span><span class="k2">;</span></td></tr><tr><td class="number">15</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">16</td><td>  <span class="k2">}</span></td></tr><tr><td class="number">17</td><td><span class="k2">}</span><span class="k2">;</span></td></tr><tr><td class="number">18</td><td>&#160;</td></tr><tr><td class="number">19</td><td><span class="k1">int</span> main<span class="k2">(</span><span class="k1">int</span> argc, <span class="k1">char</span> <span class="k3">*</span>argv<span class="k2">[</span><span class="k2">]</span><span class="k2">)</span></td></tr><tr><td class="number">20</td><td><span class="k2">{</span></td></tr><tr><td class="number">21</td><td>  Main obj<span class="k2">;</span></td></tr><tr><td class="number">22</td><td>  <span class="k1">return</span> obj.run<span class="k2">(</span>argc, argv<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">23</td><td><span class="k2">}</span></td></tr></tbody></table></div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Billybob)</author>
		<pubDate>Fri, 25 Aug 2006 02:58:54 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Gimmie a minute...</p><p>[append]
</p><div class="source-code"><div class="toolbar"></div><div class="inner"><table width="100%"><tbody><tr><td class="number">1</td><td><span class="p">#include &lt;stdio.h&gt;</span></td></tr><tr><td class="number">2</td><td>&#160;</td></tr><tr><td class="number">3</td><td><span class="k1">class</span> Main</td></tr><tr><td class="number">4</td><td><span class="k2">{</span></td></tr><tr><td class="number">5</td><td>public:</td></tr><tr><td class="number">6</td><td>  <span class="k1">enum</span> Message <span class="k2">{</span></td></tr><tr><td class="number">7</td><td>    MathSuccess,</td></tr><tr><td class="number">8</td><td>    MathFailure,</td></tr><tr><td class="number">9</td><td>  <span class="k2">}</span><span class="k2">;</span></td></tr><tr><td class="number">10</td><td>  <span class="k1">void</span> printMessage<span class="k2">(</span>Message message<span class="k2">)</span></td></tr><tr><td class="number">11</td><td>  <span class="k2">{</span></td></tr><tr><td class="number">12</td><td>    <span class="k1">switch</span><span class="k2">(</span>message<span class="k2">)</span></td></tr><tr><td class="number">13</td><td>    <span class="k2">{</span></td></tr><tr><td class="number">14</td><td>      <span class="k1">case</span> MathSuccess:</td></tr><tr><td class="number">15</td><td>        <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">"Mathematics appears to be in order."</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">16</td><td>        <span class="k1">break</span><span class="k2">;</span></td></tr><tr><td class="number">17</td><td>      <span class="k1">case</span> MathFailure:</td></tr><tr><td class="number">18</td><td>        <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">"Oh dear, mathematics is falling apart."</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">19</td><td>        <span class="k1">break</span><span class="k2">;</span></td></tr><tr><td class="number">20</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">21</td><td>  <span class="k2">}</span></td></tr><tr><td class="number">22</td><td>&#160;</td></tr><tr><td class="number">23</td><td>  <span class="k1">int</span> run<span class="k2">(</span><span class="k1">int</span> argc, <span class="k1">char</span> <span class="k3">*</span>argv<span class="k2">[</span><span class="k2">]</span><span class="k2">)</span></td></tr><tr><td class="number">24</td><td>  <span class="k2">{</span></td></tr><tr><td class="number">25</td><td>    <span class="k1">if</span><span class="k2">(</span><span class="n">1</span><span class="k3">+</span><span class="n">1</span><span class="k3">=</span><span class="k3">=</span><span class="n">2</span><span class="k2">)</span></td></tr><tr><td class="number">26</td><td>    <span class="k2">{</span></td></tr><tr><td class="number">27</td><td>      printMessage<span class="k2">(</span>MathSuccess<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">28</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">29</td><td>    <span class="k1">else</span></td></tr><tr><td class="number">30</td><td>    <span class="k2">{</span></td></tr><tr><td class="number">31</td><td>      printMessage<span class="k2">(</span>MathFailure<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">32</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">33</td><td>  <span class="k2">}</span></td></tr><tr><td class="number">34</td><td><span class="k2">}</span><span class="k2">;</span></td></tr><tr><td class="number">35</td><td>&#160;</td></tr><tr><td class="number">36</td><td><span class="k1">int</span> main<span class="k2">(</span><span class="k1">int</span> argc, <span class="k1">char</span> <span class="k3">*</span>argv<span class="k2">[</span><span class="k2">]</span><span class="k2">)</span></td></tr><tr><td class="number">37</td><td><span class="k2">{</span></td></tr><tr><td class="number">38</td><td>  Main obj<span class="k2">;</span></td></tr><tr><td class="number">39</td><td>  <span class="k1">return</span> obj.run<span class="k2">(</span>argc, argv<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">40</td><td><span class="k2">}</span></td></tr></tbody></table></div></div><p>

[append]<br />Nice. 1 post every 10 minutes <img src="http://www.allegro.cc/forums/smileys/smiley.gif" alt=":)" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (CGamesPlay)</author>
		<pubDate>Fri, 25 Aug 2006 03:08:22 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="source-code"><div class="toolbar"></div><div class="inner"><table width="100%"><tbody><tr><td class="number">1</td><td><span class="k1">template</span> <span class="k3">&lt;</span><span class="k1">class</span> T, T a, T b, T c&gt;</td></tr><tr><td class="number">2</td><td><span class="k1">class</span> SumStatus</td></tr><tr><td class="number">3</td><td><span class="k2">{</span></td></tr><tr><td class="number">4</td><td>public:</td></tr><tr><td class="number">5</td><td>  <span class="k1">enum</span> Result</td></tr><tr><td class="number">6</td><td>  <span class="k2">{</span></td></tr><tr><td class="number">7</td><td>    Success,</td></tr><tr><td class="number">8</td><td>    Failure,</td></tr><tr><td class="number">9</td><td>  <span class="k2">}</span><span class="k2">;</span></td></tr><tr><td class="number">10</td><td>&#160;</td></tr><tr><td class="number">11</td><td>  Result getResult<span class="k2">(</span><span class="k2">)</span></td></tr><tr><td class="number">12</td><td>  <span class="k2">{</span></td></tr><tr><td class="number">13</td><td>    <span class="k1">if</span> <span class="k2">(</span>a <span class="k3">+</span> b <span class="k3">=</span><span class="k3">=</span> c<span class="k2">)</span></td></tr><tr><td class="number">14</td><td>    <span class="k2">{</span></td></tr><tr><td class="number">15</td><td>      <span class="k1">return</span> Success<span class="k2">;</span></td></tr><tr><td class="number">16</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">17</td><td>    <span class="k1">else</span></td></tr><tr><td class="number">18</td><td>    <span class="k2">{</span></td></tr><tr><td class="number">19</td><td>      <span class="k1">return</span> Failure<span class="k2">;</span></td></tr><tr><td class="number">20</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">21</td><td>  <span class="k2">}</span></td></tr><tr><td class="number">22</td><td><span class="k2">}</span><span class="k2">;</span></td></tr><tr><td class="number">23</td><td>&#160;</td></tr><tr><td class="number">24</td><td><span class="k1">class</span> Main</td></tr><tr><td class="number">25</td><td><span class="k2">{</span></td></tr><tr><td class="number">26</td><td>public:</td></tr><tr><td class="number">27</td><td>  <span class="k1">enum</span> Message</td></tr><tr><td class="number">28</td><td>  <span class="k2">{</span></td></tr><tr><td class="number">29</td><td>    MathSuccess,</td></tr><tr><td class="number">30</td><td>    MathFailure,</td></tr><tr><td class="number">31</td><td>  <span class="k2">}</span><span class="k2">;</span></td></tr><tr><td class="number">32</td><td>&#160;</td></tr><tr><td class="number">33</td><td>  <span class="k1">void</span> printMessage<span class="k2">(</span>Message message<span class="k2">)</span></td></tr><tr><td class="number">34</td><td>  <span class="k2">{</span></td></tr><tr><td class="number">35</td><td>    <span class="k1">switch</span><span class="k2">(</span>message<span class="k2">)</span></td></tr><tr><td class="number">36</td><td>    <span class="k2">{</span></td></tr><tr><td class="number">37</td><td>    <span class="k1">case</span> MathSuccess:</td></tr><tr><td class="number">38</td><td>      <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">"Mathematics appears to be in order."</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">39</td><td>      <span class="k1">break</span><span class="k2">;</span></td></tr><tr><td class="number">40</td><td>    <span class="k1">case</span> MathFailure:</td></tr><tr><td class="number">41</td><td>      <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">"Oh dear, mathematics is falling apart."</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">42</td><td>      <span class="k1">break</span><span class="k2">;</span></td></tr><tr><td class="number">43</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">44</td><td>  <span class="k2">}</span></td></tr><tr><td class="number">45</td><td>&#160;</td></tr><tr><td class="number">46</td><td>  <span class="k1">int</span> run<span class="k2">(</span><span class="k1">int</span> argc, <span class="k1">char</span> <span class="k3">*</span>argv<span class="k2">[</span><span class="k2">]</span><span class="k2">)</span></td></tr><tr><td class="number">47</td><td>  <span class="k2">{</span></td></tr><tr><td class="number">48</td><td>    SumStatus<span class="k3">&lt;</span><span class="k1">int</span>,<span class="n">1</span>,<span class="n">1</span>,<span class="n">2</span><span class="k3">&gt;</span> MathStatus<span class="k2">;</span></td></tr><tr><td class="number">49</td><td>    <span class="k1">switch</span> <span class="k2">(</span>MathStatus.getResult<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span></td></tr><tr><td class="number">50</td><td>    <span class="k2">{</span></td></tr><tr><td class="number">51</td><td>    <span class="k1">case</span> Sum::Sucess:</td></tr><tr><td class="number">52</td><td>      printMessage<span class="k2">(</span>MathSuccess<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">53</td><td>      <span class="k1">break</span><span class="k2">;</span></td></tr><tr><td class="number">54</td><td>    <span class="k1">case</span> Sum::Failure:</td></tr><tr><td class="number">55</td><td>      printMessage<span class="k2">(</span>MathFailure<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">56</td><td>      <span class="k1">break</span><span class="k2">;</span></td></tr><tr><td class="number">57</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">58</td><td>  <span class="k2">}</span></td></tr><tr><td class="number">59</td><td><span class="k2">}</span><span class="k2">;</span></td></tr><tr><td class="number">60</td><td>&#160;</td></tr><tr><td class="number">61</td><td><span class="k1">int</span> main<span class="k2">(</span><span class="k1">int</span> argc, <span class="k1">char</span> <span class="k3">*</span>argv<span class="k2">[</span><span class="k2">]</span><span class="k2">)</span></td></tr><tr><td class="number">62</td><td><span class="k2">{</span></td></tr><tr><td class="number">63</td><td>  Main obj<span class="k2">;</span></td></tr><tr><td class="number">64</td><td>  <span class="k1">return</span> obj.run<span class="k2">(</span>argc, argv<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">65</td><td><span class="k2">}</span></td></tr></tbody></table></div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Steve++)</author>
		<pubDate>Fri, 25 Aug 2006 07:07:45 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>In your template class you have your enum defined ast Result yet you are returning a Status. Just thought I&#39;d point out the bug <img src="http://www.allegro.cc/forums/smileys/tongue.gif" alt=":P" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Steve Terry)</author>
		<pubDate>Fri, 25 Aug 2006 07:38:56 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Bridge Pattern:</p><p>Main.h
</p><div class="source-code snippet"><div class="inner"><pre><span class="k1">class</span> MainImpl<span class="k2">;</span>
<span class="k1">class</span> Main
<span class="k2">{</span>
  private:
    MainImpl<span class="k3">*</span> impl<span class="k2">;</span>
    Main<span class="k3">&amp;</span> <span class="k1">operator</span><span class="k3">=</span><span class="k2">(</span><span class="k1">const</span> Main<span class="k3">&amp;</span><span class="k2">)</span><span class="k2">;</span>
    Main<span class="k2">(</span><span class="k1">const</span> Main<span class="k3">&amp;</span><span class="k2">)</span><span class="k2">;</span>
  public:
    Main<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
    ~Main<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
    <span class="k1">int</span> run<span class="k2">(</span><span class="k1">int</span> argc, <span class="k1">char</span> <span class="k3">*</span>argv<span class="k2">[</span><span class="k2">]</span><span class="k2">)</span><span class="k2">;</span>
<span class="k2">}</span><span class="k2">;</span>
</pre></div></div><p>

MainImpl.cpp
</p><div class="source-code"><div class="toolbar"></div><div class="inner"><table width="100%"><tbody><tr><td class="number">1</td><td><span class="p">#include "Main.h"</span></td></tr><tr><td class="number">2</td><td><span class="p">#include &lt;cstdio&gt;</span></td></tr><tr><td class="number">3</td><td>&#160;</td></tr><tr><td class="number">4</td><td><span class="k1">using</span> std::printf<span class="k2">;</span></td></tr><tr><td class="number">5</td><td>&#160;</td></tr><tr><td class="number">6</td><td><span class="k1">template</span> <span class="k3">&lt;</span><span class="k1">class</span> T, T a, T b, T c&gt;</td></tr><tr><td class="number">7</td><td><span class="k1">class</span> SumStatus</td></tr><tr><td class="number">8</td><td><span class="k2">{</span></td></tr><tr><td class="number">9</td><td>public:</td></tr><tr><td class="number">10</td><td>  <span class="k1">enum</span> Result</td></tr><tr><td class="number">11</td><td>  <span class="k2">{</span></td></tr><tr><td class="number">12</td><td>    Success,</td></tr><tr><td class="number">13</td><td>    Failure,</td></tr><tr><td class="number">14</td><td>  <span class="k2">}</span><span class="k2">;</span></td></tr><tr><td class="number">15</td><td>&#160;</td></tr><tr><td class="number">16</td><td>  Result getResult<span class="k2">(</span><span class="k2">)</span></td></tr><tr><td class="number">17</td><td>  <span class="k2">{</span></td></tr><tr><td class="number">18</td><td>    <span class="k1">if</span> <span class="k2">(</span>a <span class="k3">+</span> b <span class="k3">=</span><span class="k3">=</span> c<span class="k2">)</span></td></tr><tr><td class="number">19</td><td>    <span class="k2">{</span></td></tr><tr><td class="number">20</td><td>      <span class="k1">return</span> Success<span class="k2">;</span></td></tr><tr><td class="number">21</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">22</td><td>    <span class="k1">else</span></td></tr><tr><td class="number">23</td><td>    <span class="k2">{</span></td></tr><tr><td class="number">24</td><td>      <span class="k1">return</span> Failure<span class="k2">;</span></td></tr><tr><td class="number">25</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">26</td><td>  <span class="k2">}</span></td></tr><tr><td class="number">27</td><td><span class="k2">}</span><span class="k2">;</span></td></tr><tr><td class="number">28</td><td>&#160;</td></tr><tr><td class="number">29</td><td>&#160;</td></tr><tr><td class="number">30</td><td><span class="k1">class</span> MainImpl</td></tr><tr><td class="number">31</td><td><span class="k2">{</span></td></tr><tr><td class="number">32</td><td>public:</td></tr><tr><td class="number">33</td><td>  <span class="k1">enum</span> Message</td></tr><tr><td class="number">34</td><td>  <span class="k2">{</span></td></tr><tr><td class="number">35</td><td>    MathSuccess,</td></tr><tr><td class="number">36</td><td>    MathFailure,</td></tr><tr><td class="number">37</td><td>  <span class="k2">}</span><span class="k2">;</span></td></tr><tr><td class="number">38</td><td>&#160;</td></tr><tr><td class="number">39</td><td>  <span class="k1">void</span> printMessage<span class="k2">(</span>Message message<span class="k2">)</span></td></tr><tr><td class="number">40</td><td>  <span class="k2">{</span></td></tr><tr><td class="number">41</td><td>    <span class="k1">switch</span><span class="k2">(</span>message<span class="k2">)</span></td></tr><tr><td class="number">42</td><td>    <span class="k2">{</span></td></tr><tr><td class="number">43</td><td>    <span class="k1">case</span> MathSuccess:</td></tr><tr><td class="number">44</td><td>      <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">"Mathematics appears to be in order."</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">45</td><td>      <span class="k1">break</span><span class="k2">;</span></td></tr><tr><td class="number">46</td><td>    <span class="k1">case</span> MathFailure:</td></tr><tr><td class="number">47</td><td>      <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">"Oh dear, mathematics is falling apart."</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">48</td><td>      <span class="k1">break</span><span class="k2">;</span></td></tr><tr><td class="number">49</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">50</td><td>  <span class="k2">}</span></td></tr><tr><td class="number">51</td><td>&#160;</td></tr><tr><td class="number">52</td><td>  <span class="k1">int</span> run<span class="k2">(</span><span class="k1">int</span> argc, <span class="k1">char</span> <span class="k3">*</span>argv<span class="k2">[</span><span class="k2">]</span><span class="k2">)</span></td></tr><tr><td class="number">53</td><td>  <span class="k2">{</span></td></tr><tr><td class="number">54</td><td>    SumStatus<span class="k3">&lt;</span><span class="k1">int</span>,<span class="n">1</span>,<span class="n">1</span>,<span class="n">2</span><span class="k3">&gt;</span> MathStatus<span class="k2">;</span></td></tr><tr><td class="number">55</td><td>    <span class="k1">switch</span> <span class="k2">(</span>MathStatus.getResult<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span></td></tr><tr><td class="number">56</td><td>    <span class="k2">{</span></td></tr><tr><td class="number">57</td><td>    <span class="k1">case</span> Sum::Sucess:</td></tr><tr><td class="number">58</td><td>      printMessage<span class="k2">(</span>MathSuccess<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">59</td><td>      <span class="k1">break</span><span class="k2">;</span></td></tr><tr><td class="number">60</td><td>    <span class="k1">case</span> Sum::Failure:</td></tr><tr><td class="number">61</td><td>      printMessage<span class="k2">(</span>MathFailure<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">62</td><td>      <span class="k1">break</span><span class="k2">;</span></td></tr><tr><td class="number">63</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">64</td><td>  <span class="k2">}</span></td></tr><tr><td class="number">65</td><td><span class="k2">}</span><span class="k2">;</span></td></tr><tr><td class="number">66</td><td>&#160;</td></tr><tr><td class="number">67</td><td>Main::Main<span class="k2">(</span><span class="k2">)</span></td></tr><tr><td class="number">68</td><td><span class="k2">{</span></td></tr><tr><td class="number">69</td><td>   impl <span class="k3">=</span> <span class="k1">new</span> MainImpl<span class="k2">;</span></td></tr><tr><td class="number">70</td><td><span class="k2">}</span></td></tr><tr><td class="number">71</td><td>&#160;</td></tr><tr><td class="number">72</td><td>Main::~Main<span class="k2">(</span><span class="k2">)</span></td></tr><tr><td class="number">73</td><td><span class="k2">{</span></td></tr><tr><td class="number">74</td><td>   <span class="k1">delete</span> impl<span class="k2">;</span></td></tr><tr><td class="number">75</td><td><span class="k2">}</span></td></tr><tr><td class="number">76</td><td>&#160;</td></tr><tr><td class="number">77</td><td><span class="k1">int</span> Main::run<span class="k2">(</span><span class="k1">int</span> argc, <span class="k1">char</span> <span class="k3">*</span>argv<span class="k2">[</span><span class="k2">]</span><span class="k2">)</span></td></tr><tr><td class="number">78</td><td><span class="k2">{</span></td></tr><tr><td class="number">79</td><td>   <span class="k1">return</span> impl-&gt;run<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">80</td><td><span class="k2">}</span></td></tr></tbody></table></div></div><p>

main.cpp
</p><div class="source-code snippet"><div class="inner"><pre><span class="p">#include "Main.h"</span>

<span class="k1">int</span> main<span class="k2">(</span><span class="k1">int</span> argc, <span class="k1">char</span> <span class="k3">*</span>argv<span class="k2">[</span><span class="k2">]</span><span class="k2">)</span>
<span class="k2">{</span>
   Main obj<span class="k2">;</span>
   <span class="k1">return</span> obj.run<span class="k2">(</span>argc, argv<span class="k2">)</span><span class="k2">;</span>
<span class="k2">}</span>
</pre></div></div><p>


EDIT:<br />Fixed the bug Steve Terry pointed out
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Carrus85)</author>
		<pubDate>Fri, 25 Aug 2006 07:38:58 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>- OutputDevice (derived classes)<br />- Made code compilable (;)) and fixed indentation<br />- Unfortunately I had to convert Steve&#39;s template to an ordinary class with constructor in order to compile the code. <img src="http://www.allegro.cc/forums/smileys/undecided.gif" alt=":-/" /></p><p>main.cpp:
</p><div class="source-code snippet"><div class="inner"><pre><span class="p">#include "Main.h"</span>

<span class="k1">int</span> main<span class="k2">(</span><span class="k1">int</span> argc, <span class="k1">char</span> <span class="k3">*</span>argv<span class="k2">[</span><span class="k2">]</span><span class="k2">)</span>
<span class="k2">{</span>
  Main obj<span class="k2">;</span>
  <span class="k1">return</span> obj.run<span class="k2">(</span>argc, argv<span class="k2">)</span><span class="k2">;</span>
<span class="k2">}</span>
</pre></div></div><p>

Main.h:
</p><div class="source-code"><div class="toolbar"></div><div class="inner"><table width="100%"><tbody><tr><td class="number">1</td><td><span class="p">#ifndef _MAIN_H_</span></td></tr><tr><td class="number">2</td><td><span class="p">#define _MAIN_H_</span></td></tr><tr><td class="number">3</td><td>&#160;</td></tr><tr><td class="number">4</td><td><span class="k1">class</span> MainImpl<span class="k2">;</span></td></tr><tr><td class="number">5</td><td><span class="k1">class</span> Main</td></tr><tr><td class="number">6</td><td><span class="k2">{</span></td></tr><tr><td class="number">7</td><td>  private:</td></tr><tr><td class="number">8</td><td>    MainImpl<span class="k3">*</span> impl<span class="k2">;</span></td></tr><tr><td class="number">9</td><td>    Main<span class="k3">&amp;</span> <span class="k1">operator</span><span class="k3">=</span><span class="k2">(</span><span class="k1">const</span> Main<span class="k3">&amp;</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">10</td><td>    Main<span class="k2">(</span><span class="k1">const</span> Main<span class="k3">&amp;</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">11</td><td>  public:</td></tr><tr><td class="number">12</td><td>    Main<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">13</td><td>    ~Main<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">14</td><td>    <span class="k1">int</span> run<span class="k2">(</span><span class="k1">int</span> argc, <span class="k1">char</span> <span class="k3">*</span>argv<span class="k2">[</span><span class="k2">]</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">15</td><td><span class="k2">}</span><span class="k2">;</span></td></tr><tr><td class="number">16</td><td>&#160;</td></tr><tr><td class="number">17</td><td><span class="p">#endif</span></td></tr></tbody></table></div></div><p>

MainImpl.cpp:
</p><div class="source-code"><div class="toolbar"></div><div class="inner"><table width="100%"><tbody><tr><td class="number">1</td><td><span class="p">#include "Main.h"</span></td></tr><tr><td class="number">2</td><td><span class="p">#include "OutputDevice.h"</span></td></tr><tr><td class="number">3</td><td>&#160;</td></tr><tr><td class="number">4</td><td><span class="k1">class</span> SumStatus</td></tr><tr><td class="number">5</td><td><span class="k2">{</span></td></tr><tr><td class="number">6</td><td>private:</td></tr><tr><td class="number">7</td><td>  <span class="k1">int</span> a, b, c<span class="k2">;</span></td></tr><tr><td class="number">8</td><td>public:</td></tr><tr><td class="number">9</td><td>  SumStatus<span class="k2">(</span><span class="k1">int</span> a, <span class="k1">int</span> b, <span class="k1">int</span> c<span class="k2">)</span> <span class="k2">:</span> a<span class="k2">(</span>a<span class="k2">)</span>, b<span class="k2">(</span>b<span class="k2">)</span>, c<span class="k2">(</span>c<span class="k2">)</span> <span class="k2">{</span><span class="k2">}</span></td></tr><tr><td class="number">10</td><td>&#160;</td></tr><tr><td class="number">11</td><td>  <span class="k1">enum</span> Result</td></tr><tr><td class="number">12</td><td>  <span class="k2">{</span></td></tr><tr><td class="number">13</td><td>    Success,</td></tr><tr><td class="number">14</td><td>    Failure,</td></tr><tr><td class="number">15</td><td>  <span class="k2">}</span><span class="k2">;</span></td></tr><tr><td class="number">16</td><td>&#160;</td></tr><tr><td class="number">17</td><td>  Result getResult<span class="k2">(</span><span class="k2">)</span></td></tr><tr><td class="number">18</td><td>  <span class="k2">{</span></td></tr><tr><td class="number">19</td><td>    <span class="k1">if</span> <span class="k2">(</span>a <span class="k3">+</span> b <span class="k3">=</span><span class="k3">=</span> c<span class="k2">)</span></td></tr><tr><td class="number">20</td><td>    <span class="k2">{</span></td></tr><tr><td class="number">21</td><td>      <span class="k1">return</span> Success<span class="k2">;</span></td></tr><tr><td class="number">22</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">23</td><td>    <span class="k1">else</span></td></tr><tr><td class="number">24</td><td>    <span class="k2">{</span></td></tr><tr><td class="number">25</td><td>      <span class="k1">return</span> Failure<span class="k2">;</span></td></tr><tr><td class="number">26</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">27</td><td>  <span class="k2">}</span></td></tr><tr><td class="number">28</td><td><span class="k2">}</span><span class="k2">;</span></td></tr><tr><td class="number">29</td><td>&#160;</td></tr><tr><td class="number">30</td><td>&#160;</td></tr><tr><td class="number">31</td><td><span class="k1">class</span> MainImpl</td></tr><tr><td class="number">32</td><td><span class="k2">{</span></td></tr><tr><td class="number">33</td><td>public:</td></tr><tr><td class="number">34</td><td>  <span class="k1">enum</span> Message</td></tr><tr><td class="number">35</td><td>  <span class="k2">{</span></td></tr><tr><td class="number">36</td><td>    MathSuccess,</td></tr><tr><td class="number">37</td><td>    MathFailure,</td></tr><tr><td class="number">38</td><td>  <span class="k2">}</span><span class="k2">;</span></td></tr><tr><td class="number">39</td><td>&#160;</td></tr><tr><td class="number">40</td><td>  <span class="k1">void</span> printMessage<span class="k2">(</span>OutputDevice<span class="k3">*</span> od, Message message<span class="k2">)</span></td></tr><tr><td class="number">41</td><td>  <span class="k2">{</span></td></tr><tr><td class="number">42</td><td>    <span class="k1">switch</span><span class="k2">(</span>message<span class="k2">)</span></td></tr><tr><td class="number">43</td><td>    <span class="k2">{</span></td></tr><tr><td class="number">44</td><td>    <span class="k1">case</span> MathSuccess:</td></tr><tr><td class="number">45</td><td>      od-&gt;output<span class="k2">(</span><span class="s">"Mathematics appears to be in order."</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">46</td><td>      <span class="k1">break</span><span class="k2">;</span></td></tr><tr><td class="number">47</td><td>    <span class="k1">case</span> MathFailure:</td></tr><tr><td class="number">48</td><td>      od-&gt;output<span class="k2">(</span><span class="s">"Oh dear, mathematics is falling apart."</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">49</td><td>      <span class="k1">break</span><span class="k2">;</span></td></tr><tr><td class="number">50</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">51</td><td>  <span class="k2">}</span></td></tr><tr><td class="number">52</td><td>&#160;</td></tr><tr><td class="number">53</td><td>  <span class="k1">int</span> run<span class="k2">(</span><span class="k1">int</span> argc, <span class="k1">char</span> <span class="k3">*</span>argv<span class="k2">[</span><span class="k2">]</span><span class="k2">)</span></td></tr><tr><td class="number">54</td><td>  <span class="k2">{</span></td></tr><tr><td class="number">55</td><td>    SumStatus MathStatus<span class="k2">(</span><span class="n">1</span>, <span class="n">1</span>, <span class="n">2</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">56</td><td>    OutputDevice<span class="k3">*</span> od <span class="k3">=</span> <span class="k1">new</span> ConsoleOutputDevice<span class="k2">;</span></td></tr><tr><td class="number">57</td><td>&#160;</td></tr><tr><td class="number">58</td><td>    <span class="k1">switch</span> <span class="k2">(</span>MathStatus.getResult<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span></td></tr><tr><td class="number">59</td><td>    <span class="k2">{</span></td></tr><tr><td class="number">60</td><td>      <span class="k1">case</span> SumStatus::Success:</td></tr><tr><td class="number">61</td><td>        printMessage<span class="k2">(</span>od, MathSuccess<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">62</td><td>        <span class="k1">break</span><span class="k2">;</span></td></tr><tr><td class="number">63</td><td>      <span class="k1">case</span> SumStatus::Failure:</td></tr><tr><td class="number">64</td><td>        printMessage<span class="k2">(</span>od, MathFailure<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">65</td><td>        <span class="k1">break</span><span class="k2">;</span></td></tr><tr><td class="number">66</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">67</td><td>&#160;</td></tr><tr><td class="number">68</td><td>    <span class="k1">delete</span> od<span class="k2">;</span></td></tr><tr><td class="number">69</td><td>  <span class="k2">}</span></td></tr><tr><td class="number">70</td><td><span class="k2">}</span><span class="k2">;</span></td></tr><tr><td class="number">71</td><td>&#160;</td></tr><tr><td class="number">72</td><td>Main::Main<span class="k2">(</span><span class="k2">)</span></td></tr><tr><td class="number">73</td><td><span class="k2">{</span></td></tr><tr><td class="number">74</td><td>  impl <span class="k3">=</span> <span class="k1">new</span> MainImpl<span class="k2">;</span></td></tr><tr><td class="number">75</td><td><span class="k2">}</span></td></tr><tr><td class="number">76</td><td>&#160;</td></tr><tr><td class="number">77</td><td>Main::~Main<span class="k2">(</span><span class="k2">)</span></td></tr><tr><td class="number">78</td><td><span class="k2">{</span></td></tr><tr><td class="number">79</td><td>  <span class="k1">delete</span> impl<span class="k2">;</span></td></tr><tr><td class="number">80</td><td><span class="k2">}</span></td></tr><tr><td class="number">81</td><td>&#160;</td></tr><tr><td class="number">82</td><td><span class="k1">int</span> Main::run<span class="k2">(</span><span class="k1">int</span> argc, <span class="k1">char</span> <span class="k3">*</span>argv<span class="k2">[</span><span class="k2">]</span><span class="k2">)</span></td></tr><tr><td class="number">83</td><td><span class="k2">{</span></td></tr><tr><td class="number">84</td><td>  <span class="k1">return</span> impl-&gt;run<span class="k2">(</span>argc, argv<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">85</td><td><span class="k2">}</span></td></tr></tbody></table></div></div><p>

OutputDevice.h:
</p><div class="source-code"><div class="toolbar"></div><div class="inner"><table width="100%"><tbody><tr><td class="number">1</td><td><span class="p">#ifndef _OUTPUTDEVICE_H_</span></td></tr><tr><td class="number">2</td><td><span class="p">#define _OUTPUTDEVICE_H_</span></td></tr><tr><td class="number">3</td><td>&#160;</td></tr><tr><td class="number">4</td><td><span class="p">#include &lt;iostream&gt;</span></td></tr><tr><td class="number">5</td><td><span class="p">#include &lt;string&gt;</span></td></tr><tr><td class="number">6</td><td>&#160;</td></tr><tr><td class="number">7</td><td><span class="k1">class</span> OutputDevice</td></tr><tr><td class="number">8</td><td><span class="k2">{</span></td></tr><tr><td class="number">9</td><td>public:</td></tr><tr><td class="number">10</td><td>  <span class="k1">virtual</span> <span class="k1">void</span> output<span class="k2">(</span>std::string str<span class="k2">)</span> <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">11</td><td><span class="k2">}</span><span class="k2">;</span></td></tr><tr><td class="number">12</td><td>&#160;</td></tr><tr><td class="number">13</td><td><span class="k1">class</span> ConsoleOutputDevice <span class="k2">:</span> <span class="k1">public</span> OutputDevice</td></tr><tr><td class="number">14</td><td><span class="k2">{</span></td></tr><tr><td class="number">15</td><td>public:</td></tr><tr><td class="number">16</td><td>  <span class="k1">virtual</span> <span class="k1">void</span> output<span class="k2">(</span>std::string str<span class="k2">)</span></td></tr><tr><td class="number">17</td><td>  <span class="k2">{</span></td></tr><tr><td class="number">18</td><td>    std::cout <span class="k3">&lt;</span><span class="k3">&lt;</span> str <span class="k3">&lt;</span><span class="k3">&lt;</span> std::endl<span class="k2">;</span></td></tr><tr><td class="number">19</td><td>  <span class="k2">}</span></td></tr><tr><td class="number">20</td><td><span class="k2">}</span><span class="k2">;</span></td></tr><tr><td class="number">21</td><td>&#160;</td></tr><tr><td class="number">22</td><td><span class="p">#endif</span></td></tr></tbody></table></div></div><p>


[EDIT]<br />Sorry, forgot the OutputDevice.h!</p><p>[EDIT]<br />I also attached the files now.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Michael Faerber)</author>
		<pubDate>Fri, 25 Aug 2006 15:37:58 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Used a policy (templates again):</p><p>Status.h:
</p><div class="source-code"><div class="toolbar"></div><div class="inner"><table width="100%"><tbody><tr><td class="number">1</td><td><span class="k1">class</span> StatusPolicy</td></tr><tr><td class="number">2</td><td><span class="k2">{</span></td></tr><tr><td class="number">3</td><td>public:</td></tr><tr><td class="number">4</td><td>  <span class="k1">enum</span> Result</td></tr><tr><td class="number">5</td><td>  <span class="k2">{</span></td></tr><tr><td class="number">6</td><td>    Success,</td></tr><tr><td class="number">7</td><td>    Failure</td></tr><tr><td class="number">8</td><td>  <span class="k2">}</span></td></tr><tr><td class="number">9</td><td><span class="k2">}</span><span class="k2">;</span></td></tr><tr><td class="number">10</td><td>&#160;</td></tr><tr><td class="number">11</td><td><span class="k1">class</span> SumStatusPolicy <span class="k2">:</span> <span class="k1">public</span> StatusPolicy</td></tr><tr><td class="number">12</td><td><span class="k2">{</span></td></tr><tr><td class="number">13</td><td>public:</td></tr><tr><td class="number">14</td><td>  Result  <span class="k1">operator</span><span class="k2">(</span><span class="k2">)</span><span class="k2">(</span><span class="k1">int</span> a, <span class="k1">int</span> b, <span class="k1">int</span> c<span class="k2">)</span></td></tr><tr><td class="number">15</td><td>  <span class="k2">{</span></td></tr><tr><td class="number">16</td><td>    <span class="k1">if</span> <span class="k2">(</span>a <span class="k3">+</span> b <span class="k3">=</span><span class="k3">=</span> c<span class="k2">)</span></td></tr><tr><td class="number">17</td><td>    <span class="k2">{</span></td></tr><tr><td class="number">18</td><td>      <span class="k1">return</span> Success<span class="k2">;</span></td></tr><tr><td class="number">19</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">20</td><td>    <span class="k1">else</span></td></tr><tr><td class="number">21</td><td>    <span class="k2">{</span></td></tr><tr><td class="number">22</td><td>      <span class="k1">return</span> Failure<span class="k2">;</span></td></tr><tr><td class="number">23</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">24</td><td>  <span class="k2">}</span></td></tr><tr><td class="number">25</td><td><span class="k2">}</span><span class="k2">;</span></td></tr><tr><td class="number">26</td><td>&#160;</td></tr><tr><td class="number">27</td><td><span class="k1">template</span><span class="k3">&lt;</span> <span class="k1">class</span> Policy <span class="k3">&gt;</span></td></tr><tr><td class="number">28</td><td><span class="k1">class</span> Status</td></tr><tr><td class="number">29</td><td><span class="k2">{</span></td></tr><tr><td class="number">30</td><td>private:</td></tr><tr><td class="number">31</td><td>  <span class="k1">int</span> a, b, c<span class="k2">;</span></td></tr><tr><td class="number">32</td><td>  Policy  policy<span class="k2">;</span></td></tr><tr><td class="number">33</td><td>public:</td></tr><tr><td class="number">34</td><td>  SumStatus<span class="k2">(</span><span class="k1">int</span> a, <span class="k1">int</span> b, <span class="k1">int</span> c<span class="k2">)</span> <span class="k2">:</span> a<span class="k2">(</span>a<span class="k2">)</span>, b<span class="k2">(</span>b<span class="k2">)</span>, c<span class="k2">(</span>c<span class="k2">)</span> <span class="k2">{</span><span class="k2">}</span></td></tr><tr><td class="number">35</td><td>&#160;</td></tr><tr><td class="number">36</td><td>  Policy::Result getResult<span class="k2">(</span><span class="k2">)</span></td></tr><tr><td class="number">37</td><td>  <span class="k2">{</span></td></tr><tr><td class="number">38</td><td>    <span class="k1">return</span> policy<span class="k2">(</span>a, b, c<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">39</td><td>  <span class="k2">}</span></td></tr><tr><td class="number">40</td><td><span class="k2">}</span><span class="k2">;</span></td></tr><tr><td class="number">41</td><td>&#160;</td></tr><tr><td class="number">42</td><td><span class="k1">typedef</span> Status<span class="k3">&lt;</span> SumStatusPolicy <span class="k3">&gt;</span> SumStatus<span class="k2">;</span></td></tr></tbody></table></div></div><p>

MainImpl.cpp:
</p><div class="source-code"><div class="toolbar"></div><div class="inner"><table width="100%"><tbody><tr><td class="number">1</td><td><span class="p">#include "Main.h"</span></td></tr><tr><td class="number">2</td><td><span class="p">#include "OutputDevice.h"</span></td></tr><tr><td class="number">3</td><td><span class="p">#include "Status.h"</span></td></tr><tr><td class="number">4</td><td>&#160;</td></tr><tr><td class="number">5</td><td><span class="k1">class</span> MainImpl</td></tr><tr><td class="number">6</td><td><span class="k2">{</span></td></tr><tr><td class="number">7</td><td>public:</td></tr><tr><td class="number">8</td><td>  <span class="k1">enum</span> Message</td></tr><tr><td class="number">9</td><td>  <span class="k2">{</span></td></tr><tr><td class="number">10</td><td>    MathSuccess,</td></tr><tr><td class="number">11</td><td>    MathFailure,</td></tr><tr><td class="number">12</td><td>  <span class="k2">}</span><span class="k2">;</span></td></tr><tr><td class="number">13</td><td>&#160;</td></tr><tr><td class="number">14</td><td>  <span class="k1">void</span> printMessage<span class="k2">(</span>OutputDevice<span class="k3">*</span> od, Message message<span class="k2">)</span></td></tr><tr><td class="number">15</td><td>  <span class="k2">{</span></td></tr><tr><td class="number">16</td><td>    <span class="k1">switch</span><span class="k2">(</span>message<span class="k2">)</span></td></tr><tr><td class="number">17</td><td>    <span class="k2">{</span></td></tr><tr><td class="number">18</td><td>    <span class="k1">case</span> MathSuccess:</td></tr><tr><td class="number">19</td><td>      od-&gt;output<span class="k2">(</span><span class="s">"Mathematics appears to be in order."</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">20</td><td>      <span class="k1">break</span><span class="k2">;</span></td></tr><tr><td class="number">21</td><td>    <span class="k1">case</span> MathFailure:</td></tr><tr><td class="number">22</td><td>      od-&gt;output<span class="k2">(</span><span class="s">"Oh dear, mathematics is falling apart."</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">23</td><td>      <span class="k1">break</span><span class="k2">;</span></td></tr><tr><td class="number">24</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">25</td><td>  <span class="k2">}</span></td></tr><tr><td class="number">26</td><td>&#160;</td></tr><tr><td class="number">27</td><td>  <span class="k1">int</span> run<span class="k2">(</span><span class="k1">int</span> argc, <span class="k1">char</span> <span class="k3">*</span>argv<span class="k2">[</span><span class="k2">]</span><span class="k2">)</span></td></tr><tr><td class="number">28</td><td>  <span class="k2">{</span></td></tr><tr><td class="number">29</td><td>    SumStatus MathStatus<span class="k2">(</span><span class="n">1</span>, <span class="n">1</span>, <span class="n">2</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">30</td><td>    OutputDevice<span class="k3">*</span> od <span class="k3">=</span> <span class="k1">new</span> ConsoleOutputDevice<span class="k2">;</span></td></tr><tr><td class="number">31</td><td>&#160;</td></tr><tr><td class="number">32</td><td>    <span class="k1">switch</span> <span class="k2">(</span>MathStatus.getResult<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span></td></tr><tr><td class="number">33</td><td>    <span class="k2">{</span></td></tr><tr><td class="number">34</td><td>      <span class="k1">case</span> SumStatus::Success:</td></tr><tr><td class="number">35</td><td>        printMessage<span class="k2">(</span>od, MathSuccess<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">36</td><td>        <span class="k1">break</span><span class="k2">;</span></td></tr><tr><td class="number">37</td><td>      <span class="k1">case</span> SumStatus::Failure:</td></tr><tr><td class="number">38</td><td>        printMessage<span class="k2">(</span>od, MathFailure<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">39</td><td>        <span class="k1">break</span><span class="k2">;</span></td></tr><tr><td class="number">40</td><td>    <span class="k2">}</span></td></tr><tr><td class="number">41</td><td>&#160;</td></tr><tr><td class="number">42</td><td>    <span class="k1">delete</span> od<span class="k2">;</span></td></tr><tr><td class="number">43</td><td>    <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">44</td><td>  <span class="k2">}</span></td></tr><tr><td class="number">45</td><td><span class="k2">}</span><span class="k2">;</span></td></tr><tr><td class="number">46</td><td>&#160;</td></tr><tr><td class="number">47</td><td>Main::Main<span class="k2">(</span><span class="k2">)</span></td></tr><tr><td class="number">48</td><td><span class="k2">{</span></td></tr><tr><td class="number">49</td><td>  impl <span class="k3">=</span> <span class="k1">new</span> MainImpl<span class="k2">;</span></td></tr><tr><td class="number">50</td><td><span class="k2">}</span></td></tr><tr><td class="number">51</td><td>&#160;</td></tr><tr><td class="number">52</td><td>Main::~Main<span class="k2">(</span><span class="k2">)</span></td></tr><tr><td class="number">53</td><td><span class="k2">{</span></td></tr><tr><td class="number">54</td><td>  <span class="k1">delete</span> impl<span class="k2">;</span></td></tr><tr><td class="number">55</td><td><span class="k2">}</span></td></tr><tr><td class="number">56</td><td>&#160;</td></tr><tr><td class="number">57</td><td><span class="k1">int</span> Main::run<span class="k2">(</span><span class="k1">int</span> argc, <span class="k1">char</span> <span class="k3">*</span>argv<span class="k2">[</span><span class="k2">]</span><span class="k2">)</span></td></tr><tr><td class="number">58</td><td><span class="k2">{</span></td></tr><tr><td class="number">59</td><td>  <span class="k1">return</span> impl-&gt;run<span class="k2">(</span>argc, argv<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">60</td><td><span class="k2">}</span></td></tr></tbody></table></div></div><p>

<b>Warning:</b> As I&#39;m not on a computer with a C++ compiler, I couldn&#39;t test it, so it might be that it doesn&#39;t even compile.</p><p>The rest of the files were unchanged.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Indeterminatus)</author>
		<pubDate>Fri, 25 Aug 2006 16:01:06 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>This will become something like skynet eventually <img src="http://www.allegro.cc/forums/smileys/grin.gif" alt=";D" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Ariesnl)</author>
		<pubDate>Fri, 25 Aug 2006 16:04:33 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
In your template class you have your enum defined ast Result yet you are returning a Status. Just thought I&#39;d point out the bug <img src="http://www.allegro.cc/forums/smileys/tongue.gif" alt=":P" />
</p></div></div><p>Oops. I didn&#39;t compile.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Steve++)</author>
		<pubDate>Fri, 25 Aug 2006 18:52:46 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Don&#39;t worry about it, I don&#39;t think that printf{&quot;Oh dear, mathematics is falling apart.&quot;}; from the original post is valid C either.</p><p>Marcello
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Marcello)</author>
		<pubDate>Sun, 27 Aug 2006 02:30:44 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Ah the joys of over engineering.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Thomas Fjellstrom)</author>
		<pubDate>Sun, 27 Aug 2006 02:46:17 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>It&#39;s amazing how bloated a simple program can be in C++. Why don&#39;t we switch to Java, to give a better illusion of bloat and slowness? <img src="http://www.allegro.cc/forums/smileys/wink.gif" alt=";)" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (BAF)</author>
		<pubDate>Wed, 30 Aug 2006 20:25:01 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
Don&#39;t worry about it, I don&#39;t think that printf{&quot;Oh dear, mathematics is falling apart.&quot;}; from the original post is valid C either.
</p></div></div><p>

It would work if the C code was interpreted instead of compiled.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Simon Parzer)</author>
		<pubDate>Wed, 30 Aug 2006 21:59:05 +0000</pubDate>
	</item>
</rss>
