]> git.mxchange.org Git - flightgear.git/blob - src/Network/http/SimpleDOM.hxx
Interim windows build fix
[flightgear.git] / src / Network / http / SimpleDOM.hxx
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
28 namespace flightgear {
29 namespace http {
30
31 class DOMElement {
32 public:
33   virtual ~DOMElement() {}
34   virtual std::string render() const = 0;
35 };
36
37 class DOMTextElement : public DOMElement {
38 public:
39   DOMTextElement( const std::string & text ) : _text(text) {}
40   virtual std::string render() const { return _text; }
41
42 private:
43   std::string _text;
44 };
45
46 class DOMNode : public DOMElement {
47 public:
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 );
54 protected:
55   std::string _name;
56   typedef std::vector<const DOMElement*> Children_t;
57   typedef std::map<std::string,std::string> Attributes_t;
58   Children_t   _children;
59   Attributes_t _attributes;
60 };
61
62 }
63 }
64 #endif // __FG_SIMPLE_DOM_HXX