Author: Dann Corbit
Date: 11:13:07 01/05/06
Go up one level in this thread
On January 05, 2006 at 13:04:29, Mathieu Pagé wrote:
>Hi, I want to push OO to it's limit in order to get cleaner code. Here is what I
>want to do :
>
>
>class CSquare
> {
> private:
> unsigned int m_uiSquareIndex;
> public :
> // the next 3 functions allow CSquare to be used as an unsigned int in
> // arithmetic operations.
> inline CSquare(unsigned int);
> inline CSquare operator=(unsigned int);
> inline operator unsigned int();
>
> // The next 2 functions are why i'd like to use OOP to make the
>manipulation
> // of squares clearer.
> unsigned int GetColumn()
> {
> return m_uiSquareIndex % 8;
> };
>
> unsigned int GetRow()
> {
> return m_uiSquareIndex / 8;
> };
> };
>
>
>This way I can use CSquare like this :
>
>
>CSquare csq(A1)
>csq += 8; // One row higher. csq is now equat to A2.
>csq.GetRow(); // Will return 1 (0 based index)
>csq.GetColumn(); // will return 0
>
>
>
>I think that with basic compiler optimisations like inlining this code will
>bring no overhead in my engine. I already asked some friends about it and they
>seem to think like me, but are not sure.
>
>Since it's CC related and there is some good programmers monitoring this board I
>though I would ask here.
>
>What is your opinion about this?
>
>Mathieu Pagé
There may be some tiny benefit to:
unsigned int GetColumn()
{
return m_uiSquareIndex & 7; // Assumes 2's complement.
}
unsigned int GetRow()
{
return m_uiSquareIndex >> 3; // Assumes m_uiSquareIndex is >= 0
}
But the compiler may actually do those simple optimizations for you anyway.
I don't see any important overhead in your class. Things like virtual functions
and RTTI, structured exception handling, etc. add a little bit.
By far, the algorithms chosen are more important than some little details about
using C++ features.
This page took 0 seconds to execute
Last modified: Thu, 15 Apr 21 08:11:13 -0700
Current Computer Chess Club Forums at Talkchess. This site by Sean Mintz.