Torque3D/Engine/source/console/SimXMLDocument.h
Jeff Hutchinson 717c7acca9 Merge remote-tracking branch 'devhead/Preview4_0' into tsneo
# Conflicts:
#	Templates/BaseGame/game/data/ui/guis/loadingGui.gui
#	Templates/BaseGame/game/data/ui/guis/mainMenu.gui
#	Templates/BaseGame/game/tools/MainEditor/guis/MainEditorWindow.gui
#	Templates/BaseGame/game/tools/assetBrowser/guis/assetPreviewButtonsTemplate.gui
#	Templates/BaseGame/game/tools/forestEditor/brushes.tscript
2021-08-13 20:14:39 -04:00

150 lines
5.5 KiB
C++

//-----------------------------------------------------------------------------
// 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/////////////////////////////////////////////////////////////////////////