File Coverage

src/panda/protocol/websocket/Parser-FrameIterator.h
Criterion Covered Total %
statement 1 6 16.6
branch 0 6 0.0
condition n/a
subroutine n/a
pod n/a
total 1 12 8.3


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;