Crazy Eddie's GUI System  0.8.2
 All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Friends Pages
CEGUI::NamedXMLResourceManager< T, U > Class Template Reference

Templatised manager class that loads and manages named XML based resources. More...

+ Inheritance diagram for CEGUI::NamedXMLResourceManager< T, U >:
+ Collaboration diagram for CEGUI::NamedXMLResourceManager< T, U >:

Public Member Functions

 NamedXMLResourceManager (const String &resource_type)
 Constructor. More...
 
virtual ~NamedXMLResourceManager ()
 Destructor.
 
T & createFromContainer (const RawDataContainer &source, XMLResourceExistsAction action=XREA_RETURN)
 Creates a new T object from a RawDataContainer and adds it to the collection. More...
 
T & createFromFile (const String &xml_filename, const String &resource_group="", XMLResourceExistsAction action=XREA_RETURN)
 Creates a new T object from an XML file and adds it to the collection. More...
 
T & createFromString (const String &source, XMLResourceExistsAction action=XREA_RETURN)
 Creates a new T object from a string and adds it to the collection. More...
 
void destroy (const String &object_name)
 Destroy the object named object_name, or do nothing if such an object does not exist in the collection. More...
 
void destroy (const T &object)
 Destroy the object object, or do nothing if such an object does not exist in the collection. More...
 
void destroyAll ()
 Destroy all objects.
 
T & get (const String &object_name) const
 Return a reference to the object named object_name. More...
 
bool isDefined (const String &object_name) const
 Return whether an object named object_name exists.
 
void createAll (const String &pattern, const String &resource_group)
 Create a new T object from files with names matching pattern in resource_group.
 

Protected Types

typedef std::map< String, T
*, StringFastLessCompare
CEGUI_MAP_ALLOC(String, T *)> 
ObjectRegistry
 type of collection used to store and manage objects
 

Protected Member Functions

void destroyObject (typename ObjectRegistry::iterator ob)
 implementation of object destruction.
 
T & doExistingObjectAction (const String object_name, T *object, const XMLResourceExistsAction action)
 function to enforce XMLResourceExistsAction policy.
 
virtual void doPostObjectAdditionAction (T &object)
 Function called each time a new object is added to the collection.
 

Protected Attributes

const String d_resourceType
 String holding the text for the resource type managed.
 
ObjectRegistry d_objects
 the collection of objects
 

Additional Inherited Members

- Public Types inherited from CEGUI::EventSet
typedef ConstMapIterator
< EventMap > 
EventIterator
 
- Static Public Attributes inherited from CEGUI::ResourceEventSet
static const String EventNamespace
 Namespace name for all resource managers.
 
static const String EventResourceCreated
 
static const String EventResourceDestroyed
 
static const String EventResourceReplaced
 

Detailed Description

template<typename T, typename U>
class CEGUI::NamedXMLResourceManager< T, U >

Templatised manager class that loads and manages named XML based resources.

Template Parameters
TType for the object that is loaded and managed by the class.
UType for the loader used to create object instances of T from XML files. This class does all of the creation / loading work and can be of any form or type desired, with the following requirements:
  • a constructor signature compatible with the following call: U(const String& xml_filename, const String& resource_group);
  • a function getObjectName that returns the name of the object as specified in the XML file given in the constructor to U.
  • a function getObject that returns a reference to the object created as a result of processing the XML file given in the constructor to U.
Note
Once NamedXMLResourceManager calls getObject on the instance of U, it assumes that it now owns the object returned, if no call to getObject is made, no such transfer of ownership is assumed.

Constructor & Destructor Documentation

template<typename T , typename U >
CEGUI::NamedXMLResourceManager< T, U >::NamedXMLResourceManager ( const String resource_type)

Constructor.

Parameters
resource_typeString object holding some textual indication of the type of objects managed by the collection. This is used to give more descriptive log and exception messages.

Member Function Documentation

template<typename T , typename U >
T & CEGUI::NamedXMLResourceManager< T, U >::createFromContainer ( const RawDataContainer source,
XMLResourceExistsAction  action = XREA_RETURN 
)

Creates a new T object from a RawDataContainer and adds it to the collection.

Use an instance of the xml resource loading class \a U to process the
XML source thereby creating an instance of class \a T and add it to the collection under
the name specified in the XML file.
Parameters
sourceRawDataContainer holding the XML source to be used when creating the new object instance.
actionOne of the XMLResourceExistsAction enumerated values indicating what action should be taken when an object with the specified name already exists within the collection.
template<typename T , typename U >
T & CEGUI::NamedXMLResourceManager< T, U >::createFromFile ( const String xml_filename,
const String resource_group = "",
XMLResourceExistsAction  action = XREA_RETURN 
)

Creates a new T object from an XML file and adds it to the collection.

Use an instance of the xml resource loading class \a U to process the
XML file \a xml_filename from resource group \a resource_group thereby
creating an instance of class \a T and add it to the collection under
the name specified in the XML file.
Parameters
xml_filenameString holding the filename of the XML file to be used when creating the new object instance.
resource_groupString holding the name of the resource group identifier to be used when loading the XML file described by xml_filename.
actionOne of the XMLResourceExistsAction enumerated values indicating what action should be taken when an object with the specified name already exists within the collection.
template<typename T , typename U >
T & CEGUI::NamedXMLResourceManager< T, U >::createFromString ( const String source,
XMLResourceExistsAction  action = XREA_RETURN 
)

Creates a new T object from a string and adds it to the collection.

Use an instance of the xml resource loading class \a U to process the
XML source thereby creating an instance of class \a T and add it to the collection under
the name specified in the XML file.
Parameters
sourceString holding the XML source to be used when creating the new object instance.
actionOne of the XMLResourceExistsAction enumerated values indicating what action should be taken when an object with the specified name already exists within the collection.
template<typename T , typename U >
void CEGUI::NamedXMLResourceManager< T, U >::destroy ( const String object_name)

Destroy the object named object_name, or do nothing if such an object does not exist in the collection.

Parameters
object_nameString holding the name of the object to be destroyed.
template<typename T, typename U >
void CEGUI::NamedXMLResourceManager< T, U >::destroy ( const T &  object)

Destroy the object object, or do nothing if such an object does not exist in the collection.

Parameters
objectThe object to be destroyed (beware of keeping references to this object once it's been destroyed!)
template<typename T , typename U >
T & CEGUI::NamedXMLResourceManager< T, U >::get ( const String object_name) const

Return a reference to the object named object_name.

Parameters
object_nameString holding the name of the object to be returned.
Exceptions
UnknownObjectExceptionthrown if no object named object_name exists within the collection.