public static byte[] Code(this ICoder coder, byte[] input, int outputStreamLength, int minimumOutputLength = -1) { Contract.Requires(coder != null); Contract.Requires(input != null); Contract.Requires(outputStreamLength >= 0); Contract.Requires(minimumOutputLength >= -1); Contract.Ensures(Contract.Result<byte[]>() != null); using (var inStream = new MemoryStream(input)) { using (var outStream = new MemoryStream(outputStreamLength)) { coder.Code(inStream, outStream, input.Length, minimumOutputLength, null); return outStream.ToArray(); } } }
}//Prior /// <summary> /// operator priority in C# (C/C++/Java and derivates - binary or/xor/and with same priority as logic) /// </summary> public static Opcode Cprior( this Opcode self ) { return (self.Code() >= Opcode.BitOr.Code()) && (self.Code() <= Opcode.BitAnd.Code()) ? ((Opcode)(((self.Code() & 7) + 3) << 8)) : self.Code() == Opcode.Cast.Code() ? 0 : self.Prior(); }//Cprior
public static InstructionKind Kind(this AnyInstruction instr) => instr.Code().Kind();