123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149 |
- //-----------------------------------------------------------------------------
- // Copyright (c) 2012 GarageGames, LLC
- //
- // Permission is hereby granted, free of charge, to any person obtaining a copy
- // of this software and associated documentation files (the "Software"), to
- // deal in the Software without restriction, including without limitation the
- // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
- // sell copies of the Software, and to permit persons to whom the Software is
- // furnished to do so, subject to the following conditions:
- //
- // The above copyright notice and this permission notice shall be included in
- // all copies or substantial portions of the Software.
- //
- // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
- // IN THE SOFTWARE.
- //-----------------------------------------------------------------------------
- //-----------------------------------------------------------------------------
- // Console implementation of STL map.
- //-----------------------------------------------------------------------------
- #ifndef _XMLDOC_H_
- #define _XMLDOC_H_
- #ifndef _SIMBASE_H_
- #include "console/simBase.h"
- #endif
- #ifndef _TVECTOR_H_
- #include "core/util/tVector.h"
- #endif // _TVECTOR_H_
- #ifndef TINYXML2_INCLUDED
- #include <tinyxml2.h>
- #endif // TINYXML2_INCLUDED
- #include "persistence/taml/fsTinyXml.h"
- class SimXMLDocument: public SimObject
- {
- // This typedef is required for tie ins with the script language.
- // --------------------------------------------------------------------------
- protected:
- typedef SimObject Parent;
- // --------------------------------------------------------------------------
- public:
- SimXMLDocument();
- ~SimXMLDocument();
- // These are overloaded functions from SimObject that we handle for
- // tie in to the script language. The .cc file has more in depth
- // comments on these.
- //-----------------------------------------------------------------------
- bool processArguments(S32 argc, ConsoleValue *argv);
- bool onAdd();
- void onRemove();
- static void initPersistFields();
-
- // Set this to default state at construction.
- void reset(void);
-
- // Read / write / parse XML.
- bool loadFile(const char* rFileName);
- bool saveFile(const char* rFileName);
- S32 parse(const char* rText);
- bool saveToString(String& str);
-
- // Clear XML document.
- void clear(void);
-
- // Get error description if it exists.
- const char* getErrorDesc(void) const;
- // Clear previously set error.
- void clearError(void);
- // Push first/last child element onto element stack.
- bool pushFirstChildElement(const char* rName);
- // Convert top stack element into sibling with given name.
- bool nextSiblingElement(const char* rName);
- // push child element at index onto stack.
- bool pushChildElement(S32 index);
- // Get element value
- const char* elementValue();
-
- // Pop last element off of stack.
- void popElement(void);
- // Get attribute from top element on element stack.
- const char* attribute(const char* rAttribute);
- // Does the attribute exist in the current element
- bool attributeExists(const char* rAttribute);
- // Obtain the name of the current element's first or last attribute
- const char* firstAttribute();
- const char* lastAttribute();
- // Move through the current element's attributes to obtain their names
- const char* nextAttribute();
- const char* prevAttribute();
- // Set attribute of top element on element stack.
- void setAttribute(const char* rAttribute, const char* rVal);
- // Set attributes of a simObject on top element of the stack.
- void setObjectAttributes(const char* objectID);
-
- // Remove attribute with given name from top element on stack.
- void removeAttribute(const char* rAttribute);
-
- // Create a new element and push it onto stack as a new level.
- void pushNewElement(const char* rName);
- // Create a new element and push it onto stack on current level.
- void addNewElement(const char* rName);
- // Write XML declaration to current level.
- void addHeader(void);
- // Write a XML comment to the current level.
- void addComment(const char* comment);
- // Read a comment from the current level at the specified index.
- const char* readComment( S32 index );
- // Write text to the current level.
- void addText(const char* text);
- // Retrieve text from the current level.
- const char* getText();
- // Remove Text
- void removeText();
- // Write data to the current level.
- void addData(const char* text);
- // Retrieve data from the current level.
- const char* getData();
-
- private:
- // Document.
- VfsXMLDocument* m_qDocument;
- // Stack of nodes.
- Vector<tinyxml2::XMLNode*> m_paNode;
- // The current attribute
- const tinyxml2::XMLAttribute* m_CurrentAttribute;
- public:
- DECLARE_CONOBJECT(SimXMLDocument);
- };
- #endif // _XMLDOC_H_
- ////EOF/////////////////////////////////////////////////////////////////////////
|