/// <summary> /// Initializes a new instance of the <see cref="ObjectContext"/> struct. /// </summary> /// <param name="serializerContext">The serializer context.</param> /// <param name="instance">The instance.</param> /// <param name="descriptor">The descriptor.</param> public ObjectContext(SerializerContext serializerContext, object instance, ITypeDescriptor descriptor) : this() { SerializerContext = serializerContext; Instance = instance; Descriptor = descriptor; }
/// <inheritdoc/> public override IYamlSerializable TryCreate(SerializerContext context, ITypeDescriptor typeDescriptor) { return typeDescriptor is DictionaryDescriptor ? this : null; }
public IYamlSerializable TryCreate(SerializerContext context, ITypeDescriptor typeDescriptor) { return typeDescriptor is ArrayDescriptor ? this : null; }
private static void WriteYaml(SerializerContext context, object value, Type expectedType) { var objectContext = new ObjectContext(context, value, context.FindTypeDescriptor(expectedType)); // TODO: we should go through the ObjectSerializerBackend, not directly use the ObjectSerializer! context.Serializer.ObjectSerializer.WriteYaml(ref objectContext); }
private static object ReadYaml(SerializerContext context, Type expectedType) { var node = context.Reader.Parser.Current; try { var objectContext = new ObjectContext(context, null, context.FindTypeDescriptor(expectedType)); // TODO: we should go through the ObjectSerializerBackend, not directly use the ObjectSerializer! return context.Serializer.ObjectSerializer.ReadYaml(ref objectContext); } catch (Exception ex) { throw new YamlException(node.Start, node.End, $"Error while deserializing node [{node}]", ex); } }
/// <summary> /// Initializes a new instance of the <see cref="SerializationStreamBase"/> class. /// </summary> public SerializationStream() { Context = new SerializerContext(); }
private IYamlSerializable GetSerializer(SerializerContext context, ITypeDescriptor typeDescriptor) { IYamlSerializable serializer; if (!serializers.TryGetValue(typeDescriptor.Type, out serializer)) { foreach (var factory in factories) { serializer = factory.TryCreate(context, typeDescriptor); if (serializer != null) { break; } } } if (serializer == null) { throw new InvalidOperationException("Unable to find a serializer for the type [{0}]".DoFormat(typeDescriptor.Type)); } return serializer; }
private void WriteState(SerializerContext context, ParserState state) { var writer = context.Writer; bool hasDefaultAction = state.DefaultAction != null; writer.Write(hasDefaultAction); if (hasDefaultAction) { WriteAction(context, state.DefaultAction); } else { writer.Write((ushort)state.Actions.Count); foreach (var elementActionPair in state.Actions) { writer.Write((short)Data.AllElements.IndexOf(elementActionPair.Key)); WriteAction(context, elementActionPair.Value); } } }
public void Serialize(Stream outputStream, ParserAutomaton automaton) { var writer = new BinaryWriter(outputStream); var context = new SerializerContext(automaton, writer); writer.Write((ushort)automaton.States.Count); writer.Write((ushort)automaton.DefaultInitialState.Id); writer.Write((byte)automaton.InitialStates.Count); foreach (var state in context.Automaton.InitialStates) WriteInitialStateEntry(writer, state); foreach (var state in context.Automaton.States) WriteState(context, state); }
public override IYamlSerializable TryCreate(SerializerContext context, ITypeDescriptor typeDescriptor) { var type = typeDescriptor.Type; return(CanVisit(type) ? this : null); }
private void WriteAction(SerializerContext context, ParserAction action) { var shiftAction = action as ShiftParserAction; var writer = context.Writer; if (shiftAction != null) { writer.Write(ShiftParserActionId); writer.Write((ushort)shiftAction.NextState.Id); return; } var reduceAction = action as ReduceParserAction; if (reduceAction != null) { writer.Write(ReduceParserActionId); writer.Write((ushort)Data.AllReductions.IndexOf(reduceAction.Reduction)); return; } if (action is AcceptParserAction) { writer.Write(AcceptarserActionId); return; } throw new NotSupportedException("Action is not supported."); }
/// <inheritdoc/> public override IYamlSerializable TryCreate(SerializerContext context, ITypeDescriptor typeDescriptor) { return(typeDescriptor.Type == typeof(Entity) ? this : null); }
/// <inheritdoc/> public override IYamlSerializable TryCreate(SerializerContext context, ITypeDescriptor typeDescriptor) { return(typeDescriptor is DictionaryDescriptor ? this : null); }
/// <inheritdoc/> public virtual IYamlSerializable TryCreate(SerializerContext context, ITypeDescriptor typeDescriptor) { // always accept return(this); }
public IYamlSerializable TryCreate(SerializerContext context, ITypeDescriptor typeDescriptor) { return(typeDescriptor.Type == typeof(AssetName) ? this : null); }