Visual Servoing Platform  version 3.2.0 under development (2018-12-17)
vpXmlParserRectOriented Class Reference

#include <visp3/core/vpXmlParserRectOriented.h>

+ Inheritance diagram for vpXmlParserRectOriented:

Public Types

enum  vpXmlCodeType {
  CODE_XML_BAD = -1, CODE_XML_OTHER, CODE_XML_CENTER_I, CODE_XML_CENTER_J,
  CODE_XML_HEIGHT, CODE_XML_WIDTH, CODE_XML_THETA
}
 
enum  vpXmlCodeSequenceType { SEQUENCE_OK, SEQUENCE_ERROR }
 

Public Member Functions

 vpXmlParserRectOriented ()
 
virtual ~vpXmlParserRectOriented ()
 
vpRectOriented const getRectangle ()
 
void setRectangle (const vpRectOriented rectangle)
 
Public Member Functions Inherited from vpXmlParser
void parse (const std::string &filename)
 
void save (const std::string &filename, const bool append=false)
 
void setMap (const std::map< std::string, int > &_map)
 
void setMainTag (const std::string &tag)
 

Static Public Member Functions

Static Public Member Functions Inherited from vpXmlParser
static void cleanup ()
 

Protected Member Functions

void readMainClass (xmlDocPtr doc, xmlNodePtr node)
 
void writeMainClass (xmlNodePtr node)
 
Protected Member Functions Inherited from vpXmlParser
bool xmlReadBoolChild (xmlDocPtr doc, xmlNodePtr node)
 
char * xmlReadCharChild (xmlDocPtr doc, xmlNodePtr node)
 
double xmlReadDoubleChild (xmlDocPtr doc, xmlNodePtr node)
 
float xmlReadFloatChild (xmlDocPtr doc, xmlNodePtr node)
 
int xmlReadIntChild (xmlDocPtr doc, xmlNodePtr node)
 
std::string xmlReadStringChild (xmlDocPtr doc, xmlNodePtr node)
 
unsigned int xmlReadUnsignedIntChild (xmlDocPtr doc, xmlNodePtr node)
 
void xmlWriteBoolChild (xmlNodePtr node, const char *label, const bool value)
 
void xmlWriteCharChild (xmlNodePtr node, const char *label, const char *value)
 
void xmlWriteDoubleChild (xmlNodePtr node, const char *label, const double value)
 
void xmlWriteFloatChild (xmlNodePtr node, const char *label, const float value)
 
void xmlWriteIntChild (xmlNodePtr node, const char *label, const int value)
 
void xmlWriteStringChild (xmlNodePtr node, const char *label, const std::string &value)
 
void xmlWriteUnsignedIntChild (xmlNodePtr node, const char *label, const unsigned int value)
 

Protected Attributes

std::map< std::string, int > nodeMap
 
std::string main_tag
 

Detailed Description

XML parser to load and save an oriented rectangle in a file.

The following example shows how to save an oriented rectangle in an xml file:

#include <visp3/core/vpRectOriented.h>
#include <visp3/core/vpXmlParserRectOriented.h>
int main()
{
vpRectOriented rect(vpImagePoint(10, 15), 20, 12, 0.25);
parser.setRectangle(rect);
std::string filename = "myRectangle.xml";
parser.save(filename);
return 0;
}

The following example shows how to read an oriented rectangle from an xml file:

#include <visp3/core/vpRectOriented.h>
#include <visp3/core/vpXmlParserRectOriented.h>
int main()
{
std::string filename = "myRectangle.xml";
parser.parse(filename);
vpRectOriented rect = parser.getRectangle();
return 0;
}
Warning
This class is only available if libxml2 is installed and detected by ViSP. Installation instructions are provided here https://visp.inria.fr/3rd_xml2.

Definition at line 96 of file vpXmlParserRectOriented.h.

Member Enumeration Documentation

Enumerator
SEQUENCE_OK 
SEQUENCE_ERROR 

Definition at line 113 of file vpXmlParserRectOriented.h.

Enumerator
CODE_XML_BAD 
CODE_XML_OTHER 
CODE_XML_CENTER_I 
CODE_XML_CENTER_J 
CODE_XML_HEIGHT 
CODE_XML_WIDTH 
CODE_XML_THETA 

Definition at line 103 of file vpXmlParserRectOriented.h.

Constructor & Destructor Documentation

vpXmlParserRectOriented::vpXmlParserRectOriented ( )
vpXmlParserRectOriented::~vpXmlParserRectOriented ( )
virtual

Destructor.

Definition at line 62 of file vpXmlParserRectOriented.cpp.

