129  std::string _message;
 
  133  static const char*    _stdErrorMsg[];
 
 
  142#define TREE_NODE_CHECK_THROW(x) { if (!(x)) throw TreeNodeException(TNE_UserDefined, #x); } 
  162#define VOID_IMPLEMENTATION(which)     { throw TreeNodeException(TNE_VoidImplementation, which); } 
  168#define VOID_IMPLEMENTATION_RET(which, R) { if (MLAlwaysTrue){ throw TreeNodeException(TNE_VoidImplementation, which); } return R; } 
  171#define ADD_LONG_CHILD            { addChild(static_cast<long>(val), name); } 
  174#define ADD_ULONG_CHILD           { addChild(static_cast<unsigned long>(val), name); } 
  177#define ADD_LDOUBLE_CHILD         { addChild(static_cast<long double>(val), name); } 
  181#define READ_LONG_CHILD(DST_TYPE)   { long lval=0; readChild(lval, name); val = static_cast<DST_TYPE>(lval); } 
  185#define READ_ULONG_CHILD(DST_TYPE)  { unsigned long lval=0; readChild(lval, name); val = static_cast<DST_TYPE>(lval); } 
  189#define READ_LDOUBLE_CHILD(DST_TYPE){ long double ldval=0; readChild(ldval, name); val = static_cast<DST_TYPE>(ldval); } 
  193#define READ_LONG_CHILD_FOR_BOOL  { long lval=0; readChild(lval, name); val = (lval!=0); } 
  302  virtual void addChild(
const std::string&  , 
const char* ) 
VOID_IMPLEMENTATION(
"addChild(const std::string&)");
 
  333  virtual void addChild (
const void* 
const  , 
size_t , 
const char* ) 
VOID_IMPLEMENTATION(
"addChild(void*)");
 
  464    if (hasChild(name)) {
 
  465      readChild(value, name);
 
  498    TreeNode* node = 
nullptr;
 
  499    readChild(node, name);
 
  514    Base* 
objP = 
nullptr;
 
  515    readChild(
objP, name);
 
  534  virtual const char* getLastReadChildName()
 const  { 
VOID_IMPLEMENTATION_RET(
"getLastReadChildName()", 
nullptr); }
 
  549  virtual void deleteMemory(
void* ){};
 
  566  TreeNode(ConstructionMode ) :
 
  630#undef VOID_IMPLEMENTATION 
  631#undef ADD_ULONG_CHILD 
  633#undef ADD_LDOUBLE_CHILD 
  634#undef READ_ULONG_CHILD 
  635#undef READ_LONG_CHILD 
  636#undef READ_LDOUBLE_CHILD 
  637#undef READ_LONG_CHILD_FOR_BOOL 
 
  651#define ML_READCHILD_OPTIONAL(obj, tagName, defaultVal) \ 
  652if (parent->hasChild(tagName)) { \ 
  653  parent->readChild(obj, tagName); \ 
 
  660#define ML_ADDSTATE_VERSION(ThisClass) parent->setVersion("#ThisClass#", ThisClass::getAddStateVersion()); 
  664#define ML_ADDSTATE_SUPER(SuperClass) { \ 
  665TreeNode* superClassNode = parent->addChild("_" #SuperClass); \ 
  666SuperClass::addStateToTree(superClassNode); \ 
 
  671#define ML_READSTATE_SUPER(SuperClass) { \ 
  672TreeNode* superClassNode = parent->readContainerChild("_" #SuperClass); \ 
  673SuperClass::readStateFromTree(superClassNode); \ 
 
  684#define ML_TREE_NODE_SUPPORT_VIA_PERSISTENT_STATE \ 
  685virtual void addStateToTree(TreeNode* parent) const \ 
  687auto state = persistentState(); \ 
  688if (state.empty()){ state = "Could not read object state."; } \ 
  689parent->addChild(state, "State"); \ 
  692virtual void readStateFromTree(TreeNode* parent) \ 
  695parent->readChild(state, "State"); \ 
  696setPersistentState(state); \ 
 
Class representing general ML objects that support import/export via strings (setPersistentState() an...
 
SubImageBoxd - SubImageBox with coordinates of float data type.
 
The class TreeNodeException is the base class for all exceptions thrown by the class TreeNode and all...
 
virtual ~TreeNodeException()
Destructor.
 
int getCode() const
Returns the error code.
 
int _errorCode
The error code of the exception.
 
TreeNodeException(int errorCode=0, const char *msg=nullptr)
Creates a new exception object with code errorCode and an optional error message.
 
virtual const char * getMessage() const
Returns the error string.
 
The class TreeNode is the abstract base class for the import/export of ML objects.
 
virtual void addChild(char val, const char *name) ADD_LONG_CHILD
Factory method for adding a child encapsulating a variable of type char.
 
@ CM_readerRoot
Construct as root node for reading.
 
@ CM_writerRoot
Construct as root node for writing.
 
virtual ~TreeNode()
Destructor deleting all children of this node.
 
virtual void addChild(int val, const char *name) ADD_LONG_CHILD
Factory method for adding a child encapsulating a variable of type int.
 
virtual void addChild(MLint64, const char *) VOID_IMPLEMENTATION("addChild(MLint64)")
Factory method for adding a child encapsulating a variable of type MLint64.
 
virtual void addChild(unsigned short val, const char *name) ADD_ULONG_CHILD
Factory method for adding a child encapsulating a variable of type unsigned short.
 
virtual void addChild(double val, const char *name) ADD_LDOUBLE_CHILD
Factory method for adding a child encapsulating a variable of type double.
 
virtual void addChild(short val, const char *name) ADD_LONG_CHILD
Factory method for adding a child encapsulating a variable of type short.
 
virtual void writeToString(std::string &) VOID_IMPLEMENTATION("writeToString")
Generates a string representation of the subtree represented by this node to a file.
 
virtual void writeToFile(const char *) VOID_IMPLEMENTATION("writeToFile")
Writes the subtree represented by this node to a file.
 
virtual void addChild(unsigned int val, const char *name) ADD_ULONG_CHILD
Factory method for adding a child encapsulating a variable of type unsigned int.
 
virtual void addChild(unsigned char val, const char *name) ADD_ULONG_CHILD
Factory method for adding a child encapsulating a variable of type unsigned char.
 
virtual void addChild(long, const char *) VOID_IMPLEMENTATION("addChild(long)")
Factory method for adding a child encapsulating a variable of type long.
 
virtual void addChild(bool val, const char *name) ADD_ULONG_CHILD
Factory method for adding a child encapsulating a variable of type bool.
 
virtual void addChild(unsigned long, const char *) VOID_IMPLEMENTATION("addChild(unsigned long)")
Factory method for adding a child encapsulating a variable of type long.
 
virtual void addChild(MLuint64, const char *) VOID_IMPLEMENTATION("addChild(MLuint64)")
Factory method for adding a child encapsulating a variable of type MLuint64.
 
virtual void readFromFile(const char *) VOID_IMPLEMENTATION("readFromFile")
Reads the subtree represented by this node from a file.
 
virtual void addChild(float val, const char *name) ADD_LDOUBLE_CHILD
Factory method for adding a child encapsulating a variable of type float.
 
virtual void addChild(long double, const char *) VOID_IMPLEMENTATION("addChild(long double)")
Factory method for adding a child encapsulating a variable of type long double.
 
virtual void readFromString(const std::string &) VOID_IMPLEMENTATION("readFromString")
Reads the subtree represented by this node from a string.
 
#define MLEXPORT
To export symbols from a DLL/shared object, we need to mark them with the MLEXPORT symbol.
 
Target mlrange_cast(Source arg)
Generic version of checked ML casts.
 
#define ML_ABSTRACT_ROOT_CLASS_HEADER(className)
 
#define ML_ROOT_CLASS_HEADER(className)
 
#define ADD_LONG_CHILD
For each signed integer type, addChild(long) is called by default.
 
#define READ_LDOUBLE_CHILD(DST_TYPE)
For each floating point type, readChild(LDouble) is called by default and the results is simply cast ...
 
#define VOID_IMPLEMENTATION(which)
Standard body for a method in this interface class.
 
#define VOID_IMPLEMENTATION_RET(which, R)
Standard body for a method in this interface class.
 
#define READ_LONG_CHILD_FOR_BOOL
For each signed integer type, readChild(Long) is called by default and the results is simply cast to ...
 
#define ADD_LDOUBLE_CHILD
For each floating point type, addChild(LDouble) is called by default.
 
#define READ_LONG_CHILD(DST_TYPE)
For each signed integer type, readChild(Long) is called by default and the results is simply cast to ...
 
#define READ_ULONG_CHILD(DST_TYPE)
For each unsigned integer type, readChild(ULong) is called by default and the results is simply cast ...
 
#define ADD_ULONG_CHILD
For each unsigned integer type, addChild(ulong) is called by default.
 
UINT64 MLuint64
Introduce platform-independent 64-bit unsigned integer type.
 
INT64 MLint64
Include 64-bit integer support for Windows or Unix.
 
@ TNE_UnsupportedClassVersion
 
@ TNE_ReadingSubImageBoxd