X-Git-Url: https://www.bearssl.org/gitweb//home/git/?p=BearSSL;a=blobdiff_plain;f=T0%2FCodeElement.cs;h=471a61f903f25b3afbc7f6de76927cded0b3776f;hp=5731c5a22490f5c5da59798b5fe58cafcbb57a10;hb=7d313ccce746ed413f22ed0dc83402efb17488e6;hpb=3210f38e0491b39aec1ef419cb4114e9483089fb diff --git a/T0/CodeElement.cs b/T0/CodeElement.cs index 5731c5a..471a61f 100644 --- a/T0/CodeElement.cs +++ b/T0/CodeElement.cs @@ -30,7 +30,7 @@ abstract class CodeElement { internal int LastLength { get; set; } - internal abstract int Length { get; } + // internal abstract int Length { get; } internal CodeElement() { @@ -42,7 +42,19 @@ abstract class CodeElement { throw new Exception("Code element accepts no target"); } - internal abstract int Encode(BlobWriter bw); + internal abstract int GetLength(bool oneByteCode); + + internal abstract int Encode(BlobWriter bw, bool oneByteCode); + + internal static int EncodeOneByte(uint val, BlobWriter bw) + { + if (val > 255) { + throw new Exception(string.Format( + "Cannot encode '{0}' over one byte", val)); + } + bw.Append((byte)val); + return 1; + } internal static int Encode7EUnsigned(uint val, BlobWriter bw) {