Member Function Documentation

static void vpXmlParser::cleanup ( )
inlinestaticinherited

As stated in http://xmlsoft.org/html/libxml-parser.html#xmlCleanupParser to clean up memory allocated by the xml2 library itself, the user should call xmlCleanupParser() only when the process has finished using the xml2 library. In case of doubt abstain from calling this function or do it just before calling exit() to avoid leak reports from valgrind ! That's why in ViSP the destructor doesn't call xmlCleanupParser(). Rather we provide the static function vpXmlParser::cleanup() that calls xmlCleanupParser() that could be called just before exit().

Examples:
mbtEdgeKltMultiTracking.cpp, mbtEdgeKltTracking.cpp, mbtEdgeMultiTracking.cpp, mbtEdgeTracking.cpp, mbtGenericTracking.cpp, mbtGenericTracking2.cpp, mbtGenericTrackingDepth.cpp, mbtGenericTrackingDepthOnly.cpp, mbtKltMultiTracking.cpp, mbtKltTracking.cpp, testGenericTracker.cpp, testGenericTrackerDepth.cpp, testXmlParser.cpp, tutorial-detection-object-mbt-deprecated.cpp, tutorial-detection-object-mbt.cpp, tutorial-detection-object-mbt2-deprecated.cpp, tutorial-detection-object-mbt2.cpp, tutorial-mb-edge-tracker.cpp, tutorial-mb-generic-tracker-full.cpp, tutorial-mb-hybrid-tracker.cpp, tutorial-mb-klt-tracker.cpp, and tutorial-mb-tracker-full.cpp.

Definition at line 310 of file vpXmlParser.h.

vpRectOriented const vpXmlParserRectOriented::getRectangle ( )
inline

Definition at line 115 of file vpXmlParserRectOriented.h.

void vpXmlParser::parse ( const std::string &  filename)
inherited

parse the document. The data in the file are stored in the attributes of the child class. This method calls the readMainClass method which has to be implemented for every child class depending on the content to parse.

Parameters
filename: name of the file to parse

Definition at line 421 of file vpXmlParser.cpp.

References vpException::ioError, vpXmlParser::readMainClass(), and vpERROR_TRACE.

Referenced by vpXmlParserHomogeneousMatrix::getHomogeneousMatrixName(), vpXmlConfigParserKeyPoint::getUseRansacVVSPoseEstimation(), vpXmlParserCamera::getWidth(), vpMbDepthDenseTracker::loadConfigFile(), vpMbDepthNormalTracker::loadConfigFile(), vpMbEdgeKltTracker::loadConfigFile(), vpMbKltTracker::loadConfigFile(), vpMbEdgeTracker::loadConfigFile(), vpMbTracker::loadConfigFile(), vpXmlConfigParserKeyPoint::parse(), and vpMbGenericTracker::track().

void vpXmlParserRectOriented::readMainClass ( xmlDocPtr  doc,
xmlNodePtr  node 
)
protectedvirtual

Reading method, called by vpXmlParser::parse().

Parameters
doc: a pointer representing the document.
node: the root node of the document.

Implements vpXmlParser.

Definition at line 69 of file vpXmlParserRectOriented.cpp.

References CODE_XML_CENTER_I, CODE_XML_CENTER_J, CODE_XML_HEIGHT, CODE_XML_THETA, CODE_XML_WIDTH, vpXmlParser::nodeMap, vpImagePoint::set_i(), vpImagePoint::set_j(), vpTRACE, and vpXmlParser::xmlReadDoubleChild().

void vpXmlParser::save ( const std::string &  filename,
const bool  append = false 
)
inherited

Save the content of the class in the file given in parameters. The data of the class are in the child class. This method calls the write_main_class method which has to be implemented for every class depending on the data to save.

Parameters
filename: the name of the file used to record the data
append: if true and if the file exists, the data will be added to the data already in the file

Definition at line 453 of file vpXmlParser.cpp.

References vpException::ioError, vpXmlParser::main_tag, vpERROR_TRACE, and vpXmlParser::writeMainClass().

Referenced by vpXmlParserHomogeneousMatrix::getHomogeneousMatrixName(), and vpXmlParserCamera::getWidth().

void vpXmlParser::setMainTag ( const std::string &  tag)
inlineinherited

set the name of the main tag

The main tag corresponds to the name of the root node

Parameters
tag: name of the root node of the document

Definition at line 295 of file vpXmlParser.h.

Referenced by vpMbXmlParser::init(), vpMbtXmlGenericParser::init(), and vpXmlConfigParserKeyPoint::vpXmlConfigParserKeyPoint().

