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

libzypp 17.38.13

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-core/base/PtrTypes.h>
19
20#include <zypp/parser/xml/libxmlfwd.h>
21#include <zypp-core/parser/xml/XmlEscape.h>
22
24namespace zypp
25{
27 namespace xml
28 {
29
31 //
32 // CLASS NAME : XmlString
33 //
40 class ZYPP_API 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 };
107
108
110 std::ostream & operator<<( std::ostream & str, const XmlString & obj ) ZYPP_API;
111
113 } // namespace xml
116} // namespace zypp
118#endif // ZYPP_PARSER_XML_XMLSTRING_H
PtrTypes.h
XmlEscape.h
shared_ptr
zypp::parser::XmlString::XmlString
XmlString(const xmlChar *const xmlstr_r=NULL, OnDelete ondelete_r=NOFREE)
Ctor from xmlChar.
Definition XmlString.cc:29
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::get
const xmlChar * get() const
Access the xmlChar *.
Definition XmlString.h:61
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::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
Definition libxmlfwd.cc:22
zypp::xml::operator<<
std::ostream & operator<<(std::ostream &str, const ReadState &obj)
relates: ReadState Stream output.
Definition libxmlfwd.cc:29
zypp
Easy-to use interface to the ZYPP dependency resolver.
Definition CodePitfalls.doc:2
zypp::ZYPP_API
const Arch Arch_empty ZYPP_API
relates: Arch This is an empty Arch represented by an empty string.
Definition Arch.h:173
zypp::parser::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