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); }
// 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); }
public static T MarkTitle <T>(this IMarkedBitReader reader, string title, Func <T> action) { reader.MarkStart(); T result = action(); reader.MarkEndTitle(title); return(result); }
public static byte NextAlignedByte(this IMarkedBitReader reader, string name) { reader.MarkStart(); byte result = reader.NextAlignedByte(); reader.MarkEndValue(name, new Literal(result)); return(result); }
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); }
public static int NextChunk(this IMarkedBitReader reader, int bits, string name) { reader.MarkStart(); int result = reader.NextChunk(bits); reader.MarkEndValue(name, result); return(result); }
// Marking overloads public static bool NextBit(this IMarkedBitReader reader, string name) { reader.MarkStart(); bool result = reader.NextBit(); reader.MarkEndValue(name, result); return(result); }
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); }