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