public static EndianProvider <TResult> New <TResult, T1, T2, T3, T4>( Func <T1, T2, T3, T4, TResult> create, IEndianProvider <T1> part1, IEndianProvider <T2> part2, IEndianProvider <T3> part3, IEndianProvider <T4> part4) where TResult : IEndianSpecific where T1 : IEndianSpecific where T2 : IEndianSpecific where T3 : IEndianSpecific where T4 : IEndianSpecific { Contracts.Requires.That(create != null); Contracts.Requires.That(part1 != null); Contracts.Requires.That(part2 != null); Contracts.Requires.That(part3 != null); Contracts.Requires.That(part4 != null); var bigEndian = create( part1.BigEndian, part2.BigEndian, part3.BigEndian, part4.BigEndian); var littleEndian = create( part1.LittleEndian, part2.LittleEndian, part3.LittleEndian, part4.LittleEndian); return(new EndianProvider <TResult>(bigEndian, littleEndian)); }
public static EndianProvider <TResult> New <TResult, T1, T2, T3, T4, T5, T6, T7, T8>( Func <T1, T2, T3, T4, T5, T6, T7, T8, TResult> create, IEndianProvider <T1> part1, IEndianProvider <T2> part2, IEndianProvider <T3> part3, IEndianProvider <T4> part4, IEndianProvider <T5> part5, IEndianProvider <T6> part6, IEndianProvider <T7> part7, IEndianProvider <T8> part8) where TResult : IEndianSpecific where T1 : IEndianSpecific where T2 : IEndianSpecific where T3 : IEndianSpecific where T4 : IEndianSpecific where T5 : IEndianSpecific where T6 : IEndianSpecific where T7 : IEndianSpecific where T8 : IEndianSpecific { Contracts.Requires.That(create != null); Contracts.Requires.That(part1 != null); Contracts.Requires.That(part2 != null); Contracts.Requires.That(part3 != null); Contracts.Requires.That(part4 != null); Contracts.Requires.That(part5 != null); Contracts.Requires.That(part6 != null); Contracts.Requires.That(part7 != null); Contracts.Requires.That(part8 != null); var bigEndian = create( part1.BigEndian, part2.BigEndian, part3.BigEndian, part4.BigEndian, part5.BigEndian, part6.BigEndian, part7.BigEndian, part8.BigEndian); var littleEndian = create( part1.LittleEndian, part2.LittleEndian, part3.LittleEndian, part4.LittleEndian, part5.LittleEndian, part6.LittleEndian, part7.LittleEndian, part8.LittleEndian); return(new EndianProvider <TResult>(bigEndian, littleEndian)); }
public static IEndianProvider <InferCountSerializer> InferCount <T>(IEndianProvider <T> provider) where T : IConstantSerializedLength => EndianProvider.New(value => new InferCountSerializer(value), provider);
public static EndianProvider <TResult> New <TResult, T>(Func <T, TResult> create, IEndianProvider <T> part) where TResult : IEndianSpecific where T : IEndianSpecific { Contracts.Requires.That(create != null); Contracts.Requires.That(part != null); var bigEndian = create(part.BigEndian); var littleEndian = create(part.LittleEndian); return(new EndianProvider <TResult>(bigEndian, littleEndian)); }