30 #ifndef _CEGUIWindowFactoryManager_h_
31 #define _CEGUIWindowFactoryManager_h_
33 #include "CEGUIBase.h"
34 #include "CEGUIString.h"
35 #include "CEGUISingleton.h"
36 #include "CEGUILogger.h"
37 #include "CEGUIIteratorBase.h"
38 #include "CEGUIWindowFactory.h"
43 # pragma warning(push)
44 # pragma warning(disable : 4275)
45 # pragma warning(disable : 4251)
103 const String& getActiveTarget(
void)
const;
112 uint getStackedTargetCount(
void)
const;
117 typedef std::vector<String> TargetTypeStack;
119 TargetTypeStack d_targetStack;
139 Logger::getSingleton().logEvent(
"CEGUI::WindowFactoryManager singleton destroyed");
174 template <
typename T>
175 static void addFactory();
192 void removeFactory(
const String& name);
219 void removeAllFactories(
void);
251 bool isFactoryPresent(
const String& name)
const;
279 void addWindowTypeAlias(
const String& aliasName,
const String& targetType);
299 void removeWindowTypeAlias(
const String& aliasName,
const String& targetType);
329 void addFalagardWindowMapping(
const String& newType,
const String& targetType,
const String& lookName,
const String& renderer);
338 void removeFalagardWindowMapping(
const String& type);
351 bool isFalagardMappedType(
const String& type)
const;
365 const String& getMappedLookForType(
const String& type)
const;
379 const String& getMappedRendererForType(
const String& type)
const;
399 String getDereferencedAliasType(
const String& type)
const;
413 const FalagardWindowMapping& getFalagardMappingForType(
const String& type)
const;
419 typedef std::map<String, WindowFactory*, String::FastLessCompare> WindowFactoryRegistry;
420 typedef std::map<String, AliasTargetStack, String::FastLessCompare> TypeAliasRegistry;
421 typedef std::map<String, FalagardWindowMapping, String::FastLessCompare> FalagardMapRegistry;
423 typedef std::vector<WindowFactory*> OwnedWindowFactoryList;
425 WindowFactoryRegistry d_factoryRegistry;
426 TypeAliasRegistry d_aliasRegistry;
427 FalagardMapRegistry d_falagardRegistry;
429 static OwnedWindowFactoryList d_ownedFactories;
443 WindowFactoryIterator getIterator(
void)
const;
450 TypeAliasIterator getAliasIterator(
void)
const;
457 FalagardMappingIterator getFalagardMappingIterator()
const;
461 template <
typename T>
465 WindowFactory* factory =
new T;
468 if (WindowFactoryManager::getSingletonPtr())
470 Logger::getSingleton().logEvent(
"Created WindowFactory for '" +
471 factory->getTypeName() +
476 WindowFactoryManager::getSingleton().addFactory(factory);
480 Logger::getSingleton().logEvent(
"Deleted WindowFactory for '" +
481 factory->getTypeName() +
489 d_ownedFactories.push_back(factory);
495 #if defined(_MSC_VER)
496 # pragma warning(pop)
499 #endif // end of guard _CEGUIWindowFactoryManager_h_