History: TinyXMLResource h
Source of version: 2 (current)
Copy to clipboard
{CODE(wrap="1", colors="c++")}// TinyXMLResourceManager.cpp class for Ogre
// Author: xadhoom
// License: Do whatever you want with it.
#ifndef __TinyXMLResource_h__
#define __TinyXMLResource_h__
#include "Ogre.h"
// Forward declaration
class TinyXMLPtr;
class TinyXMLResource : public Ogre::Resource
{
public:
/** Constructor - use resource manager's create method rather than this.
*/
TinyXMLResource(Ogre::ResourceManager* creator, const Ogre::String& name, Ogre::ResourceHandle handle,
const Ogre::String& group, bool isManual = false, Ogre::ManualResourceLoader* loader = 0);
~TinyXMLResource();
/** Assignment operator to allow easy copying between TinyXMLResources.
*/
TinyXMLResource& operator=( const TinyXMLResource& rhs );
/** Creates a new copy of this TinyXMLResource with the same settings but a new name.
@param newName The name for the cloned TinyXMLResource
@param changeGroup If true, the resource group of the clone is changed
@param newGroup Only required if changeGroup is true; the new group to assign
*/
TinyXMLPtr clone(const Ogre::String& newName, bool changeGroup = false,
const Ogre::String& newGroup = Ogre::StringUtil::BLANK);
/** Returns the actual TinyXML document.
@remarks
The return value is upcasted to an TiXmlNode to have a consistent
interface without the file input/output functionality of TinyXML.
*/
TiXmlNode* getXMLData() { return &mTinyXMLDoc; }
/** If, an error occurs during parsing, Error() will return true.
*/
bool getError() const { return mTinyXMLDoc.Error(); }
/** Returns a textual (english) description of the error if one occured.
*/
const char * getErrorDesc() const { return mTinyXMLDoc.ErrorDesc(); }
/** Generally, you probably want the error string ( ErrorDesc() ). But if you
prefer the ErrorId, this function will fetch it.
*/
const int getErrorId() const { return mTinyXMLDoc.ErrorId(); }
protected:
/** Overridden from Resource.
*/
void prepareImpl();
/** Overridden from Resource.
*/
void unprepareImpl();
/** Overridden from Resource.
*/
void loadImpl();
/** Unloads the TinyXMLResource, frees resources etc.
@see
Resource
*/
void unloadImpl();
size_t calculateSize() const { return 0; } // TODO
Ogre::DataStreamPtr mFreshFromDisk;
TiXmlDocument mTinyXMLDoc;
};
/** Specialisation of Ogre::SharedPtr to allow Ogre::SharedPtr to be assigned to TinyXMLPtr
@note Has to be a subclass since we need operator=.
We could templatise this instead of repeating per Resource subclass,
except to do so requires a form VC6 does not support i.e.
ResourceSubclassPtr<T> : public Ogre::SharedPtr<T>
*/
class TinyXMLPtr : public Ogre::SharedPtr<TinyXMLResource>
{
public:
TinyXMLPtr() : Ogre::SharedPtr<TinyXMLResource>() {}
explicit TinyXMLPtr(TinyXMLResource* rep) : Ogre::SharedPtr<TinyXMLResource>(rep) {}
TinyXMLPtr(const TinyXMLPtr& r) : Ogre::SharedPtr<TinyXMLResource>(r) {}
TinyXMLPtr(const Ogre::ResourcePtr& r);
/// Operator used to convert a ResourcePtr to a TinyXMLPtr
TinyXMLPtr& operator=(const Ogre::ResourcePtr& r);
};
#endif // __TinyXMLPtr_h__{CODE}