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 >:
Collaboration diagram for CEGUI::NamedXMLResourceManager< T, U >:

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.

References CEGUI::NamedXMLResourceManager< T, U >::doExistingObjectAction().

Referenced by CEGUI::NamedXMLResourceManager< T, U >::createAll().

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.

References CEGUI::NamedXMLResourceManager< T, U >::d_objects, and CEGUI::NamedXMLResourceManager< T, U >::destroyObject().

Referenced by CEGUI::NamedXMLResourceManager< T, U >::doExistingObjectAction().

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!)

References CEGUI::NamedXMLResourceManager< T, U >::d_objects, and CEGUI::NamedXMLResourceManager< T, U >::destroyObject().

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.

References CEGUI::NamedXMLResourceManager< T, U >::d_objects, and CEGUI::NamedXMLResourceManager< T, U >::d_resourceType.