void vpXmlParser::setMap ( const std::map< std::string, int > &  _map)
inlineinherited

Set the map describing the data to parse. This map stores the name of each node and an associated key used to simplify the parsing of the file.

If the following file want to be parsed:

<config>
<range>5</range>
<step>7</step>
<size_filter>3</size_filter>
</config>

The following map has to be declared:

std::map dataToParse;
dataToParse["config"] = 0;
dataToParse["range"] = 1;
dataToParse["step"] = 2;
dataToParse["size_filter"] = 3;

Or, you can use keyzord instead of number as key but it implies to declare in the child class an enumeration type of the name. For example:

typedef enum{
config,
range,
step,
size_filter} data_enum;
std::map dataToParse;
dataToParse["config"] = config;
dataToParse["range"] = range;
dataToParse["step"] = step;
dataToParse["size_filter"] = size_filter;
Parameters
_map: the map describing the data to parse

Definition at line 286 of file vpXmlParser.h.

void vpXmlParserRectOriented::setRectangle ( const vpRectOriented  rectangle)
inline
void vpXmlParserRectOriented::writeMainClass ( xmlNodePtr  node)
protectedvirtual
bool vpXmlParser::xmlReadBoolChild ( xmlDocPtr  doc,
xmlNodePtr  node 
)
protectedinherited

read a boolean

Warning
throw a vpException::ioError if the value cannot be parsed to a bool
Parameters
doc: The main xml document
node: a pointer to the node to read value
Returns
the bool value in the node

Definition at line 282 of file vpXmlParser.cpp.

References vpException::fatalError.

char * vpXmlParser::xmlReadCharChild ( xmlDocPtr  doc,
xmlNodePtr  node 
)
protectedinherited

Read an array of character.

Warning
The array of characters is allocated and must be explicitly freed to avoid memory leak.
Parameters
doc: The main xml document
node: a pointer to the node to read value
Returns
pointer to an allocated array of character.

Definition at line 100 of file vpXmlParser.cpp.

References vpException::fatalError.

Referenced by vpMbtXmlGenericParser::read_projection_error(), vpXmlParserHomogeneousMatrix::save(), and vpXmlParserCamera::save().

double vpXmlParser::xmlReadDoubleChild ( xmlDocPtr  doc,
xmlNodePtr  node 
)
protectedinherited
float vpXmlParser::xmlReadFloatChild ( xmlDocPtr  doc,
xmlNodePtr  node 
)
protectedinherited

read a float

Warning
throw a vpException::ioError if the value cannot be parsed to a float
Parameters
doc: The main xml document
node: a pointer to the node to read value
Returns
the float value in the node

Definition at line 245 of file vpXmlParser.cpp.

References vpException::fatalError, and vpException::ioError.

int vpXmlParser::xmlReadIntChild ( xmlDocPtr  doc,
xmlNodePtr  node 
)
protectedinherited
std::string vpXmlParser::xmlReadStringChild ( xmlDocPtr  doc,
xmlNodePtr  node 
)
protectedinherited

Read an array of character.

Parameters
doc: The main xml document
node: a pointer to the node to read value
Returns
std::string representing the value.
Examples:
testXmlParser.cpp.

Definition at line 120 of file vpXmlParser.cpp.

References vpException::fatalError.

Referenced by vpXmlConfigParserKeyPoint::parse().

unsigned int vpXmlParser::xmlReadUnsignedIntChild ( xmlDocPtr  doc,
xmlNodePtr  node 
)
protectedinherited

read an int

Warning
throw a vpException::ioError if the value cannot be parsed to an unsigned integer
Parameters
doc: The main xml document
node: a pointer to the node to read value
Returns
the unsigned integer value in the node

Definition at line 178 of file vpXmlParser.cpp.

References vpException::fatalError, and vpException::ioError.

Referenced by vpMbtXmlGenericParser::read_depth_dense_sampling_step(), vpMbtXmlGenericParser::read_depth_normal_sampling_step(), vpMbtXmlGenericParser::read_ecm_mask(), vpMbtXmlGenericParser::read_ecm_range(), vpMbtKltXmlParser::read_klt(), vpMbtXmlGenericParser::read_klt(), vpMbtXmlParser::read_mask(), vpMbtXmlParser::read_range(), and vpXmlParserCamera::save().

void vpXmlParser::xmlWriteBoolChild ( xmlNodePtr  node,
const char *  label,
const bool  value 
)
protectedinherited

write a bool.

Parameters
node: a pointer to the node to read value
label: label (name of the data) of the node
value: boolean to write (true or false)

