public void OnKeyValuePair(string name, KvValue value) { Write(GetNodeType(value.ValueType)); WriteNullTerminatedBytes(Encoding.UTF8.GetBytes(name)); switch (value.ValueType) { case KvValueType.FloatingPoint: _writer.Write((float)value); break; case KvValueType.Int32: case KvValueType.Pointer: _writer.Write((int)value); break; case KvValueType.String: WriteNullTerminatedBytes(Encoding.UTF8.GetBytes((string)value)); break; case KvValueType.UInt64: _writer.Write((ulong)value); break; case KvValueType.Int64: _writer.Write((long)value); break; default: throw new ArgumentOutOfRangeException(nameof(value.ValueType), value.ValueType, "Value was of an unsupported type."); } }
public void OnKeyValuePair(string name, KvValue value) { if (StateStack.Count > 0) { var state = StateStack.Peek(); state.Items.Add(new KvObject(name, value)); } else { var state = new KvPartialState { Key = name, Value = value }; StateStack.Push(state); } }
private void VisitObject(string name, KvValue value) { switch (value.ValueType) { case KvValueType.Collection: _listener.OnObjectStart(name); VisitValue((IEnumerable <KvObject>)value); _listener.OnObjectEnd(); break; case KvValueType.FloatingPoint: case KvValueType.Int32: case KvValueType.Pointer: case KvValueType.String: case KvValueType.UInt64: case KvValueType.Int64: _listener.OnKeyValuePair(name, value); break; default: throw new ArgumentOutOfRangeException(nameof(value.ValueType), value.ValueType, "Unhandled value type."); } }
public void SetValue(KvValue value) => CurrentObject.Value = value;
public void OnKeyValuePair(string name, KvValue value) => WriteKeyValuePair(name, value);
public string KvValueToStringIsSane(KvValue value) => value.ToString(CultureInfo.InvariantCulture);