File Coverage

src/panda/protocol/websocket/Parser-MessageIterator.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 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;