<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>OO timer</title>
		<link>http://www.allegro.cc/forums/view/588805</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Sun, 03 Dec 2006 04:29:08 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Hi, <br />I am working my way into Allegro (thanks to all the kind people here;D) and trying to understand OO, what I want to do is create my own timer-object, so I can easely manage allegro-timers.</p><p>Here is my code:</p><p>Timer.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 _TIMER_H</span></td></tr><tr><td class="number">2</td><td><span class="p">#define _TIMER_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> Timer</td></tr><tr><td class="number">5</td><td><span class="k2">{</span></td></tr><tr><td class="number">6</td><td>  public:</td></tr><tr><td class="number">7</td><td>    Timer<span class="k2">(</span><span class="k1">int</span> frequency<span class="k2">)</span><span class="k2">;</span> <span class="c">// Constructor</span></td></tr><tr><td class="number">8</td><td>    ~Timer<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span> <span class="c">// Destructor</span></td></tr><tr><td class="number">9</td><td>&#160;</td></tr><tr><td class="number">10</td><td>    <span class="k1">void</span> increaseValue<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">11</td><td>&#160;</td></tr><tr><td class="number">12</td><td>  private:</td></tr><tr><td class="number">13</td><td>    <span class="k1">int</span> itsValue<span class="k2">;</span></td></tr><tr><td class="number">14</td><td>    <span class="k1">int</span> itsLifespan<span class="k2">;</span></td></tr><tr><td class="number">15</td><td>    <span class="k1">int</span> itsFrequency<span class="k2">;</span></td></tr><tr><td class="number">16</td><td><span class="k2">}</span><span class="k2">;</span></td></tr><tr><td class="number">17</td><td>&#160;</td></tr><tr><td class="number">18</td><td><span class="p">#endif</span></td></tr></tbody></table></div></div><p>

Timer.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 &lt;allegro.h&gt;</span></td></tr><tr><td class="number">2</td><td>&#160;</td></tr><tr><td class="number">3</td><td><span class="p">#include "timer.h"</span></td></tr><tr><td class="number">4</td><td>&#160;</td></tr><tr><td class="number">5</td><td><span class="c">// Constructor</span></td></tr><tr><td class="number">6</td><td>Timer::Timer<span class="k2">(</span><span class="k1">int</span> frequency<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>  itsFrequency <span class="k3">=</span> frequency<span class="k2">;</span></td></tr><tr><td class="number">9</td><td>&#160;</td></tr><tr><td class="number">10</td><td>  <a href="http://www.allegro.cc/manual/LOCK_VARIABLE" target="_blank"><span class="a">LOCK_VARIABLE</span></a><span class="k2">(</span>itsValue<span class="k2">)</span><span class="k2">;</span> <span class="c">//Used to set the timer - which regulates the game's</span></td></tr><tr><td class="number">11</td><td>  <a href="http://www.allegro.cc/manual/LOCK_FUNCTION" target="_blank"><span class="a">LOCK_FUNCTION</span></a><span class="k2">(</span>Timer::increaseValue<span class="k2">)</span><span class="k2">;</span><span class="c">//speed.</span></td></tr><tr><td class="number">12</td><td>  <a href="http://www.allegro.cc/manual/install_int_ex" target="_blank"><span class="a">install_int_ex</span></a><span class="k2">(</span>Timer::increaseValue, BPS_TO_TIMER<span class="k2">(</span>itsFrequency<span class="k2">)</span><span class="k2">)</span><span class="k2">;</span><span class="c">//Set our BPS</span></td></tr><tr><td class="number">13</td><td><span class="k2">}</span></td></tr><tr><td class="number">14</td><td>&#160;</td></tr><tr><td class="number">15</td><td><span class="c">// Destructor</span></td></tr><tr><td class="number">16</td><td>Timer::~Timer<span class="k2">(</span><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">void</span> Timer::increaseValue<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>  itsValue<span class="k3">+</span><span class="k3">+</span><span class="k2">;</span></td></tr><tr><td class="number">22</td><td><span class="k2">}</span></td></tr></tbody></table></div></div><p>

