/usr/include/tulip/TemplateFactory.h is in libtulip-dev 3.1.2-2.3ubuntu3.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 | //-*-c++-*-
/**
Authors: David Auber, Patrick Mary, Morgan Mathiaut
from the LaBRI Visualization Team
Email : auber@tulip-software.org
Last modification : 13/03/2009
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
*/
#ifndef _TEMPLATEFACTORY_H
#define _TEMPLATEFACTORY_H
#include <list>
#include <string>
#include <typeinfo>
#include <set>
#include "tulip/PluginLoader.h"
#include "tulip/WithParameter.h"
#include "tulip/WithDependency.h"
#include "tulip/Iterator.h"
#include "tulip/Plugin.h"
#include "tulip/TlpTools.h"
#include "tulip/PluginContext.h"
namespace tlp {
/** \addtogroup plugins */
/*@{*/
class TemplateFactoryInterface {
public:
static TLP_SCOPE std::map< std::string, TemplateFactoryInterface* > *allFactories;
static TLP_SCOPE PluginLoader *currentLoader;
virtual ~TemplateFactoryInterface(){}
virtual Iterator<std::string>* availablePlugins()=0;
virtual bool pluginExists(const std::string &pluginName)=0;
virtual StructDef getPluginParameters(std::string name)=0;
virtual std::string getPluginRelease(std::string name)=0;
virtual std::list<tlp::Dependency> getPluginDependencies(std::string name)=0;
virtual std::string getPluginsClassName()=0;
virtual void removePlugin(const std::string& name)=0;
static void addFactory(TemplateFactoryInterface *factory, const std::string &name) {
if (!allFactories)
allFactories = new std::map<std::string, TemplateFactoryInterface*>();
//std::cerr << name.c_str() << " factory added" << std::endl;
(*allFactories)[name] = factory;
}
static bool pluginExists(const std::string& factoryName, const std::string& pluginName) {
assert(allFactories->find(factoryName) != allFactories->end());
return (*allFactories)[factoryName]->pluginExists(pluginName);
}
};
template<class ObjectFactory, class ObjectType, class Context> class TemplateFactory: public TemplateFactoryInterface {
public:
TemplateFactory() {
TemplateFactoryInterface::addFactory(this,
tlp::demangleTlpClassName(typeid(ObjectType).name()));
}
//typedef void *(*func)();
typedef std::map< std::string , ObjectFactory * > ObjectCreator;
ObjectCreator objMap;
std::map<std::string,StructDef> objParam;
std::set<std::string> objNames;
std::map<std::string, std::list<tlp::Dependency> > objDeps;
std::map<std::string, std::string> objRels;
Iterator<std::string>* availablePlugins();
bool pluginExists(const std::string& pluginName);
ObjectType *getPluginObject(const std::string& name, Context p);
StructDef getPluginParameters(std::string name);
std::string getPluginRelease(std::string name);
std::list<tlp::Dependency> getPluginDependencies(std::string name);
std::string getPluginsClassName();
void registerPlugin(ObjectFactory* objectFactory);
void removePlugin(const std::string &name);
};
template <class T> class TLP_SCOPE PropertyFactory:public Plugin {
public:
PropertyFactory(){}
virtual ~PropertyFactory() {}
virtual T* createPluginObject(const PropertyContext &context)=0;
virtual std::string getMajor() const {
return tlp::getMajor(getRelease());
}
virtual std::string getMinor() const {
return tlp::getMinor(getRelease());
}
virtual std::string getTulipMajor() const {
return tlp::getMajor(getTulipRelease());
}
virtual std::string getTulipMinor() const {
return tlp::getMinor(getTulipRelease());
}
};
/*@}*/
}
#include "./cxx/TemplateFactory.cxx"
#endif
|