Robotics Library  0.6.2
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 <string>
31 #include <boost/shared_ptr.hpp>
32 #include <libxml/parser.h>
33 
34 namespace rl
35 {
36  namespace xml
37  {
38  class Namespace
39  {
40  public:
41  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  this->ns->_private = node;
56  }
57 
58  virtual ~Namespace()
59  {
60  if (NULL == this->ns->_private)
61  {
62  xmlFreeNs(this->ns);
63  }
64  }
65 
66  ::std::string getHref() const
67  {
68  return reinterpret_cast< const char* >(this->ns->href);
69  }
70 
71  ::std::string getPrefix() const
72  {
73  return reinterpret_cast< const char* >(this->ns->prefix);
74  }
75 
76  xmlNsPtr 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::getPrefix
::std::string getPrefix() const
Definition: Namespace.h:71
rl::xml::Namespace::Namespace
Namespace(xmlNodePtr node, const ::std::string &href, const ::std::string &prefix)
Definition: Namespace.h:46
rl::xml::Namespace::Namespace
Namespace(xmlNsPtr ns)
Definition: Namespace.h:41
rl::xml::Namespace::operator()
xmlNsPtr operator()() const
Definition: Namespace.h:76
rl::xml::Namespace::getHref
::std::string getHref() const
Definition: Namespace.h:66
rl::xml::Namespace::ns
xmlNsPtr ns
Definition: Namespace.h:84
rl::xml::Namespace
Definition: Namespace.h:39
rl::xml::Namespace::~Namespace
virtual ~Namespace()
Definition: Namespace.h:58
rl
Definition: Ati.cpp:35