But when I try to compile this one, I get the following error:<br /><span class="source-code">timer.cpp:14: error: argument of type ‘<span class="k1">void</span> <span class="k2">(</span>Timer::<span class="k2">)</span><span class="k2">(</span><span class="k2">)</span>’ does <span class="k1">not</span> match ‘<span class="k1">void</span> <span class="k2">(</span><span class="k3">*</span><span class="k2">)</span><span class="k2">(</span><span class="k2">)</span>’</span></p><p>Which is understandable, but I dont know how to solve this one:-/.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (BackwardsDown)</author>
		<pubDate>Wed, 29 Nov 2006 22:45:46 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>You must make Timer::increaseValue static.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Milan Mimica)</author>
		<pubDate>Wed, 29 Nov 2006 22:55:52 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>But when I set it up like this:</p><div class="source-code snippet"><div class="inner"><pre><span class="k1">static</span> <span class="k1">void</span> Timer::increaseValue<span class="k2">(</span><span class="k2">)</span>
<span class="k2">{</span>
  itsValue<span class="k3">+</span><span class="k3">+</span><span class="k2">;</span>
<span class="k2">}</span>
<a href="http://www.allegro.cc/manual/END_OF_FUNCTION" target="_blank"><span class="a">END_OF_FUNCTION</span></a><span class="k2">(</span>increaseValue<span class="k2">)</span><span class="k2">;</span>
</pre></div></div><p>

It says:<br /><span class="source-code">timer.h:13: error: invalid use of member ‘Timer::itsValue’ in <span class="k1">static</span> member function</span>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (BackwardsDown)</author>
		<pubDate>Wed, 29 Nov 2006 23:15:22 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Because static methods must use static properties only.</p><p>You should study Object Oriented Programming before to apply it, shouldn&#39;t you? <img src="http://www.allegro.cc/forums/smileys/rolleyes.gif" alt="::)" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Niunio)</author>
		<pubDate>Wed, 29 Nov 2006 23:18:56 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Of course. You can only access static members from a static function.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Milan Mimica)</author>
		<pubDate>Wed, 29 Nov 2006 23:20:25 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I think you&#39;re right <img src="http://www.allegro.cc/forums/smileys/tongue.gif" alt=":P" /></p><p><b>goes to read the rest of the book, instead of only the basics</b>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (BackwardsDown)</author>
		<pubDate>Wed, 29 Nov 2006 23:55:05 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>But, with install_param_int_ex, you can pass a void* parameter to that static function. If that void* parameter is a Timer*, you can do this:
</p><div class="source-code snippet"><div class="inner"><pre><span class="k1">static</span> <span class="k1">void</span> Timer::increaseValue<span class="k2">(</span><span class="k1">void</span><span class="k3">*</span> parm<span class="k2">)</span> <span class="k2">{</span>
    Timer<span class="k3">*</span> t <span class="k3">=</span> <span class="k2">(</span>Timer<span class="k3">*</span><span class="k2">)</span> parm<span class="k2">;</span>
    t-&gt;itsValue<span class="k3">+</span><span class="k3">+</span><span class="k2">;</span>
<span class="k2">}</span>
</pre></div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (CGamesPlay)</author>
		<pubDate>Thu, 30 Nov 2006 00:25:33 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>You shouldn&#39;t use C-style casting in C++...
</p><div class="source-code snippet"><div class="inner"><pre><span class="c">//Timer* t = (Timer*) parm;</span>
Timer<span class="k3">*</span> t <span class="k3">=</span> <span class="k1">static_cast</span><span class="k3">&lt;</span>Timer<span class="k3">*</span><span class="k3">&gt;</span><span class="k2">(</span>parm<span class="k2">)</span><span class="k2">;</span>
</pre></div></div><p>

But otherwise CGamesPlay is right. Making a static method which takes a pointer to an object of the class is the usual approach for such problems (providing function callbacks for C-APIs in C++).
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Simon Parzer)</author>
		<pubDate>Thu, 30 Nov 2006 03:33:52 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
