MCPcopy Create free account
hub / github.com/apache/trafficserver / HandleFlowMap

Method HandleFlowMap

lib/yamlcpp/src/singledocparser.cpp:290–336  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

288}
289
290void SingleDocParser::HandleFlowMap(EventHandler& eventHandler) {
291 // eat start token
292 m_scanner.pop();
293 m_pCollectionStack->PushCollectionType(CollectionType::FlowMap);
294
295 while (true) {
296 if (m_scanner.empty())
297 throw ParserException(m_scanner.mark(), ErrorMsg::END_OF_MAP_FLOW);
298
299 Token& token = m_scanner.peek();
300 const Mark mark = token.mark;
301 // first check for end
302 if (token.type == Token::FLOW_MAP_END) {
303 m_scanner.pop();
304 break;
305 }
306
307 // grab key (if non-null)
308 if (token.type == Token::KEY) {
309 m_scanner.pop();
310 HandleNode(eventHandler);
311 } else {
312 eventHandler.OnNull(mark, NullAnchor);
313 }
314
315 // now grab value (optional)
316 if (!m_scanner.empty() && m_scanner.peek().type == Token::VALUE) {
317 m_scanner.pop();
318 HandleNode(eventHandler);
319 } else {
320 eventHandler.OnNull(mark, NullAnchor);
321 }
322
323 if (m_scanner.empty())
324 throw ParserException(m_scanner.mark(), ErrorMsg::END_OF_MAP_FLOW);
325
326 // now eat the separator (or could be a map end, which we ignore - but if
327 // it's neither, then it's a bad node)
328 Token& nextToken = m_scanner.peek();
329 if (nextToken.type == Token::FLOW_ENTRY)
330 m_scanner.pop();
331 else if (nextToken.type != Token::FLOW_MAP_END)
332 throw ParserException(nextToken.mark, ErrorMsg::END_OF_MAP_FLOW);
333 }
334
335 m_pCollectionStack->PopCollectionType(CollectionType::FlowMap);
336}
337
338// . Single "key: value" pair in a flow sequence
339void SingleDocParser::HandleCompactMap(EventHandler& eventHandler) {

Callers

nothing calls this directly

Calls 8

ParserExceptionFunction · 0.85
PushCollectionTypeMethod · 0.80
peekMethod · 0.80
PopCollectionTypeMethod · 0.80
popMethod · 0.45
emptyMethod · 0.45
markMethod · 0.45
OnNullMethod · 0.45

Tested by

no test coverage detected