libzypp 17.31.7
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
21#include <zypp/parser/xml/XmlEscape.h>
22
24namespace zypp
25{
27 namespace xml
28 {
29
31 //
32 // CLASS NAME : XmlString
33 //
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
xmlChar * wrapper.
Definition: XmlString.h:41
bool operator==(const std::string &rhs) const
Definition: XmlString.h:84
shared_ptr< const xmlChar > _xmlstr
Wraps the xmlChar *.
Definition: XmlString.h:105
std::string asString() const
Explicit conversion to std::string.
Definition: XmlString.h:77
bool operator!=(const std::string &rhs) const
Definition: XmlString.h:87
bool operator==(const XmlString &rhs) const
Definition: XmlString.h:96
const xmlChar * get() const
Access the xmlChar *.
Definition: XmlString.h:61
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 char *const rhs) const
Definition: XmlString.h:90
XmlString(const xmlChar *const xmlstr_r=NULL, OnDelete ondelete_r=NOFREE)
Ctor from xmlChar.
Definition: XmlString.cc:29
bool operator!=(const char *const rhs) const
Definition: XmlString.h:93
String related utilities and Regular expression matching.
std::ostream & operator<<(std::ostream &str, const ReadState &obj)
Definition: libxmlfwd.cc:29
Easy-to use interface to the ZYPP dependency resolver.
Definition: CodePitfalls.doc:2
shared_ptr custom deleter calling xmlFree.
Definition: XmlString.h:44
void operator()(const xmlChar *xmlstr_r) const
Definition: XmlString.h:45