Add EngineFactory class for creating engines.
commit32ff7f01491afd94d28f8f9bc8d1c76e754146e1
authorArto Jonsson <ajonsson@kapsi.fi>
Fri, 13 Mar 2009 09:45:38 +0000 (13 11:45 +0200)
committerArto Jonsson <ajonsson@kapsi.fi>
Fri, 13 Mar 2009 09:45:38 +0000 (13 11:45 +0200)
tree07427077772c278afad5fe2c765f384ddab0b27c
parentbeb70eebf29992eade868a581375f6252483557a
Add EngineFactory class for creating engines.

The EngineFactory class has two purposes:

    1. Reverse the dependencies so that application code does not depend
       on any specific engine code such as XboardEngine or UciEngine
       classes. Instead the application code depends only on EngineFactory.

    2. Remove application code like:

           ChessEngine* engine = 0;

           if (protocol == ChessEngine::Xboard)
           {
               return new XboardEngine(...)
           }
           else if (protocol == ChessEngine::Uci)
           {
               return new UciEngine(...)
           }
           else if ...

        Becomes:

           ChessEngine* engine = EngineFactory::createEngine(protocol, ...);
projects/lib/src/enginefactory.cpp [new file with mode: 0644]
projects/lib/src/enginefactory.h [new file with mode: 0644]
projects/lib/src/src.pri