Crazy Eddies GUI System: CEGUI::NamedXMLResourceManager< T, U > Class Template Reference

Crazy Eddies GUI System 0.7.6

- Main Page
- Related Pages
- Namespaces
- Classes
- Files

- Class List
- Class Index
- Class Hierarchy
- Class Members

Public Member Functions | Protected Types | Protected Member Functions | Protected Attributes
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 >:
[legend]
Collaboration diagram for CEGUI::NamedXMLResourceManager< T, U >:
[legend]

List of all members.

## Public Member Functions
| NamedXMLResourceManager (const String &resource_type)
| Constructor.
virtual | ~NamedXMLResourceManager ()
| Destructor.
T & | create (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.
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.
void | destroy (const T &object)
| Destroy the object object, or do nothing if such an object does not exist in the collection.
void | destroyAll ()
| Destroy all objects.
T & | get (const String &object_name) const
| Return a reference to the object named object_name.
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 *, String::FastLessCompare > | 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

## 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:

  T | Type for the object that is loaded and managed by the class.
  U | Type 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_type | String 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 >::create | ( | 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 U to process the XML file xml_filename from resource group resource_group thereby creating an instance of class T and add it to the collection under the name specified in the XML file.

Parameters:

  xml_filename | String holding the filename of the XML file to be used when creating the new object instance.
  resource_group | String holding the name of the resource group identifier to be used when loading the XML file described by xml_filename.
  action | One 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_name | String 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:

  object | The 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_name | String holding the name of the object to be returned.

Exceptions:

  UnknownObjectException | thrown if no object named object_name exists within the collection.