line |
stmt |
bran |
cond |
sub |
pod |
time |
code |
1
|
|
|
|
|
|
|
// this file is included into struct MessageIterator |
2
|
|
|
|
|
|
|
// ! no namespaces here or #includes here ! |
3
|
|
|
|
|
|
|
|
4
|
0
|
|
|
|
|
|
struct FrameIterator : std::iterator { |
5
|
0
|
|
|
|
|
|
FrameIterator (Parser* parser, const FrameSP& start_frame) : parser(parser), cur(start_frame) {} |
6
|
0
|
|
|
|
|
|
FrameIterator (const FrameIterator& oth) : parser(oth.parser), cur(oth.cur) {} |
7
|
|
|
|
|
|
|
|
8
|
0
|
0
|
|
|
|
|
FrameIterator& operator++ () { if (cur) cur = parser->_get_frame(); return *this; } |
9
|
|
|
|
|
|
|
FrameIterator operator++ (int) { FrameIterator tmp(*this); operator++(); return tmp; } |
10
|
|
|
|
|
|
|
bool operator== (const FrameIterator& rhs) const { return parser == rhs.parser && cur.get() == rhs.cur.get(); } |
11
|
0
|
0
|
|
|
|
|
bool operator!= (const FrameIterator& rhs) const { return parser != rhs.parser || cur.get() != rhs.cur.get();} |
|
|
0
|
|
|
|
|
|
12
|
|
|
|
|
|
|
FrameSP operator* () { return cur; } |
13
|
4
|
|
|
|
|
|
FrameSP operator-> () { return cur; } |
14
|
|
|
|
|
|
|
|
15
|
|
|
|
|
|
|
MessageIteratorPair get_messages () { |
16
|
|
|
|
|
|
|
cur = NULL; // invalidate current iterator |
17
|
|
|
|
|
|
|
return MessageIteratorPair(MessageIterator(parser, parser->_get_message()), MessageIterator(parser, NULL)); |
18
|
|
|
|
|
|
|
} |
19
|
|
|
|
|
|
|
protected: |
20
|
|
|
|
|
|
|
Parser* parser; |
21
|
|
|
|
|
|
|
FrameSP cur; |
22
|
|
|
|
|
|
|
}; |
23
|
|
|
|
|
|
|
|
24
|
|
|
|
|
|
|
using FrameIteratorPair = IteratorPair; |