public CallNodeTemplate(NodeEncodingType callTargetType, IReadOnlyList<NodeEncodingType> callArgumentTypes) { var argTyList = new List<NodeEncodingType>(); argTyList.Add(callTargetType); argTyList.AddRange(callArgumentTypes); argTypes = argTyList; }
public AttributeNodeTemplate(NodeEncodingType attributeTargetType, IReadOnlyList<NodeEncodingType> attributeArgumentTypes) { var argTys = new List<NodeEncodingType>(); argTys.Add(attributeTargetType); argTys.AddRange(attributeArgumentTypes); argTypes = argTys; }
public AttributeNodeTemplate(NodeEncodingType attributeTargetType, IReadOnlyList <NodeEncodingType> attributeArgumentTypes) { var argTys = new List <NodeEncodingType>(); argTys.Add(attributeTargetType); argTys.AddRange(attributeArgumentTypes); argTypes = argTys; }
public CallNodeTemplate(NodeEncodingType callTargetType, IReadOnlyList <NodeEncodingType> callArgumentTypes) { var argTyList = new List <NodeEncodingType>(); argTyList.Add(callTargetType); argTyList.AddRange(callArgumentTypes); argTypes = argTyList; }
/// <summary> /// Reads a node with the given encoding. /// </summary> /// <param name="State"></param> /// <param name="Encoding"></param> /// <returns></returns> public LNode ReadNode(ReaderState State, NodeEncodingType Encoding) { if (Encoding == NodeEncodingType.TemplatedNode) { return(ReadTemplatedNode(State)); } else if (Encoding == NodeEncodingType.IdNode) { return(State.NodeFactory.Id(ReadSymbolReference(State))); } Func <LoycBinaryReader, ReaderState, LNode> parser; if (LiteralEncodings.TryGetValue(Encoding, out parser)) { return(parser(this, State)); } else { throw new InvalidDataException("Unknown node encoding: '" + Encoding + "'."); } }
/// <summary> /// Writes the given encoding type to the output stream. /// </summary> /// <param name="Encoding"></param> public void WriteEncodingType(NodeEncodingType Encoding) { Writer.Write((byte)Encoding); }
/// <summary> /// Creates a binary node encoder that encodes literals of a specific type. /// </summary> /// <typeparam name="T"></typeparam> /// <param name="Encoding"></param> /// <param name="ValueEncoder"></param> /// <returns></returns> public static BinaryNodeEncoder CreateLiteralEncoder <T>(NodeEncodingType Encoding, Action <LoycBinaryWriter, WriterState, T> ValueEncoder) { return(new BinaryNodeEncoder(Encoding, (writer, state, node) => ValueEncoder(writer, state, (T)node.Value))); }
public BinaryNodeEncoder(NodeEncodingType EncodingType, Action <LoycBinaryWriter, WriterState, LNode> Encode) { this.EncodingType = EncodingType; this.Encode = Encode; }