You shouldn&#39;t use C-style casting in C++...<br />//Timer* t = (Timer*) parm;<br />Timer* t = static_cast&lt;Timer*&gt;(parm);
</p></div></div><p>
Thats fugly.  I prefer (Timer*) style cast.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (ImLeftFooted)</author>
		<pubDate>Thu, 30 Nov 2006 05:46:49 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>And they are the same damn thing.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Thomas Fjellstrom)</author>
		<pubDate>Thu, 30 Nov 2006 11:13:50 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
And they are the same damn thing.
</p></div></div><p>

No. The C-style cast can have the effect of reinterpret_cast. static_cast ensures that the cast is possible, check is being performed at compile time.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Simon Parzer)</author>
		<pubDate>Thu, 30 Nov 2006 20:04:53 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Hey Miran did it before you. Copy from his masking lib.;D
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (ahmet yilmaz)</author>
		<pubDate>Thu, 30 Nov 2006 20:38:07 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>And both reinterpret_cast and static_cast will work.  who&#39;d a thunk it.</p><p>Stroustrup himself said the real reason for all those casts was to make casting an ugly operation that is hard to type.  Stroustrup&#39;s ideal is a program with no casts.</p><p>I disagree with him, I integrate casts into my everyday life.  Therefore i chose to ignore that part of his C++ standard.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (ImLeftFooted)</author>
		<pubDate>Fri, 01 Dec 2006 07:31:25 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
The C-style cast can have the effect of reinterpret_cast.
</p></div></div><p>First and foremost, it doesn&#39;t in this case, without a doubt. Now, can you point out a case where it does?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (CGamesPlay)</author>
		<pubDate>Fri, 01 Dec 2006 07:48:47 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
First and foremost, it doesn&#39;t in this case, without a doubt. Now, can you point out a case where it does?
</p></div></div><p>

</p><div class="source-code snippet"><div class="inner"><pre><span class="k1">static</span> <span class="k1">void</span> Timer::increaseValue<span class="k2">(</span><span class="k1">void</span><span class="k3">*</span> parm<span class="k2">)</span> <span class="k2">{</span>
    Timer<span class="k3">*</span> t <span class="k3">=</span> <span class="k2">(</span>Timer<span class="k3">*</span><span class="k2">)</span> parm<span class="k2">;</span>
    t-&gt;itsValue<span class="k3">+</span><span class="k3">+</span><span class="k2">;</span>
<span class="k2">}</span>

<span class="k1">void</span> evilFunction<span class="k2">(</span> <span class="k2">)</span>
<span class="k2">{</span>
  NotTimer nt<span class="k2">;</span>
  Timer::increaseValue<span class="k2">(</span><span class="k2">(</span><span class="k1">void</span><span class="k3">*</span><span class="k2">)</span><span class="k3">&amp;</span>nt<span class="k2">)</span><span class="k2">;</span>
<span class="k2">}</span>
</pre></div></div><p>

Tadaa! Runtime error.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Simon Parzer)</author>
		<pubDate>Fri, 01 Dec 2006 14:29:45 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>using void in a C++ program is retarded (in most cases) to begin with, just don&#39;t.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Thomas Fjellstrom)</author>
		<pubDate>Fri, 01 Dec 2006 14:33:49 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>So, it&#39;s bad because the user can craft a method to break it? Then reinterpret_cast&lt;&gt; is bad because the user can skip checking for a NULL (sorry, I mean 0) return, to cause a run-time error.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Kitty Cat)</author>
		<pubDate>Fri, 01 Dec 2006 14:34:08 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Why would you ever <b>ever</b> pass the pointer to some random object to a function?  No.  you just dont.</p><p>You read the function&#39;s documentation and you figure out what the function needs.  If you&#39;re not gonna do that you shouldn&#39;t be programming.  At least not within 100 miles of me.</p><p>[edit]<br />If you&#39;re in the habit of passing pointers to random things to functions, then you&#39;re pretty evil.  I wont put my coding standards around something in case i have to work with an evil coder.</p><p>[edit]<br />On second though, you&#39;re post doesn&#39;t quite make sense to me.  Heres a modified version that works just as well.
