Visual Servoing Platform version 3.7.0
Loading...
Searching...
No Matches
vpXmlParser.h
1/*
2 * ViSP, open source Visual Servoing Platform software.
3 * Copyright (C) 2005 - 2024 by Inria. All rights reserved.
4 *
5 * This software is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; either version 2 of the License, or
8 * (at your option) any later version.
9 * See the file LICENSE.txt at the root directory of this source
10 * distribution for additional information about the GNU GPL.
11 *
12 * For using ViSP with software that can not be combined with the GNU
13 * GPL, please contact Inria about acquiring a ViSP Professional
14 * Edition License.
15 *
16 * See https://visp.inria.fr for more information.
17 *
18 * This software was developed at:
19 * Inria Rennes - Bretagne Atlantique
20 * Campus Universitaire de Beaulieu
21 * 35042 Rennes Cedex
22 * France
23 *
24 * If you have questions regarding the use of this file, please contact
25 * Inria at visp@inria.fr
26 *
27 * This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
28 * WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
29 *
30 * Description:
31 * Tools to automatize the creation of xml parser based on the libXML2
32 */
33
38
39#ifndef VP_XML_PARSER_H
40#define VP_XML_PARSER_H
41
42#include <visp3/core/vpConfig.h>
43
44#ifdef VISP_HAVE_XML2
45
46#include <visp3/core/vpException.h>
47
48#include <iomanip>
49#include <map>
50#include <sstream>
51#include <string.h>
52#include <string>
53#include <typeinfo>
54
55struct _xmlDoc;
56typedef _xmlDoc xmlDoc;
57typedef xmlDoc *xmlDocPtr;
58
59struct _xmlNode;
60typedef _xmlNode xmlNode;
61typedef xmlNode *xmlNodePtr;
62
184class VISP_EXPORT vpXmlParser
185{
186protected:
189
199 virtual void readMainClass(xmlDocPtr doc, xmlNodePtr node) = 0;
200
210 virtual void writeMainClass(xmlNodePtr node) = 0;
211
212 bool xmlReadBoolChild(xmlDocPtr doc, xmlNodePtr node);
213 char *xmlReadCharChild(xmlDocPtr doc, xmlNodePtr node);
214 double xmlReadDoubleChild(xmlDocPtr doc, xmlNodePtr node);
215 float xmlReadFloatChild(xmlDocPtr doc, xmlNodePtr node);
216 int xmlReadIntChild(xmlDocPtr doc, xmlNodePtr node);
217 std::string xmlReadStringChild(xmlDocPtr doc, xmlNodePtr node);
218 unsigned int xmlReadUnsignedIntChild(xmlDocPtr doc, xmlNodePtr node);
219
220 void xmlWriteBoolChild(xmlNodePtr node, const char *label, bool value);
221 void xmlWriteCharChild(xmlNodePtr node, const char *label, const char *value);
222 void xmlWriteDoubleChild(xmlNodePtr node, const char *label, double value);
223 void xmlWriteFloatChild(xmlNodePtr node, const char *label, float value);
224 void xmlWriteIntChild(xmlNodePtr node, const char *label, int value);
225 void xmlWriteStringChild(xmlNodePtr node, const char *label, const std::string &value);
226 void xmlWriteUnsignedIntChild(xmlNodePtr node, const char *label, unsigned int value);
228
229protected:
233 std::map<std::string, int> nodeMap;
234
238 std::string main_tag;
239
240public:
243 vpXmlParser();
244 vpXmlParser(const vpXmlParser &_twin);
245 virtual ~vpXmlParser();
246
247 /* virtual */ void parse(const std::string &filename);
248 /* virtual */ void save(const std::string &filename, bool append = false);
249
293 void setMap(const std::map<std::string, int> &_map) { nodeMap = _map; }
294
302 inline void setMainTag(const std::string &tag) { main_tag = tag; }
304
307
317 static void cleanup();
319};
320END_VISP_NAMESPACE
321#endif /* VISP_HAVE_XML2 */
322
323#endif
void xmlWriteIntChild(xmlNodePtr node, const char *label, int value)
void xmlWriteBoolChild(xmlNodePtr node, const char *label, bool value)
void xmlWriteFloatChild(xmlNodePtr node, const char *label, float value)
double xmlReadDoubleChild(xmlDocPtr doc, xmlNodePtr node)
void xmlWriteDoubleChild(xmlNodePtr node, const char *label, double value)
float xmlReadFloatChild(xmlDocPtr doc, xmlNodePtr node)
void xmlWriteUnsignedIntChild(xmlNodePtr node, const char *label, unsigned int value)
void xmlWriteCharChild(xmlNodePtr node, const char *label, const char *value)
void xmlWriteStringChild(xmlNodePtr node, const char *label, const std::string &value)
int xmlReadIntChild(xmlDocPtr doc, xmlNodePtr node)
void setMainTag(const std::string &tag)
std::map< std::string, int > nodeMap
void save(const std::string &filename, bool append=false)
bool xmlReadBoolChild(xmlDocPtr doc, xmlNodePtr node)
unsigned int xmlReadUnsignedIntChild(xmlDocPtr doc, xmlNodePtr node)
void parse(const std::string &filename)
char * xmlReadCharChild(xmlDocPtr doc, xmlNodePtr node)
void setMap(const std::map< std::string, int > &_map)
virtual void readMainClass(xmlDocPtr doc, xmlNodePtr node)=0
std::string xmlReadStringChild(xmlDocPtr doc, xmlNodePtr node)
virtual void writeMainClass(xmlNodePtr node)=0
std::string main_tag