13#ifndef ML_XMLTREE_NODE_H
14#define ML_XMLTREE_NODE_H
31 class XercesDOMParser;
70 static const char* _stdErrorMsg[];
138 void addChild (
unsigned long val,
const char* tagName)
override;
139 void addChild (
long val,
const char* tagName)
override;
142 void addChild (
long double val,
const char* tagName)
override;
155 void addChild(
const std::string& str,
const char* tagName)
override;
156 void addChild (
const void*
const ptr,
size_t noBytes,
const char* tagName)
override;
166 void addChild (
const Base*
const obj,
const char* tagName,
bool generic =
true)
override;
192 bool hasChild (
const char* tagName =
nullptr)
override;
195 void readChild (
unsigned long& val,
const char* tagName =
nullptr)
override;
196 void readChild (
long& val,
const char* tagName =
nullptr)
override;
199 void readChild (
long double& val,
const char* tagName =
nullptr)
override;
211 void readChild(
void*& ptr,
unsigned long& noBytes,
const char* tagName =
nullptr)
override;
216 void readChild(std::string& val,
const char* tagName =
nullptr)
override;
243 void setVersion(
const char* className,
int version)
override;
304 using TreeNode::readChild;
307 void _initFromParser(XercesDOMParser& parser);
313 DOMNode* _lastNodeRead;
Defines library specific stuff, mostly for system independence.
TreeNodeException(int errorCode=0, const char *msg=nullptr)
ConstructionMode
TreeNode construction modes.
@ CM_writerRoot
Construct as root node for writing.
virtual void addChild(bool val, const char *name) ADD_ULONG_CHILD
Factory method for adding a child encapsulating a variable of type bool.
XMLTreeNodeException(int errorCode=0, const char *msg=nullptr)
Constructor.
const char * getMessage() const override
Returns an error message containing error code and message (if present).
void readFromString(const std::string &str) override
Reads the subtree represented by this node from a string.
void readChild(SubImageBox &val, const char *tagName=nullptr) override
void readChild(Matrix4 &val, const char *tagName=nullptr) override
void deleteMemory(void *ptr) override
frees memory obtained with readChild(void*& ...)
static void terminateXMLSystem()
void setVersion(const char *className, int version) override
Set version for current node. className is currently not used.
void addChild(const Matrix4 &mat, const char *tagName) override
void readChild(Base *&val, const char *tagName=nullptr) override
void addChild(const void *const ptr, size_t noBytes, const char *tagName) override
void readChild(Vector2 &val, const char *tagName=nullptr) override
void writeToString(std::string &str) override
Generates a string representation of the subtree represented by this node to a file.
static void initXMLSystem()
void addChild(const std::string &str, const char *tagName) override
void addChild(const SubImageBox &box, const char *tagName) override
void readChild(long double &val, const char *tagName=nullptr) override
XMLTreeNode(TreeNode::ConstructionMode mode=TreeNode::CM_writerRoot)
Constructor.
static char * _getTextNodeString(DOMElement *parentNode)
Returns the string contained by the TextNode child of parentNode.
void addChild(const Vector3 &vec, const char *tagName) override
void addChild(const Vector6 &vec, const char *tagName) override
void readChild(ImageVector &val, const char *tagName=nullptr) override
void addChild(unsigned long val, const char *tagName) override
Factory method for adding a child encapsulating a variable of type long.
XMLTreeNode * _addTreeNodeChild(DOMElement *child)
Adds a new node containing the given child.
void readChild(SubImageBoxd &val, const char *tagName=nullptr) override
void readChild(unsigned long &val, const char *tagName=nullptr) override
void readChild(Vector6 &val, const char *tagName=nullptr) override
void addChild(const Vector4 &vec, const char *tagName) override
static int _numActiveRootInstances
void addChild(const SubImageBoxd &box, const char *tagName) override
void readChild(Base &val, const char *tagName=nullptr) override
DOMElement * _parentDOMNode
pointer to the DOM node actually wrapped by this class
void readFromFile(const char *fileName) override
Generates a tree parsing a file. Throws TNE_FileNotFound, TNE_ReadingFile, TNE_XML_ParserError.
void readChild(Vector3 &val, const char *tagName=nullptr) override
void addChild(const Vector2 &vec, const char *tagName) override
void readChild(MLint64 &val, const char *tagName=nullptr) override
void addChild(const ImageVector &vec, const char *tagName) override
void readChild(long &val, const char *tagName=nullptr) override
XMLTreeNode(DOMElement *parent)
void readChild(Matrix3 &val, const char *tagName=nullptr) override
static bool _xercesInitialized
Indicates whether the Xerces XML SubSystem is already initialized.
~XMLTreeNode() override
Destructor.
DOMElement * _findElemByTagName(const char *tagName, DOMNode *prevNode=nullptr)
void readChild(Vector4 &val, const char *tagName=nullptr) override
void addChild(long double val, const char *tagName) override
Factory method for adding a child encapsulating a variable of type long double.
void addChild(MLuint64 val, const char *tagName) override
Factory method for adding a child encapsulating a variable of type MLuint64.
void addChild(long val, const char *tagName) override
Factory method for adding a child encapsulating a variable of type long.
void addChild(const Base *const obj, const char *tagName, bool generic=true) override
void writeToFile(const char *fileName) override
Writes the complete tree to a file. Throws TNE_WritingFile.
TreeNode * addChild(const char *tagName) override
void readChild(MLuint64 &val, const char *tagName=nullptr) override
void readChild(TreeNode *&val, const char *tagName=nullptr) override
Returns the group or container node with the specified tag name.
bool hasChild(const char *tagName=nullptr) override
const char * getLastReadChildName() const override
Returns the name of the child most recently read.
void readChild(void *&ptr, unsigned long &noBytes, const char *tagName=nullptr) override
The returned ptr (string) must be deleted later with deleteMemory(ptr).
void readChild(std::string &val, const char *tagName=nullptr) override
void addChild(const Matrix3 &mat, const char *tagName) override
static char * normalizeFileName(const char *fileName)
void addChild(MLint64 val, const char *tagName) override
Factory method for adding a child encapsulating a variable of type MLint64.
int getVersion(const char *) override
Get version of current node. className is currently not used.
#define ML_CLASS_HEADER(className)
UINT64 MLuint64
Introduce platform-independent 64-bit unsigned integer type.
INT64 MLint64
Include 64-bit integer support for Windows or Unix.
Implement the AbstractPersistence(Input/Output)Stream classes with XML backend.
Tvec4< MLdouble > Vector4
A vector with four components of type double.
Tmat4< MLdouble > Matrix4
The standard 4x4 matrix of type double.
@ TNE_XML_LAST_MESSAGE_IDX
Only for number calculations; do not use.
@ TNE_XML_ReadingRawDataSize
Tvec3< MLdouble > Vector3
A vector with three components of type double.
Tvec6< MLdouble > Vector6
A vector with six components of type double.
Tvec2< MLdouble > Vector2
A vector with two components of type double.
Tmat3< MLdouble > Matrix3
The standard 3x3 matrix of type double.
TSubImageBox< MLint > SubImageBox
Defines the standard SubImageBox type used in the ML. Its size varies with the size of the MLint type...
TImageVector< MLint > ImageVector
Defines the standard ImageVector type that is used by the ML for indexing and coordinates.