</p><div class="quote_container"><div class="title">Modified Version said:</div><div class="quote"><p>
</p><div class="source-code snippet"><div class="inner"><pre><span class="k1">static</span> <span class="k1">void</span> Timer::increaseValue<span class="k2">(</span><span class="k1">void</span><span class="k3">*</span> parm<span class="k2">)</span> <span class="k2">{</span>
    Timer<span class="k3">*</span> t <span class="k3">=</span> <span class="k1">reinterpret_cast</span><span class="k2">(</span>Timer<span class="k3">*</span><span class="k2">)</span> parm<span class="k2">;</span> <span class="c">// static_cast will not compile here</span>
    t-&gt;itsValue<span class="k3">+</span><span class="k3">+</span><span class="k2">;</span>
<span class="k2">}</span>

<span class="k1">void</span> evilFunction<span class="k2">(</span> <span class="k2">)</span>
<span class="k2">{</span>
  NotTimer nt<span class="k2">;</span>
  Timer::increaseValue<span class="k2">(</span><span class="k2">(</span><span class="k1">void</span><span class="k3">*</span><span class="k2">)</span><span class="k3">&amp;</span>nt<span class="k2">)</span><span class="k2">;</span>
<span class="k2">}</span>
</pre></div></div><p>
Tadaa! Runtime error.
</p></div></div><p>

[edit]<br />Made my post less harsh sounding.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (ImLeftFooted)</author>
		<pubDate>Fri, 01 Dec 2006 14:48:46 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Just because it&#39;s possible to do bad things in a language, that doesn&#39;t mean you should. Most of that sort of constructs in C or C++ have their reason to exist, but shouldn&#39;t be used in general, except there&#39;s a very good reason to do so. And mostly, there are several ways to accomplish whatever is desired, so it&#39;s the programmer&#39;s task to choose the better ways whenever possible...
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (tobing)</author>
		<pubDate>Fri, 01 Dec 2006 14:53:16 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>After reading a few chapters of my book I think I have achieved what I wanted to do.</p><p>Anyway, I just wanted to show you how I have done it:</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="c">// Constructor</span></td></tr><tr><td class="number">2</td><td>Timer::Timer<span class="k2">(</span><span class="k1">int</span> frequency<span class="k2">)</span></td></tr><tr><td class="number">3</td><td><span class="k2">{</span></td></tr><tr><td class="number">4</td><td>  itsValue <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">5</td><td>  </td></tr><tr><td class="number">6</td><td>  itsFrequency <span class="k3">=</span> frequency<span class="k2">;</span></td></tr><tr><td class="number">7</td><td>&#160;</td></tr><tr><td class="number">8</td><td>  <span class="k1">void</span> <span class="k2">(</span><span class="k3">*</span>pFunc<span class="k2">)</span><span class="k2">(</span><span class="k1">void</span><span class="k3">*</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">9</td><td>  pFunc <span class="k3">=</span> Timer::increaseValue<span class="k2">;</span></td></tr><tr><td class="number">10</td><td>  Timer <span class="k3">*</span>param <span class="k3">=</span> <span class="k1">this</span><span class="k2">;</span></td></tr><tr><td class="number">11</td><td>&#160;</td></tr><tr><td class="number">12</td><td>  <a href="http://www.allegro.cc/manual/LOCK_VARIABLE" target="_blank"><span class="a">LOCK_VARIABLE</span></a><span class="k2">(</span>itsValue<span class="k2">)</span><span class="k2">;</span> <span class="c">//Used to set the timer - which regulates the game's</span></td></tr><tr><td class="number">13</td><td>  <a href="http://www.allegro.cc/manual/LOCK_FUNCTION" target="_blank"><span class="a">LOCK_FUNCTION</span></a><span class="k2">(</span>pFunc<span class="k2">)</span><span class="k2">;</span><span class="c">//speed.</span></td></tr><tr><td class="number">14</td><td>  <a href="http://www.allegro.cc/manual/install_param_int_ex" target="_blank"><span class="a">install_param_int_ex</span></a><span class="k2">(</span>pFunc, <span class="k1">this</span>, BPS_TO_TIMER<span class="k2">(</span>itsFrequency<span class="k2">)</span><span class="k2">)</span><span class="k2">;</span><span class="c">//Set our BPS</span></td></tr><tr><td class="number">15</td><td><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="k1">void</span> Timer::increaseValue<span class="k2">(</span><span class="k1">void</span><span class="k3">*</span> object<span class="k2">)</span> <span class="k2">{</span></td></tr><tr><td class="number">18</td><td>    Timer<span class="k3">*</span> timer <span class="k3">=</span> <span class="k2">(</span>Timer<span class="k3">*</span><span class="k2">)</span> object<span class="k2">;</span></td></tr><tr><td class="number">19</td><td>    timer-&gt;itsValue<span class="k3">+</span><span class="k3">+</span><span class="k2">;</span></td></tr><tr><td class="number">20</td><td><span class="k2">}</span><a href="http://www.allegro.cc/manual/END_OF_FUNCTION" target="_blank"><span class="a">END_OF_FUNCTION</span></a><span class="k2">(</span>increaseValue<span class="k2">)</span><span class="k2">;</span></td></tr></tbody></table></div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (BackwardsDown)</author>
		<pubDate>Sat, 02 Dec 2006 20:53:23 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
