aboutsummaryrefslogtreecommitdiffstats
path: root/src/libs/3rdparty/yaml-cpp/src/emitterstate.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/libs/3rdparty/yaml-cpp/src/emitterstate.cpp')
-rw-r--r--src/libs/3rdparty/yaml-cpp/src/emitterstate.cpp97
1 files changed, 66 insertions, 31 deletions
diff --git a/src/libs/3rdparty/yaml-cpp/src/emitterstate.cpp b/src/libs/3rdparty/yaml-cpp/src/emitterstate.cpp
index 3542aaf507..3dbe401108 100644
--- a/src/libs/3rdparty/yaml-cpp/src/emitterstate.cpp
+++ b/src/libs/3rdparty/yaml-cpp/src/emitterstate.cpp
@@ -6,29 +6,35 @@
namespace YAML {
EmitterState::EmitterState()
: m_isGood(true),
+ m_lastError{},
+ // default global manipulators
+ m_charset(EmitNonAscii),
+ m_strFmt(Auto),
+ m_boolFmt(TrueFalseBool),
+ m_boolLengthFmt(LongBool),
+ m_boolCaseFmt(LowerCase),
+ m_nullFmt(TildeNull),
+ m_intFmt(Dec),
+ m_indent(2),
+ m_preCommentIndent(2),
+ m_postCommentIndent(1),
+ m_seqFmt(Block),
+ m_mapFmt(Block),
+ m_mapKeyFmt(Auto),
+ m_floatPrecision(std::numeric_limits<float>::max_digits10),
+ m_doublePrecision(std::numeric_limits<double>::max_digits10),
+ //
+ m_modifiedSettings{},
+ m_globalModifiedSettings{},
+ m_groups{},
m_curIndent(0),
m_hasAnchor(false),
+ m_hasAlias(false),
m_hasTag(false),
m_hasNonContent(false),
- m_docCount(0) {
- // set default global manipulators
- m_charset.set(EmitNonAscii);
- m_strFmt.set(Auto);
- m_boolFmt.set(TrueFalseBool);
- m_boolLengthFmt.set(LongBool);
- m_boolCaseFmt.set(LowerCase);
- m_intFmt.set(Dec);
- m_indent.set(2);
- m_preCommentIndent.set(2);
- m_postCommentIndent.set(1);
- m_seqFmt.set(Block);
- m_mapFmt.set(Block);
- m_mapKeyFmt.set(Auto);
- m_floatPrecision.set(std::numeric_limits<float>::digits10 + 1);
- m_doublePrecision.set(std::numeric_limits<double>::digits10 + 1);
-}
-
-EmitterState::~EmitterState() {}
+ m_docCount(0) {}
+
+EmitterState::~EmitterState() = default;
// SetLocalValue
// . We blindly tries to set all possible formatters to this value
@@ -39,6 +45,7 @@ void EmitterState::SetLocalValue(EMITTER_MANIP value) {
SetBoolFormat(value, FmtScope::Local);
SetBoolCaseFormat(value, FmtScope::Local);
SetBoolLengthFormat(value, FmtScope::Local);
+ SetNullFormat(value, FmtScope::Local);
SetIntFormat(value, FmtScope::Local);
SetFlowType(GroupType::Seq, value, FmtScope::Local);
SetFlowType(GroupType::Map, value, FmtScope::Local);
@@ -47,6 +54,8 @@ void EmitterState::SetLocalValue(EMITTER_MANIP value) {
void EmitterState::SetAnchor() { m_hasAnchor = true; }
+void EmitterState::SetAlias() { m_hasAlias = true; }
+
void EmitterState::SetTag() { m_hasTag = true; }
void EmitterState::SetNonContent() { m_hasNonContent = true; }
@@ -81,6 +90,7 @@ void EmitterState::StartedNode() {
}
m_hasAnchor = false;
+ m_hasAlias = false;
m_hasTag = false;
m_hasNonContent = false;
}
@@ -90,15 +100,13 @@ EmitterNodeType::value EmitterState::NextGroupType(
if (type == GroupType::Seq) {
if (GetFlowType(type) == Block)
return EmitterNodeType::BlockSeq;
- else
- return EmitterNodeType::FlowSeq;
- } else {
- if (GetFlowType(type) == Block)
- return EmitterNodeType::BlockMap;
- else
- return EmitterNodeType::FlowMap;
+ return EmitterNodeType::FlowSeq;
}
+ if (GetFlowType(type) == Block)
+ return EmitterNodeType::BlockMap;
+ return EmitterNodeType::FlowMap;
+
// can't happen
assert(false);
return EmitterNodeType::NoType;
@@ -152,9 +160,15 @@ void EmitterState::EndedGroup(GroupType::value type) {
if (m_groups.empty()) {
if (type == GroupType::Seq) {
return SetError(ErrorMsg::UNEXPECTED_END_SEQ);
- } else {
- return SetError(ErrorMsg::UNEXPECTED_END_MAP);
}
+ return SetError(ErrorMsg::UNEXPECTED_END_MAP);
+ }
+
+ if (m_hasTag) {
+ SetError(ErrorMsg::INVALID_TAG);
+ }
+ if (m_hasAnchor) {
+ SetError(ErrorMsg::INVALID_ANCHOR);
}
// get rid of the current group
@@ -176,6 +190,9 @@ void EmitterState::EndedGroup(GroupType::value type) {
m_globalModifiedSettings.restore();
ClearModifiedSettings();
+ m_hasAnchor = false;
+ m_hasTag = false;
+ m_hasNonContent = false;
}
EmitterNodeType::value EmitterState::CurGroupNodeType() const {
@@ -216,11 +233,16 @@ std::size_t EmitterState::LastIndent() const {
void EmitterState::ClearModifiedSettings() { m_modifiedSettings.clear(); }
+void EmitterState::RestoreGlobalModifiedSettings() {
+ m_globalModifiedSettings.restore();
+}
+
bool EmitterState::SetOutputCharset(EMITTER_MANIP value,
FmtScope::value scope) {
switch (value) {
case EmitNonAscii:
case EscapeNonAscii:
+ case EscapeAsJson:
_Set(m_charset, value, scope);
return true;
default:
@@ -278,6 +300,19 @@ bool EmitterState::SetBoolCaseFormat(EMITTER_MANIP value,
}
}
+bool EmitterState::SetNullFormat(EMITTER_MANIP value, FmtScope::value scope) {
+ switch (value) {
+ case LowerNull:
+ case UpperNull:
+ case CamelNull:
+ case TildeNull:
+ _Set(m_nullFmt, value, scope);
+ return true;
+ default:
+ return false;
+ }
+}
+
bool EmitterState::SetIntFormat(EMITTER_MANIP value, FmtScope::value scope) {
switch (value) {
case Dec:
@@ -349,7 +384,7 @@ bool EmitterState::SetMapKeyFormat(EMITTER_MANIP value, FmtScope::value scope) {
}
bool EmitterState::SetFloatPrecision(std::size_t value, FmtScope::value scope) {
- if (value > std::numeric_limits<float>::digits10 + 1)
+ if (value > std::numeric_limits<float>::max_digits10)
return false;
_Set(m_floatPrecision, value, scope);
return true;
@@ -357,9 +392,9 @@ bool EmitterState::SetFloatPrecision(std::size_t value, FmtScope::value scope) {
bool EmitterState::SetDoublePrecision(std::size_t value,
FmtScope::value scope) {
- if (value > std::numeric_limits<double>::digits10 + 1)
+ if (value > std::numeric_limits<double>::max_digits10)
return false;
_Set(m_doublePrecision, value, scope);
return true;
}
-}
+} // namespace YAML