mirror of
https://github.com/glest/glest-source.git
synced 2025-08-10 18:34:05 +02:00
Fixed the god-awful indentation
This commit is contained in:
@@ -23,67 +23,72 @@ using std::string;
|
||||
using std::pair;
|
||||
using std::runtime_error;
|
||||
|
||||
namespace Shared{ namespace Util{
|
||||
namespace Shared {
|
||||
namespace Util {
|
||||
|
||||
// =====================================================
|
||||
// class SingleFactoryBase
|
||||
// =====================================================
|
||||
// =====================================================
|
||||
// class SingleFactoryBase
|
||||
// =====================================================
|
||||
|
||||
class SingleFactoryBase{
|
||||
public:
|
||||
virtual ~SingleFactoryBase(){}
|
||||
virtual void *newInstance()= 0;
|
||||
};
|
||||
class SingleFactoryBase {
|
||||
public:
|
||||
virtual ~SingleFactoryBase() {
|
||||
}
|
||||
virtual void *newInstance() = 0;
|
||||
};
|
||||
|
||||
// =====================================================
|
||||
// class SingleFactory
|
||||
// =====================================================
|
||||
// =====================================================
|
||||
// class SingleFactory
|
||||
// =====================================================
|
||||
|
||||
template<typename T>
|
||||
class SingleFactory: public SingleFactoryBase{
|
||||
public:
|
||||
virtual void *newInstance() {return new T();}
|
||||
};
|
||||
template<typename T>
|
||||
class SingleFactory : public SingleFactoryBase {
|
||||
public:
|
||||
virtual void *newInstance() {
|
||||
return new T();
|
||||
}
|
||||
};
|
||||
|
||||
// =====================================================
|
||||
// class MultiFactory
|
||||
// =====================================================
|
||||
// =====================================================
|
||||
// class MultiFactory
|
||||
// =====================================================
|
||||
|
||||
template<typename T>
|
||||
class MultiFactory{
|
||||
private:
|
||||
typedef map<string, SingleFactoryBase*> Factories;
|
||||
typedef pair<string, SingleFactoryBase*> FactoryPair;
|
||||
template<typename T>
|
||||
class MultiFactory {
|
||||
private:
|
||||
typedef map<string, SingleFactoryBase*> Factories;
|
||||
typedef pair<string, SingleFactoryBase*> FactoryPair;
|
||||
|
||||
private:
|
||||
Factories factories;
|
||||
private:
|
||||
Factories factories;
|
||||
|
||||
public:
|
||||
virtual ~MultiFactory() {
|
||||
for (Factories::iterator it = factories.begin(); it != factories.end(); ++it) {
|
||||
delete it->second;
|
||||
}
|
||||
factories.clear();
|
||||
}
|
||||
|
||||
template<typename R>
|
||||
void registerClass(string classId) {
|
||||
factories.insert(FactoryPair(classId, new SingleFactory<R>()));
|
||||
}
|
||||
|
||||
T *newInstance(string classId) {
|
||||
Factories::iterator it = factories.find(classId);
|
||||
if (it == factories.end()) {
|
||||
throw megaglest_runtime_error("Unknown class identifier: " + classId);
|
||||
}
|
||||
return static_cast<T*>(it->second->newInstance());
|
||||
}
|
||||
|
||||
bool isClassId(string classId) {
|
||||
return factories.find(classId) != factories.end();
|
||||
}
|
||||
};
|
||||
|
||||
public:
|
||||
virtual ~MultiFactory(){
|
||||
for(Factories::iterator it= factories.begin(); it!=factories.end(); ++it){
|
||||
delete it->second;
|
||||
}
|
||||
factories.clear();
|
||||
}
|
||||
|
||||
template<typename R>
|
||||
void registerClass(string classId){
|
||||
factories.insert(FactoryPair(classId, new SingleFactory<R>()));
|
||||
}
|
||||
|
||||
T *newInstance(string classId){
|
||||
Factories::iterator it= factories.find(classId);
|
||||
if(it == factories.end()){
|
||||
throw megaglest_runtime_error("Unknown class identifier: " + classId);
|
||||
}
|
||||
return static_cast<T*>(it->second->newInstance());
|
||||
}
|
||||
|
||||
bool isClassId(string classId){
|
||||
return factories.find(classId)!=factories.end();
|
||||
}
|
||||
};
|
||||
|
||||
}}//end namespace
|
||||
}//end namespace
|
||||
|
||||
#endif
|
||||
|
Reference in New Issue
Block a user