Exemple #1
0
        public static RCOperator ReadOperator(RCActivator activator, RCArray <byte> data, ref int start)
        {
            int count = BitConverter.ToInt32(data._source, start);

            start += sizeof(int);

            RCValue left  = null;
            RCValue right = null;
            string  name  = null;

            if (count == 2)
            {
                name  = Binary.ReadScalarString(data, ref start);
                right = Binary.DoParse(activator, data, ref start);
            }
            else if (count == 3)
            {
                left  = Binary.DoParse(activator, data, ref start);
                name  = Binary.ReadScalarString(data, ref start);
                right = Binary.DoParse(activator, data, ref start);
            }
            else
            {
                throw new Exception("count of an operator must always be 2 or 3.");
            }

            return(activator.New(name, left, right));
        }
Exemple #2
0
        public static RCBlock ReadBlock(RCActivator activator, RCArray <byte> data, ref int start)
        {
            int count = BitConverter.ToInt32(data._source, start);

            start += sizeof(int);
            RCBlock result = null;

            for (int i = 0; i < count; ++i)
            {
                string  name      = Binary.ReadScalarString(data, ref start);
                string  evaluator = Binary.ReadScalarString(data, ref start);
                RCValue val       = Binary.DoParse(activator, data, ref start);
                result = new RCBlock(result, name, evaluator, val);
            }
            return(result);
        }