libzypp  13.10.6
XmlString.h
Go to the documentation of this file.
1 /*---------------------------------------------------------------------\
2 | ____ _ __ __ ___ |
3 | |__ / \ / / . \ . \ |
4 | / / \ V /| _/ _/ |
5 | / /__ | | | | | | |
6 | /_____||_| |_| |_| |
7 | |
8 \---------------------------------------------------------------------*/
12 #ifndef ZYPP_PARSER_XML_XMLSTRING_H
13 #define ZYPP_PARSER_XML_XMLSTRING_H
14 
15 #include <iosfwd>
16 #include <string>
17 
18 #include "zypp/base/PtrTypes.h"
19 
22 
24 namespace zypp
25 {
26  namespace xml
28  {
29 
31  //
32  // CLASS NAME : XmlString
33  //
40  class XmlString
41  {
43  struct Deleter
44  {
45  void operator()( const xmlChar * xmlstr_r ) const
46  { xmlFree( (void*)(xmlstr_r) ); }
47  };
48 
49  public:
50 
52  enum OnDelete { NOFREE, FREE };
53 
57  XmlString( const xmlChar *const xmlstr_r = NULL,
58  OnDelete ondelete_r = NOFREE );
59 
61  const xmlChar * get() const
62  {
63  if ( ! _xmlstr )
64  return NULL;
65  return &(*_xmlstr);
66  }
67 
69  operator const xmlChar * () const
70  { return get(); }
71 
73  const char * c_str() const
74  { return reinterpret_cast<const char *const>(get()); }
75 
77  std::string asString() const
78  {
79  if ( ! _xmlstr )
80  return std::string();
81  return c_str();
82  }
83 
84  bool operator==( const std::string & rhs ) const
85  { return( rhs == c_str() ); }
86 
87  bool operator!=( const std::string & rhs ) const
88  { return( rhs != c_str() ); }
89 
90  bool operator==( const char *const rhs ) const
91  { return( asString() == rhs ); }
92 
93  bool operator!=( const char *const rhs ) const
94  { return( asString() != rhs ); }
95 
96  bool operator==( const XmlString & rhs ) const
97  { return( asString() == rhs.c_str() ); }
98 
99  bool operator!=( const XmlString & rhs ) const
100  { return( asString() != rhs.c_str() ); }
101 
102  private:
105  shared_ptr<const xmlChar> _xmlstr;
106  };
108 
110  std::ostream & operator<<( std::ostream & str, const XmlString & obj );
111 
113  } // namespace xml
116 } // namespace zypp
118 #endif // ZYPP_PARSER_XML_XMLSTRING_H
shared_ptr custom deleter calling xmlFree.
Definition: XmlString.h:43
xmlChar * wrapper.
Definition: XmlString.h:40
bool operator!=(const char *const rhs) const
Definition: XmlString.h:93
bool operator==(const XmlString &rhs) const
Definition: XmlString.h:96
OnDelete
Dtor policy.
Definition: XmlString.h:52
const char * c_str() const
Explicit conversion to const char *.
Definition: XmlString.h:73
bool operator!=(const XmlString &rhs) const
Definition: XmlString.h:99
bool operator!=(const std::string &rhs) const
Definition: XmlString.h:87
std::string asString() const
Explicit conversion to std::string.
Definition: XmlString.h:77
bool operator==(const std::string &rhs) const
Definition: XmlString.h:84
void operator()(const xmlChar *xmlstr_r) const
Definition: XmlString.h:45
bool operator==(const char *const rhs) const
Definition: XmlString.h:90
std::ostream & operator<<(std::ostream &str, const ReadState &obj)
Definition: libxmlfwd.cc:29
shared_ptr< const xmlChar > _xmlstr
Wraps the xmlChar *.
Definition: XmlString.h:105
XmlString(const xmlChar *const xmlstr_r=NULL, OnDelete ondelete_r=NOFREE)
Ctor from xmlChar.
Definition: XmlString.cc:29