libzypp
11.13.5
Main Page
Related Pages
Modules
Namespaces
Classes
Files
File List
File Members
Reader.h
Go to the documentation of this file.
1
/*---------------------------------------------------------------------\
2
| ____ _ __ __ ___ |
3
| |__ / \ / / . \ . \ |
4
| / / \ V /| _/ _/ |
5
| / /__ | | | | | | |
6
| /_____||_| |_| |_| |
7
| |
8
\---------------------------------------------------------------------*/
12
#ifndef ZYPP_PARSER_XML_READER_H
13
#define ZYPP_PARSER_XML_READER_H
14
15
#include <iosfwd>
16
17
#include "
zypp/base/NonCopyable.h
"
18
#include "
zypp/base/InputStream.h
"
19
#include "
zypp/base/Function.h
"
20
21
#include "
zypp/parser/xml/Node.h
"
22
24
namespace
zypp
25
{
26
27
namespace
xml
28
{
29
31
//
32
// CLASS NAME : Validate
33
//
37
struct
Validate
38
{
39
static
Validate
none
()
40
{
return
Validate
(); }
41
};
43
45
//
46
// CLASS NAME : Reader
47
//
95
class
Reader
:
private
zypp::base::NonCopyable
96
{
97
public
:
99
Reader
(
const
InputStream
& stream_r,
100
const
Validate
& validate_r =
Validate::none
() );
101
103
~Reader
();
104
105
public
:
106
115
XmlString
nodeText
();
116
118
bool
nextNode
();
119
121
bool
nextNodeAttribute
();
122
124
bool
nextNodeOrAttribute
()
125
{
return
(
nextNodeAttribute
() ||
nextNode
() ); }
126
128
bool
atEnd
()
const
129
{
return
(
_node
.
readState
() == XML_TEXTREADER_MODE_CLOSED ); }
130
132
const
Node
&
operator*
()
const
133
{
return
_node
; }
134
136
const
Node
*
operator->
()
const
137
{
return
&
_node
; }
138
139
public
:
141
typedef
function<bool( Reader & )>
ProcessNode
;
142
144
bool
foreachNode
(
ProcessNode
fnc_r )
145
{
146
if
(
_node
.
isAttribute
() )
147
nextNode
();
148
for
( ; !
atEnd
();
nextNode
() )
149
{
150
if
( ! fnc_r( *
this
) )
151
return
false
;
152
}
153
return
true
;
154
}
155
157
bool
foreachNodeAttribute
(
ProcessNode
fnc_r )
158
{
159
if
(
_node
.
isAttribute
() && ! fnc_r( *
this
) )
160
return
false
;
161
while
(
nextNodeAttribute
() )
162
{
163
if
( ! fnc_r( *
this
) )
164
return
false
;
165
}
166
return
true
;
167
}
168
170
bool
foreachNodeOrAttribute
(
ProcessNode
fnc_r )
171
{
172
for
( ; !
atEnd
();
nextNodeOrAttribute
() )
173
{
174
if
( ! fnc_r( *
this
) )
175
return
false
;
176
}
177
return
true
;
178
}
179
180
public
:
182
bool
seekToNode
(
int
depth_r,
const
std::string & name_r );
183
185
bool
seekToEndNode
(
int
depth_r,
const
std::string & name_r );
186
187
private
:
188
void
close
();
189
190
private
:
191
InputStream
_stream
;
192
xmlTextReaderPtr
_reader
;
193
Node
_node
;
194
};
196
198
}
// namespace xml
201
}
// namespace zypp
203
#endif // ZYPP_PARSER_XML_READER_H
zypp
parser
xml
Reader.h
Generated by
1.8.1