factory.h
Go to the documentation of this file.
00001 // g2o - General Graph Optimization
00002 // Copyright (C) 2011 R. Kuemmerle, G. Grisetti, W. Burgard
00003 // 
00004 // g2o is free software: you can redistribute it and/or modify
00005 // it under the terms of the GNU Lesser General Public License as published
00006 // by the Free Software Foundation, either version 3 of the License, or
00007 // (at your option) any later version.
00008 // 
00009 // g2o 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 Lesser General Public License for more details.
00013 // 
00014 // You should have received a copy of the GNU Lesser General Public License
00015 // along with this program.  If not, see <http://www.gnu.org/licenses/>.
00016 
00017 #ifndef FACTORY_H
00018 #define FACTORY_H
00019 
00020 #include "hyper_graph.h"
00021 #include <string>
00022 #include <map>
00023 
00024 namespace g2o {
00025 
00026   class AbstractHyperGraphElementCreator;
00027   
00031   class Factory
00032   {
00033     public:
00034 
00036       static Factory* instance();
00037 
00039       static void destroy();
00040 
00044       void registerType(const std::string& tag, AbstractHyperGraphElementCreator* c);
00045 
00049       HyperGraph::HyperGraphElement* construct(const std::string& tag);
00050 
00054       bool knowsTag(const std::string& tag);
00055 
00057       const std::string& tag(HyperGraph::HyperGraphElement* v);
00058 
00062       void fillKnownTypes(std::vector<std::string>& types);
00063 
00067       void printRegisteredTypes(std::ostream& os, bool comment = false);
00068 
00069     protected:
00070       typedef std::map<std::string, AbstractHyperGraphElementCreator*>      CreatorMap;
00071       typedef std::map<std::string, std::string>                            TagLookup;
00072       Factory();
00073       ~Factory();
00074 
00075       CreatorMap creator;     
00076       TagLookup tagLookup;    
00077 
00078     private:
00079       static Factory* factoryInstance;
00080   };
00081 
00082 }
00083 
00084 #endif


re_vision
Author(s): Dorian Galvez-Lopez
autogenerated on Sun Jan 5 2014 11:31:08