| 178 | } |
| 179 | |
| 180 | void working_with_ubjson_4() |
| 181 | { |
| 182 | auto filter = [&](const staj_event& ev, const ser_context&) -> bool |
| 183 | { |
| 184 | return (ev.event_type() == staj_event_type::double_value) && (ev.get<double>() < 30.0); |
| 185 | }; |
| 186 | |
| 187 | ubjson::ubjson_bytes_cursor cursor(data); |
| 188 | |
| 189 | auto filtered_c = cursor | filter; |
| 190 | for (; !filtered_c.done(); filtered_c.next()) |
| 191 | { |
| 192 | const auto& event = filtered_c.current(); |
| 193 | switch (event.event_type()) |
| 194 | { |
| 195 | case staj_event_type::double_value: |
| 196 | std::cout << event.event_type() << ": " << event.get<double>() << " " << "(" << event.tag() << ")\n"; |
| 197 | break; |
| 198 | default: |
| 199 | std::cout << "Unhandled event type " << event.event_type() << " " << "(" << event.tag() << ")\n"; |
| 200 | break; |
| 201 | } |
| 202 | } |
| 203 | } |
| 204 | |
| 205 | int main() |
| 206 | { |