2 Copyright (c) 2006 Paolo Capriotti <p.capriotti@gmail.com>
3 (c) 2006 Maurizio Monge <maurizio.monge@kdemail.net>
5 This program is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation; either version 2 of the License, or
8 (at your option) any later version.
13 using namespace HLVariant
;
15 #define DECLARE_FACTORY(VARIANT) \
16 namespace HLVariant { \
18 VariantFactory* createFactory(); \
21 DECLARE_FACTORY(Chess
)
22 DECLARE_FACTORY(Minichess5
)
23 DECLARE_FACTORY(Crazyhouse
)
24 DECLARE_FACTORY(Dummy
)
25 DECLARE_FACTORY(Shogi
)
26 DECLARE_FACTORY(MiniShogi
)
27 DECLARE_FACTORY(ShoShogi
)
28 DECLARE_FACTORY(ToriShogi
)
29 #undef DECLARE_FACTORY
31 Variants::Variants() {
32 addFactory(Chess::createFactory());
33 addFactory(Minichess5::createFactory());
34 addFactory(Crazyhouse::createFactory());
35 addFactory(Dummy::createFactory());
36 addFactory(Shogi::createFactory());
37 addFactory(MiniShogi::createFactory());
38 addFactory(ShoShogi::createFactory());
39 addFactory(ToriShogi::createFactory());
42 Variants
& Variants::instance() {
47 VariantFactory
* Variants::getFactory(const QString
& name
) const {
48 Factories::const_iterator it
= m_factories
.find(name
);
49 if (it
!= m_factories
.end()) {
56 VariantPtr
Variants::get(const QString
& name
) const {
57 VariantFactory
* factory
= getFactory(name
);
58 return factory
? VariantPtr(factory
->createVariant()) : VariantPtr();
61 void Variants::addFactory(VariantFactory
* factory
) {
62 m_factories
[factory
->name()] = factory
;
65 QStringList
Variants::all() const {
67 for (Factories::const_iterator end
= m_factories
.end(), it
= m_factories
.begin(); it
!= end
; ++it
) {
68 if (!it
->second
->hidden())