On second though, you&#39;re post doesn&#39;t quite make sense to me. Heres a modified version that works just as well.
</p></div></div><p>

Aww. Of course my &quot;problem demonstration&quot; code doesn&#39;t make much sense. I was just trying to point out that static_cast is NOT the same as normal C-style casting, which is the same as reinterpret_cast which is not as safe as static_cast, which in turn is not the same as normal C-style casting ... (endless loop)</p><p>Anyway, <img src="http://www.allegro.cc/forums/smileys/undecided.gif" alt=":-/" /><br />I suppose when you mess (or have to mess) with void pointers, it doesn&#39;t make much difference anymore, as static_cast only has advantages over reinterpret_cast when dealing with class hierarchies.</p><p>This also means that my first post in this thread didn&#39;t make much sense either.. sorry!
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Simon Parzer)</author>
		<pubDate>Sat, 02 Dec 2006 22:22:21 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I is always good to see different vieuws on a problem:D
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (BackwardsDown)</author>
		<pubDate>Sun, 03 Dec 2006 00:06:20 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
I is always good to see different vieuws on a problem:D
</p></div></div><p>

I whole-heartedly disagree <img src="http://www.allegro.cc/forums/smileys/tongue.gif" alt=":P" />. While it can be good to get some incentives, in some places there just is no room for discussion, especially when working in a team. This of course requires all team members to be able to cut down their ego, or the whole thing collapses. Which is inevitable in either case, with a team of dogmatic members you are screwed anyway. What was my point? Oh yeah:</p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
It is sometimes good to see different views on a problem <img src="http://www.allegro.cc/forums/smileys/cheesy.gif" alt=":D" />
</p></div></div><p>

Fixed.</p><p>Oh, and also, it is almost never good to derail a discussion and be nit-picky. Alas, my apologies for doing so.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Indeterminatus)</author>
		<pubDate>Sun, 03 Dec 2006 04:20:39 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
I whole-heartedly disagree <img src="http://www.allegro.cc/forums/smileys/tongue.gif" alt=":P" />. While it can be good to get some incentives, in some places there just is no room for discussion, especially when working in a team. This of course requires all team members to be able to cut down their ego, or the whole thing collapses.
</p></div></div><p>
Yeah. I experienced this several times. Either the whole thing collapses or one person takes over and does everything alone.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Simon Parzer)</author>
		<pubDate>Sun, 03 Dec 2006 04:29:08 +0000</pubDate>
	</item>
</rss>
