IOT  0.5
I Only Think
ActionFactory.h
Go to the documentation of this file.
00001 // -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-
00002 
00003 /* IOT Copyright (C) 2010 CEG development team
00004  *
00005  * This program is free software; you can redistribute it and/or modify
00006  * it under the terms of the GNU General Public License version 2
00007  * as published by the Free Software Foundation.
00008  *
00009  * This program is distributed in the hope that it will be useful,
00010  * but WITHOUT ANY WARRANTY; without even the implied warranty of
00011  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00012  * GNU General Public License for more details.
00013  *
00014  * You should have received a copy of the GNU General Public License
00015  * along with this program; if not, write to the Free Software
00016  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
00017  *
00018  * Authors: CEG <ceg@ionlythink.com>, http://www.ionlythink.com
00019  */
00020 
00021 
00022 #ifndef ACTIONFACTORY_H
00023 #define ACTIONFACTORY_H
00024 
00025 #include <QMap>
00026 
00027 class QDomElement;
00028 class IAction;
00029 
00034 class ActionFactory
00035 {
00036 public:
00037   typedef IAction * (*ActionInstantiator)(QDomElement const &);
00038 
00039   static IAction *      create(QDomElement const & domElement); // Retourne l'action demande
00040   static void           registerInstantiator(QString const & actionId, ActionInstantiator function); // Permet de referencer une action et son constructeur
00041 
00042 private:
00043   static QMap<QString, ActionInstantiator>      _instanciators; // Reference les ids des actions et leur constructeurs associes
00044 };
00045 
00046 #endif // ACTIONFACTORY_H
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator