libzypp: zypp/parser/xml/XmlString.h Source File

libzypp 17.25.10

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