Switch to flow map when emitting an empty block map

This commit is contained in:
Jesse Beder
2009-10-22 14:21:12 +00:00
parent ae06a40fe6
commit 4ffb93c12b

View File

@@ -410,12 +410,18 @@ namespace YAML
EMITTER_STATE curState = m_pState->GetCurState(); EMITTER_STATE curState = m_pState->GetCurState();
FLOW_TYPE flowType = m_pState->GetCurGroupFlowType(); FLOW_TYPE flowType = m_pState->GetCurGroupFlowType();
if(flowType == FT_BLOCK) if(flowType == FT_BLOCK) {
assert(curState == ES_DONE_WITH_BLOCK_MAP_VALUE); // Note: block sequences are *not* allowed to be empty, but we convert it
else if(flowType == FT_FLOW) { // to a flow sequence if it is
m_stream << "}"; assert(curState == ES_DONE_WITH_BLOCK_MAP_VALUE || curState == ES_WAITING_FOR_BLOCK_MAP_ENTRY);
if(curState == ES_WAITING_FOR_BLOCK_MAP_ENTRY) {
unsigned curIndent = m_pState->GetCurIndent();
m_stream << IndentTo(curIndent) << "{}";
}
} else if(flowType == FT_FLOW) {
// Note: flow maps are allowed to be empty // Note: flow maps are allowed to be empty
assert(curState == ES_DONE_WITH_FLOW_MAP_VALUE || curState == ES_WAITING_FOR_FLOW_MAP_ENTRY); assert(curState == ES_DONE_WITH_FLOW_MAP_VALUE || curState == ES_WAITING_FOR_FLOW_MAP_ENTRY);
m_stream << "}";
} else } else
assert(false); assert(false);