FlightGear next
SimpleDOM.hxx
Go to the documentation of this file.
1// SimpleDOM.hxx -- poor man's DOM
2//
3// Written by Torsten Dreyer
4//
5// Copyright (C) 2014 Torsten Dreyer
6//
7// This program is free software; you can redistribute it and/or
8// modify it under the terms of the GNU General Public License as
9// published by the Free Software Foundation; either version 2 of the
10// License, or (at your option) any later version.
11//
12// This program is distributed in the hope that it will be useful, but
13// WITHOUT ANY WARRANTY; without even the implied warranty of
14// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15// General Public License for more details.
16//
17// You should have received a copy of the GNU General Public License
18// along with this program; if not, write to the Free Software
19// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
20
21#ifndef __FG_SIMPLE_DOM_HXX
22#define __FG_SIMPLE_DOM_HXX
23
24#include <string>
25#include <map>
26#include <vector>
27
28namespace flightgear {
29namespace http {
30
32public:
33 virtual ~DOMElement() {}
34 virtual std::string render() const = 0;
35};
36
37class DOMTextElement : public DOMElement {
38public:
39 DOMTextElement( const std::string & text ) : _text(text) {}
40 virtual std::string render() const { return _text; }
41
42private:
43 std::string _text;
44};
45
46class DOMNode : public DOMElement {
47public:
48 DOMNode( const std::string & name ) : _name(name) {}
49 virtual ~DOMNode();
50
51 virtual std::string render() const;
52 virtual DOMNode * addChild( DOMElement * child );
53 virtual DOMNode * setAttribute( const std::string & name, const std::string & value );
54protected:
55 std::string _name;
56 typedef std::vector<const DOMElement*> Children_t;
57 typedef std::map<std::string,std::string> Attributes_t;
60};
61
62}
63}
64#endif // __FG_SIMPLE_DOM_HXX
virtual std::string render() const =0
virtual std::string render() const
Definition SimpleDOM.cxx:13
virtual DOMNode * setAttribute(const std::string &name, const std::string &value)
Definition SimpleDOM.cxx:47
virtual DOMNode * addChild(DOMElement *child)
Definition SimpleDOM.cxx:41
std::vector< const DOMElement * > Children_t
Definition SimpleDOM.hxx:56
std::map< std::string, std::string > Attributes_t
Definition SimpleDOM.hxx:57
DOMNode(const std::string &name)
Definition SimpleDOM.hxx:48
DOMTextElement(const std::string &text)
Definition SimpleDOM.hxx:39
virtual std::string render() const
Definition SimpleDOM.hxx:40
FlightPlan.hxx - defines a full flight-plan object, including departure, cruise, arrival information ...
Definition Addon.cxx:53
const char * name