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.");
            }
        }
Ejemplo n.º 2
0
 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);
     }
 }
Ejemplo n.º 3
0
        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.");
            }
        }
Ejemplo n.º 4
0
 public void SetValue(KvValue value) => CurrentObject.Value = value;
Ejemplo n.º 5
0
 public void OnKeyValuePair(string name, KvValue value)
 => WriteKeyValuePair(name, value);
Ejemplo n.º 6
0
 public string KvValueToStringIsSane(KvValue value) => value.ToString(CultureInfo.InvariantCulture);