Example #1
0
 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;
        }
Example #4
0
        public CallNodeTemplate(NodeEncodingType callTargetType, IReadOnlyList <NodeEncodingType> callArgumentTypes)
        {
            var argTyList = new List <NodeEncodingType>();

            argTyList.Add(callTargetType);
            argTyList.AddRange(callArgumentTypes);
            argTypes = argTyList;
        }
Example #5
0
        /// <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 + "'.");
            }
        }
Example #6
0
 /// <summary>
 /// Writes the given encoding type to the output stream.
 /// </summary>
 /// <param name="Encoding"></param>
 public void WriteEncodingType(NodeEncodingType Encoding)
 {
     Writer.Write((byte)Encoding);
 }
Example #7
0
 /// <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)));
 }
Example #8
0
 public BinaryNodeEncoder(NodeEncodingType EncodingType, Action <LoycBinaryWriter, WriterState, LNode> Encode)
 {
     this.EncodingType = EncodingType;
     this.Encode       = Encode;
 }