Definition at line 398 of file vpXmlParser.cpp.

void vpXmlParser::xmlWriteCharChild ( xmlNodePtr  node,
const char *  label,
const char *  value 
)
protectedinherited

write an array of character.

Parameters
node: a pointer to the node to read value
label: label (name of the data) of the node
value: pointer to the array of character to write
Examples:
testXmlParser.cpp.

Definition at line 306 of file vpXmlParser.cpp.

void vpXmlParser::xmlWriteDoubleChild ( xmlNodePtr  node,
const char *  label,
const double  value 
)
protectedinherited

write a double.

Parameters
node: a pointer to the node to read value
label: label (name of the data) of the node
value: double to write
Examples:
testXmlParser.cpp.

Definition at line 366 of file vpXmlParser.cpp.

Referenced by writeMainClass().

void vpXmlParser::xmlWriteFloatChild ( xmlNodePtr  node,
const char *  label,
const float  value 
)
protectedinherited

write a float.

Parameters
node: a pointer to the node to read value
label: label (name of the data) of the node
value: float to write

Definition at line 382 of file vpXmlParser.cpp.

void vpXmlParser::xmlWriteIntChild ( xmlNodePtr  node,
const char *  label,
const int  value 
)
protectedinherited

write an integer.

Parameters
node: a pointer to the node to read value
label: label (name of the data) of the node
value: integer to write
Examples:
testXmlParser.cpp.

Definition at line 334 of file vpXmlParser.cpp.

void vpXmlParser::xmlWriteStringChild ( xmlNodePtr  node,
const char *  label,
const std::string &  value 
)
protectedinherited

write an array of character.

Parameters
node: a pointer to the node to read value
label: label (name of the data) of the node
value: std::string to write;

Definition at line 320 of file vpXmlParser.cpp.

void vpXmlParser::xmlWriteUnsignedIntChild ( xmlNodePtr  node,
const char *  label,
const unsigned int  value 
)
protectedinherited

write an unsigned integer.

Parameters
node: a pointer to the node to read value
label: label (name of the data) of the node
value: unsigned integer to write

Definition at line 350 of file vpXmlParser.cpp.

Member Data Documentation

std::string vpXmlParser::main_tag
protectedinherited

The name of the main tag for the file to parse

Definition at line 231 of file vpXmlParser.h.

Referenced by vpXmlParser::save().

std::map<std::string, int> vpXmlParser::nodeMap
protectedinherited

The map describing the data to parse

Definition at line 226 of file vpXmlParser.h.

Referenced by vpMbtEdgeKltXmlParser::init(), vpMbtXmlParser::init(), vpMbtKltXmlParser::init(), vpMbXmlParser::init(), vpMbtXmlGenericParser::init(), vpXmlConfigParserKeyPoint::parse(), vpMbXmlParser::read_camera(), vpMbtXmlGenericParser::read_camera(), vpMbtXmlParser::read_contrast(), vpMbtXmlGenericParser::read_depth_dense(), vpMbtXmlGenericParser::read_depth_dense_sampling_step(), vpMbtXmlGenericParser::read_depth_normal(), vpMbtXmlGenericParser::read_depth_normal_PCL(), vpMbtXmlGenericParser::read_depth_normal_sampling_step(), vpMbtXmlParser::read_ecm(), vpMbtXmlGenericParser::read_ecm(), vpMbtXmlGenericParser::read_ecm_contrast(), vpMbtXmlGenericParser::read_ecm_mask(), vpMbtXmlGenericParser::read_ecm_range(), vpMbtXmlGenericParser::read_ecm_sample(), vpMbXmlParser::read_face(), vpMbtXmlGenericParser::read_face(), vpMbtKltXmlParser::read_klt(), vpMbtXmlGenericParser::read_klt(), vpMbXmlParser::read_lod(), vpMbtXmlGenericParser::read_lod(), vpMbtXmlParser::read_mask(), vpMbtXmlGenericParser::read_projection_error(), vpMbtXmlParser::read_range(), vpMbtXmlParser::read_sample(), vpMbtXmlParser::read_sample_deprecated(), vpMbtXmlGenericParser::read_sample_deprecated(), vpMbtEdgeKltXmlParser::readMainClass(), vpMbtXmlParser::readMainClass(), readMainClass(), vpMbtKltXmlParser::readMainClass(), vpMbXmlParser::readMainClass(), vpMbtXmlGenericParser::readMainClass(), vpXmlConfigParserKeyPoint::vpXmlConfigParserKeyPoint(), and vpXmlParserRectOriented().