Robotics Library  0.7.0
Namespace.h
Go to the documentation of this file.
1 //
2 // Copyright (c) 2009, Markus Rickert
3 // All rights reserved.
4 //
5 // Redistribution and use in source and binary forms, with or without
6 // modification, are permitted provided that the following conditions are met:
7 //
8 // * Redistributions of source code must retain the above copyright notice,
9 // this list of conditions and the following disclaimer.
10 // * Redistributions in binary form must reproduce the above copyright notice,
11 // this list of conditions and the following disclaimer in the documentation
12 // and/or other materials provided with the distribution.
13 //
14 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
15 // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
16 // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
17 // ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
18 // LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
19 // CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
20 // SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
21 // INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
22 // CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
23 // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
24 // POSSIBILITY OF SUCH DAMAGE.
25 //
26 
27 #ifndef RL_XML_NAMESPACE_H
28 #define RL_XML_NAMESPACE_H
29 
30 #include <memory>
31 #include <string>
32 #include <libxml/parser.h>
33 
34 namespace rl
35 {
36  namespace xml
37  {
38  class Namespace
39  {
40  public:
41  explicit Namespace(::xmlNsPtr ns) :
42  ns(ns)
43  {
44  }
45 
46  Namespace(::xmlNodePtr node, const ::std::string& href, const ::std::string& prefix) :
47  ns(
48  ::xmlNewNs(
49  node,
50  reinterpret_cast<const ::xmlChar*>(href.c_str()),
51  reinterpret_cast<const ::xmlChar*>(prefix.c_str())
52  )
53  )
54  {
55  }
56 
58  {
59  }
60 
61  ::xmlNsPtr get() const
62  {
63  return this->ns;
64  }
65 
66  ::std::string getHref() const
67  {
68  return nullptr != this->ns->href ? reinterpret_cast<const char*>(this->ns->href) : ::std::string();
69  }
70 
71  ::std::string getPrefix() const
72  {
73  return nullptr != this->ns->prefix ? reinterpret_cast<const char*>(this->ns->prefix) : ::std::string();
74  }
75 
76  ::xmlNs operator*() const
77  {
78  return *this->ns;
79  }
80 
81  protected:
82 
83  private:
84  ::xmlNsPtr ns;
85  };
86  }
87 }
88 
89 #endif // RL_XML_NAMESPACE_H
rl::xml::Namespace::Namespace
Namespace(::xmlNsPtr ns)
Definition: Namespace.h:41
rl::xml::Namespace::getPrefix
::std::string getPrefix() const
Definition: Namespace.h:71
rl::xml::Namespace::~Namespace
~Namespace()
Definition: Namespace.h:57
rl::xml::Namespace::operator*
::xmlNs operator*() const
Definition: Namespace.h:76
rl::xml::Namespace::getHref
::std::string getHref() const
Definition: Namespace.h:66
rl::xml::Namespace
Definition: Namespace.h:39
rl::xml::Namespace::get
::xmlNsPtr get() const
Definition: Namespace.h:61
rl::xml::Namespace::ns
::xmlNsPtr ns
Definition: Namespace.h:84
rl::xml::Namespace::Namespace
Namespace(::xmlNodePtr node, const ::std::string &href, const ::std::string &prefix)
Definition: Namespace.h:46
rl
Robotics Library.
Definition: AnalogInput.cpp:30