示例#1
0
        public static O ReadValue <T, O>(this IMarkedBitReader reader, HuffmanNode <T> tree, string name, Func <T, O> mapper) where T : IComparable <T>
        {
            reader.MarkStart();

            O result = mapper(tree.LookupValue(reader));

            reader.MarkEndValue(name, result !);
            return(result);
        }
示例#2
0
        // Complex structures

        public static O ReadValue <T, C, O>(this IMarkedBitReader reader, BitDeserializer <T, C> deserialize, C context, string name, Func <T, O> mapper)
        {
            reader.MarkStart();

            O result = mapper(deserialize(reader, context));

            reader.MarkEndValue(name, result !);
            return(result);
        }
示例#3
0
        public static T MarkTitle <T>(this IMarkedBitReader reader, string title, Func <T> action)
        {
            reader.MarkStart();

            T result = action();

            reader.MarkEndTitle(title);
            return(result);
        }
示例#4
0
        public static byte NextAlignedByte(this IMarkedBitReader reader, string name)
        {
            reader.MarkStart();

            byte result = reader.NextAlignedByte();

            reader.MarkEndValue(name, new Literal(result));
            return(result);
        }
示例#5
0
        public static T NextChunk <T, U>(this IMarkedBitReader reader, int bits, string name, U context, Func <int, U, T> mapper)
        {
            reader.MarkStart();

            T result = mapper(reader.NextChunk(bits), context);

            reader.MarkEndValue(name, result !);
            return(result);
        }
示例#6
0
        public static int NextChunk(this IMarkedBitReader reader, int bits, string name)
        {
            reader.MarkStart();

            int result = reader.NextChunk(bits);

            reader.MarkEndValue(name, result);
            return(result);
        }
示例#7
0
        // Marking overloads

        public static bool NextBit(this IMarkedBitReader reader, string name)
        {
            reader.MarkStart();

            bool result = reader.NextBit();

            reader.MarkEndValue(name, result);
            return(result);
        }
示例#8
0
        public static T ReadStructure <T, C>(this IMarkedBitReader reader, BitDeserializer <T, C> deserialize, C context, string title)
        {
            reader.MarkStart();

            T result = deserialize(reader, context);

            reader.MarkEndTitle(title);
            return(result);
        }