Crazy Eddie's GUI System  0.8.7
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.
 
- Public Member Functions inherited from CEGUI::EventSet
 EventSet ()
 Constructor for EventSet objects.
 
virtual ~EventSet (void)
 Destructor for EventSet objects.
 
void addEvent (const String &name)
 Creates a new Event object with the given name and adds it to the EventSet. More...
 
void addEvent (Event &event)
 Adds the given Event object to the EventSet. Ownership of the object passes to EventSet and it will be deleted when it is removed from the EventSet - whether explicitly via removeEvent or when the EventSet is destroyed. More...
 
void removeEvent (const String &name)
 Removes the Event with the given name. All connections to the event are disconnected, and the underlying Event object is destroyed. More...
 
void removeEvent (Event &event)
 Removes the given event from the EventSet. All connections to the event are disconnected, and the event object is destroyed. More...
 
void removeAllEvents (void)
 Remove all Event objects from the EventSet. Add connections will be disconnected, and all Event objects destroyed.
 
bool isEventPresent (const String &name)
 Checks to see if an Event with the given name is present in this EventSet. More...
 
virtual Event::Connection subscribeEvent (const String &name, Event::Subscriber subscriber)
 Subscribes a handler to the named Event. If the named Event is not yet present in the EventSet, it is created and added. More...
 
virtual Event::Connection subscribeEvent (const String &name, Event::Group group, Event::Subscriber subscriber)
 Subscribes a handler to the specified group of the named Event. If the named Event is not yet present in the EventSet, it is created and added. More...
 
template<typename Arg1 , typename Arg2 >
Event::Connection subscribeEvent (const String &name, Arg1 arg1, Arg2 arg2)
 Subscribes a handler to the named Event. If the named Event is not yet present in the EventSet, it is created and added. More...
 
template<typename Arg1 , typename Arg2 >
Event::Connection subscribeEvent (const String &name, Event::Group group, Arg1 arg1, Arg2 arg2)
 Subscribes a handler to the named Event. If the named Event is not yet present in the EventSet, it is created and added. More...
 
virtual Event::Connection subscribeScriptedEvent (const String &name, const String &subscriber_name)
 Subscribes the named Event to a scripted funtion. More...
 
virtual Event::Connection subscribeScriptedEvent (const String &name, Event::Group group, const String &subscriber_name)
 Subscribes the specified group of the named Event to a scripted funtion. More...
 
virtual void fireEvent (const String &name, EventArgs &args, const String &eventNamespace="")
 Fires the named event passing the given EventArgs object. More...
 
bool isMuted (void) const
 Return whether the EventSet is muted or not. More...
 
void setMutedState (bool setting)
 Set the mute state for this EventSet. More...
 
EventgetEventObject (const String &name, bool autoAdd=false)
 Return a pointer to the Event object with the given name, optionally adding such an Event object to the EventSet if it does not already exist. More...
 
EventIterator getEventIterator (void) const
 Return a EventSet::EventIterator object to iterate over the events currently added to the EventSet.
 

Protected Types

typedef std::map< String, T *, StringFastLessCompare CEGUI_MAP_ALLOC(String, T *)> ObjectRegistry
 type of collection used to store and manage objects
 
- Protected Types inherited from CEGUI::EventSet
typedef std::map< String, Event *, StringFastLessCompare CEGUI_MAP_ALLOC(String, Event *)> EventMap
 

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 Member Functions inherited from CEGUI::EventSet
void fireEvent_impl (const String &name, EventArgs &args)
 Implementation event firing member.
 
ScriptModulegetScriptModule () const
 Helper to return the script module pointer or throw.
 
 EventSet (EventSet &)
 
 EventSet (const EventSet &)
 
EventSetoperator= (EventSet &)
 
EventSetoperator= (const EventSet &)
 

Protected Attributes

const String d_resourceType
 String holding the text for the resource type managed.
 
ObjectRegistry d_objects
 the collection of objects
 
- Protected Attributes inherited from CEGUI::EventSet
EventMap d_events
 
bool d_muted
 true if events for this EventSet have been muted.
 

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 U to process the XML source thereby creating an instance of class 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 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_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 U to process the XML source thereby creating an instance of class 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.