private void MoveFirst( TemplateToken value, Int32 removeBytes) { if (!(value is LiteralToken) && !(value is SequenceToken) && !(value is MappingToken) && !(value is BasicExpressionToken)) { throw new NotSupportedException($"Unexpected type '{value?.GetType().Name}' when initializing object reader state"); } m_memory.IncrementEvents(); m_current = ReaderState.CreateState(null, value, m_context, removeBytes); }
private static void WriteValue( IObjectWriter objectWriter, TemplateToken value) { switch (value?.Type ?? TokenType.Null) { case TokenType.Null: objectWriter.WriteNull(); break; case TokenType.Boolean: var booleanToken = value as BooleanToken; objectWriter.WriteBoolean(booleanToken.Value); break; case TokenType.Number: var numberToken = value as NumberToken; objectWriter.WriteNumber(numberToken.Value); break; case TokenType.String: case TokenType.BasicExpression: case TokenType.InsertExpression: objectWriter.WriteString(value.ToString()); break; case TokenType.Mapping: var mappingToken = value as MappingToken; objectWriter.WriteMappingStart(); foreach (var pair in mappingToken) { WriteValue(objectWriter, pair.Key); WriteValue(objectWriter, pair.Value); } objectWriter.WriteMappingEnd(); break; case TokenType.Sequence: var sequenceToken = value as SequenceToken; objectWriter.WriteSequenceStart(); foreach (var item in sequenceToken) { WriteValue(objectWriter, item); } objectWriter.WriteSequenceEnd(); break; default: throw new NotSupportedException($"Unexpected type '{value.GetType()}'"); } }