00001 /*************************************************************************** 00002 ** 00003 ** This file is part of SciFigs. 00004 ** 00005 ** This library is free software; you can redistribute it and/or 00006 ** modify it under the terms of the GNU Lesser General Public 00007 ** License as published by the Free Software Foundation; either 00008 ** version 2.1 of the License, or (at your option) any later version. 00009 ** 00010 ** This file is distributed in the hope that it will be useful, but WITHOUT 00011 ** ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 00012 ** FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public 00013 ** License for more details. 00014 ** 00015 ** You should have received a copy of the GNU Lesser General Public 00016 ** License along with this library; if not, write to the Free Software 00017 ** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 00018 ** 00019 ** See http://www.geopsy.org for more information. 00020 ** 00021 ** Created : 2008-11-03 00022 ** Authors : 00023 ** Marc Wathelet 00024 ** Marc Wathelet (LGIT, Grenoble, France) 00025 ** 00026 ***************************************************************************/ 00027 00028 #ifndef GRAPHCONTENTLAYERFACTORY_H 00029 #define GRAPHCONTENTLAYERFACTORY_H 00030 00031 #include <QGpCoreTools.h> 00032 00033 #include "SciFigsDLLExport.h" 00034 #include "GraphContentLayer.h" 00035 00036 namespace SciFigs { 00037 00038 #define REGISTER_GRAPHCONTENTLAYER(_className_, _tagName_) \ 00039 XMLREGISTER_HEAD(GraphContentLayerFactory, XMLClassCreator, _className_, _tagName_) \ 00040 XMLREGISTER_TAIL(_className_) 00041 00042 #define SYNONYM_GRAPHCONTENTLAYER(_synName_, _tagName_) \ 00043 XMLSYNONYM(GraphContentLayerFactory, _synName_, _tagName_) 00044 00045 class SCIFIGS_EXPORT GraphContentLayerFactory : public XMLClassFactory 00046 { 00047 public: 00048 inline GraphContentLayer * create(int id) const; 00049 inline GraphContentLayer * create(const QString& tag) const; 00050 00051 static void init(); 00052 static GraphContentLayerFactory * instance() {init(); return _self;} 00053 private: 00054 static GraphContentLayerFactory * _self; 00055 }; 00056 00057 inline GraphContentLayer * GraphContentLayerFactory::create(int id) const 00058 { 00059 return static_cast<GraphContentLayer *>(XMLClassFactory::create(id)); 00060 } 00061 00062 inline GraphContentLayer * GraphContentLayerFactory::create(const QString& tag) const 00063 { 00064 return static_cast<GraphContentLayer *>(XMLClassFactory::create(tag)); 00065 } 00066 00067 } // namespace SciFigs 00068 00069 #endif // GRAPHCONTENTLAYERFACTORY_H